}
block ::= decl_typedef(def). {
P->defs = add_decl_typedef(P->defs, def);
+ if (def->type->strct) {
+ P->structs = add_decl_struct(P->structs, def->type->strct);
+ }
}
block ::= constant(constant). {
P->consts = add_constant(P->consts, constant);
free(S);
free(N);
}
+decl_typedef(def) ::= TYPEDEF decl_struct(s) NAME(ALIAS) EOS. {
+ def = init_decl_typedef(ALIAS->text, init_decl_type(PSI_T_STRUCT, s->name));
+ def->type->strct = s;
+ free(ALIAS);
+}
%type decl {decl*}
decl(decl) ::= decl_abi(abi) decl_arg(func) LPAREN decl_args(args) RPAREN EOS. {
type_ = init_decl_type(T->type, T->text);
free(T);
}
+decl_type(type_) ::= SIZE_T(T). {
+ type_ = init_decl_type(T->type, T->text);
+ free(T);
+}
decl_type(type_) ::= SINT8(T). {
type_ = init_decl_type(T->type, T->text);
free(T);