break;
case CDECL_DECL_POINTER:
free_declspec(x->u.pointer.qualifiers);
- free_declarator(x->u.pointer.declarator);
break;
case CDECL_DECL_ARRAY:
free(x->u.array.vla);
- free_declarator(x->u.array.declarator);
break;
default:
assert(0);
}
+
+ free_declarator(x->child);
free(x);
x = p;
}
ALLOC_STRUCT($$, struct cdecl_declarator,
.type = CDECL_DECL_POINTER,
.u.pointer.qualifiers = $2,
- .u.pointer.declarator = $3);
+ .child = $3);
} | T_ASTERISK qualifiers pointer {
ALLOC_STRUCT($$, struct cdecl_declarator,
.type = CDECL_DECL_POINTER,
.u.pointer.qualifiers = $2,
- .u.pointer.declarator = $3);
+ .child = $3);
}
declarator: direct_declarator | pointer;
.u.ident = $1);
} | direct_declarator array {
$$ = $2;
- $$->u.array.declarator = $1;
+ $$->child = $1;
} | T_LPAREN declarator T_RPAREN {
$$ = $2;
};