]> www.git.momoyon.org Git - lang.git/commitdiff
[main.c] Early exit if failed to parse on all parse_<func>
authormomoyon <ahmedsamyh10@gmail.com>
Mon, 28 Apr 2025 13:00:38 +0000 (18:00 +0500)
committermomoyon <ahmedsamyh10@gmail.com>
Mon, 28 Apr 2025 13:00:38 +0000 (18:00 +0500)
main.c

diff --git a/main.c b/main.c
index f668eb19fed015baf86d2b5c0d52b7f06a63bf70..8f455e7d562bf9848b57cf73b089ed9c906995a0 100644 (file)
--- a/main.c
+++ b/main.c
@@ -807,6 +807,7 @@ Expression *parse_unary(Arena *arena, Parser *p) {
 
 Expression *parse_factor(Arena *arena, Parser *p) {
     Expression *expr = parse_unary(arena, p);
+    if (expr == NULL) return NULL;
 
     while (parser_match(p, TK_DIVIDE) || parser_match(p, TK_MULTIPLY)) {
         Token op = parser_previous(p);
@@ -829,6 +830,7 @@ Expression *parse_factor(Arena *arena, Parser *p) {
 
 Expression *parse_term(Arena *arena, Parser *p) {
     Expression *expr = parse_factor(arena, p);
+    if (expr == NULL) return NULL;
     /*printf("factor expr: %p\n", expr);*/
 
     while (parser_match(p, TK_MINUS) || parser_match(p, TK_PLUS)) {
@@ -853,6 +855,7 @@ Expression *parse_term(Arena *arena, Parser *p) {
 
 Expression *parse_comparision(Arena *arena, Parser *p) {
     Expression *expr = parse_term(arena, p);
+    if (expr == NULL) return NULL;
     /*printf("term expr: %p\n", expr);*/
 
     while (parser_match(p, TK_GT) || parser_match(p, TK_GTE) ||
@@ -878,6 +881,7 @@ Expression *parse_comparision(Arena *arena, Parser *p) {
 
 Expression *parse_equality(Arena *arena, Parser *p) {
     Expression *expr = parse_comparision(arena, p);
+    if (expr == NULL) return NULL;
     /*printf("comparision expr: %p\n", expr);*/
 
     while (parser_match(p, TK_NOT_EQUAL) || parser_match(p, TK_EQUAL_EQUAL)) {