From fe27d201304aaec3486399ca2e84e76c45c5f58f Mon Sep 17 00:00:00 2001 From: tocariimaa Date: Thu, 30 Jan 2025 17:42:17 -0300 Subject: [PATCH] fix function call parsing was broken by commit #ac6cc21 --- compiler/parse.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/parse.c b/compiler/parse.c index 57ec70e..34c9d47 100644 --- a/compiler/parse.c +++ b/compiler/parse.c @@ -449,7 +449,9 @@ atom(ParserState *ps) } return tree; case T_LPAREN: - return expr(ps, EXPR_INIT_PREC); + tree = expr(ps, EXPR_INIT_PREC); + next_match(ps->lexer, T_RPAREN); + return tree; default: parse_error(ps, "expected a number, identifier or expression, not '%s'", TokenIdStr[t.id]); free(tree); @@ -484,10 +486,9 @@ expr(ParserState *ps, int minprec) Ast *tree = unary(ps); for (;;) { LexToken t = lex_scan(ps->lexer); - if (t.id == T_RPAREN) - break; if (!token_is_binop(t.id) || t.id == T_END + || t.id == T_RPAREN || OperatorTable[t.id].pred < minprec) { lex_backup(ps->lexer, t); break;