diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-07-29 19:40:40 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-08-15 10:04:40 +0900 |
| commit | 3df0d758471d7654d4b85ef15a1675b4d62e7c41 (patch) | |
| tree | 48d6a1abceb5566779cfeddb8b9f1d7148ea2ea8 /parse.c | |
| parent | 144875f4687e8cfa77f8b1b7e5ff8790f8f5b684 (diff) | |
| download | ducc-3df0d758471d7654d4b85ef15a1675b4d62e7c41.tar.gz ducc-3df0d758471d7654d4b85ef15a1675b4d62e7c41.tar.zst ducc-3df0d758471d7654d4b85ef15a1675b4d62e7c41.zip | |
feat: implement array type
Diffstat (limited to 'parse.c')
| -rw-r--r-- | parse.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -702,6 +702,17 @@ AstNode* parse_var_decl(Parser* p) { } String* name = parse_ident(p); + if (peek_token(p)->kind == TokenKind_bracket_l) { + next_token(p); + AstNode* size_expr = parse_expr(p); + if (size_expr->kind != AstNodeKind_int_expr) { + fatal_error("parse_var_decl: invalid array size"); + } + int size = size_expr->node_int_value; + expect(p, TokenKind_bracket_r); + ty = type_new_array(ty, size); + } + AstNode* init = NULL; if (peek_token(p)->kind == TokenKind_assign) { next_token(p); |
