diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-08-15 19:55:28 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 19:55:28 +0900 |
| commit | e2064554b6d653439fbbb2bcde00e6f1a1079cb4 (patch) | |
| tree | 56e44f19a516169b094087902e8b5d4c1188a6f8 /parse.c | |
| parent | 70f3db84bb3e2f4d85da7392a112f6f82ce97152 (diff) | |
| download | ducc-e2064554b6d653439fbbb2bcde00e6f1a1079cb4.tar.gz ducc-e2064554b6d653439fbbb2bcde00e6f1a1079cb4.tar.zst ducc-e2064554b6d653439fbbb2bcde00e6f1a1079cb4.zip | |
feat: support global variables with initializer
Diffstat (limited to 'parse.c')
| -rw-r--r-- | parse.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -1058,6 +1058,11 @@ AstNode* parse_global_var_decl(Parser* p, Type* ty, String* name) { ty = type_new_array(ty, size); } + AstNode* init = NULL; + if (peek_token(p)->kind == TokenKind_assign) { + next_token(p); + init = parse_assignment_expr(p); + } expect(p, TokenKind_semicolon); if (find_gvar(p, name) != -1) { @@ -1071,6 +1076,7 @@ AstNode* parse_global_var_decl(Parser* p, Type* ty, String* name) { AstNode* ret = ast_new(AstNodeKind_gvar_decl); ret->name = *name; ret->ty = ty; + ret->node_expr = init; return ret; } |
