- .type = CDECL_DECL_IDENT,
- .u.ident = $1);
-} | pointer declarator {
+ .type = CDECL_DECL_ARRAY,
+ .u.array.length = $2);
+} | T_LBRACKET vla_ident T_RBRACKET {
+ ALLOC_STRUCT($$, struct cdecl_declarator,
+ .type = CDECL_DECL_ARRAY,
+ .u.array.vla = $2);
+} | T_LBRACKET T_RBRACKET {
+ ALLOC_STRUCT($$, struct cdecl_declarator,
+ .type = CDECL_DECL_ARRAY);
+}
+
+declarator: direct_declarator | pointer direct_declarator {