]> www.git.momoyon.org Git - lang.git/commitdiff
[main.c] Return NULL on binary parsing if failed to parse primary.
authormomoyon <ahmedsamyh10@gmail.com>
Thu, 24 Apr 2025 11:49:03 +0000 (16:49 +0500)
committermomoyon <ahmedsamyh10@gmail.com>
Thu, 24 Apr 2025 11:49:03 +0000 (16:49 +0500)
main.c
main.momo

diff --git a/main.c b/main.c
index 75ff8c1f57a063c899c0a166917822b2de7abd42..5405cc42d28654dfb9111268ed7f1f50f4dca71c 100644 (file)
--- a/main.c
+++ b/main.c
@@ -758,6 +758,7 @@ Expression *factor(Arena *arena, Parser *p) {
     while (parser_match(p, TK_DIVIDE) || parser_match(p, TK_MULTIPLY)) {
         Token op = parser_previous(p);
         Expression *rhs = unary(arena, p);
+        if (rhs == NULL) return rhs;
 
         Expression *new_expr = (Expression *)arena_alloc(arena, sizeof(Expression));
         new_expr->kind = EXPR_BINARY;
@@ -781,6 +782,7 @@ Expression *term(Arena *arena, Parser *p) {
         Token operator = parser_previous(p);
 
         Expression *rhs = factor(arena, p);
+        if (rhs == NULL) return NULL;
 
         Expression *new_expr = (Expression *)arena_alloc(arena, sizeof(Expression));
         new_expr->kind = EXPR_BINARY;
@@ -805,6 +807,7 @@ Expression *comparision(Arena *arena, Parser *p) {
         Token operator = parser_previous(p);
 
         Expression *rhs = term(arena, p);
+        if (rhs == NULL) return NULL;
 
         Expression *new_expr = (Expression *)arena_alloc(arena, sizeof(Expression));
         new_expr->kind = EXPR_BINARY;
@@ -828,6 +831,7 @@ Expression *equality(Arena *arena, Parser *p) {
         Token operator = parser_previous(p);
 
         Expression *rhs = comparision(arena, p);
+        if (rhs == NULL) return NULL;
 
         Expression *new_expr = (Expression *)arena_alloc(arena, sizeof(Expression));
         new_expr->kind = EXPR_BINARY;
index 9f9370e5bb8ff9a339013953bba4f04757e3c31d..9a849bb6100686d213b179abadd7fcd8daffac8b 100644 (file)
--- a/main.momo
+++ b/main.momo
@@ -1 +1 @@
-1 + (4 / );
+1 + (1 0);