From 6988f314b0a1d691cefa0d5b22a4b026a36d05cd Mon Sep 17 00:00:00 2001 From: Maxwell Jeffress Date: Thu, 9 Apr 2026 11:43:00 +1000 Subject: [PATCH] Parse exprs in parens --- src/codegen/codegen.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/codegen/codegen.c b/src/codegen/codegen.c index 3d49838..c73f5a4 100644 --- a/src/codegen/codegen.c +++ b/src/codegen/codegen.c @@ -226,6 +226,9 @@ ResultType(SolsType, charptr) getNodeType(SolsNode* node, SolsScope* scope) { } return Success(SolsType, charptr, *var->typeinfo.returnType); } + case SNT_EXPR_IN_PAREN: { + return getNodeType(&node->children.at[node->children.count - 1], scope); + } } return Error(SolsType, charptr, "Not yet implemented"); } @@ -606,6 +609,13 @@ ResultType(GroundProgram, charptr) generateCodeBlockNode(SolsNode* node, SolsSco return Success(GroundProgram, charptr, groundCreateProgram()); } +ResultType(GroundProgram, charptr) generateExprInParenNode(SolsNode* node, SolsScope* scope) { + // All that needs to be done is to return the child's return id + node->accessArg = node->children.at[node->children.count - 1].accessArg; + (void)scope; + return Success(GroundProgram, charptr, groundCreateProgram()); +} + static inline ResultType(GroundProgram, charptr) generateWhileNode(SolsNode* node, SolsScope* scope) { GroundProgram gp = groundCreateProgram(); @@ -1019,6 +1029,7 @@ ResultType(GroundProgram, charptr) generateCode(SolsNode* node, SolsScope* scope case SNT_OP_EQGREATER: generate(EqGreater); case SNT_OP_LESSER: generate(Lesser); case SNT_OP_EQLESSER: generate(EqLesser); + case SNT_EXPR_IN_PAREN: generate(ExprInParen); case SNT_CODE_BLOCK: generate(CodeBlock); case SNT_IF: generate(If); case SNT_WHILE: generate(While);