diff options
Diffstat (limited to 'src/parser.c')
-rw-r--r-- | src/parser.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/parser.c b/src/parser.c index f531705..1e51af4 100644 --- a/src/parser.c +++ b/src/parser.c @@ -115,11 +115,12 @@ static THROWABLE parser_parse_var_type_def(Parser *self, BufferView *type_name) LHS = ('const' TOK_IDENTIFIER VAR_TYPE_DEF? '=') | ('var' TOK_IDENTIFIER VAR_TYPE_DEF? '='|';') */ -static THROWABLE parser_parse_lhs(Parser *self, LhsExpr **result, bool *assignment) { +static THROWABLE parser_parse_lhs(Parser *self, LhsExpr **result, bool *assignment_or_rhs) { bool is_const; bool match; BufferView var_name; *result = NULL; + *assignment_or_rhs = bool_true; throw_if_error(tokenizer_consume_if(&self->tokenizer, TOK_CONST, &is_const)); if(!is_const) { @@ -138,11 +139,11 @@ static THROWABLE parser_parse_lhs(Parser *self, LhsExpr **result, bool *assignme throw_if_error(tokenizer_consume_if(&self->tokenizer, TOK_EQUALS, &match)); if(match) { - *assignment = bool_true; + *assignment_or_rhs = bool_true; return PARSER_OK; } - *assignment = bool_false; + *assignment_or_rhs = bool_false; throw_if_error(tokenizer_consume_if(&self->tokenizer, TOK_SEMICOLON, &match)); if(match && is_const) { self->error = tokenizer_create_error(&self->tokenizer, @@ -426,13 +427,13 @@ BODY = LHS ';' | (RHS_START BODY_SEMICOLON) */ int parser_parse_body(Parser *self, Ast *ast) { - bool assignment; + bool assignment_or_rhs; LhsExpr *lhs_expr; Ast rhs_expr; rhs_expr = ast_none(); - try(parser_parse_lhs(self, &lhs_expr, &assignment)); - if(!assignment) { + try(parser_parse_lhs(self, &lhs_expr, &assignment_or_rhs)); + if(!assignment_or_rhs) { ast_init(ast, lhs_expr, AST_LHS); return PARSER_OK; } |