From 3df0d758471d7654d4b85ef15a1675b4d62e7c41 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 29 Jul 2025 19:40:40 +0900 Subject: feat: implement array type --- parse.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'parse.c') diff --git a/parse.c b/parse.c index d08269e..0b682e2 100644 --- a/parse.c +++ b/parse.c @@ -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); -- cgit v1.2.3-70-g09d2