+%right NOT TILDE.
+%left AND OR.
+%left PIPE.
+%left CARET.
+%left AMPERSAND.
+%left CMP_EQ CMP_NE.
+%left LCHEVR CMP_LE RCHEVR CMP_GE.
+%left LSHIFT RSHIFT.
+%left PLUS MINUS.
+%left ASTERISK SLASH MODULO.
+%fallback NAME TEMP FREE SET LET RETURN CALLOC CALLBACK ZVAL LIB STRING COUNT.
+%type decl_enum {struct psi_decl_enum *}
+%destructor decl_enum {psi_decl_enum_free(&$$);}
+%type decl_enum_items {struct psi_plist*}
+%destructor decl_enum_items {psi_plist_free($$);}
+%type decl_enum_item {struct psi_decl_enum_item*}
+%destructor decl_enum_item {psi_decl_enum_item_free(&$$);}
+%type decl_struct_args_block {struct psi_plist*}
+%destructor decl_struct_args_block {psi_plist_free($$);}
+%type decl_struct_args {struct psi_plist*}
+%destructor decl_struct_args {psi_plist_free($$);}
+%type decl_struct {struct psi_decl_struct*}
+%destructor decl_struct {psi_decl_struct_free(&$$);}
+%type align_and_size {struct psi_layout}
+%type decl_union {struct psi_decl_union*}
+%destructor decl_union {psi_decl_union_free(&$$);}
+%type const_type {struct psi_const_type*}
+%destructor const_type {psi_const_type_free(&$$);}
+%type constant {struct psi_const*}
+%destructor constant {psi_const_free(&$$);}
+%type decl_typedef {struct psi_decl_arg*}
+%destructor decl_typedef {psi_decl_arg_free(&$$);}
+%type decl_typedef_body_ex {struct psi_decl_arg*}
+%destructor decl_typedef_body_ex {psi_decl_arg_free(&$$);}
+%type decl_typedef_body {struct psi_decl_arg*}
+%destructor decl_typedef_body {psi_decl_arg_free(&$$);}
+%type decl_typedef_body_fn_args {struct psi_plist*}
+%destructor decl_typedef_body_fn_args {psi_plist_free($$);}
+%type decl {struct psi_decl*}
+%destructor decl {psi_decl_free(&$$);}
+%type decl_func {struct psi_decl_arg*}
+%destructor decl_func {psi_decl_arg_free(&$$);}
+%type decl_abi {struct psi_decl_abi*}
+%destructor decl_abi {psi_decl_abi_free(&$$);}
+%type decl_var {struct psi_decl_var*}
+%destructor decl_var {psi_decl_var_free(&$$);}
+%type decl_vars {struct psi_plist*}
+%destructor decl_vars {psi_plist_free($$);}
+%type decl_arg {struct psi_decl_arg*}
+%destructor decl_arg {psi_decl_arg_free(&$$);}
+%type decl_args {struct psi_plist*}
+%destructor decl_args {psi_plist_free($$);}
+%type struct_args {struct psi_plist*}
+%destructor struct_args {psi_plist_free($$);}
+%type struct_arg {struct psi_decl_arg*}
+%destructor struct_arg {psi_decl_arg_free(&$$);}
+%type decl_layout {struct psi_layout*}
+%destructor decl_layout {psi_layout_free(&$$);}
+%type decl_type {struct psi_decl_type*}
+%destructor decl_type {psi_decl_type_free(&$$);}
+%type const_decl_type {struct psi_decl_type*}
+%destructor const_decl_type {psi_decl_type_free(&$$);}
+%type impl {struct psi_impl*}
+%destructor impl {psi_impl_free(&$$);}
+%type impl_func {struct psi_impl_func*}
+%destructor impl_func {psi_impl_func_free(&$$);}
+%type impl_def_val {struct psi_impl_def_val*}
+%destructor impl_def_val {psi_impl_def_val_free(&$$);}
+%type impl_var {struct psi_impl_var*}
+%destructor impl_var {psi_impl_var_free(&$$);}
+%type impl_arg {struct psi_impl_arg*}
+%destructor impl_arg {psi_impl_arg_free(&$$);}
+%type impl_args {struct psi_plist*}
+%destructor impl_args {psi_plist_free($$);}
+%type impl_vararg {struct psi_impl_arg*}
+%destructor impl_vararg {psi_impl_arg_free(&$$);}
+%type impl_stmts {struct psi_plist*}
+%destructor impl_stmts {psi_plist_free($$);}
+%type impl_stmt {struct psi_token**}
+%destructor impl_stmt {psi_impl_stmt_free(&$$);}
+%type number {struct psi_number*}
+%destructor number {psi_number_free(&$$);}
+%type num_exp {struct psi_num_exp*}
+%destructor num_exp {psi_num_exp_free(&$$);}
+%type let_stmt {struct psi_let_stmt*}
+%destructor let_stmt {psi_let_stmt_free(&$$);}
+%type let_calloc {struct psi_let_calloc*}
+%destructor let_calloc {psi_let_calloc_free(&$$);}
+%type let_func {struct psi_let_func*}
+%destructor let_func {psi_let_func_free(&$$);}
+%type callback_arg_list {struct psi_plist *}
+%destructor callback_arg_list {psi_plist_free($$);}
+%type callback_args {struct psi_plist *}
+%destructor callback_args {psi_plist_free($$);}
+%type let_callback {struct psi_let_callback*}
+%destructor let_callback {psi_let_callback_free(&$$);}
+%type let_exp {struct psi_let_exp*}
+%destructor let_exp {psi_let_exp_free(&$$);}
+%type let_exps {struct psi_plist*}
+%destructor let_exps {psi_plist_free($$);}
+%type assert_stmt {struct psi_assert_stmt*}
+%destructor assert_stmt {psi_assert_stmt_free(&$$);}
+%type set_stmt {struct psi_set_stmt*}
+%destructor set_stmt {psi_set_stmt_free(&$$);}
+%type set_exp {struct psi_set_exp*}
+%destructor set_exp {psi_set_exp_free(&$$);}
+%type set_exps {struct psi_plist*}
+%destructor set_exps {psi_plist_free($$);}
+%type set_func {struct psi_set_func*}
+%destructor set_func {psi_set_func_free(&$$);}
+%type return_stmt {struct psi_return_stmt*}
+%destructor return_stmt {psi_return_stmt_free(&$$);}
+%type free_stmt {struct psi_free_stmt*}
+%destructor free_stmt {psi_free_stmt_free(&$$);}
+%type free_exps {struct psi_plist*}
+%destructor free_exps {psi_plist_free($$);}
+%type free_exp {struct psi_free_exp*}
+%destructor free_exp {psi_free_exp_free(&$$);}
+%type impl_type {struct psi_impl_type*}
+%destructor impl_type {psi_impl_type_free(&$$);}
+%type reference {bool}
+%type indirection {unsigned}
+%type pointers {unsigned}