From fbab33a73d7bda715a11c367a7fb4d9c085ec9d6 Mon Sep 17 00:00:00 2001 From: momoyon Date: Mon, 28 Apr 2025 18:00:38 +0500 Subject: [PATCH] [main.c] Early exit if failed to parse on all parse_ --- main.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/main.c b/main.c index f668eb1..8f455e7 100644 --- 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)) { -- 2.39.5