From 8f754f8b13e55e4bb92d72f105c5aaaba1754b7d Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 19 Nov 2023 18:41:55 +0200 Subject: start working on instruction lowering --- src/parser.y | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'src/parser.y') 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 */ -- cgit v1.3