aboutsummaryrefslogtreecommitdiff
path: root/src/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser.c')
-rw-r--r--src/parser.c13
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;
}