diff options
author | Flavian Kaufmann <flavian@flaviankaufmann.ch> | 2025-05-20 14:18:30 +0200 |
---|---|---|
committer | Flavian Kaufmann <flavian@flaviankaufmann.ch> | 2025-05-20 14:18:30 +0200 |
commit | fbbe2f207a26b410d485c9dea07a22256a02d50b (patch) | |
tree | 164e2d30f43bd25ecc7c3f6ca4d49d1c30f4f1a7 /src/parser.y | |
parent | 9cf524df8c94920d7c7058692f2f83a95a4006e0 (diff) | |
download | imp-fbbe2f207a26b410d485c9dea07a22256a02d50b.tar.gz imp-fbbe2f207a26b410d485c9dea07a22256a02d50b.zip |
local variables
Diffstat (limited to 'src/parser.y')
-rw-r--r-- | src/parser.y | 4 |
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 |