aboutsummaryrefslogtreecommitdiff
path: root/src/parser.y
diff options
context:
space:
mode:
authorFlavian Kaufmann <flavian@flaviankaufmann.ch>2025-05-20 14:18:30 +0200
committerFlavian Kaufmann <flavian@flaviankaufmann.ch>2025-05-20 14:18:30 +0200
commitfbbe2f207a26b410d485c9dea07a22256a02d50b (patch)
tree164e2d30f43bd25ecc7c3f6ca4d49d1c30f4f1a7 /src/parser.y
parent9cf524df8c94920d7c7058692f2f83a95a4006e0 (diff)
downloadimp-fbbe2f207a26b410d485c9dea07a22256a02d50b.tar.gz
imp-fbbe2f207a26b410d485c9dea07a22256a02d50b.zip
local variables
Diffstat (limited to 'src/parser.y')
-rw-r--r--src/parser.y4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/parser.y b/src/parser.y
index 9a94480..cb3544e 100644
--- a/src/parser.y
+++ b/src/parser.y
@@ -29,7 +29,7 @@ void yyerror(const char *s) {
%token TOKEN_LEFT_PARENTHESIS TOKEN_RIGHT_PARENTHESIS
%token TOKEN_SEMICOLON
%token TOKEN_SKIP
-%token TOKEN_IF TOKEN_THEN TOKEN_ELSE TOKEN_END TOKEN_WHILE TOKEN_DO
+%token TOKEN_IF TOKEN_THEN TOKEN_ELSE TOKEN_END TOKEN_WHILE TOKEN_DO TOKEN_VAR TOKEN_IN
%token TOKEN_PLUS TOKEN_MINUS TOKEN_MULTIPLY
%token TOKEN_NOT TOKEN_OR TOKEN_AND
%token TOKEN_EQUALS TOKEN_NOT_EQUALS TOKEN_LESS_THAN TOKEN_LESS_EQUAL TOKEN_GREATER_THAN TOKEN_GREATER_EQUAL
@@ -54,6 +54,8 @@ statement : TOKEN_SKIP
{ $$ = ast_if($2, $4, $6); }
| TOKEN_WHILE boolean_expression TOKEN_DO statement TOKEN_END
{ $$ = ast_while($2, $4); }
+ | TOKEN_VAR variable TOKEN_ASSIGN arithmetic_expression TOKEN_IN statement TOKEN_END
+ { $$ = ast_let($2, $4, $6); }
;
variable : TOKEN_IDENTIFIER