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);