2 TOKEN_TYPE(decl_enum
, struct psi_decl_enum
*)
3 TOKEN_DTOR(decl_enum
, psi_decl_enum_free(&$$
);)
4 TOKEN_TYPE(decl_enum_items
, struct psi_plist
*)
5 TOKEN_DTOR(decl_enum_items
, psi_plist_free($$
);)
6 TOKEN_TYPE(decl_enum_item
, struct psi_decl_enum_item
*)
7 TOKEN_DTOR(decl_enum_item
, psi_decl_enum_item_free(&$$
);)
8 TOKEN_TYPE(decl_struct_args_block
, struct psi_plist
*)
9 TOKEN_DTOR(decl_struct_args_block
, psi_plist_free($$
);) /* there was a typo */
10 TOKEN_TYPE(decl_struct_args
, struct psi_plist
*)
11 TOKEN_DTOR(decl_struct_args
, psi_plist_free($$
);)
12 TOKEN_TYPE(decl_struct
, struct psi_decl_struct
*)
13 TOKEN_DTOR(decl_struct
, psi_decl_struct_free(&$$
);)
14 TOKEN_TYPE(align_and_size
, struct psi_layout
)
15 TOKEN_TYPE(decl_union
, struct psi_decl_union
*)
16 TOKEN_DTOR(decl_union
, psi_decl_union_free(&$$
);)
17 TOKEN_TYPE(const_type
, struct psi_const_type
*)
18 TOKEN_DTOR(const_type
, psi_const_type_free(&$$
);)
19 TOKEN_TYPE(constant
, struct psi_const
*)
20 TOKEN_DTOR(constant
, psi_const_free(&$$
);)
21 TOKEN_TYPE(decl_typedef
, struct psi_decl_arg
*)
22 TOKEN_DTOR(decl_typedef
, psi_decl_arg_free(&$$
);)
23 TOKEN_TYPE(decl_typedef_body_ex
, struct psi_decl_arg
*)
24 TOKEN_DTOR(decl_typedef_body_ex
, psi_decl_arg_free(&$$
);)
25 TOKEN_TYPE(decl_typedef_body
, struct psi_decl_arg
*)
26 TOKEN_DTOR(decl_typedef_body
, psi_decl_arg_free(&$$
);)
27 TOKEN_TYPE(decl_typedef_body_fn_args
, struct psi_plist
*)
28 TOKEN_DTOR(decl_typedef_body_fn_args
, psi_plist_free($$
);)
29 TOKEN_TYPE(decl
, struct psi_decl
*)
30 TOKEN_DTOR(decl
, psi_decl_free(&$$
);)
31 TOKEN_TYPE(decl_func
, struct psi_decl_arg
*)
32 TOKEN_DTOR(decl_func
, psi_decl_arg_free(&$$
);)
33 TOKEN_TYPE(decl_abi
, struct psi_decl_abi
*)
34 TOKEN_DTOR(decl_abi
, psi_decl_abi_free(&$$
);)
35 TOKEN_TYPE(decl_var
, struct psi_decl_var
*)
36 TOKEN_DTOR(decl_var
, psi_decl_var_free(&$$
);)
37 TOKEN_TYPE(decl_vars
, struct psi_plist
*)
38 TOKEN_DTOR(decl_vars
, psi_plist_free($$
);)
39 TOKEN_TYPE(decl_arg
, struct psi_decl_arg
*)
40 TOKEN_DTOR(decl_arg
, psi_decl_arg_free(&$$
);)
41 TOKEN_TYPE(decl_args
, struct psi_plist
*)
42 TOKEN_DTOR(decl_args
, psi_plist_free($$
);)
43 TOKEN_TYPE(struct_args
, struct psi_plist
*)
44 TOKEN_DTOR(struct_args
, psi_plist_free($$
);)
45 TOKEN_TYPE(struct_arg
, struct psi_decl_arg
*)
46 TOKEN_DTOR(struct_arg
, psi_decl_arg_free(&$$
);)
47 TOKEN_TYPE(decl_layout
, struct psi_layout
*)
48 TOKEN_DTOR(decl_layout
, psi_layout_free(&$$
);)
49 TOKEN_TYPE(decl_type
, struct psi_decl_type
*)
50 TOKEN_DTOR(decl_type
, psi_decl_type_free(&$$
);)
51 TOKEN_TYPE(const_decl_type
, struct psi_decl_type
*)
52 TOKEN_DTOR(const_decl_type
, psi_decl_type_free(&$$
);)
53 TOKEN_TYPE(impl
, struct psi_impl
*)
54 TOKEN_DTOR(impl
, psi_impl_free(&$$
);)
55 TOKEN_TYPE(impl_func
, struct psi_impl_func
*)
56 TOKEN_DTOR(impl_func
, psi_impl_func_free(&$$
);)
57 TOKEN_TYPE(impl_def_val
, struct psi_impl_def_val
*)
58 TOKEN_DTOR(impl_def_val
, psi_impl_def_val_free(&$$
);)
59 TOKEN_TYPE(impl_var
, struct psi_impl_var
*)
60 TOKEN_DTOR(impl_var
, psi_impl_var_free(&$$
);)
61 TOKEN_TYPE(impl_arg
, struct psi_impl_arg
*)
62 TOKEN_DTOR(impl_arg
, psi_impl_arg_free(&$$
);)
63 TOKEN_TYPE(impl_args
, struct psi_plist
*)
64 TOKEN_DTOR(impl_args
, psi_plist_free($$
);)
65 TOKEN_TYPE(impl_vararg
, struct psi_impl_arg
*)
66 TOKEN_DTOR(impl_vararg
, psi_impl_arg_free(&$$
);)
67 TOKEN_TYPE(impl_stmts
, struct psi_plist
*)
68 TOKEN_DTOR(impl_stmts
, psi_plist_free($$
);)
69 TOKEN_TYPE(impl_stmt
, struct psi_token
**)
70 TOKEN_DTOR(impl_stmt
, psi_impl_stmt_free(&$$
);)
71 TOKEN_TYPE(number
, struct psi_number
*)
72 TOKEN_DTOR(number
, psi_number_free(&$$
);)
73 TOKEN_TYPE(num_exp
, struct psi_num_exp
*)
74 TOKEN_DTOR(num_exp
, psi_num_exp_free(&$$
);)
75 TOKEN_TYPE(let_stmt
, struct psi_let_stmt
*)
76 TOKEN_DTOR(let_stmt
, psi_let_stmt_free(&$$
);)
77 TOKEN_TYPE(let_calloc
, struct psi_let_calloc
*)
78 TOKEN_DTOR(let_calloc
, psi_let_calloc_free(&$$
);)
79 TOKEN_TYPE(let_func
, struct psi_let_func
*)
80 TOKEN_DTOR(let_func
, psi_let_func_free(&$$
);)
81 TOKEN_TYPE(callback_arg_list
, struct psi_plist
*)
82 TOKEN_DTOR(callback_arg_list
, psi_plist_free($$
);)
83 TOKEN_TYPE(callback_args
, struct psi_plist
*)
84 TOKEN_DTOR(callback_args
, psi_plist_free($$
);)
85 TOKEN_TYPE(let_callback
, struct psi_let_callback
*)
86 TOKEN_DTOR(let_callback
, psi_let_callback_free(&$$
);)
87 TOKEN_TYPE(let_exp
, struct psi_let_exp
*)
88 TOKEN_DTOR(let_exp
, psi_let_exp_free(&$$
);)
89 TOKEN_TYPE(let_exps
, struct psi_plist
*)
90 TOKEN_DTOR(let_exps
, psi_plist_free($$
);)
91 TOKEN_TYPE(assert_stmt
, struct psi_assert_stmt
*)
92 TOKEN_DTOR(assert_stmt
, psi_assert_stmt_free(&$$
);)
93 TOKEN_TYPE(set_stmt
, struct psi_set_stmt
*)
94 TOKEN_DTOR(set_stmt
, psi_set_stmt_free(&$$
);)
95 TOKEN_TYPE(set_exp
, struct psi_set_exp
*)
96 TOKEN_DTOR(set_exp
, psi_set_exp_free(&$$
);)
97 TOKEN_TYPE(set_exps
, struct psi_plist
*)
98 TOKEN_DTOR(set_exps
, psi_plist_free($$
);)
99 TOKEN_TYPE(set_func
, struct psi_set_func
*)
100 TOKEN_DTOR(set_func
, psi_set_func_free(&$$
);)
101 TOKEN_TYPE(return_stmt
, struct psi_return_stmt
*)
102 TOKEN_DTOR(return_stmt
, psi_return_stmt_free(&$$
);)
103 TOKEN_TYPE(free_stmt
, struct psi_free_stmt
*)
104 TOKEN_DTOR(free_stmt
, psi_free_stmt_free(&$$
);)
105 TOKEN_TYPE(free_exps
, struct psi_plist
*)
106 TOKEN_DTOR(free_exps
, psi_plist_free($$
);)
107 TOKEN_TYPE(free_exp
, struct psi_free_exp
*)
108 TOKEN_DTOR(free_exp
, psi_free_exp_free(&$$
);)
109 TOKEN_TYPE(impl_type
, struct psi_impl_type
*)
110 TOKEN_DTOR(impl_type
, psi_impl_type_free(&$$
);)
111 TOKEN_TYPE(cpp_exp
, struct psi_cpp_exp
*)
112 TOKEN_DTOR(cpp_exp
, psi_cpp_exp_free(&$$
);)
113 TOKEN_TYPE(cpp_macro_decl
, struct psi_cpp_macro_decl
*)
114 TOKEN_DTOR(cpp_macro_decl
, psi_cpp_macro_decl_free(&$$
);)
115 TOKEN_TYPE(cpp_macro_decl_tokens
, struct psi_plist
*)
116 TOKEN_DTOR(cpp_macro_decl_tokens
, psi_plist_free($$
);)
117 TOKEN_TYPE(cpp_macro_exp
, struct psi_num_exp
*)
118 TOKEN_DTOR(cpp_macro_exp
, psi_num_exp_free(&$$
);)
119 TOKEN_TYPE(cpp_macro_sig
, struct psi_plist
*)
120 TOKEN_DTOR(cpp_macro_sig
, psi_plist_free($$
);)
121 TOKEN_TYPE(cpp_macro_sig_args
, struct psi_plist
*)
122 TOKEN_DTOR(cpp_macro_sig_args
, psi_plist_free($$
);)
123 TOKEN_TYPE(cpp_macro_call
, struct psi_plist
*)
124 TOKEN_DTOR(cpp_macro_call
, psi_plist_free($$
);)
125 TOKEN_TYPE(cpp_macro_call_args
, struct psi_plist
*)
126 TOKEN_DTOR(cpp_macro_call_args
, psi_plist_free($$
);)
128 TOKEN_TYPE(reference
, bool)
129 TOKEN_TYPE(indirection
, unsigned)
130 TOKEN_TYPE(pointers
, unsigned)
133 PARSE(block
, TYPED(impl
, impl
)) {
135 P
->impls
= psi_plist_init((psi_plist_dtor
) psi_impl_free
);
137 P
->impls
= psi_plist_add(P
->impls
, &impl
);
143 * decl_vars: decl_var
145 PARSE_TYPED(decl_vars
, vars
,
146 TYPED(decl_var
, var
)) {
147 vars
= psi_plist_add(psi_plist_init((psi_plist_dtor
) psi_decl_var_free
),
152 * decl_vars: decl_vars , decl_var
154 PARSE_TYPED(decl_vars
, vars
,
155 TYPED(decl_vars
, vars_
)
157 TYPED(decl_var
, var
)) {
158 vars
= psi_plist_add(vars_
, &var
);