From ac6cc2154d48f99d5ae27f03ea68f887bec73536 Mon Sep 17 00:00:00 2001 From: tocariimaa Date: Tue, 21 Jan 2025 18:13:33 -0300 Subject: [PATCH] parser: implement subexpressions with parentheses LOL I forgot to implement this before. --- compiler/parse.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/compiler/parse.c b/compiler/parse.c index 14fc34e..5e7f719 100644 --- a/compiler/parse.c +++ b/compiler/parse.c @@ -448,6 +448,8 @@ atom(ParserState *ps) tree->ident = t.ident; } return tree; + case T_LPAREN: + return expr(ps, EXPR_INIT_PREC); default: parse_error(ps, "expected a number, identifier or expression, not '%s'", TokenIdStr[t.id]); free(tree); @@ -482,6 +484,8 @@ 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 || OperatorTable[t.id].pred < minprec) {