diff options
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/src/parser.c b/src/parser.c index f3c6328..fd836af 100644 --- a/src/parser.c +++ b/src/parser.c @@ -138,8 +138,7 @@ parser_parse_term(parser_t *parser, ast_node_t *node) token_t token; lexer_next_token(parser->lexer, &token); - while (token.kind == TOKEN_OP && (string_view_eq(token.value, string_view_from_str("*")) || - string_view_eq(token.value, string_view_from_str("/")))) { + while (token.kind == TOKEN_STAR || token.kind == TOKEN_SLASH) { ast_node_t *left = ast_node_new(); *left = *node; @@ -173,8 +172,7 @@ parser_parse_expression(parser_t *parser, ast_node_t *node) token_t token; lexer_next_token(parser->lexer, &token); - while (token.kind == TOKEN_OP && (string_view_eq(token.value, string_view_from_str("+")) || - string_view_eq(token.value, string_view_from_str("-")))) { + while (token.kind == TOKEN_PLUS || token.kind == TOKEN_MINUS) { ast_node_t *left = ast_node_new(); *left = *node; @@ -220,19 +218,9 @@ parser_parse_variable_definition(parser_t *parser, string_view_t variable_name, token_t equal_token; - if (!expected_token(&equal_token, parser, TOKEN_OP)) + if (!expected_token(&equal_token, parser, TOKEN_EQUAL)) return false; - if (!string_view_eq(equal_token.value, string_view_from_str("="))) { - parser_error_t error; - error.token = equal_token; - - sprintf(error.message, "expected '=' but got " SVFMT, SVARG(&equal_token.value)); - - parser->errors[parser->errors_len++] = error; - return false; - } - ast_node_t *expression = ast_node_new(); if (!parser_parse_expression(parser, expression) || !drop_expected_token(parser, TOKEN_SEMICOLON)) { |