From eed58fa9d2bccf9df9128e6eff08fcd08b6fa95e Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Wed, 19 Jun 2024 08:43:17 +0200 Subject: Change a few syntax constructs for consistency --- src/main.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 666a664..d001d9c 100644 --- a/src/main.c +++ b/src/main.c @@ -584,8 +584,12 @@ parse_keyword(Parser *parser) { case TOK_IF: { node = node_alloc(parser, NODE_IF, prev); if (!node) return; + parse_consume(parser, TOK_LPAREN, + cstr("expected '(' on if expression")); parse_expr(parser, PREC_LOW); node->cond_if = array_pop(parser->nodes); + parse_consume(parser, TOK_RPAREN, + cstr("expected ')' on if expression")); parse_expr(parser, PREC_LOW); node->cond_expr = array_pop(parser->nodes); if (parse_match(parser, TOK_ELSE)) { @@ -596,10 +600,12 @@ parse_keyword(Parser *parser) { case TOK_MATCH: { node = node_alloc(parser, NODE_MATCH, prev); if (!node) return; + parse_consume(parser, TOK_LPAREN, + cstr("expected '(' on if expression")); parse_expr(parser, PREC_LOW); node->match_expr = array_pop(parser->nodes); - parse_consume(parser, TOK_ASSIGN, - cstr("malformed match statement")); + parse_consume(parser, TOK_RPAREN, + cstr("expected ')' on if expression")); parse_consume(parser, TOK_LCURLY, cstr("expected block of match cases")); while (!parse_match(parser, TOK_RCURLY) && !parser->panic) { @@ -686,10 +692,12 @@ parse_keyword(Parser *parser) { case TOK_WHILE: { node = node_alloc(parser, NODE_WHILE, prev); if (!node) return; + parse_consume(parser, TOK_LPAREN, + cstr("expected '(' on while expression")); parse_expr(parser, PREC_LOW); node->while_cond = array_pop(parser->nodes); - parse_consume(parser, TOK_ASSIGN, - cstr("malformed while expression")); + parse_consume(parser, TOK_RPAREN, + cstr("expected ')' on while expression")); parse_expr(parser, PREC_LOW); node->while_expr = array_pop(parser->nodes); } break; -- cgit v1.2.1