diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-11-19 18:41:55 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-11-19 18:41:55 +0200 |
| commit | 8f754f8b13e55e4bb92d72f105c5aaaba1754b7d (patch) | |
| tree | b70b813c091691d6645f8cb82295f41f24f3be93 /src/parser.y | |
| parent | 5304dbcf4df1fc211b5099f4d6eb7f23dfa8c454 (diff) | |
| download | ek-8f754f8b13e55e4bb92d72f105c5aaaba1754b7d.tar.gz ek-8f754f8b13e55e4bb92d72f105c5aaaba1754b7d.zip | |
start working on instruction lowering
Diffstat (limited to 'src/parser.y')
| -rw-r--r-- | src/parser.y | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/parser.y b/src/parser.y index 433a5ab..4def5fd 100644 --- a/src/parser.y +++ b/src/parser.y @@ -446,10 +446,11 @@ statement statements : statement statements { $$ = $1; $1->next = $2; } | statement + | statelet + body : "{" statements "}" { $$ = gen_block($2); } - | "{" statelet "}" { $$ = gen_block($2); } | "{" "}" { $$ = gen_block(gen_empty()); } references @@ -549,11 +550,11 @@ const func_sign : "(" decls "=>" type ")" { - $$ = gen_type(AST_TYPE_SIGN, NULL, $2, $4); + $$ = gen_type(AST_TYPE_SIGN, $2, $4, NULL); } - | "(" decls ")" { $$ = gen_type(AST_TYPE_SIGN, NULL, $2, NULL); } - | "(" decls "=>" ")" { $$ = gen_type(AST_TYPE_SIGN, NULL, $2, NULL); } - | "(" "=>" type ")" { $$ = gen_type(AST_TYPE_SIGN, NULL, NULL, $3); } + | "(" decls ")" { $$ = gen_type(AST_TYPE_SIGN, $2, NULL, NULL); } + | "(" decls "=>" ")" { $$ = gen_type(AST_TYPE_SIGN, $2, NULL, NULL); } + | "(" "=>" type ")" { $$ = gen_type(AST_TYPE_SIGN, NULL, $3, NULL); } | "(" "=>" ")" { $$ = gen_type(AST_TYPE_SIGN, NULL, NULL, NULL); } | "(" ")" { $$ = gen_type(AST_TYPE_SIGN, NULL, NULL, NULL); } @@ -571,7 +572,7 @@ type $$ = gen_type(AST_TYPE_ARR, $2, $4, NULL); } | "typeof" expr { - $$ = gen_type(AST_TYPE_TYPEOF, NULL, $2, NULL); + $$ = gen_type(AST_TYPE_TYPEOF, $2, NULL, NULL); } | "const" type { $$ = $2; @@ -608,13 +609,13 @@ var_init proc : id func_sign body { - $$ = gen_proc($1, $2, $3); + $$ = gen_proc($1, $2, $3, src_loc(@$)); ast_set_flags($$, $2->flags); ast_set_flags($3, AST_FLAG_UNHYGIENIC); } | "extern" id func_sign { /* todo check that we don't have a variadic function */ - $$ = gen_proc($2, $3, NULL); + $$ = gen_proc($2, $3, NULL, src_loc(@$)); ast_set_flags($$, AST_FLAG_EXTERN); } @@ -650,7 +651,7 @@ anon_struct trait_elem : id /* trait */ - | id func_sign { $$ = gen_proc($1, $2, NULL); } /* proc */ + | id func_sign { $$ = gen_proc($1, $2, NULL, src_loc(@$)); } /* proc */ | var_decl /* member */ | type_expand /* type construction */ |
