aboutsummaryrefslogtreecommitdiffhomepage
path: root/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c11
1 files changed, 11 insertions, 0 deletions
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);