summaryrefslogtreecommitdiff
path: root/src/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/parser_expr.c10
-rw-r--r--src/parser/parser_stmt.c12
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;