diff options
Diffstat (limited to 'src/parser')
| -rw-r--r-- | src/parser/parser_expr.c | 10 | ||||
| -rw-r--r-- | src/parser/parser_stmt.c | 12 |
2 files changed, 18 insertions, 4 deletions
diff --git a/src/parser/parser_expr.c b/src/parser/parser_expr.c index 50d96f0..0951475 100644 --- a/src/parser/parser_expr.c +++ b/src/parser/parser_expr.c @@ -3599,7 +3599,10 @@ ASTNode *parse_expr_prec(ParserContext *ctx, Lexer *l, Precedence min_prec) free(print_code); ASTNode *n = ast_create(NODE_RAW_STMT); - n->raw_stmt.content = final_code; + char *stmt_code = xmalloc(strlen(final_code) + 2); + sprintf(stmt_code, "%s;", final_code); + free(final_code); + n->raw_stmt.content = stmt_code; return n; } } @@ -3639,7 +3642,10 @@ ASTNode *parse_expr_prec(ParserContext *ctx, Lexer *l, Precedence min_prec) free(inner); ASTNode *n = ast_create(NODE_RAW_STMT); - n->raw_stmt.content = code; + char *stmt_code = xmalloc(strlen(code) + 2); + sprintf(stmt_code, "%s;", code); + free(code); + n->raw_stmt.content = stmt_code; return n; } } diff --git a/src/parser/parser_stmt.c b/src/parser/parser_stmt.c index f7c1d32..1b3a5d9 100644 --- a/src/parser/parser_stmt.c +++ b/src/parser/parser_stmt.c @@ -1887,7 +1887,11 @@ ASTNode *parse_statement(ParserContext *ctx, Lexer *l) } ASTNode *n = ast_create(NODE_RAW_STMT); - n->raw_stmt.content = code; + // Append semicolon to Statement Expression to make it a valid statement + char *stmt_code = xmalloc(strlen(code) + 2); + sprintf(stmt_code, "%s;", code); + free(code); + n->raw_stmt.content = stmt_code; n->raw_stmt.used_symbols = used_syms; n->raw_stmt.used_symbol_count = used_count; free(inner); @@ -2433,7 +2437,11 @@ ASTNode *parse_statement(ParserContext *ctx, Lexer *l) } ASTNode *n = ast_create(NODE_RAW_STMT); - n->raw_stmt.content = code; + // Append semicolon to Statement Expression to make it a valid statement + char *stmt_code = xmalloc(strlen(code) + 2); + sprintf(stmt_code, "%s;", code); + free(code); + n->raw_stmt.content = stmt_code; n->raw_stmt.used_symbols = used_syms; n->raw_stmt.used_symbol_count = used_count; return n; |
