cpp
[m6w6/ext-psi] / src / parser_proc.c
1 /* A Bison parser, made by GNU Bison 3.0.4. */
2
3 /* Skeleton implementation for Bison GLR parsers in C
4
5 Copyright (C) 2002-2015 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C GLR parser skeleton written by Paul Hilfinger. */
34
35 /* Identify Bison output. */
36 #define YYBISON 1
37
38 /* Bison version. */
39 #define YYBISON_VERSION "3.0.4"
40
41 /* Skeleton name. */
42 #define YYSKELETON_NAME "glr.c"
43
44 /* Pure parsers. */
45 #define YYPURE 1
46
47
48 /* "%code top" blocks. */
49 #line 1 "src/parser_proc_grammar.y" /* glr.c:222 */
50
51 #include "php_psi_stdinc.h"
52
53 #line 54 "src/parser_proc.c" /* glr.c:222 */
54
55
56 /* Substitute the variable and function names. */
57 #define yyparse psi_parser_proc_parse
58 #define yylex psi_parser_proc_lex
59 #define yyerror psi_parser_proc_error
60 #define yydebug psi_parser_proc_debug
61
62
63 /* First part of user declarations. */
64
65 #line 66 "src/parser_proc.c" /* glr.c:240 */
66
67 # ifndef YY_NULLPTR
68 # if defined __cplusplus && 201103L <= __cplusplus
69 # define YY_NULLPTR nullptr
70 # else
71 # define YY_NULLPTR 0
72 # endif
73 # endif
74
75 #include "parser_proc.h"
76
77 /* Enabling verbose error messages. */
78 #ifdef YYERROR_VERBOSE
79 # undef YYERROR_VERBOSE
80 # define YYERROR_VERBOSE 1
81 #else
82 # define YYERROR_VERBOSE 1
83 #endif
84
85 /* Default (constant) value used for initialization for null
86 right-hand sides. Unlike the standard yacc.c template, here we set
87 the default value of $$ to a zeroed-out value. Since the default
88 value is undefined, this behavior is technically correct. */
89 static YYSTYPE yyval_default;
90
91 /* Copy the second part of user declarations. */
92
93 #line 94 "src/parser_proc.c" /* glr.c:263 */
94 /* Unqualified %code blocks. */
95 #line 5 "src/parser_proc_grammar.y" /* glr.c:264 */
96
97 #include <assert.h>
98 #include <stdarg.h>
99
100 #include "plist.h"
101 #include "parser.h"
102 #define YYDEBUG 1
103
104 static int psi_parser_proc_lex(YYSTYPE *u, struct psi_parser *P, struct psi_plist *tokens, size_t *index);
105 static void psi_parser_proc_error(struct psi_parser *P, struct psi_plist *tokens, size_t *index, const char *msg);
106
107 static inline void psi_parser_proc_add_struct(struct psi_parser *P, struct psi_decl_struct *strct)
108 {
109 assert(strct);
110 if (!P->structs) {
111 P->structs = psi_plist_init((psi_plist_dtor) psi_decl_struct_free);
112 }
113 P->structs = psi_plist_add(P->structs, &strct);
114 }
115 static inline void psi_parser_proc_add_union(struct psi_parser *P, struct psi_decl_union *u)
116 {
117 assert(u);
118 if (!P->unions) {
119 P->unions = psi_plist_init((psi_plist_dtor) psi_decl_union_free);
120 }
121 P->unions = psi_plist_add(P->unions, &u);
122 }
123 static inline void psi_parser_proc_add_enum(struct psi_parser *P, struct psi_decl_enum *e)
124 {
125 assert(e);
126 if (!P->enums) {
127 P->enums = psi_plist_init((psi_plist_dtor) psi_decl_enum_free);
128 }
129 P->enums = psi_plist_add(P->enums, &e);
130 }
131 static inline void psi_parser_proc_add_from_typedef(struct psi_parser *P, struct psi_decl_arg *def)
132 {
133 if (def->type->real.def) {
134 switch (def->type->type) {
135 case PSI_T_STRUCT:
136 psi_parser_proc_add_struct(P, def->type->real.strct);
137 break;
138 case PSI_T_UNION:
139 psi_parser_proc_add_union(P, def->type->real.unn);
140 break;
141 case PSI_T_ENUM:
142 psi_parser_proc_add_enum(P, def->type->real.enm);
143 break;
144 default:
145 break;
146 }
147 }
148 }
149 static inline void psi_parser_proc_add_typedef(struct psi_parser *P, struct psi_decl_arg *def)
150 {
151 assert(def);
152 if (!P->types) {
153 P->types = psi_plist_init((psi_plist_dtor) psi_decl_arg_free);
154 }
155 P->types = psi_plist_add(P->types, &def);
156 psi_parser_proc_add_from_typedef(P, def);
157 }
158 static inline void psi_parser_proc_add_const(struct psi_parser *P, struct psi_const *cnst) {
159 assert(cnst);
160 if (!P->consts) {
161 P->consts = psi_plist_init((psi_plist_dtor) psi_const_free);
162 }
163 P->consts = psi_plist_add(P->consts, &cnst);
164
165 }
166 static inline void psi_parser_proc_add_decl(struct psi_parser *P, struct psi_decl *decl) {
167 assert(decl);
168 if (!P->decls) {
169 P->decls = psi_plist_init((psi_plist_dtor) psi_decl_free);
170 }
171 P->decls = psi_plist_add(P->decls, &decl);
172 }
173 static inline void psi_parser_proc_add_impl(struct psi_parser *P, struct psi_impl *impl) {
174 assert(impl);
175 if (!P->impls) {
176 P->impls = psi_plist_init((psi_plist_dtor) psi_impl_free);
177 }
178 P->impls = psi_plist_add(P->impls, &impl);
179 }
180
181 /* end code */
182
183 #line 184 "src/parser_proc.c" /* glr.c:264 */
184
185 #include <stdio.h>
186 #include <stdlib.h>
187 #include <string.h>
188
189 #ifndef YY_
190 # if defined YYENABLE_NLS && YYENABLE_NLS
191 # if ENABLE_NLS
192 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
193 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
194 # endif
195 # endif
196 # ifndef YY_
197 # define YY_(Msgid) Msgid
198 # endif
199 #endif
200
201 #ifndef YYFREE
202 # define YYFREE free
203 #endif
204 #ifndef YYMALLOC
205 # define YYMALLOC malloc
206 #endif
207 #ifndef YYREALLOC
208 # define YYREALLOC realloc
209 #endif
210
211 #define YYSIZEMAX ((size_t) -1)
212
213 #ifdef __cplusplus
214 typedef bool yybool;
215 #else
216 typedef unsigned char yybool;
217 #endif
218 #define yytrue 1
219 #define yyfalse 0
220
221 #ifndef YYSETJMP
222 # include <setjmp.h>
223 # define YYJMP_BUF jmp_buf
224 # define YYSETJMP(Env) setjmp (Env)
225 /* Pacify clang. */
226 # define YYLONGJMP(Env, Val) (longjmp (Env, Val), YYASSERT (0))
227 #endif
228
229 #ifndef YY_ATTRIBUTE
230 # if (defined __GNUC__ \
231 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
232 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
233 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
234 # else
235 # define YY_ATTRIBUTE(Spec) /* empty */
236 # endif
237 #endif
238
239 #ifndef YY_ATTRIBUTE_PURE
240 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
241 #endif
242
243 #ifndef YY_ATTRIBUTE_UNUSED
244 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
245 #endif
246
247 #if !defined _Noreturn \
248 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
249 # if defined _MSC_VER && 1200 <= _MSC_VER
250 # define _Noreturn __declspec (noreturn)
251 # else
252 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
253 # endif
254 #endif
255
256 /* Suppress unused-variable warnings by "using" E. */
257 #if ! defined lint || defined __GNUC__
258 # define YYUSE(E) ((void) (E))
259 #else
260 # define YYUSE(E) /* empty */
261 #endif
262
263 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
264 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
265 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
266 _Pragma ("GCC diagnostic push") \
267 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
268 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
269 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
270 _Pragma ("GCC diagnostic pop")
271 #else
272 # define YY_INITIAL_VALUE(Value) Value
273 #endif
274 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
275 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
276 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
277 #endif
278 #ifndef YY_INITIAL_VALUE
279 # define YY_INITIAL_VALUE(Value) /* Nothing. */
280 #endif
281
282
283 #ifndef YYASSERT
284 # define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0)))
285 #endif
286
287 /* YYFINAL -- State number of the termination state. */
288 #define YYFINAL 133
289 /* YYLAST -- Last index in YYTABLE. */
290 #define YYLAST 2352
291
292 /* YYNTOKENS -- Number of terminals. */
293 #define YYNTOKENS 127
294 /* YYNNTS -- Number of nonterminals. */
295 #define YYNNTS 110
296 /* YYNRULES -- Number of rules. */
297 #define YYNRULES 437
298 /* YYNRULES -- Number of states. */
299 #define YYNSTATES 645
300 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
301 #define YYMAXRHS 13
302 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
303 accessed by $0, $-1, etc., in any rule. */
304 #define YYMAXLEFT 0
305
306 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */
307 #define YYUNDEFTOK 2
308 #define YYMAXUTOK 381
309
310 #define YYTRANSLATE(YYX) \
311 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
312
313 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
314 static const unsigned char yytranslate[] =
315 {
316 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
317 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
318 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
319 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
320 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
321 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
322 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
323 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
324 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
325 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
326 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
327 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
328 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
329 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
330 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
331 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
332 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
333 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
334 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
335 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
336 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
337 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
338 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
339 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
340 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
341 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
342 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
343 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
344 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
345 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
346 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
347 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
348 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
349 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
350 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
351 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
352 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
353 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
354 125, 126
355 };
356
357 #if YYDEBUG
358 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
359 static const unsigned short int yyrline[] =
360 {
361 0, 389, 389, 389, 389, 389, 389, 389, 389, 389,
362 389, 389, 389, 389, 389, 389, 389, 389, 389, 389,
363 390, 390, 390, 390, 391, 391, 391, 391, 391, 391,
364 391, 391, 391, 391, 391, 391, 391, 391, 391, 391,
365 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
366 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
367 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
368 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
369 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
370 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
371 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
372 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
373 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
374 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
375 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
376 392, 392, 392, 392, 392, 396, 397, 400, 401, 404,
377 405, 406, 407, 413, 421, 424, 427, 430, 433, 436,
378 439, 445, 451, 457, 480, 484, 488, 493, 498, 502,
379 506, 510, 517, 518, 522, 523, 524, 528, 529, 533,
380 534, 538, 539, 540, 544, 545, 549, 554, 559, 567,
381 570, 574, 579, 587, 590, 594, 598, 605, 609, 613,
382 617, 622, 632, 642, 647, 652, 658, 667, 670, 674,
383 678, 684, 691, 697, 698, 699, 700, 704, 707, 714,
384 715, 716, 717, 718, 722, 728, 729, 737, 747, 755,
385 763, 771, 774, 778, 782, 786, 791, 796, 804, 805,
386 806, 809, 815, 818, 821, 827, 828, 829, 830, 831,
387 832, 833, 834, 838, 839, 843, 846, 849, 855, 858,
388 861, 869, 881, 884, 887, 894, 897, 907, 910, 913,
389 916, 917, 921, 924, 927, 938, 944, 951, 959, 966,
390 977, 978, 982, 988, 998, 1008, 1021, 1022, 1034, 1037,
391 1040, 1043, 1049, 1052, 1062, 1075, 1080, 1088, 1098, 1108,
392 1111, 1115, 1121, 1124, 1130, 1138, 1145, 1148, 1154, 1159,
393 1167, 1171, 1175, 1179, 1183, 1187, 1194, 1198, 1202, 1206,
394 1213, 1226, 1239, 1252, 1255, 1262, 1265, 1271, 1275, 1282,
395 1285, 1291, 1294, 1300, 1303, 1315, 1318, 1325, 1330, 1335,
396 1345, 1348, 1354, 1357, 1363, 1370, 1377, 1378, 1379, 1380,
397 1381, 1382, 1383, 1384, 1385, 1389, 1392, 1398, 1401, 1404,
398 1407, 1410, 1416, 1420, 1428, 1429, 1433, 1440, 1443, 1446,
399 1449, 1452, 1458, 1462, 1470, 1477, 1485, 1493, 1494, 1495,
400 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1506, 1509, 1515,
401 1518, 1524, 1525, 1529, 1532, 1538, 1541, 1547, 1554, 1561,
402 1564, 1567, 1574, 1579, 1587, 1588, 1589, 1590, 1591, 1592,
403 1593, 1594, 1598, 1601, 1607, 1610, 1616, 1623, 1624, 1628,
404 1635, 1638, 1644, 1652, 1655, 1661, 1664, 1670
405 };
406 #endif
407
408 #if YYDEBUG || YYERROR_VERBOSE || 1
409 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
410 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
411 static const char *const yytname[] =
412 {
413 "\"end of file\"", "error", "$undefined", "BOOL", "CHAR", "SHORT",
414 "INT", "SIGNED", "UNSIGNED", "LONG", "FLOAT", "DOUBLE", "STRING",
415 "MIXED", "ARRAY", "OBJECT", "CALLABLE", "VOID", "ZVAL", "INT8", "UINT8",
416 "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "NULL", "TRUE",
417 "FALSE", "NAME", "NSNAME", "DOLLAR_NAME", "NUMBER", "QUOTED_STRING",
418 "QUOTED_CHAR", "\"end of line\"", "\";\"", "\"(\"", "\")\"", "\",\"",
419 "\":\"", "\"{\"", "\"}\"", "\"[\"", "\"]\"", "\"=\"", "\"#\"", "\"|\"",
420 "\"^\"", "\"&\"", "\"<<\"", "\">>\"", "\"+\"", "\"-\"", "\"*\"", "\"/\"",
421 "\"%\"", "\"<\"", "\">\"", "\">=\"", "\"<=\"", "\"||\"", "\"&&\"",
422 "\"==\"", "\"!=\"", "\"~\"", "\"!\"", "\".\"", "\"\\\\\"", "\"...\"",
423 "\"?\"", "PRAGMA", "ONCE", "ERROR", "WARNING", "IF", "IFDEF", "IFNDEF",
424 "ELSE", "ELIF", "ENDIF", "DEFINE", "DEFINED", "UNDEF", "IMPORT",
425 "INCLUDE", "INCLUDE_NEXT", "TYPEDEF", "STRUCT", "UNION", "ENUM", "CONST",
426 "LIB", "STATIC", "CALLBACK", "FUNCTION", "LET", "SET", "TEMP", "FREE",
427 "RETURN", "PRE_ASSERT", "POST_ASSERT", "BOOLVAL", "INTVAL", "STRVAL",
428 "PATHVAL", "STRLEN", "FLOATVAL", "ARRVAL", "OBJVAL", "COUNT", "CALLOC",
429 "TO_BOOL", "TO_INT", "TO_STRING", "TO_FLOAT", "TO_ARRAY", "TO_OBJECT",
430 "COMMENT", "WHITESPACE", "NO_WHITESPACE", "CPP_HEADER", "CPP_ATTRIBUTE",
431 "BINARY", "UNARY", "$accept", "binary_op_token", "unary_op_token",
432 "name_token", "any_noeol_token", "file", "blocks", "block", "lib", "cpp",
433 "cpp_exp", "cpp_message_token", "cpp_include_token", "cpp_header_token",
434 "cpp_no_arg_token", "cpp_name_arg_token", "cpp_exp_arg_token",
435 "cpp_macro_decl", "cpp_macro_sig", "cpp_macro_sig_args",
436 "cpp_macro_decl_tokens", "cpp_macro_decl_token_list", "cpp_macro_exp",
437 "cpp_macro_call_args", "cpp_macro_call_arg_list", "constant",
438 "constant_type", "constant_type_token", "impl_def_val",
439 "impl_def_val_token", "decl_typedef", "typedef", "const_decl_type",
440 "decl_type", "decl_type_complex", "decl_type_simple", "decl_real_type",
441 "decl_stdint_type", "int_signed", "int_width", "decl_int_type",
442 "int_signed_types", "signed_short_types", "signed_long_types",
443 "int_width_types", "decl_stmt", "decl", "decl_fn", "decl_functor",
444 "decl_func", "decl_args", "decl_arg", "decl_var", "decl_union",
445 "decl_struct", "decl_struct_args", "struct_args_block", "struct_args",
446 "struct_arg", "decl_enum", "decl_enum_items", "decl_enum_item",
447 "num_exp", "number", "enum_name", "union_name", "struct_name",
448 "optional_name", "decl_layout", "align_and_size", "array_size",
449 "indirection", "pointers", "impl", "impl_func", "impl_args", "impl_arg",
450 "impl_var", "impl_type", "impl_type_token", "impl_stmts", "impl_stmt",
451 "let_stmt", "let_exp", "let_exp_byref", "let_exp_assign", "let_calloc",
452 "let_callback", "let_func", "let_func_token", "let_func_exps",
453 "let_exps", "callback_rval", "callback_arg_list", "callback_args",
454 "return_stmt", "set_stmt", "set_exp", "set_func", "set_func_token",
455 "set_func_exps", "set_exps", "assert_stmt", "assert_stmt_token",
456 "free_stmt", "free_exps", "free_exp", "decl_vars", "reference", "byref", YY_NULLPTR
457 };
458 #endif
459
460 #define YYPACT_NINF -505
461 #define YYTABLE_NINF -436
462
463 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
464 STATE-NUM. */
465 static const short int yypact[] =
466 {
467 1189, -505, -505, -505, -505, -505, 21, -505, -505, 115,
468 -505, -505, -505, -505, -505, -505, -505, -505, 1880, -505,
469 -505, 506, 1908, 1680, 1680, 1680, 1353, 23, -41, 11,
470 -505, 81, 1189, -505, -505, -505, -505, -505, 1558, -505,
471 -505, -505, -505, -505, 45, 101, -505, -505, 49, 27,
472 -505, -505, -505, -505, -505, -505, 71, -505, 73, -505,
473 -505, -505, -505, -505, -505, 62, -505, -505, -505, -505,
474 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
475 1482, -505, 1680, 1680, 1680, 1984, 88, 595, -505, -505,
476 -505, -505, -505, -505, -505, -505, 428, -505, -505, -505,
477 -505, 92, 837, -11, -505, 1587, 1451, 1680, 1680, 93,
478 464, -505, 97, 1680, 100, 100, 41, 41, 104, -505,
479 -505, 108, 118, -505, 62, 121, -505, -505, 117, 119,
480 -505, 126, -505, -505, -505, 120, -505, 131, 1622, -505,
481 168, -505, 50, -505, -505, 45, -505, -505, 1935, 1680,
482 122, 1680, 123, 62, -505, -505, -505, -505, -505, 1935,
483 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
484 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
485 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
486 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
487 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
488 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
489 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
490 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
491 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
492 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
493 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
494 -505, -505, -505, -505, -505, -505, -505, -505, 837, 837,
495 716, -505, -505, -505, -505, -505, -505, -505, -505, -505,
496 -505, 1451, -505, -505, -505, -505, 1651, 1451, 138, 2209,
497 -6, -505, -6, -505, -505, -505, -505, 136, 137, 137,
498 42, 42, 1529, 140, -505, 122, 145, 151, -505, 62,
499 120, -505, -505, -505, -505, -505, -505, 62, 2011, 1558,
500 54, -505, 146, 52, -505, 1558, 1073, 1558, 1680, 86,
501 -505, -505, 132, -505, -505, -505, -505, -505, 1398, -505,
502 152, 1680, 57, -505, -505, 147, -505, 2055, 1680, -505,
503 -505, 1451, -505, -505, -505, -505, -505, -505, -505, -505,
504 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
505 1451, 1451, 156, 1908, 1558, 1558, -505, -505, -505, -505,
506 62, -505, 19, 139, 28, 150, 1680, -505, 1622, 62,
507 1622, 120, 1777, 1398, 1680, -505, 160, 159, -505, 169,
508 -505, -505, -505, 1238, -505, -505, -505, -505, -505, -505,
509 1398, -505, 2233, -505, 163, 161, -505, 173, 165, 180,
510 205, 48, -505, -505, 207, -505, -505, 2028, -505, 209,
511 120, 1804, 1680, -505, 211, 2209, 222, 224, 2160, -505,
512 229, 225, 1832, -505, -505, -505, 1680, -505, -505, -505,
513 -505, -505, 228, -505, -505, -505, -505, -505, -505, -505,
514 -505, -505, -505, -505, 226, 85, -505, 11, -505, -505,
515 230, 1622, -505, 62, 231, -505, 2233, -505, 303, -505,
516 232, 2038, 233, 2082, -505, 1398, 1398, 1073, -505, 1558,
517 -505, 11, 1558, -505, 1680, -505, -505, -505, -505, 234,
518 -505, 237, 238, -505, -505, 1451, 1451, 241, 236, 248,
519 -505, -505, 247, -505, 349, 246, 349, 242, -505, 120,
520 254, -505, 148, -505, -505, -505, -505, -505, -505, -505,
521 -505, 256, 257, 2233, -505, -505, -505, -505, 258, 1314,
522 1398, -505, 2185, -505, -505, 260, 1558, -505, 98, -505,
523 120, 837, 1680, 2209, 2257, 265, 263, -505, -505, -505,
524 349, -505, 11, 19, -505, -505, -505, -505, -505, 266,
525 1398, 11, -505, -505, 1398, 955, 264, 271, -505, 1558,
526 -505, -505, -505, 270, 277, -505, -8, -505, 11, 2135,
527 272, 2281, 274, -505, 276, -505, -505, -505, -505, 278,
528 279, 281, 1398, 303, 284, -505, 1073, 287, 285, 965,
529 2109, 160, -505, -505, -505, 286, 1314, -505, -505, 288,
530 291, 289, 295, -505, -505, 303, -505, -505, 349, 290,
531 1073, -505, -505, -505, -505
532 };
533
534 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
535 Performed when YYTABLE does not specify something else to do. Zero
536 means the default is an error. */
537 static const unsigned short int yydefact[] =
538 {
539 155, 268, 265, 269, 263, 264, 266, 252, 253, 0,
540 255, 256, 257, 258, 259, 260, 261, 262, 251, 160,
541 159, 0, 0, 0, 0, 333, 0, 0, 0, 435,
542 161, 0, 156, 157, 163, 162, 164, 166, 341, 242,
543 244, 243, 249, 250, 272, 282, 248, 165, 0, 0,
544 291, 290, 296, 168, 167, 169, 0, 170, 0, 267,
545 254, 39, 33, 31, 24, 341, 343, 38, 37, 35,
546 36, 32, 30, 28, 27, 25, 26, 34, 29, 297,
547 0, 251, 0, 0, 0, 0, 0, 203, 182, 183,
548 194, 191, 192, 189, 195, 190, 0, 193, 184, 185,
549 186, 0, 203, 0, 175, 0, 0, 333, 333, 0,
550 341, 236, 235, 0, 337, 337, 245, 246, 247, 330,
551 223, 269, 252, 226, 0, 0, 222, 241, 0, 0,
552 437, 0, 436, 1, 158, 339, 302, 0, 342, 273,
553 277, 275, 279, 270, 283, 272, 271, 285, 298, 0,
554 0, 0, 342, 341, 344, 304, 245, 246, 247, 298,
555 73, 40, 41, 42, 43, 44, 45, 46, 47, 48,
556 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
557 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
558 69, 70, 71, 72, 74, 75, 76, 77, 78, 79,
559 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
560 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
561 100, 101, 102, 103, 104, 105, 106, 107, 110, 180,
562 108, 109, 111, 112, 113, 114, 115, 116, 117, 118,
563 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
564 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
565 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
566 149, 150, 151, 152, 153, 154, 205, 181, 204, 203,
567 203, 178, 172, 173, 187, 188, 174, 177, 176, 213,
568 214, 0, 22, 23, 20, 21, 0, 0, 215, 179,
569 245, 332, 246, 331, 234, 240, 237, 0, 0, 0,
570 0, 0, 0, 0, 171, 0, 0, 0, 306, 341,
571 339, 278, 274, 280, 281, 276, 284, 299, 0, 0,
572 0, 300, 318, 0, 316, 0, 435, 0, 0, 0,
573 427, 428, 0, 365, 368, 367, 369, 370, 0, 371,
574 0, 0, 0, 206, 198, 0, 197, 0, 0, 211,
575 208, 217, 2, 3, 4, 5, 6, 7, 8, 9,
576 10, 11, 13, 12, 14, 15, 16, 17, 18, 19,
577 0, 0, 0, 0, 0, 0, 309, 308, 310, 307,
578 341, 303, 227, 0, 0, 0, 0, 305, 0, 0,
579 0, 339, 0, 0, 0, 315, 0, 0, 421, 31,
580 327, 326, 328, 0, 419, 417, 416, 418, 415, 414,
581 0, 329, 410, 320, 0, 0, 409, 0, 0, 0,
582 0, 0, 430, 420, 0, 345, 366, 0, 295, 0,
583 339, 0, 199, 207, 0, 219, 0, 218, 0, 209,
584 0, 335, 0, 312, 239, 238, 0, 229, 231, 232,
585 230, 233, 0, 228, 346, 358, 359, 360, 361, 357,
586 362, 363, 364, 356, 0, 0, 350, 435, 355, 340,
587 0, 0, 286, 0, 0, 301, 319, 317, 0, 372,
588 24, 0, 0, 0, 324, 0, 0, 435, 408, 0,
589 354, 435, 0, 429, 0, 407, 426, 294, 288, 0,
590 201, 0, 200, 212, 216, 0, 0, 0, 0, 0,
591 311, 313, 0, 221, 0, 0, 0, 352, 292, 339,
592 31, 377, 30, 395, 394, 392, 390, 391, 393, 389,
593 388, 34, 29, 381, 382, 378, 379, 380, 0, 0,
594 0, 322, 0, 323, 411, 422, 0, 433, 0, 431,
595 339, 203, 0, 220, 210, 0, 0, 314, 293, 347,
596 0, 351, 435, 227, 287, 401, 387, 396, 402, 0,
597 0, 435, 383, 321, 0, 435, 0, 0, 432, 0,
598 289, 196, 202, 0, 0, 348, 0, 353, 435, 0,
599 397, 325, 0, 424, 423, 412, 373, 434, 338, 0,
600 0, 0, 0, 0, 0, 413, 435, 0, 0, 403,
601 0, 329, 399, 376, 374, 398, 0, 386, 425, 0,
602 0, 0, 404, 405, 384, 0, 375, 336, 0, 0,
603 435, 400, 349, 385, 406
604 };
605
606 /* YYPGOTO[NTERM-NUM]. */
607 static const short int yypgoto[] =
608 {
609 -505, -289, -98, -7, 39, -505, -505, 293, -505, -505,
610 -505, -505, -505, -505, -505, -505, -505, -505, -505, -505,
611 -99, -505, -270, -505, -505, -505, -505, -505, -236, -505,
612 -505, 318, 7, -21, -505, -505, -505, 235, 297, -505,
613 -505, 198, -505, -505, -505, -505, 26, 330, -505, -505,
614 190, -16, -38, -505, -505, 60, -141, -505, -102, 37,
615 -505, -44, -333, -505, -505, -505, -505, 65, -505, 5,
616 -311, -51, -5, -505, 340, -505, -154, -458, -504, -505,
617 64, -330, -505, -255, -475, 46, -505, -505, -505, -150,
618 -505, -505, -505, -505, -505, -505, -505, -469, 44, -505,
619 -505, -505, -505, -505, -505, -505, -120, -505, -28, -477
620 };
621
622 /* YYDEFGOTO[NTERM-NUM]. */
623 static const short int yydefgoto[] =
624 {
625 -1, 496, 420, 135, 276, 31, 32, 33, 34, 35,
626 101, 102, 103, 286, 104, 105, 106, 281, 511, 512,
627 277, 278, 299, 446, 447, 36, 125, 126, 462, 463,
628 37, 451, 329, 39, 40, 41, 42, 43, 44, 45,
629 46, 143, 322, 325, 146, 47, 111, 49, 50, 51,
630 330, 52, 421, 53, 54, 387, 388, 452, 453, 113,
631 333, 334, 422, 423, 56, 114, 115, 119, 519, 308,
632 318, 137, 400, 57, 58, 475, 476, 424, 477, 478,
633 342, 343, 344, 622, 623, 624, 545, 546, 547, 548,
634 614, 625, 579, 631, 632, 345, 346, 425, 426, 427,
635 586, 604, 347, 348, 349, 431, 432, 558, 428, 132
636 };
637
638 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
639 positive, shift that token. If negative, reduce the rule whose
640 number is the opposite. If YYTABLE_NINF, syntax error. */
641 static const short int yytable[] =
642 {
643 136, 131, 79, 283, 80, 127, 112, 38, 297, 397,
644 381, 549, 436, 544, 151, 437, 116, 117, 118, 527,
645 569, 357, 572, 284, 500, 38, 48, 360, 554, 110,
646 59, 465, 60, 138, 466, -334, -334, 55, 467, 38,
647 468, 469, 470, 471, 472, 473, 457, 458, 459, 139,
648 140, 141, 460, 461, 142, 29, 323, 128, 48, 324,
649 152, 130, 610, 436, 127, 148, 595, 474, 381, 55,
650 486, 381, 136, 155, 582, 156, 157, 158, -337, 386,
651 493, 133, 307, -337, 383, 503, 147, 494, 504, 280,
652 482, 445, 404, 401, 402, 405, 440, 441, 288, 298,
653 300, 302, 351, 408, 433, 138, 306, 144, 4, 5,
654 448, 449, 285, 149, 527, 150, 603, 66, 61, 312,
655 309, 310, 311, 600, 525, 526, 159, 62, 282, 508,
656 304, 320, 331, 63, 642, -296, 626, 588, 589, -224,
657 611, 307, 332, 331, 350, 64, -334, 628, 152, -225,
658 633, 636, 313, 65, 314, 543, 381, 316, 626, 381,
659 381, 315, 552, 553, 317, 575, 576, 384, 385, 319,
660 66, 644, 301, 303, 321, 435, 361, 382, 154, 383,
661 354, 356, 464, 394, 395, 442, 392, 67, 68, 69,
662 70, 438, 403, 297, 450, 479, 489, 500, 498, 297,
663 414, 415, 416, 417, 418, 419, 488, -420, 71, 497,
664 72, 499, 73, 74, 75, 76, 543, 583, 574, 335,
665 336, 337, 338, 339, 340, 341, 501, 77, 78, 335,
666 336, 337, 338, 339, 340, 341, 335, 336, 337, 338,
667 339, 340, 341, 502, 505, 563, 564, 599, 507, 590,
668 513, 601, 533, 534, 535, 536, 537, 538, 539, 540,
669 577, 514, 517, 297, 515, 523, 518, 524, 396, 528,
670 529, -24, 550, 560, 381, 381, 561, 566, 562, 620,
671 543, 565, 297, 297, 298, 567, 568, 570, 573, 359,
672 298, 136, -387, 543, -396, 580, 581, 406, 593, 429,
673 585, 594, 543, 605, 598, 391, 61, 127, 606, 608,
674 609, 618, 613, 615, 152, 62, 616, 353, 617, 619,
675 629, 530, 398, 627, 630, 134, 635, 637, 639, 643,
676 531, 430, 638, 64, 410, 640, 411, 597, 412, 456,
677 109, 413, 145, 326, 439, 305, 454, 455, 86, 352,
678 521, 444, 465, 130, 298, 466, 292, 293, 66, 467,
679 487, 468, 469, 470, 471, 472, 473, 112, 129, 294,
680 295, 389, 571, 298, 298, 67, 68, 69, 70, 393,
681 641, 407, 578, 434, 559, 152, 485, 0, 0, 480,
682 110, 155, 0, 320, 481, 0, 71, 332, 532, 0,
683 73, 74, 75, 76, 0, 0, 0, 533, 534, 535,
684 536, 537, 538, 539, 540, 541, 542, 297, 297, 0,
685 492, 0, 0, 0, 0, 485, 0, 0, 0, 0,
686 0, 61, 0, 0, 0, 510, 112, 0, 0, 0,
687 62, 0, 0, 0, 0, 0, 63, 0, 0, 522,
688 0, 0, 0, 0, 0, 279, 0, 0, 64, 110,
689 0, 555, 591, 0, 557, 0, 0, 61, 0, 0,
690 127, 0, 0, 556, 391, 0, 62, 0, 398, 0,
691 0, 0, 63, 10, 11, 12, 13, 14, 15, 16,
692 17, 0, 0, 0, 64, 0, 0, 430, 0, 0,
693 67, 68, 69, 70, 0, 0, 0, 0, 298, 298,
694 0, 0, 0, 0, 0, 0, 0, 0, 587, 66,
695 0, 71, 0, 72, 0, 73, 74, 75, 76, 0,
696 0, 0, 0, 0, 0, 0, 67, 68, 69, 70,
697 77, 78, 0, 0, 596, 0, 0, 0, 0, 0,
698 0, 607, 0, 0, 0, 592, 0, 71, 0, 72,
699 0, 73, 74, 75, 76, 0, 0, 0, 0, 0,
700 0, 0, 0, 0, 0, 621, 77, 78, 87, 0,
701 88, 89, 90, 91, 92, 93, 94, 95, 96, 0,
702 97, 98, 99, 100, 0, 160, 0, 621, 161, 162,
703 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
704 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
705 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
706 193, 0, 194, 195, 196, 197, 198, 199, 200, 201,
707 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
708 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
709 222, 223, 224, 225, 226, 227, 228, 0, 229, 230,
710 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
711 0, 241, 0, 242, 243, 244, 245, 246, 247, 248,
712 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
713 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
714 269, 270, 271, 272, 273, 274, 160, 0, 275, 161,
715 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
716 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
717 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
718 192, 193, 0, 194, 195, 196, 197, 198, 199, 200,
719 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
720 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
721 221, 222, 223, 224, 225, 226, 227, 228, 0, 0,
722 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
723 240, 0, 241, 0, 242, 243, 244, 245, 246, 247,
724 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
725 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
726 268, 269, 270, 271, 272, 273, 274, 160, 355, 275,
727 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
728 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
729 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
730 191, 192, 193, 0, 194, 195, 196, 197, 198, 199,
731 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
732 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
733 220, 221, 222, 223, 224, 225, 226, 227, 228, 0,
734 0, 230, 231, 232, 233, 234, 235, 236, 237, 238,
735 239, 240, 0, 241, 0, 242, 243, 244, 245, 246,
736 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
737 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
738 267, 268, 269, 270, 271, 272, 273, 274, 61, 0,
739 275, 0, 0, 0, 0, 0, 0, 62, 61, 0,
740 0, 0, 408, 409, 0, 0, 0, 62, 0, 0,
741 0, 0, 408, 409, 0, 64, 410, 0, 411, 0,
742 412, 0, 0, 413, 0, 64, 410, -435, 411, 0,
743 412, 0, 0, 413, 0, 130, 0, 0, 292, 293,
744 66, 0, 0, 0, 0, 130, 0, 0, 292, 293,
745 66, 294, 295, 0, 0, 602, 0, 67, 68, 69,
746 70, 294, 295, 0, 0, 0, 0, 67, 68, 69,
747 70, 0, 0, 0, 0, 0, 0, 0, 71, 0,
748 72, 0, 73, 74, 75, 76, 0, 0, 71, 0,
749 72, 0, 73, 74, 75, 76, 0, 77, 78, 414,
750 415, 416, 417, 418, 419, 0, 61, 77, 78, 414,
751 415, 416, 417, 418, 419, 62, 0, 0, 0, 0,
752 408, 409, 0, 0, 0, 0, 0, 0, 0, 0,
753 0, 0, 0, 64, 410, 0, 411, 0, 412, 0,
754 0, 413, 0, 0, 0, 0, 0, 0, 0, 0,
755 0, 0, 0, 130, 0, 0, 292, 293, 66, 0,
756 0, 0, 0, 0, 0, 0, 0, 0, 0, 294,
757 295, 0, 0, 0, 0, 67, 68, 69, 70, 0,
758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
759 0, 0, 0, 0, 0, 0, 71, 0, 72, 0,
760 73, 74, 75, 76, 0, 0, 0, 0, 0, 0,
761 0, 0, 0, 0, 0, 77, 78, 414, 415, 416,
762 417, 418, 419, 1, 2, 3, 4, 5, 6, 7,
763 8, 0, 0, 0, 0, 0, 9, 0, 10, 11,
764 12, 13, 14, 15, 16, 17, 0, 0, 0, 18,
765 0, 0, 0, 0, 0, 19, 20, 0, 0, 0,
766 0, 0, 0, 0, 0, 0, 21, 0, 0, 0,
767 0, 61, 1, 2, 3, 4, 5, 6, 7, 8,
768 62, 0, 0, 0, 0, 0, 63, 10, 11, 12,
769 13, 14, 15, 16, 17, 0, 0, 0, 490, 410,
770 0, 411, 0, 412, 0, 0, 413, 22, 23, 24,
771 25, 26, 27, 28, 0, 29, 0, 0, 0, 0,
772 0, 292, 293, 66, 0, 0, 0, 0, 0, 0,
773 0, 0, 0, 0, 294, 295, 0, 0, 0, 30,
774 67, 68, 69, 70, 0, 0, 0, 61, 0, 0,
775 0, 0, 0, 0, 0, 0, 62, 82, 83, 84,
776 491, 71, 530, 72, 0, 73, 74, 75, 76, 0,
777 0, 531, 0, 0, 64, 410, 0, 411, 0, 412,
778 77, 78, 413, 0, 0, 0, 120, 1, 2, 121,
779 4, 5, 6, 122, 8, 123, 0, 292, 293, 66,
780 124, 0, 10, 11, 12, 13, 14, 15, 16, 17,
781 294, 295, 0, 81, 0, 0, 67, 68, 69, 70,
782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
783 0, 61, 0, 0, 0, 0, 0, 71, 0, 532,
784 62, 73, 74, 75, 76, 0, 63, 0, 533, 534,
785 535, 536, 537, 538, 539, 540, 541, 542, 64, 410,
786 0, 411, 0, 412, 0, 0, 413, 0, 0, 0,
787 0, 0, 82, 83, 84, 0, 0, 0, 0, 0,
788 0, 292, 293, 66, 61, 0, 0, 0, 0, 0,
789 0, 0, 0, 62, 294, 295, 0, 0, 0, 63,
790 67, 68, 69, 70, 0, 0, 0, 0, 0, 0,
791 0, 64, 0, 0, 289, 61, 290, 0, 0, 291,
792 0, 71, 0, 72, 62, 73, 74, 75, 76, 0,
793 63, 0, 0, 0, 292, 293, 0, 0, 0, 0,
794 77, 78, 64, 0, 0, 0, 0, 294, 295, 0,
795 153, 0, 0, 67, 68, 69, 70, 0, 0, 0,
796 0, 0, 61, 0, 296, 0, 0, 154, 0, 0,
797 0, 62, 0, 0, 71, 0, 72, 63, 73, 74,
798 75, 76, 0, 0, 67, 68, 69, 70, 0, 64,
799 0, 61, 0, 77, 78, 0, 0, 390, 0, 0,
800 62, 0, 0, 0, 0, 71, 63, 72, 0, 73,
801 74, 75, 76, 0, 154, 0, 0, 0, 64, 0,
802 61, 0, 0, 0, 77, 78, 0, 0, 0, 62,
803 0, 67, 68, 69, 70, 63, 0, 0, 0, 0,
804 0, 0, 0, 66, 287, 0, 0, 64, 0, 0,
805 0, 0, 71, 0, 72, 61, 73, 74, 75, 76,
806 67, 68, 69, 70, 62, 0, 0, 0, 0, 0,
807 63, 77, 78, 0, 0, 0, 0, 0, 0, 0,
808 0, 71, 64, 72, 61, 73, 74, 75, 76, 67,
809 68, 69, 70, 62, 0, 0, 0, 0, 0, 63,
810 77, 78, 0, 0, 0, 0, 0, 154, 0, 0,
811 71, 64, 72, 61, 73, 74, 75, 76, 0, 358,
812 0, 0, 62, 0, 67, 68, 69, 70, 63, 77,
813 78, 0, 0, 0, 0, 0, 0, 0, 0, 0,
814 64, 0, 0, 0, 0, 71, 0, 72, 0, 73,
815 74, 75, 76, 67, 68, 69, 70, 0, 0, 0,
816 0, 0, 0, 0, 77, 78, 0, 0, 0, 0,
817 0, 0, 0, 0, 71, 0, 72, 0, 73, 74,
818 75, 76, 67, 68, 69, 70, 0, 0, 0, 0,
819 0, 0, 0, 77, 78, 0, 0, 0, 0, 0,
820 0, 0, 0, 71, 0, 72, 0, 73, 74, 75,
821 76, 1, 2, 3, 4, 5, 6, 7, 8, 0,
822 0, 0, 77, 78, 483, 0, 10, 11, 12, 13,
823 14, 15, 16, 17, 0, 0, 0, 81, 1, 2,
824 3, 4, 5, 6, 7, 8, 0, 0, 0, 0,
825 0, 483, 0, 10, 11, 12, 13, 14, 15, 16,
826 17, 0, 0, 0, 81, 0, 1, 2, 3, 4,
827 5, 6, 7, 8, 0, 0, 0, 484, 0, 9,
828 0, 10, 11, 12, 13, 14, 15, 16, 17, 0,
829 0, 0, 18, 0, 0, 0, 82, 83, 84, 328,
830 0, 0, 0, 0, 509, 520, 0, 0, 0, 0,
831 0, 0, 0, 0, 1, 2, 3, 4, 5, 6,
832 7, 8, 0, 82, 83, 84, 328, 9, 0, 10,
833 11, 12, 13, 14, 15, 16, 17, 0, 0, 0,
834 81, 0, 1, 2, 3, 4, 5, 6, 7, 8,
835 0, 107, 108, 25, 85, 9, 0, 10, 11, 12,
836 13, 14, 15, 16, 17, 0, 0, 0, 18, 1,
837 2, 3, 4, 5, 6, 7, 8, 0, 0, 0,
838 0, 0, 327, 0, 10, 11, 12, 13, 14, 15,
839 16, 17, 0, 0, 0, 81, 0, 0, 0, 82,
840 83, 84, 85, 0, 0, 0, 0, 0, 0, 0,
841 0, 0, 0, 0, 0, 0, 0, 0, 1, 2,
842 3, 4, 5, 6, 7, 8, 0, 107, 108, 25,
843 85, 124, 0, 10, 11, 12, 13, 14, 15, 16,
844 17, 0, 0, 0, 81, 1, 2, 3, 4, 5,
845 6, 7, 8, 0, 82, 83, 84, 328, 399, 0,
846 10, 11, 12, 13, 14, 15, 16, 17, 0, 0,
847 0, 81, 1, 2, 3, 4, 5, 6, 7, 8,
848 0, 0, 0, 0, 0, 0, 0, 10, 11, 12,
849 13, 14, 15, 16, 17, 506, 0, 0, 81, 0,
850 0, 0, 0, 82, 83, 84, 362, 363, 364, 365,
851 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
852 376, 377, 378, 379, 443, 0, 0, 0, 0, 495,
853 82, 83, 84, 362, 363, 364, 365, 366, 367, 368,
854 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
855 379, 551, 0, 0, 0, 0, 380, 82, 83, 84,
856 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
857 372, 373, 374, 375, 376, 377, 378, 379, 634, 0,
858 0, 0, 0, 495, 0, 0, 0, 362, 363, 364,
859 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
860 375, 376, 377, 378, 379, 612, 0, 0, 0, 0,
861 495, 0, 0, 362, 363, 364, 365, 366, 367, 368,
862 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
863 379, 516, 0, 0, 0, 0, 495, 0, 362, 363,
864 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
865 374, 375, 376, 377, 378, 379, 584, 0, 0, 0,
866 0, 380, 0, 362, 363, 364, 365, 366, 367, 368,
867 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
868 379, 0, 0, 0, 0, 0, 495, 362, 363, 364,
869 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
870 375, 376, 377, 378, 379, 0, 0, 0, 0, 0,
871 380, 362, 363, 364, 365, 366, 367, 368, 369, 370,
872 371, 372, 373, 374, 375, 376, 377, 378, 379, 0,
873 0, 0, 0, 0, 495, 362, 363, 364, 365, 366,
874 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
875 377, 378, 379, 0, 0, 0, 0, 0, 380, 362,
876 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
877 373, 374, 375, 376, 377, 378, 379, 0, 0, 0,
878 0, 0, 495
879 };
880
881 static const short int yycheck[] =
882 {
883 38, 29, 9, 102, 9, 26, 22, 0, 106, 320,
884 299, 488, 342, 488, 65, 348, 23, 24, 25, 477,
885 524, 291, 526, 34, 32, 18, 0, 297, 497, 22,
886 9, 3, 11, 38, 6, 41, 42, 0, 10, 32,
887 12, 13, 14, 15, 16, 17, 27, 28, 29, 4,
888 5, 6, 33, 34, 9, 96, 6, 34, 32, 9,
889 65, 50, 70, 393, 85, 38, 570, 39, 357, 32,
890 403, 360, 110, 80, 549, 82, 83, 84, 37, 37,
891 413, 0, 41, 42, 42, 37, 37, 420, 40, 96,
892 401, 361, 40, 39, 40, 43, 39, 40, 105, 106,
893 107, 108, 153, 17, 18, 110, 113, 6, 7, 8,
894 380, 381, 123, 42, 572, 42, 585, 55, 3, 124,
895 115, 116, 117, 581, 39, 40, 38, 12, 36, 440,
896 37, 138, 148, 18, 638, 38, 613, 39, 40, 31,
897 598, 41, 149, 159, 151, 30, 42, 616, 153, 31,
898 619, 626, 31, 38, 37, 488, 445, 31, 635, 448,
899 449, 42, 495, 496, 44, 17, 18, 308, 309, 38,
900 55, 640, 107, 108, 6, 43, 38, 41, 55, 42,
901 279, 280, 43, 38, 33, 38, 46, 72, 73, 74,
902 75, 39, 46, 291, 38, 45, 37, 32, 37, 297,
903 114, 115, 116, 117, 118, 119, 46, 38, 93, 46,
904 95, 38, 97, 98, 99, 100, 549, 550, 529, 97,
905 98, 99, 100, 101, 102, 103, 46, 112, 113, 97,
906 98, 99, 100, 101, 102, 103, 97, 98, 99, 100,
907 101, 102, 103, 38, 37, 515, 516, 580, 39, 560,
908 39, 584, 104, 105, 106, 107, 108, 109, 110, 111,
909 112, 39, 33, 361, 40, 37, 41, 41, 319, 39,
910 39, 39, 39, 39, 563, 564, 39, 41, 40, 612,
911 613, 40, 380, 381, 291, 37, 39, 41, 46, 296,
912 297, 329, 38, 626, 38, 38, 38, 335, 33, 337,
913 40, 38, 635, 39, 38, 312, 3, 328, 37, 39,
914 33, 32, 40, 39, 319, 12, 40, 278, 40, 38,
915 33, 18, 327, 39, 39, 32, 40, 39, 39, 39,
916 27, 338, 41, 30, 31, 40, 33, 573, 35, 390,
917 22, 38, 45, 145, 351, 110, 384, 385, 18, 159,
918 452, 358, 3, 50, 361, 6, 53, 54, 55, 10,
919 404, 12, 13, 14, 15, 16, 17, 383, 28, 66,
920 67, 311, 526, 380, 381, 72, 73, 74, 75, 315,
921 635, 335, 532, 339, 504, 390, 402, -1, -1, 396,
922 383, 398, -1, 400, 399, -1, 93, 404, 95, -1,
923 97, 98, 99, 100, -1, -1, -1, 104, 105, 106,
924 107, 108, 109, 110, 111, 112, 113, 515, 516, -1,
925 413, -1, -1, -1, -1, 441, -1, -1, -1, -1,
926 -1, 3, -1, -1, -1, 442, 452, -1, -1, -1,
927 12, -1, -1, -1, -1, -1, 18, -1, -1, 456,
928 -1, -1, -1, -1, -1, 27, -1, -1, 30, 452,
929 -1, 499, 561, -1, 502, -1, -1, 3, -1, -1,
930 491, -1, -1, 501, 481, -1, 12, -1, 483, -1,
931 -1, -1, 18, 19, 20, 21, 22, 23, 24, 25,
932 26, -1, -1, -1, 30, -1, -1, 504, -1, -1,
933 72, 73, 74, 75, -1, -1, -1, -1, 515, 516,
934 -1, -1, -1, -1, -1, -1, -1, -1, 556, 55,
935 -1, 93, -1, 95, -1, 97, 98, 99, 100, -1,
936 -1, -1, -1, -1, -1, -1, 72, 73, 74, 75,
937 112, 113, -1, -1, 572, -1, -1, -1, -1, -1,
938 -1, 589, -1, -1, -1, 562, -1, 93, -1, 95,
939 -1, 97, 98, 99, 100, -1, -1, -1, -1, -1,
940 -1, -1, -1, -1, -1, 613, 112, 113, 72, -1,
941 74, 75, 76, 77, 78, 79, 80, 81, 82, -1,
942 84, 85, 86, 87, -1, 0, -1, 635, 3, 4,
943 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
944 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
945 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
946 35, -1, 37, 38, 39, 40, 41, 42, 43, 44,
947 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
948 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
949 65, 66, 67, 68, 69, 70, 71, -1, 73, 74,
950 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
951 -1, 86, -1, 88, 89, 90, 91, 92, 93, 94,
952 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
953 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
954 115, 116, 117, 118, 119, 120, 0, -1, 123, 3,
955 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
956 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
957 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
958 34, 35, -1, 37, 38, 39, 40, 41, 42, 43,
959 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
960 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
961 64, 65, 66, 67, 68, 69, 70, 71, -1, -1,
962 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
963 84, -1, 86, -1, 88, 89, 90, 91, 92, 93,
964 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
965 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
966 114, 115, 116, 117, 118, 119, 120, 0, 122, 123,
967 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
968 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
969 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
970 33, 34, 35, -1, 37, 38, 39, 40, 41, 42,
971 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
972 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
973 63, 64, 65, 66, 67, 68, 69, 70, 71, -1,
974 -1, 74, 75, 76, 77, 78, 79, 80, 81, 82,
975 83, 84, -1, 86, -1, 88, 89, 90, 91, 92,
976 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
977 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
978 113, 114, 115, 116, 117, 118, 119, 120, 3, -1,
979 123, -1, -1, -1, -1, -1, -1, 12, 3, -1,
980 -1, -1, 17, 18, -1, -1, -1, 12, -1, -1,
981 -1, -1, 17, 18, -1, 30, 31, -1, 33, -1,
982 35, -1, -1, 38, -1, 30, 31, 32, 33, -1,
983 35, -1, -1, 38, -1, 50, -1, -1, 53, 54,
984 55, -1, -1, -1, -1, 50, -1, -1, 53, 54,
985 55, 66, 67, -1, -1, 70, -1, 72, 73, 74,
986 75, 66, 67, -1, -1, -1, -1, 72, 73, 74,
987 75, -1, -1, -1, -1, -1, -1, -1, 93, -1,
988 95, -1, 97, 98, 99, 100, -1, -1, 93, -1,
989 95, -1, 97, 98, 99, 100, -1, 112, 113, 114,
990 115, 116, 117, 118, 119, -1, 3, 112, 113, 114,
991 115, 116, 117, 118, 119, 12, -1, -1, -1, -1,
992 17, 18, -1, -1, -1, -1, -1, -1, -1, -1,
993 -1, -1, -1, 30, 31, -1, 33, -1, 35, -1,
994 -1, 38, -1, -1, -1, -1, -1, -1, -1, -1,
995 -1, -1, -1, 50, -1, -1, 53, 54, 55, -1,
996 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66,
997 67, -1, -1, -1, -1, 72, 73, 74, 75, -1,
998 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
999 -1, -1, -1, -1, -1, -1, 93, -1, 95, -1,
1000 97, 98, 99, 100, -1, -1, -1, -1, -1, -1,
1001 -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
1002 117, 118, 119, 4, 5, 6, 7, 8, 9, 10,
1003 11, -1, -1, -1, -1, -1, 17, -1, 19, 20,
1004 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
1005 -1, -1, -1, -1, -1, 36, 37, -1, -1, -1,
1006 -1, -1, -1, -1, -1, -1, 47, -1, -1, -1,
1007 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1008 12, -1, -1, -1, -1, -1, 18, 19, 20, 21,
1009 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
1010 -1, 33, -1, 35, -1, -1, 38, 88, 89, 90,
1011 91, 92, 93, 94, -1, 96, -1, -1, -1, -1,
1012 -1, 53, 54, 55, -1, -1, -1, -1, -1, -1,
1013 -1, -1, -1, -1, 66, 67, -1, -1, -1, 120,
1014 72, 73, 74, 75, -1, -1, -1, 3, -1, -1,
1015 -1, -1, -1, -1, -1, -1, 12, 89, 90, 91,
1016 92, 93, 18, 95, -1, 97, 98, 99, 100, -1,
1017 -1, 27, -1, -1, 30, 31, -1, 33, -1, 35,
1018 112, 113, 38, -1, -1, -1, 3, 4, 5, 6,
1019 7, 8, 9, 10, 11, 12, -1, 53, 54, 55,
1020 17, -1, 19, 20, 21, 22, 23, 24, 25, 26,
1021 66, 67, -1, 30, -1, -1, 72, 73, 74, 75,
1022 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1023 -1, 3, -1, -1, -1, -1, -1, 93, -1, 95,
1024 12, 97, 98, 99, 100, -1, 18, -1, 104, 105,
1025 106, 107, 108, 109, 110, 111, 112, 113, 30, 31,
1026 -1, 33, -1, 35, -1, -1, 38, -1, -1, -1,
1027 -1, -1, 89, 90, 91, -1, -1, -1, -1, -1,
1028 -1, 53, 54, 55, 3, -1, -1, -1, -1, -1,
1029 -1, -1, -1, 12, 66, 67, -1, -1, -1, 18,
1030 72, 73, 74, 75, -1, -1, -1, -1, -1, -1,
1031 -1, 30, -1, -1, 33, 3, 35, -1, -1, 38,
1032 -1, 93, -1, 95, 12, 97, 98, 99, 100, -1,
1033 18, -1, -1, -1, 53, 54, -1, -1, -1, -1,
1034 112, 113, 30, -1, -1, -1, -1, 66, 67, -1,
1035 38, -1, -1, 72, 73, 74, 75, -1, -1, -1,
1036 -1, -1, 3, -1, 83, -1, -1, 55, -1, -1,
1037 -1, 12, -1, -1, 93, -1, 95, 18, 97, 98,
1038 99, 100, -1, -1, 72, 73, 74, 75, -1, 30,
1039 -1, 3, -1, 112, 113, -1, -1, 38, -1, -1,
1040 12, -1, -1, -1, -1, 93, 18, 95, -1, 97,
1041 98, 99, 100, -1, 55, -1, -1, -1, 30, -1,
1042 3, -1, -1, -1, 112, 113, -1, -1, -1, 12,
1043 -1, 72, 73, 74, 75, 18, -1, -1, -1, -1,
1044 -1, -1, -1, 55, 27, -1, -1, 30, -1, -1,
1045 -1, -1, 93, -1, 95, 3, 97, 98, 99, 100,
1046 72, 73, 74, 75, 12, -1, -1, -1, -1, -1,
1047 18, 112, 113, -1, -1, -1, -1, -1, -1, -1,
1048 -1, 93, 30, 95, 3, 97, 98, 99, 100, 72,
1049 73, 74, 75, 12, -1, -1, -1, -1, -1, 18,
1050 112, 113, -1, -1, -1, -1, -1, 55, -1, -1,
1051 93, 30, 95, 3, 97, 98, 99, 100, -1, 38,
1052 -1, -1, 12, -1, 72, 73, 74, 75, 18, 112,
1053 113, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1054 30, -1, -1, -1, -1, 93, -1, 95, -1, 97,
1055 98, 99, 100, 72, 73, 74, 75, -1, -1, -1,
1056 -1, -1, -1, -1, 112, 113, -1, -1, -1, -1,
1057 -1, -1, -1, -1, 93, -1, 95, -1, 97, 98,
1058 99, 100, 72, 73, 74, 75, -1, -1, -1, -1,
1059 -1, -1, -1, 112, 113, -1, -1, -1, -1, -1,
1060 -1, -1, -1, 93, -1, 95, -1, 97, 98, 99,
1061 100, 4, 5, 6, 7, 8, 9, 10, 11, -1,
1062 -1, -1, 112, 113, 17, -1, 19, 20, 21, 22,
1063 23, 24, 25, 26, -1, -1, -1, 30, 4, 5,
1064 6, 7, 8, 9, 10, 11, -1, -1, -1, -1,
1065 -1, 17, -1, 19, 20, 21, 22, 23, 24, 25,
1066 26, -1, -1, -1, 30, -1, 4, 5, 6, 7,
1067 8, 9, 10, 11, -1, -1, -1, 70, -1, 17,
1068 -1, 19, 20, 21, 22, 23, 24, 25, 26, -1,
1069 -1, -1, 30, -1, -1, -1, 89, 90, 91, 92,
1070 -1, -1, -1, -1, 70, 43, -1, -1, -1, -1,
1071 -1, -1, -1, -1, 4, 5, 6, 7, 8, 9,
1072 10, 11, -1, 89, 90, 91, 92, 17, -1, 19,
1073 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
1074 30, -1, 4, 5, 6, 7, 8, 9, 10, 11,
1075 -1, 89, 90, 91, 92, 17, -1, 19, 20, 21,
1076 22, 23, 24, 25, 26, -1, -1, -1, 30, 4,
1077 5, 6, 7, 8, 9, 10, 11, -1, -1, -1,
1078 -1, -1, 17, -1, 19, 20, 21, 22, 23, 24,
1079 25, 26, -1, -1, -1, 30, -1, -1, -1, 89,
1080 90, 91, 92, -1, -1, -1, -1, -1, -1, -1,
1081 -1, -1, -1, -1, -1, -1, -1, -1, 4, 5,
1082 6, 7, 8, 9, 10, 11, -1, 89, 90, 91,
1083 92, 17, -1, 19, 20, 21, 22, 23, 24, 25,
1084 26, -1, -1, -1, 30, 4, 5, 6, 7, 8,
1085 9, 10, 11, -1, 89, 90, 91, 92, 17, -1,
1086 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
1087 -1, 30, 4, 5, 6, 7, 8, 9, 10, 11,
1088 -1, -1, -1, -1, -1, -1, -1, 19, 20, 21,
1089 22, 23, 24, 25, 26, 37, -1, -1, 30, -1,
1090 -1, -1, -1, 89, 90, 91, 48, 49, 50, 51,
1091 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1092 62, 63, 64, 65, 39, -1, -1, -1, -1, 71,
1093 89, 90, 91, 48, 49, 50, 51, 52, 53, 54,
1094 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1095 65, 39, -1, -1, -1, -1, 71, 89, 90, 91,
1096 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
1097 58, 59, 60, 61, 62, 63, 64, 65, 39, -1,
1098 -1, -1, -1, 71, -1, -1, -1, 48, 49, 50,
1099 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1100 61, 62, 63, 64, 65, 40, -1, -1, -1, -1,
1101 71, -1, -1, 48, 49, 50, 51, 52, 53, 54,
1102 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1103 65, 41, -1, -1, -1, -1, 71, -1, 48, 49,
1104 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1105 60, 61, 62, 63, 64, 65, 41, -1, -1, -1,
1106 -1, 71, -1, 48, 49, 50, 51, 52, 53, 54,
1107 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1108 65, -1, -1, -1, -1, -1, 71, 48, 49, 50,
1109 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1110 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
1111 71, 48, 49, 50, 51, 52, 53, 54, 55, 56,
1112 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
1113 -1, -1, -1, -1, 71, 48, 49, 50, 51, 52,
1114 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1115 63, 64, 65, -1, -1, -1, -1, -1, 71, 48,
1116 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
1117 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
1118 -1, -1, 71
1119 };
1120
1121 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1122 symbol of state STATE-NUM. */
1123 static const unsigned char yystos[] =
1124 {
1125 0, 4, 5, 6, 7, 8, 9, 10, 11, 17,
1126 19, 20, 21, 22, 23, 24, 25, 26, 30, 36,
1127 37, 47, 88, 89, 90, 91, 92, 93, 94, 96,
1128 120, 132, 133, 134, 135, 136, 152, 157, 159, 160,
1129 161, 162, 163, 164, 165, 166, 167, 172, 173, 174,
1130 175, 176, 178, 180, 181, 186, 191, 200, 201, 9,
1131 11, 3, 12, 18, 30, 38, 55, 72, 73, 74,
1132 75, 93, 95, 97, 98, 99, 100, 112, 113, 130,
1133 199, 30, 89, 90, 91, 92, 174, 72, 74, 75,
1134 76, 77, 78, 79, 80, 81, 82, 84, 85, 86,
1135 87, 137, 138, 139, 141, 142, 143, 89, 90, 158,
1136 159, 173, 178, 186, 192, 193, 130, 130, 130, 194,
1137 3, 6, 10, 12, 17, 153, 154, 160, 34, 201,
1138 50, 235, 236, 0, 134, 130, 179, 198, 199, 4,
1139 5, 6, 9, 168, 6, 165, 171, 37, 38, 42,
1140 42, 198, 199, 38, 55, 130, 130, 130, 130, 38,
1141 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1142 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1143 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1144 32, 33, 34, 35, 37, 38, 39, 40, 41, 42,
1145 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1146 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1147 63, 64, 65, 66, 67, 68, 69, 70, 71, 73,
1148 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1149 84, 86, 88, 89, 90, 91, 92, 93, 94, 95,
1150 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
1151 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1152 116, 117, 118, 119, 120, 123, 131, 147, 148, 27,
1153 130, 144, 36, 147, 34, 123, 140, 27, 130, 33,
1154 35, 38, 53, 54, 66, 67, 83, 129, 130, 149,
1155 130, 194, 130, 194, 37, 164, 130, 41, 196, 196,
1156 196, 196, 199, 31, 37, 42, 31, 44, 197, 38,
1157 130, 6, 169, 6, 9, 170, 168, 17, 92, 159,
1158 177, 178, 130, 187, 188, 97, 98, 99, 100, 101,
1159 102, 103, 207, 208, 209, 222, 223, 229, 230, 231,
1160 130, 198, 177, 131, 147, 122, 147, 149, 38, 130,
1161 149, 38, 48, 49, 50, 51, 52, 53, 54, 55,
1162 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
1163 71, 128, 41, 42, 183, 183, 37, 182, 183, 182,
1164 38, 130, 46, 207, 38, 33, 198, 197, 199, 17,
1165 199, 39, 40, 46, 40, 43, 179, 212, 17, 18,
1166 31, 33, 35, 38, 114, 115, 116, 117, 118, 119,
1167 129, 179, 189, 190, 204, 224, 225, 226, 235, 179,
1168 130, 232, 233, 18, 225, 43, 208, 189, 39, 130,
1169 39, 40, 38, 39, 130, 149, 150, 151, 149, 149,
1170 38, 158, 184, 185, 179, 179, 198, 27, 28, 29,
1171 33, 34, 155, 156, 43, 3, 6, 10, 12, 13,
1172 14, 15, 16, 17, 39, 202, 203, 205, 206, 45,
1173 130, 199, 197, 17, 70, 178, 189, 188, 46, 37,
1174 30, 92, 159, 189, 189, 71, 128, 46, 37, 38,
1175 32, 46, 38, 37, 40, 37, 37, 39, 197, 70,
1176 130, 145, 146, 39, 39, 40, 41, 33, 41, 195,
1177 43, 185, 130, 37, 41, 39, 40, 204, 39, 39,
1178 18, 27, 95, 104, 105, 106, 107, 108, 109, 110,
1179 111, 112, 113, 189, 211, 213, 214, 215, 216, 236,
1180 39, 39, 189, 189, 224, 179, 235, 179, 234, 233,
1181 39, 39, 40, 149, 149, 40, 41, 37, 39, 205,
1182 41, 203, 205, 46, 197, 17, 18, 112, 216, 219,
1183 38, 38, 211, 189, 41, 40, 227, 179, 39, 40,
1184 197, 147, 130, 33, 38, 205, 235, 155, 38, 189,
1185 204, 189, 70, 224, 228, 39, 37, 179, 39, 33,
1186 70, 204, 40, 40, 217, 39, 40, 40, 32, 38,
1187 189, 179, 210, 211, 212, 218, 236, 39, 224, 33,
1188 39, 220, 221, 224, 39, 40, 211, 39, 41, 39,
1189 40, 210, 205, 39, 224
1190 };
1191
1192 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1193 static const unsigned char yyr1[] =
1194 {
1195 0, 127, 128, 128, 128, 128, 128, 128, 128, 128,
1196 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
1197 129, 129, 129, 129, 130, 130, 130, 130, 130, 130,
1198 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
1199 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1200 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1201 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1202 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1203 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1204 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1205 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1206 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1207 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1208 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1209 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1210 131, 131, 131, 131, 131, 132, 132, 133, 133, 134,
1211 134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
1212 134, 135, 136, 137, 137, 137, 137, 137, 137, 137,
1213 137, 137, 138, 138, 139, 139, 139, 140, 140, 141,
1214 141, 142, 142, 142, 143, 143, 144, 144, 144, 145,
1215 145, 146, 146, 147, 147, 148, 148, 149, 149, 149,
1216 149, 149, 149, 149, 149, 149, 149, 150, 150, 151,
1217 151, 152, 153, 154, 154, 154, 154, 155, 155, 156,
1218 156, 156, 156, 156, 157, 158, 158, 158, 158, 158,
1219 158, 159, 159, 160, 160, 161, 161, 161, 162, 162,
1220 162, 162, 163, 163, 163, 164, 164, 164, 164, 164,
1221 164, 164, 164, 165, 165, 166, 166, 166, 167, 167,
1222 167, 167, 168, 168, 168, 168, 168, 169, 169, 170,
1223 170, 170, 171, 171, 171, 172, 173, 173, 173, 173,
1224 174, 174, 175, 175, 175, 175, 176, 176, 177, 177,
1225 177, 177, 178, 178, 178, 179, 179, 180, 181, 182,
1226 182, 183, 184, 184, 185, 186, 187, 187, 188, 188,
1227 189, 189, 189, 189, 189, 189, 190, 190, 190, 190,
1228 191, 192, 193, 194, 194, 195, 195, 196, 196, 197,
1229 197, 198, 198, 199, 199, 200, 200, 201, 201, 201,
1230 202, 202, 203, 203, 204, 205, 206, 206, 206, 206,
1231 206, 206, 206, 206, 206, 207, 207, 208, 208, 208,
1232 208, 208, 209, 209, 210, 210, 210, 211, 211, 211,
1233 211, 211, 212, 212, 213, 214, 215, 216, 216, 216,
1234 216, 216, 216, 216, 216, 216, 216, 217, 217, 218,
1235 218, 219, 219, 220, 220, 221, 221, 222, 223, 224,
1236 224, 224, 225, 225, 226, 226, 226, 226, 226, 226,
1237 226, 226, 227, 227, 228, 228, 229, 230, 230, 231,
1238 232, 232, 233, 234, 234, 235, 235, 236
1239 };
1240
1241 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
1242 static const unsigned char yyr2[] =
1243 {
1244 0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1245 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1246 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1247 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1248 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1249 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1250 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1251 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1252 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1253 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1254 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1255 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1256 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1257 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1258 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1259 1, 1, 1, 1, 1, 0, 1, 1, 2, 1,
1260 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1261 1, 3, 3, 2, 2, 1, 2, 2, 2, 2,
1262 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1263 1, 1, 1, 1, 1, 1, 6, 2, 2, 0,
1264 1, 1, 3, 0, 1, 1, 2, 3, 2, 3,
1265 5, 2, 4, 1, 1, 1, 4, 0, 1, 1,
1266 3, 6, 1, 1, 1, 1, 1, 0, 1, 1,
1267 1, 1, 1, 1, 3, 1, 1, 2, 4, 4,
1268 2, 2, 1, 1, 1, 2, 2, 2, 1, 1,
1269 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
1270 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
1271 2, 2, 0, 1, 2, 1, 2, 0, 1, 0,
1272 1, 1, 0, 1, 2, 2, 5, 7, 6, 8,
1273 1, 1, 6, 7, 6, 5, 1, 2, 0, 1,
1274 1, 3, 2, 4, 3, 3, 2, 4, 4, 1,
1275 1, 3, 1, 2, 3, 4, 1, 3, 1, 3,
1276 1, 4, 3, 3, 2, 5, 1, 1, 1, 1,
1277 2, 2, 2, 0, 1, 0, 7, 0, 7, 0,
1278 3, 0, 1, 1, 2, 4, 5, 7, 8, 13,
1279 1, 3, 2, 4, 2, 1, 1, 1, 1, 1,
1280 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
1281 1, 1, 3, 6, 1, 2, 1, 1, 1, 1,
1282 1, 1, 3, 4, 6, 8, 5, 1, 1, 1,
1283 1, 1, 1, 1, 1, 1, 1, 0, 2, 1,
1284 3, 1, 1, 0, 1, 1, 3, 3, 3, 1,
1285 1, 3, 5, 6, 1, 1, 1, 1, 1, 1,
1286 1, 1, 0, 2, 1, 3, 3, 1, 1, 3,
1287 1, 3, 4, 1, 3, 0, 1, 1
1288 };
1289
1290
1291 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
1292 static const unsigned char yydprec[] =
1293 {
1294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1297 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1322 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1323 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1329 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1337 0, 0, 0, 0, 0, 0, 0, 0
1338 };
1339
1340 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
1341 static const unsigned char yymerger[] =
1342 {
1343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1345 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1346 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1356 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1377 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1386 0, 0, 0, 0, 0, 0, 0, 0
1387 };
1388
1389 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
1390 in the case of predicates. */
1391 static const yybool yyimmediate[] =
1392 {
1393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1401 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1403 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1427 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1436 0, 0, 0, 0, 0, 0, 0, 0
1437 };
1438
1439 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
1440 list of conflicting reductions corresponding to action entry for
1441 state STATE-NUM in yytable. 0 means no conflicts. The list in
1442 yyconfl is terminated by a rule number of 0. */
1443 static const unsigned char yyconflp[] =
1444 {
1445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1451 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1457 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1472 0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
1473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1500 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1518 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1524 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1588 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1598 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1599 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1609 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1611 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1617 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1623 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1628 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1634 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1635 3, 5, 7, 9, 11, 13, 15, 0, 0, 0,
1636 17, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1637 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1648 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1667 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1677 0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
1678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1680 0, 0, 23
1681 };
1682
1683 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
1684 0, pointed into by YYCONFLP. */
1685 static const short int yyconfl[] =
1686 {
1687 0, 251, 0, 251, 0, 251, 0, 251, 0, 251,
1688 0, 251, 0, 251, 0, 251, 0, 251, 0, 251,
1689 0, 210, 0, 325, 0
1690 };
1691
1692 /* Error token number */
1693 #define YYTERROR 1
1694
1695
1696
1697
1698 #undef yynerrs
1699 #define yynerrs (yystackp->yyerrcnt)
1700 #undef yychar
1701 #define yychar (yystackp->yyrawchar)
1702 #undef yylval
1703 #define yylval (yystackp->yyval)
1704 #undef yylloc
1705 #define yylloc (yystackp->yyloc)
1706 #define psi_parser_proc_nerrs yynerrs
1707 #define psi_parser_proc_char yychar
1708 #define psi_parser_proc_lval yylval
1709 #define psi_parser_proc_lloc yylloc
1710
1711 static const int YYEOF = 0;
1712 static const int YYEMPTY = -2;
1713
1714 typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG;
1715
1716 #define YYCHK(YYE) \
1717 do { \
1718 YYRESULTTAG yychk_flag = YYE; \
1719 if (yychk_flag != yyok) \
1720 return yychk_flag; \
1721 } while (0)
1722
1723 #if YYDEBUG
1724
1725 # ifndef YYFPRINTF
1726 # define YYFPRINTF fprintf
1727 # endif
1728
1729 /* This macro is provided for backward compatibility. */
1730 #ifndef YY_LOCATION_PRINT
1731 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1732 #endif
1733
1734
1735 # define YYDPRINTF(Args) \
1736 do { \
1737 if (yydebug) \
1738 YYFPRINTF Args; \
1739 } while (0)
1740
1741
1742 /*----------------------------------------.
1743 | Print this symbol's value on YYOUTPUT. |
1744 `----------------------------------------*/
1745
1746 static void
1747 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
1748 {
1749 FILE *yyo = yyoutput;
1750 YYUSE (yyo);
1751 YYUSE (P);
1752 YYUSE (tokens);
1753 YYUSE (index);
1754 if (!yyvaluep)
1755 return;
1756 YYUSE (yytype);
1757 }
1758
1759
1760 /*--------------------------------.
1761 | Print this symbol on YYOUTPUT. |
1762 `--------------------------------*/
1763
1764 static void
1765 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
1766 {
1767 YYFPRINTF (yyoutput, "%s %s (",
1768 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1769
1770 yy_symbol_value_print (yyoutput, yytype, yyvaluep, P, tokens, index);
1771 YYFPRINTF (yyoutput, ")");
1772 }
1773
1774 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1775 do { \
1776 if (yydebug) \
1777 { \
1778 YYFPRINTF (stderr, "%s ", Title); \
1779 yy_symbol_print (stderr, Type, Value, P, tokens, index); \
1780 YYFPRINTF (stderr, "\n"); \
1781 } \
1782 } while (0)
1783
1784 /* Nonzero means print parse trace. It is left uninitialized so that
1785 multiple parsers can coexist. */
1786 int yydebug;
1787
1788 struct yyGLRStack;
1789 static void yypstack (struct yyGLRStack* yystackp, size_t yyk)
1790 YY_ATTRIBUTE_UNUSED;
1791 static void yypdumpstack (struct yyGLRStack* yystackp)
1792 YY_ATTRIBUTE_UNUSED;
1793
1794 #else /* !YYDEBUG */
1795
1796 # define YYDPRINTF(Args)
1797 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1798
1799 #endif /* !YYDEBUG */
1800
1801 /* YYINITDEPTH -- initial size of the parser's stacks. */
1802 #ifndef YYINITDEPTH
1803 # define YYINITDEPTH 200
1804 #endif
1805
1806 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1807 if the built-in stack extension method is used).
1808
1809 Do not make this value too large; the results are undefined if
1810 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
1811 evaluated with infinite-precision integer arithmetic. */
1812
1813 #ifndef YYMAXDEPTH
1814 # define YYMAXDEPTH 10000
1815 #endif
1816
1817 /* Minimum number of free items on the stack allowed after an
1818 allocation. This is to allow allocation and initialization
1819 to be completed by functions that call yyexpandGLRStack before the
1820 stack is expanded, thus insuring that all necessary pointers get
1821 properly redirected to new data. */
1822 #define YYHEADROOM 2
1823
1824 #ifndef YYSTACKEXPANDABLE
1825 # define YYSTACKEXPANDABLE 1
1826 #endif
1827
1828 #if YYSTACKEXPANDABLE
1829 # define YY_RESERVE_GLRSTACK(Yystack) \
1830 do { \
1831 if (Yystack->yyspaceLeft < YYHEADROOM) \
1832 yyexpandGLRStack (Yystack); \
1833 } while (0)
1834 #else
1835 # define YY_RESERVE_GLRSTACK(Yystack) \
1836 do { \
1837 if (Yystack->yyspaceLeft < YYHEADROOM) \
1838 yyMemoryExhausted (Yystack); \
1839 } while (0)
1840 #endif
1841
1842
1843 #if YYERROR_VERBOSE
1844
1845 # ifndef yystpcpy
1846 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1847 # define yystpcpy stpcpy
1848 # else
1849 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1850 YYDEST. */
1851 static char *
1852 yystpcpy (char *yydest, const char *yysrc)
1853 {
1854 char *yyd = yydest;
1855 const char *yys = yysrc;
1856
1857 while ((*yyd++ = *yys++) != '\0')
1858 continue;
1859
1860 return yyd - 1;
1861 }
1862 # endif
1863 # endif
1864
1865 # ifndef yytnamerr
1866 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1867 quotes and backslashes, so that it's suitable for yyerror. The
1868 heuristic is that double-quoting is unnecessary unless the string
1869 contains an apostrophe, a comma, or backslash (other than
1870 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1871 null, do not copy; instead, return the length of what the result
1872 would have been. */
1873 static size_t
1874 yytnamerr (char *yyres, const char *yystr)
1875 {
1876 if (*yystr == '"')
1877 {
1878 size_t yyn = 0;
1879 char const *yyp = yystr;
1880
1881 for (;;)
1882 switch (*++yyp)
1883 {
1884 case '\'':
1885 case ',':
1886 goto do_not_strip_quotes;
1887
1888 case '\\':
1889 if (*++yyp != '\\')
1890 goto do_not_strip_quotes;
1891 /* Fall through. */
1892 default:
1893 if (yyres)
1894 yyres[yyn] = *yyp;
1895 yyn++;
1896 break;
1897
1898 case '"':
1899 if (yyres)
1900 yyres[yyn] = '\0';
1901 return yyn;
1902 }
1903 do_not_strip_quotes: ;
1904 }
1905
1906 if (! yyres)
1907 return strlen (yystr);
1908
1909 return yystpcpy (yyres, yystr) - yyres;
1910 }
1911 # endif
1912
1913 #endif /* !YYERROR_VERBOSE */
1914
1915 /** State numbers, as in LALR(1) machine */
1916 typedef int yyStateNum;
1917
1918 /** Rule numbers, as in LALR(1) machine */
1919 typedef int yyRuleNum;
1920
1921 /** Grammar symbol */
1922 typedef int yySymbol;
1923
1924 /** Item references, as in LALR(1) machine */
1925 typedef short int yyItemNum;
1926
1927 typedef struct yyGLRState yyGLRState;
1928 typedef struct yyGLRStateSet yyGLRStateSet;
1929 typedef struct yySemanticOption yySemanticOption;
1930 typedef union yyGLRStackItem yyGLRStackItem;
1931 typedef struct yyGLRStack yyGLRStack;
1932
1933 struct yyGLRState {
1934 /** Type tag: always true. */
1935 yybool yyisState;
1936 /** Type tag for yysemantics. If true, yysval applies, otherwise
1937 * yyfirstVal applies. */
1938 yybool yyresolved;
1939 /** Number of corresponding LALR(1) machine state. */
1940 yyStateNum yylrState;
1941 /** Preceding state in this stack */
1942 yyGLRState* yypred;
1943 /** Source position of the last token produced by my symbol */
1944 size_t yyposn;
1945 union {
1946 /** First in a chain of alternative reductions producing the
1947 * non-terminal corresponding to this state, threaded through
1948 * yynext. */
1949 yySemanticOption* yyfirstVal;
1950 /** Semantic value for this state. */
1951 YYSTYPE yysval;
1952 } yysemantics;
1953 };
1954
1955 struct yyGLRStateSet {
1956 yyGLRState** yystates;
1957 /** During nondeterministic operation, yylookaheadNeeds tracks which
1958 * stacks have actually needed the current lookahead. During deterministic
1959 * operation, yylookaheadNeeds[0] is not maintained since it would merely
1960 * duplicate yychar != YYEMPTY. */
1961 yybool* yylookaheadNeeds;
1962 size_t yysize, yycapacity;
1963 };
1964
1965 struct yySemanticOption {
1966 /** Type tag: always false. */
1967 yybool yyisState;
1968 /** Rule number for this reduction */
1969 yyRuleNum yyrule;
1970 /** The last RHS state in the list of states to be reduced. */
1971 yyGLRState* yystate;
1972 /** The lookahead for this reduction. */
1973 int yyrawchar;
1974 YYSTYPE yyval;
1975 /** Next sibling in chain of options. To facilitate merging,
1976 * options are chained in decreasing order by address. */
1977 yySemanticOption* yynext;
1978 };
1979
1980 /** Type of the items in the GLR stack. The yyisState field
1981 * indicates which item of the union is valid. */
1982 union yyGLRStackItem {
1983 yyGLRState yystate;
1984 yySemanticOption yyoption;
1985 };
1986
1987 struct yyGLRStack {
1988 int yyerrState;
1989
1990
1991 int yyerrcnt;
1992 int yyrawchar;
1993 YYSTYPE yyval;
1994
1995 YYJMP_BUF yyexception_buffer;
1996 yyGLRStackItem* yyitems;
1997 yyGLRStackItem* yynextFree;
1998 size_t yyspaceLeft;
1999 yyGLRState* yysplitPoint;
2000 yyGLRState* yylastDeleted;
2001 yyGLRStateSet yytops;
2002 };
2003
2004 #if YYSTACKEXPANDABLE
2005 static void yyexpandGLRStack (yyGLRStack* yystackp);
2006 #endif
2007
2008 static _Noreturn void
2009 yyFail (yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index, const char* yymsg)
2010 {
2011 if (yymsg != YY_NULLPTR)
2012 yyerror (P, tokens, index, yymsg);
2013 YYLONGJMP (yystackp->yyexception_buffer, 1);
2014 }
2015
2016 static _Noreturn void
2017 yyMemoryExhausted (yyGLRStack* yystackp)
2018 {
2019 YYLONGJMP (yystackp->yyexception_buffer, 2);
2020 }
2021
2022 #if YYDEBUG || YYERROR_VERBOSE
2023 /** A printable representation of TOKEN. */
2024 static inline const char*
2025 yytokenName (yySymbol yytoken)
2026 {
2027 if (yytoken == YYEMPTY)
2028 return "";
2029
2030 return yytname[yytoken];
2031 }
2032 #endif
2033
2034 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
2035 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
2036 * containing the pointer to the next state in the chain. */
2037 static void yyfillin (yyGLRStackItem *, int, int) YY_ATTRIBUTE_UNUSED;
2038 static void
2039 yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
2040 {
2041 int i;
2042 yyGLRState *s = yyvsp[yylow0].yystate.yypred;
2043 for (i = yylow0-1; i >= yylow1; i -= 1)
2044 {
2045 #if YYDEBUG
2046 yyvsp[i].yystate.yylrState = s->yylrState;
2047 #endif
2048 yyvsp[i].yystate.yyresolved = s->yyresolved;
2049 if (s->yyresolved)
2050 yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval;
2051 else
2052 /* The effect of using yysval or yyloc (in an immediate rule) is
2053 * undefined. */
2054 yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;
2055 s = yyvsp[i].yystate.yypred = s->yypred;
2056 }
2057 }
2058
2059 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
2060 * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
2061 * For convenience, always return YYLOW1. */
2062 static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
2063 YY_ATTRIBUTE_UNUSED;
2064 static inline int
2065 yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
2066 {
2067 if (!yynormal && yylow1 < *yylow)
2068 {
2069 yyfillin (yyvsp, *yylow, yylow1);
2070 *yylow = yylow1;
2071 }
2072 return yylow1;
2073 }
2074
2075 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
2076 * and top stack item YYVSP. YYLVALP points to place to put semantic
2077 * value ($$), and yylocp points to place for location information
2078 * (@$). Returns yyok for normal return, yyaccept for YYACCEPT,
2079 * yyerr for YYERROR, yyabort for YYABORT. */
2080 static YYRESULTTAG
2081 yyuserAction (yyRuleNum yyn, size_t yyrhslen, yyGLRStackItem* yyvsp,
2082 yyGLRStack* yystackp,
2083 YYSTYPE* yyvalp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
2084 {
2085 yybool yynormal YY_ATTRIBUTE_UNUSED = (yystackp->yysplitPoint == YY_NULLPTR);
2086 int yylow;
2087 YYUSE (yyvalp);
2088 YYUSE (P);
2089 YYUSE (tokens);
2090 YYUSE (index);
2091 YYUSE (yyrhslen);
2092 # undef yyerrok
2093 # define yyerrok (yystackp->yyerrState = 0)
2094 # undef YYACCEPT
2095 # define YYACCEPT return yyaccept
2096 # undef YYABORT
2097 # define YYABORT return yyabort
2098 # undef YYERROR
2099 # define YYERROR return yyerrok, yyerr
2100 # undef YYRECOVERING
2101 # define YYRECOVERING() (yystackp->yyerrState != 0)
2102 # undef yyclearin
2103 # define yyclearin (yychar = YYEMPTY)
2104 # undef YYFILL
2105 # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
2106 # undef YYBACKUP
2107 # define YYBACKUP(Token, Value) \
2108 return yyerror (P, tokens, index, YY_("syntax error: cannot back up")), \
2109 yyerrok, yyerr
2110
2111 yylow = 1;
2112 if (yyrhslen == 0)
2113 *yyvalp = yyval_default;
2114 else
2115 *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;
2116 switch (yyn)
2117 {
2118 case 162:
2119 #line 407 "src/parser_proc_grammar.y" /* glr.c:816 */
2120 {
2121 if ((*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2122 psi_cpp_exp_exec((*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), P->preproc, PSI_DATA(P));
2123 psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2124 }
2125 }
2126 #line 2127 "src/parser_proc.c" /* glr.c:816 */
2127 break;
2128
2129 case 163:
2130 #line 413 "src/parser_proc_grammar.y" /* glr.c:816 */
2131 {
2132 if (P->file.ln) {
2133 P->error(PSI_DATA(P), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), PSI_WARNING,
2134 "Extra 'lib %s' statement has no effect", (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
2135 } else {
2136 P->file.ln = strndup((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text + 1, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->size - 2);
2137 }
2138 }
2139 #line 2140 "src/parser_proc.c" /* glr.c:816 */
2140 break;
2141
2142 case 164:
2143 #line 421 "src/parser_proc_grammar.y" /* glr.c:816 */
2144 {
2145 psi_parser_proc_add_const(P, (*(struct psi_const **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2146 }
2147 #line 2148 "src/parser_proc.c" /* glr.c:816 */
2148 break;
2149
2150 case 165:
2151 #line 424 "src/parser_proc_grammar.y" /* glr.c:816 */
2152 {
2153 psi_parser_proc_add_decl(P, (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2154 }
2155 #line 2156 "src/parser_proc.c" /* glr.c:816 */
2156 break;
2157
2158 case 166:
2159 #line 427 "src/parser_proc_grammar.y" /* glr.c:816 */
2160 {
2161 psi_parser_proc_add_typedef(P, (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2162 }
2163 #line 2164 "src/parser_proc.c" /* glr.c:816 */
2164 break;
2165
2166 case 167:
2167 #line 430 "src/parser_proc_grammar.y" /* glr.c:816 */
2168 {
2169 psi_parser_proc_add_struct(P, (*(struct psi_decl_struct **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2170 }
2171 #line 2172 "src/parser_proc.c" /* glr.c:816 */
2172 break;
2173
2174 case 168:
2175 #line 433 "src/parser_proc_grammar.y" /* glr.c:816 */
2176 {
2177 psi_parser_proc_add_union(P, (*(struct psi_decl_union **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2178 }
2179 #line 2180 "src/parser_proc.c" /* glr.c:816 */
2180 break;
2181
2182 case 169:
2183 #line 436 "src/parser_proc_grammar.y" /* glr.c:816 */
2184 {
2185 psi_parser_proc_add_enum(P, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2186 }
2187 #line 2188 "src/parser_proc.c" /* glr.c:816 */
2188 break;
2189
2190 case 170:
2191 #line 439 "src/parser_proc_grammar.y" /* glr.c:816 */
2192 {
2193 psi_parser_proc_add_impl(P, (*(struct psi_impl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2194 }
2195 #line 2196 "src/parser_proc.c" /* glr.c:816 */
2196 break;
2197
2198 case 171:
2199 #line 445 "src/parser_proc_grammar.y" /* glr.c:816 */
2200 {
2201 (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
2202 }
2203 #line 2204 "src/parser_proc.c" /* glr.c:816 */
2204 break;
2205
2206 case 172:
2207 #line 451 "src/parser_proc_grammar.y" /* glr.c:816 */
2208 {
2209 (*(struct psi_cpp_exp **)(&(*yyvalp))) = (*(struct psi_cpp_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
2210 }
2211 #line 2212 "src/parser_proc.c" /* glr.c:816 */
2212 break;
2213
2214 case 173:
2215 #line 457 "src/parser_proc_grammar.y" /* glr.c:816 */
2216 {
2217 if ((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2218 struct psi_token *msg = NULL;
2219
2220 if (psi_plist_get((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), 0, &msg)) {
2221 size_t index = 1;
2222 struct psi_token *next;
2223
2224 msg = psi_token_copy(msg);
2225 while (psi_plist_get((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), index++, &next)) {
2226 struct psi_token *old = msg;
2227 msg = psi_token_cat(" ", 2, msg, next);
2228 free(old);
2229 }
2230 }
2231 psi_plist_free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2232
2233 (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, msg);
2234 } else {
2235 (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, NULL);
2236 }
2237 (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2238 }
2239 #line 2240 "src/parser_proc.c" /* glr.c:816 */
2240 break;
2241
2242 case 174:
2243 #line 480 "src/parser_proc_grammar.y" /* glr.c:816 */
2244 {
2245 (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))));
2246 (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2247 }
2248 #line 2249 "src/parser_proc.c" /* glr.c:816 */
2249 break;
2250
2251 case 175:
2252 #line 484 "src/parser_proc_grammar.y" /* glr.c:816 */
2253 {
2254 (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, NULL);
2255 (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2256 }
2257 #line 2258 "src/parser_proc.c" /* glr.c:816 */
2258 break;
2259
2260 case 176:
2261 #line 488 "src/parser_proc_grammar.y" /* glr.c:816 */
2262 {
2263 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2264 (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))));
2265 (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2266 }
2267 #line 2268 "src/parser_proc.c" /* glr.c:816 */
2268 break;
2269
2270 case 177:
2271 #line 493 "src/parser_proc_grammar.y" /* glr.c:816 */
2272 {
2273 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2274 (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))));
2275 (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2276 }
2277 #line 2278 "src/parser_proc.c" /* glr.c:816 */
2278 break;
2279
2280 case 178:
2281 #line 498 "src/parser_proc_grammar.y" /* glr.c:816 */
2282 {
2283 (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_cpp_macro_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2284 (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2285 }
2286 #line 2287 "src/parser_proc.c" /* glr.c:816 */
2287 break;
2288
2289 case 179:
2290 #line 502 "src/parser_proc_grammar.y" /* glr.c:816 */
2291 {
2292 (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2293 (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2294 }
2295 #line 2296 "src/parser_proc.c" /* glr.c:816 */
2296 break;
2297
2298 case 180:
2299 #line 506 "src/parser_proc_grammar.y" /* glr.c:816 */
2300 {
2301 (*(struct psi_cpp_exp **)(&(*yyvalp))) = psi_cpp_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, NULL);
2302 (*(struct psi_cpp_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2303 }
2304 #line 2305 "src/parser_proc.c" /* glr.c:816 */
2305 break;
2306
2307 case 181:
2308 #line 510 "src/parser_proc_grammar.y" /* glr.c:816 */
2309 {
2310 psi_plist_free((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2311 (*(struct psi_cpp_exp **)(&(*yyvalp))) = NULL;
2312 }
2313 #line 2314 "src/parser_proc.c" /* glr.c:816 */
2314 break;
2315
2316 case 196:
2317 #line 549 "src/parser_proc_grammar.y" /* glr.c:816 */
2318 {
2319 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2320 (*(struct psi_cpp_macro_decl **)(&(*yyvalp))) = psi_cpp_macro_decl_init((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL);
2321 (*(struct psi_cpp_macro_decl **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
2322 }
2323 #line 2324 "src/parser_proc.c" /* glr.c:816 */
2324 break;
2325
2326 case 197:
2327 #line 554 "src/parser_proc_grammar.y" /* glr.c:816 */
2328 {
2329 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2330 (*(struct psi_cpp_macro_decl **)(&(*yyvalp))) = psi_cpp_macro_decl_init(NULL, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL);
2331 (*(struct psi_cpp_macro_decl **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2332 }
2333 #line 2334 "src/parser_proc.c" /* glr.c:816 */
2334 break;
2335
2336 case 198:
2337 #line 559 "src/parser_proc_grammar.y" /* glr.c:816 */
2338 {
2339 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2340 (*(struct psi_cpp_macro_decl **)(&(*yyvalp))) = psi_cpp_macro_decl_init(NULL, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL);
2341 (*(struct psi_cpp_macro_decl **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2342 }
2343 #line 2344 "src/parser_proc.c" /* glr.c:816 */
2344 break;
2345
2346 case 199:
2347 #line 567 "src/parser_proc_grammar.y" /* glr.c:816 */
2348 {
2349 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_init(NULL);
2350 }
2351 #line 2352 "src/parser_proc.c" /* glr.c:816 */
2352 break;
2353
2354 case 201:
2355 #line 574 "src/parser_proc_grammar.y" /* glr.c:816 */
2356 {
2357 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2358 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2359 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_token_free), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2360 }
2361 #line 2362 "src/parser_proc.c" /* glr.c:816 */
2362 break;
2363
2364 case 202:
2365 #line 579 "src/parser_proc_grammar.y" /* glr.c:816 */
2366 {
2367 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2368 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2369 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2370 }
2371 #line 2372 "src/parser_proc.c" /* glr.c:816 */
2372 break;
2373
2374 case 203:
2375 #line 587 "src/parser_proc_grammar.y" /* glr.c:816 */
2376 {
2377 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
2378 }
2379 #line 2380 "src/parser_proc.c" /* glr.c:816 */
2380 break;
2381
2382 case 205:
2383 #line 594 "src/parser_proc_grammar.y" /* glr.c:816 */
2384 {
2385 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2386 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_token_free), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2387 }
2388 #line 2389 "src/parser_proc.c" /* glr.c:816 */
2389 break;
2390
2391 case 206:
2392 #line 598 "src/parser_proc_grammar.y" /* glr.c:816 */
2393 {
2394 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2395 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), &(*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2396 }
2397 #line 2398 "src/parser_proc.c" /* glr.c:816 */
2398 break;
2399
2400 case 207:
2401 #line 605 "src/parser_proc_grammar.y" /* glr.c:816 */
2402 {
2403 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_unary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2404 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
2405 }
2406 #line 2407 "src/parser_proc.c" /* glr.c:816 */
2407 break;
2408
2409 case 208:
2410 #line 609 "src/parser_proc_grammar.y" /* glr.c:816 */
2411 {
2412 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_unary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2413 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2414 }
2415 #line 2416 "src/parser_proc.c" /* glr.c:816 */
2416 break;
2417
2418 case 209:
2419 #line 613 "src/parser_proc_grammar.y" /* glr.c:816 */
2420 {
2421 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_binary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2422 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2423 }
2424 #line 2425 "src/parser_proc.c" /* glr.c:816 */
2425 break;
2426
2427 case 210:
2428 #line 617 "src/parser_proc_grammar.y" /* glr.c:816 */
2429 {
2430 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_ternary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2431 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
2432 }
2433 #line 2434 "src/parser_proc.c" /* glr.c:816 */
2434 break;
2435
2436 case 211:
2437 #line 622 "src/parser_proc_grammar.y" /* glr.c:816 */
2438 {
2439 {
2440 uint8_t exists;
2441
2442 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2443 exists = psi_cpp_defined(P->preproc, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2444 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init(PSI_T_UINT8, &exists, 0));
2445 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2446 }
2447 }
2448 #line 2449 "src/parser_proc.c" /* glr.c:816 */
2449 break;
2450
2451 case 212:
2452 #line 632 "src/parser_proc_grammar.y" /* glr.c:816 */
2453 {
2454 {
2455 uint8_t exists;
2456
2457 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2458 exists = psi_cpp_defined(P->preproc, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2459 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init(PSI_T_UINT8, &exists, 0));
2460 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2461 }
2462 }
2463 #line 2464 "src/parser_proc.c" /* glr.c:816 */
2464 break;
2465
2466 case 213:
2467 #line 642 "src/parser_proc_grammar.y" /* glr.c:816 */
2468 {
2469 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->flags));
2470 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2471 (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2472 }
2473 #line 2474 "src/parser_proc.c" /* glr.c:816 */
2474 break;
2475
2476 case 214:
2477 #line 647 "src/parser_proc_grammar.y" /* glr.c:816 */
2478 {
2479 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0));
2480 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2481 (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2482 }
2483 #line 2484 "src/parser_proc.c" /* glr.c:816 */
2484 break;
2485
2486 case 215:
2487 #line 652 "src/parser_proc_grammar.y" /* glr.c:816 */
2488 {
2489 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2490 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init(PSI_T_DEFINE, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0));
2491 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2492 (*(struct psi_num_exp **)(&(*yyvalp)))->data.n->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2493 }
2494 #line 2495 "src/parser_proc.c" /* glr.c:816 */
2495 break;
2496
2497 case 216:
2498 #line 658 "src/parser_proc_grammar.y" /* glr.c:816 */
2499 {
2500 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2501 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num(psi_number_init(PSI_T_FUNCTION,
2502 psi_cpp_macro_call_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 0));
2503 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
2504 }
2505 #line 2506 "src/parser_proc.c" /* glr.c:816 */
2506 break;
2507
2508 case 217:
2509 #line 667 "src/parser_proc_grammar.y" /* glr.c:816 */
2510 {
2511 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
2512 }
2513 #line 2514 "src/parser_proc.c" /* glr.c:816 */
2514 break;
2515
2516 case 219:
2517 #line 674 "src/parser_proc_grammar.y" /* glr.c:816 */
2518 {
2519 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((void (*)(void *)) psi_num_exp_free),
2520 &(*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2521 }
2522 #line 2523 "src/parser_proc.c" /* glr.c:816 */
2523 break;
2524
2525 case 220:
2526 #line 678 "src/parser_proc_grammar.y" /* glr.c:816 */
2527 {
2528 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2529 }
2530 #line 2531 "src/parser_proc.c" /* glr.c:816 */
2531 break;
2532
2533 case 221:
2534 #line 684 "src/parser_proc_grammar.y" /* glr.c:816 */
2535 {
2536 (*(struct psi_const **)(&(*yyvalp))) = psi_const_init((*(struct psi_const_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_impl_def_val **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2537 (*(struct psi_const **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
2538 }
2539 #line 2540 "src/parser_proc.c" /* glr.c:816 */
2540 break;
2541
2542 case 222:
2543 #line 691 "src/parser_proc_grammar.y" /* glr.c:816 */
2544 {
2545 (*(struct psi_const_type **)(&(*yyvalp))) = psi_const_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
2546 }
2547 #line 2548 "src/parser_proc.c" /* glr.c:816 */
2548 break;
2549
2550 case 227:
2551 #line 704 "src/parser_proc_grammar.y" /* glr.c:816 */
2552 {
2553 (*(struct psi_impl_def_val **)(&(*yyvalp))) = NULL;
2554 }
2555 #line 2556 "src/parser_proc.c" /* glr.c:816 */
2556 break;
2557
2558 case 228:
2559 #line 707 "src/parser_proc_grammar.y" /* glr.c:816 */
2560 {
2561 (*(struct psi_impl_def_val **)(&(*yyvalp))) = psi_impl_def_val_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
2562 (*(struct psi_impl_def_val **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2563 }
2564 #line 2565 "src/parser_proc.c" /* glr.c:816 */
2565 break;
2566
2567 case 234:
2568 #line 722 "src/parser_proc_grammar.y" /* glr.c:816 */
2569 {
2570 (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
2571 }
2572 #line 2573 "src/parser_proc.c" /* glr.c:816 */
2573 break;
2574
2575 case 236:
2576 #line 729 "src/parser_proc_grammar.y" /* glr.c:816 */
2577 {
2578 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
2579 psi_decl_type_init(PSI_T_FUNCTION, (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->var->name),
2580 psi_decl_var_copy((*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->var)
2581 );
2582 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->token);
2583 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.func = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
2584 }
2585 #line 2586 "src/parser_proc.c" /* glr.c:816 */
2586 break;
2587
2588 case 237:
2589 #line 737 "src/parser_proc_grammar.y" /* glr.c:816 */
2590 {
2591 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2592 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
2593 psi_decl_type_init(PSI_T_ENUM, (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->name),
2594 psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0, 0)
2595 );
2596 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2597 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->token);
2598 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.enm = (*(struct psi_decl_enum **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
2599 }
2600 #line 2601 "src/parser_proc.c" /* glr.c:816 */
2601 break;
2602
2603 case 238:
2604 #line 747 "src/parser_proc_grammar.y" /* glr.c:816 */
2605 {
2606 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_STRUCT, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text), (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2607 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
2608 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct = psi_decl_struct_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2609 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
2610 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct->align = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)).pos;
2611 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.strct->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)).len;
2612 }
2613 #line 2614 "src/parser_proc.c" /* glr.c:816 */
2614 break;
2615
2616 case 239:
2617 #line 755 "src/parser_proc_grammar.y" /* glr.c:816 */
2618 {
2619 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(psi_decl_type_init(PSI_T_UNION, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text), (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2620 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
2621 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn = psi_decl_union_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2622 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
2623 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn->align = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)).pos;
2624 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.unn->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)).len;
2625 }
2626 #line 2627 "src/parser_proc.c" /* glr.c:816 */
2627 break;
2628
2629 case 240:
2630 #line 763 "src/parser_proc_grammar.y" /* glr.c:816 */
2631 {
2632 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2633 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0, 0));
2634 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2635 }
2636 #line 2637 "src/parser_proc.c" /* glr.c:816 */
2637 break;
2638
2639 case 241:
2640 #line 771 "src/parser_proc_grammar.y" /* glr.c:816 */
2641 {
2642 (*(struct psi_decl_type **)(&(*yyvalp))) = (*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
2643 }
2644 #line 2645 "src/parser_proc.c" /* glr.c:816 */
2645 break;
2646
2647 case 243:
2648 #line 778 "src/parser_proc_grammar.y" /* glr.c:816 */
2649 {
2650 (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
2651 (*(struct psi_decl_type **)(&(*yyvalp)))->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
2652 }
2653 #line 2654 "src/parser_proc.c" /* glr.c:816 */
2654 break;
2655
2656 case 245:
2657 #line 786 "src/parser_proc_grammar.y" /* glr.c:816 */
2658 {
2659 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2660 (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
2661 (*(struct psi_decl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2662 }
2663 #line 2664 "src/parser_proc.c" /* glr.c:816 */
2664 break;
2665
2666 case 246:
2667 #line 791 "src/parser_proc_grammar.y" /* glr.c:816 */
2668 {
2669 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2670 (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
2671 (*(struct psi_decl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2672 }
2673 #line 2674 "src/parser_proc.c" /* glr.c:816 */
2674 break;
2675
2676 case 247:
2677 #line 796 "src/parser_proc_grammar.y" /* glr.c:816 */
2678 {
2679 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2680 (*(struct psi_decl_type **)(&(*yyvalp))) = psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
2681 (*(struct psi_decl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2682 }
2683 #line 2684 "src/parser_proc.c" /* glr.c:816 */
2684 break;
2685
2686 case 250:
2687 #line 806 "src/parser_proc_grammar.y" /* glr.c:816 */
2688 {
2689 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2690 }
2691 #line 2692 "src/parser_proc.c" /* glr.c:816 */
2692 break;
2693
2694 case 251:
2695 #line 809 "src/parser_proc_grammar.y" /* glr.c:816 */
2696 {
2697 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2698 }
2699 #line 2700 "src/parser_proc.c" /* glr.c:816 */
2700 break;
2701
2702 case 252:
2703 #line 815 "src/parser_proc_grammar.y" /* glr.c:816 */
2704 {
2705 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2706 }
2707 #line 2708 "src/parser_proc.c" /* glr.c:816 */
2708 break;
2709
2710 case 253:
2711 #line 818 "src/parser_proc_grammar.y" /* glr.c:816 */
2712 {
2713 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2714 }
2715 #line 2716 "src/parser_proc.c" /* glr.c:816 */
2716 break;
2717
2718 case 254:
2719 #line 821 "src/parser_proc_grammar.y" /* glr.c:816 */
2720 {
2721 (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2722 }
2723 #line 2724 "src/parser_proc.c" /* glr.c:816 */
2724 break;
2725
2726 case 265:
2727 #line 843 "src/parser_proc_grammar.y" /* glr.c:816 */
2728 {
2729 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2730 }
2731 #line 2732 "src/parser_proc.c" /* glr.c:816 */
2732 break;
2733
2734 case 266:
2735 #line 846 "src/parser_proc_grammar.y" /* glr.c:816 */
2736 {
2737 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2738 }
2739 #line 2740 "src/parser_proc.c" /* glr.c:816 */
2740 break;
2741
2742 case 267:
2743 #line 849 "src/parser_proc_grammar.y" /* glr.c:816 */
2744 {
2745 (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2746 }
2747 #line 2748 "src/parser_proc.c" /* glr.c:816 */
2748 break;
2749
2750 case 268:
2751 #line 855 "src/parser_proc_grammar.y" /* glr.c:816 */
2752 {
2753 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2754 }
2755 #line 2756 "src/parser_proc.c" /* glr.c:816 */
2756 break;
2757
2758 case 269:
2759 #line 858 "src/parser_proc_grammar.y" /* glr.c:816 */
2760 {
2761 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2762 }
2763 #line 2764 "src/parser_proc.c" /* glr.c:816 */
2764 break;
2765
2766 case 270:
2767 #line 861 "src/parser_proc_grammar.y" /* glr.c:816 */
2768 {
2769 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2770 (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2771 free((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2772 } else {
2773 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2774 }
2775 }
2776 #line 2777 "src/parser_proc.c" /* glr.c:816 */
2777 break;
2778
2779 case 271:
2780 #line 869 "src/parser_proc_grammar.y" /* glr.c:816 */
2781 {
2782 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2783 (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2784 free((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2785 free((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2786 } else {
2787 (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
2788 }
2789 }
2790 #line 2791 "src/parser_proc.c" /* glr.c:816 */
2791 break;
2792
2793 case 272:
2794 #line 881 "src/parser_proc_grammar.y" /* glr.c:816 */
2795 {
2796 (*(struct psi_token **)(&(*yyvalp))) = NULL;
2797 }
2798 #line 2799 "src/parser_proc.c" /* glr.c:816 */
2799 break;
2800
2801 case 273:
2802 #line 884 "src/parser_proc_grammar.y" /* glr.c:816 */
2803 {
2804 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2805 }
2806 #line 2807 "src/parser_proc.c" /* glr.c:816 */
2807 break;
2808
2809 case 274:
2810 #line 887 "src/parser_proc_grammar.y" /* glr.c:816 */
2811 {
2812 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2813 (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2814 } else {
2815 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2816 }
2817 }
2818 #line 2819 "src/parser_proc.c" /* glr.c:816 */
2819 break;
2820
2821 case 275:
2822 #line 894 "src/parser_proc_grammar.y" /* glr.c:816 */
2823 {
2824 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2825 }
2826 #line 2827 "src/parser_proc.c" /* glr.c:816 */
2827 break;
2828
2829 case 276:
2830 #line 897 "src/parser_proc_grammar.y" /* glr.c:816 */
2831 {
2832 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2833 (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2834 } else {
2835 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2836 }
2837 }
2838 #line 2839 "src/parser_proc.c" /* glr.c:816 */
2839 break;
2840
2841 case 277:
2842 #line 907 "src/parser_proc_grammar.y" /* glr.c:816 */
2843 {
2844 (*(struct psi_token **)(&(*yyvalp))) = NULL;
2845 }
2846 #line 2847 "src/parser_proc.c" /* glr.c:816 */
2847 break;
2848
2849 case 279:
2850 #line 913 "src/parser_proc_grammar.y" /* glr.c:816 */
2851 {
2852 (*(struct psi_token **)(&(*yyvalp))) = NULL;
2853 }
2854 #line 2855 "src/parser_proc.c" /* glr.c:816 */
2855 break;
2856
2857 case 282:
2858 #line 921 "src/parser_proc_grammar.y" /* glr.c:816 */
2859 {
2860 (*(struct psi_token **)(&(*yyvalp))) = NULL;
2861 }
2862 #line 2863 "src/parser_proc.c" /* glr.c:816 */
2863 break;
2864
2865 case 283:
2866 #line 924 "src/parser_proc_grammar.y" /* glr.c:816 */
2867 {
2868 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2869 }
2870 #line 2871 "src/parser_proc.c" /* glr.c:816 */
2871 break;
2872
2873 case 284:
2874 #line 927 "src/parser_proc_grammar.y" /* glr.c:816 */
2875 {
2876 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2877 (*(struct psi_token **)(&(*yyvalp))) = psi_token_cat(" ", 2, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2878 free((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
2879 } else {
2880 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2881 }
2882 }
2883 #line 2884 "src/parser_proc.c" /* glr.c:816 */
2884 break;
2885
2886 case 285:
2887 #line 938 "src/parser_proc_grammar.y" /* glr.c:816 */
2888 {
2889 (*(struct psi_decl **)(&(*yyvalp))) = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
2890 }
2891 #line 2892 "src/parser_proc.c" /* glr.c:816 */
2892 break;
2893
2894 case 286:
2895 #line 944 "src/parser_proc_grammar.y" /* glr.c:816 */
2896 {
2897 (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init(psi_decl_abi_init("default"), (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
2898 if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2899 (*(struct psi_decl **)(&(*yyvalp)))->func->var->pointer_level += 1;
2900 (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
2901 }
2902 }
2903 #line 2904 "src/parser_proc.c" /* glr.c:816 */
2904 break;
2905
2906 case 287:
2907 #line 951 "src/parser_proc_grammar.y" /* glr.c:816 */
2908 {
2909 (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init(psi_decl_abi_init("default"), (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
2910 (*(struct psi_decl **)(&(*yyvalp)))->varargs = 1;
2911 if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2912 (*(struct psi_decl **)(&(*yyvalp)))->func->var->pointer_level += 1;
2913 (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
2914 }
2915 }
2916 #line 2917 "src/parser_proc.c" /* glr.c:816 */
2917 break;
2918
2919 case 288:
2920 #line 959 "src/parser_proc_grammar.y" /* glr.c:816 */
2921 {
2922 (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init(psi_decl_abi_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->text), (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
2923 if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2924 (*(struct psi_decl **)(&(*yyvalp)))->func->var->pointer_level += 1;
2925 (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
2926 }
2927 }
2928 #line 2929 "src/parser_proc.c" /* glr.c:816 */
2929 break;
2930
2931 case 289:
2932 #line 966 "src/parser_proc_grammar.y" /* glr.c:816 */
2933 {
2934 (*(struct psi_decl **)(&(*yyvalp))) = psi_decl_init(psi_decl_abi_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval))->text), (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
2935 (*(struct psi_decl **)(&(*yyvalp)))->varargs = 1;
2936 if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
2937 (*(struct psi_decl **)(&(*yyvalp)))->func->var->pointer_level += 1;
2938 (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
2939 }
2940 }
2941 #line 2942 "src/parser_proc.c" /* glr.c:816 */
2942 break;
2943
2944 case 292:
2945 #line 982 "src/parser_proc_grammar.y" /* glr.c:816 */
2946 {
2947 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2948 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)), psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), 0));
2949 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2950 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2951 }
2952 #line 2953 "src/parser_proc.c" /* glr.c:816 */
2953 break;
2954
2955 case 293:
2956 #line 988 "src/parser_proc_grammar.y" /* glr.c:816 */
2957 {
2958 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2959 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
2960 psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->text),
2961 psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), 0)
2962 );
2963 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
2964 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2965 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2966 }
2967 #line 2968 "src/parser_proc.c" /* glr.c:816 */
2968 break;
2969
2970 case 294:
2971 #line 998 "src/parser_proc_grammar.y" /* glr.c:816 */
2972 {
2973 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2974 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
2975 psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->text),
2976 psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), 0)
2977 );
2978 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
2979 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2980 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2981 }
2982 #line 2983 "src/parser_proc.c" /* glr.c:816 */
2983 break;
2984
2985 case 295:
2986 #line 1008 "src/parser_proc_grammar.y" /* glr.c:816 */
2987 {
2988 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
2989 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
2990 psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->text),
2991 psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text, 0, 0)
2992 );
2993 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
2994 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2995 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
2996 }
2997 #line 2998 "src/parser_proc.c" /* glr.c:816 */
2998 break;
2999
3000 case 297:
3001 #line 1022 "src/parser_proc_grammar.y" /* glr.c:816 */
3002 {
3003 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
3004 psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text),
3005 psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0, 0)
3006 );
3007 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3008 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3009 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3010 }
3011 #line 3012 "src/parser_proc.c" /* glr.c:816 */
3012 break;
3013
3014 case 298:
3015 #line 1034 "src/parser_proc_grammar.y" /* glr.c:816 */
3016 {
3017 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
3018 }
3019 #line 3020 "src/parser_proc.c" /* glr.c:816 */
3020 break;
3021
3022 case 299:
3023 #line 1037 "src/parser_proc_grammar.y" /* glr.c:816 */
3024 {
3025 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
3026 }
3027 #line 3028 "src/parser_proc.c" /* glr.c:816 */
3028 break;
3029
3030 case 300:
3031 #line 1040 "src/parser_proc_grammar.y" /* glr.c:816 */
3032 {
3033 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), &(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3034 }
3035 #line 3036 "src/parser_proc.c" /* glr.c:816 */
3036 break;
3037
3038 case 301:
3039 #line 1043 "src/parser_proc_grammar.y" /* glr.c:816 */
3040 {
3041 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3042 }
3043 #line 3044 "src/parser_proc.c" /* glr.c:816 */
3044 break;
3045
3046 case 302:
3047 #line 1049 "src/parser_proc_grammar.y" /* glr.c:816 */
3048 {
3049 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3050 }
3051 #line 3052 "src/parser_proc.c" /* glr.c:816 */
3052 break;
3053
3054 case 303:
3055 #line 1052 "src/parser_proc_grammar.y" /* glr.c:816 */
3056 {
3057 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3058 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
3059 psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text),
3060 psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), 0)
3061 );
3062 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3063 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3064 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3065 }
3066 #line 3067 "src/parser_proc.c" /* glr.c:816 */
3067 break;
3068
3069 case 304:
3070 #line 1062 "src/parser_proc_grammar.y" /* glr.c:816 */
3071 {
3072 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3073 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
3074 psi_decl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text),
3075 psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), 0)
3076 );
3077 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3078 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3079 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3080 }
3081 #line 3082 "src/parser_proc.c" /* glr.c:816 */
3082 break;
3083
3084 case 305:
3085 #line 1075 "src/parser_proc_grammar.y" /* glr.c:816 */
3086 {
3087 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3088 (*(struct psi_decl_var **)(&(*yyvalp))) = psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text, (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)) + !! (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3089 (*(struct psi_decl_var **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3090 }
3091 #line 3092 "src/parser_proc.c" /* glr.c:816 */
3092 break;
3093
3094 case 306:
3095 #line 1080 "src/parser_proc_grammar.y" /* glr.c:816 */
3096 {
3097 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3098 (*(struct psi_decl_var **)(&(*yyvalp))) = psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text, !! (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3099 (*(struct psi_decl_var **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3100 }
3101 #line 3102 "src/parser_proc.c" /* glr.c:816 */
3102 break;
3103
3104 case 307:
3105 #line 1088 "src/parser_proc_grammar.y" /* glr.c:816 */
3106 {
3107 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3108 (*(struct psi_decl_union **)(&(*yyvalp))) = psi_decl_union_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3109 (*(struct psi_decl_union **)(&(*yyvalp)))->align = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).pos;
3110 (*(struct psi_decl_union **)(&(*yyvalp)))->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
3111 (*(struct psi_decl_union **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3112 }
3113 #line 3114 "src/parser_proc.c" /* glr.c:816 */
3114 break;
3115
3116 case 308:
3117 #line 1098 "src/parser_proc_grammar.y" /* glr.c:816 */
3118 {
3119 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3120 (*(struct psi_decl_struct **)(&(*yyvalp))) = psi_decl_struct_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3121 (*(struct psi_decl_struct **)(&(*yyvalp)))->align = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).pos;
3122 (*(struct psi_decl_struct **)(&(*yyvalp)))->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
3123 (*(struct psi_decl_struct **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3124 }
3125 #line 3126 "src/parser_proc.c" /* glr.c:816 */
3126 break;
3127
3128 case 309:
3129 #line 1108 "src/parser_proc_grammar.y" /* glr.c:816 */
3130 {
3131 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
3132 }
3133 #line 3134 "src/parser_proc.c" /* glr.c:816 */
3134 break;
3135
3136 case 311:
3137 #line 1115 "src/parser_proc_grammar.y" /* glr.c:816 */
3138 {
3139 (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
3140 }
3141 #line 3142 "src/parser_proc.c" /* glr.c:816 */
3142 break;
3143
3144 case 312:
3145 #line 1121 "src/parser_proc_grammar.y" /* glr.c:816 */
3146 {
3147 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_arg_free), &(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3148 }
3149 #line 3150 "src/parser_proc.c" /* glr.c:816 */
3150 break;
3151
3152 case 313:
3153 #line 1124 "src/parser_proc_grammar.y" /* glr.c:816 */
3154 {
3155 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), &(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3156 }
3157 #line 3158 "src/parser_proc.c" /* glr.c:816 */
3158 break;
3159
3160 case 314:
3161 #line 1130 "src/parser_proc_grammar.y" /* glr.c:816 */
3162 {
3163 (*(struct psi_decl_arg **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
3164 (*(struct psi_decl_arg **)(&(*yyvalp)))->layout = (*(struct psi_layout **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
3165 psi_parser_proc_add_from_typedef(P, (*(struct psi_decl_arg **)(&(*yyvalp))));
3166 }
3167 #line 3168 "src/parser_proc.c" /* glr.c:816 */
3168 break;
3169
3170 case 315:
3171 #line 1138 "src/parser_proc_grammar.y" /* glr.c:816 */
3172 {
3173 (*(struct psi_decl_enum **)(&(*yyvalp))) = psi_decl_enum_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3174 (*(struct psi_decl_enum **)(&(*yyvalp)))->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
3175 }
3176 #line 3177 "src/parser_proc.c" /* glr.c:816 */
3177 break;
3178
3179 case 316:
3180 #line 1145 "src/parser_proc_grammar.y" /* glr.c:816 */
3181 {
3182 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_enum_item_free), &(*(struct psi_decl_enum_item **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3183 }
3184 #line 3185 "src/parser_proc.c" /* glr.c:816 */
3185 break;
3186
3187 case 317:
3188 #line 1148 "src/parser_proc_grammar.y" /* glr.c:816 */
3189 {
3190 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_decl_enum_item **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3191 }
3192 #line 3193 "src/parser_proc.c" /* glr.c:816 */
3193 break;
3194
3195 case 318:
3196 #line 1154 "src/parser_proc_grammar.y" /* glr.c:816 */
3197 {
3198 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3199 (*(struct psi_decl_enum_item **)(&(*yyvalp))) = psi_decl_enum_item_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, NULL);
3200 (*(struct psi_decl_enum_item **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3201 }
3202 #line 3203 "src/parser_proc.c" /* glr.c:816 */
3203 break;
3204
3205 case 319:
3206 #line 1159 "src/parser_proc_grammar.y" /* glr.c:816 */
3207 {
3208 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3209 (*(struct psi_decl_enum_item **)(&(*yyvalp))) = psi_decl_enum_item_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->text, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3210 (*(struct psi_decl_enum_item **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3211 }
3212 #line 3213 "src/parser_proc.c" /* glr.c:816 */
3213 break;
3214
3215 case 320:
3216 #line 1167 "src/parser_proc_grammar.y" /* glr.c:816 */
3217 {
3218 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num((*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3219 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
3220 }
3221 #line 3222 "src/parser_proc.c" /* glr.c:816 */
3222 break;
3223
3224 case 321:
3225 #line 1171 "src/parser_proc_grammar.y" /* glr.c:816 */
3226 {
3227 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_cast((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3228 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->token);
3229 }
3230 #line 3231 "src/parser_proc.c" /* glr.c:816 */
3231 break;
3232
3233 case 322:
3234 #line 1175 "src/parser_proc_grammar.y" /* glr.c:816 */
3235 {
3236 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_unary(PSI_T_LPAREN, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3237 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3238 }
3239 #line 3240 "src/parser_proc.c" /* glr.c:816 */
3240 break;
3241
3242 case 323:
3243 #line 1179 "src/parser_proc_grammar.y" /* glr.c:816 */
3244 {
3245 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_binary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3246 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3247 }
3248 #line 3249 "src/parser_proc.c" /* glr.c:816 */
3249 break;
3250
3251 case 324:
3252 #line 1183 "src/parser_proc_grammar.y" /* glr.c:816 */
3253 {
3254 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_unary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3255 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3256 }
3257 #line 3258 "src/parser_proc.c" /* glr.c:816 */
3258 break;
3259
3260 case 325:
3261 #line 1187 "src/parser_proc_grammar.y" /* glr.c:816 */
3262 {
3263 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_ternary((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3264 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
3265 }
3266 #line 3267 "src/parser_proc.c" /* glr.c:816 */
3267 break;
3268
3269 case 326:
3270 #line 1194 "src/parser_proc_grammar.y" /* glr.c:816 */
3271 {
3272 (*(struct psi_number **)(&(*yyvalp))) = psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->flags);
3273 (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3274 }
3275 #line 3276 "src/parser_proc.c" /* glr.c:816 */
3276 break;
3277
3278 case 327:
3279 #line 1198 "src/parser_proc_grammar.y" /* glr.c:816 */
3280 {
3281 (*(struct psi_number **)(&(*yyvalp))) = psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0);
3282 (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3283 }
3284 #line 3285 "src/parser_proc.c" /* glr.c:816 */
3285 break;
3286
3287 case 328:
3288 #line 1202 "src/parser_proc_grammar.y" /* glr.c:816 */
3289 {
3290 (*(struct psi_number **)(&(*yyvalp))) = psi_number_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0);
3291 (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3292 }
3293 #line 3294 "src/parser_proc.c" /* glr.c:816 */
3294 break;
3295
3296 case 329:
3297 #line 1206 "src/parser_proc_grammar.y" /* glr.c:816 */
3298 {
3299 (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_NAME, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), 0);
3300 (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
3301 }
3302 #line 3303 "src/parser_proc.c" /* glr.c:816 */
3303 break;
3304
3305 case 330:
3306 #line 1213 "src/parser_proc_grammar.y" /* glr.c:816 */
3307 {
3308 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3309 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3310 } else {
3311 char digest[17];
3312
3313 psi_token_hash((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), digest);
3314 (*(struct psi_token **)(&(*yyvalp))) = psi_token_append("@", psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 1, digest);
3315 }
3316 }
3317 #line 3318 "src/parser_proc.c" /* glr.c:816 */
3318 break;
3319
3320 case 331:
3321 #line 1226 "src/parser_proc_grammar.y" /* glr.c:816 */
3322 {
3323 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3324 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3325 } else {
3326 char digest[17];
3327
3328 psi_token_hash((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), digest);
3329 (*(struct psi_token **)(&(*yyvalp))) = psi_token_append("@", psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 1, digest);
3330 }
3331 }
3332 #line 3333 "src/parser_proc.c" /* glr.c:816 */
3333 break;
3334
3335 case 332:
3336 #line 1239 "src/parser_proc_grammar.y" /* glr.c:816 */
3337 {
3338 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3339 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3340 } else {
3341 char digest[17];
3342
3343 psi_token_hash((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), digest);
3344 (*(struct psi_token **)(&(*yyvalp))) = psi_token_append("@", psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 1, digest);
3345 }
3346 }
3347 #line 3348 "src/parser_proc.c" /* glr.c:816 */
3348 break;
3349
3350 case 333:
3351 #line 1252 "src/parser_proc_grammar.y" /* glr.c:816 */
3352 {
3353 (*(struct psi_token **)(&(*yyvalp))) = NULL;
3354 }
3355 #line 3356 "src/parser_proc.c" /* glr.c:816 */
3356 break;
3357
3358 case 334:
3359 #line 1255 "src/parser_proc_grammar.y" /* glr.c:816 */
3360 {
3361 (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3362 (*(struct psi_token **)(&(*yyvalp)))->type = PSI_T_NAME;
3363 }
3364 #line 3365 "src/parser_proc.c" /* glr.c:816 */
3365 break;
3366
3367 case 335:
3368 #line 1262 "src/parser_proc_grammar.y" /* glr.c:816 */
3369 {
3370 (*(struct psi_layout **)(&(*yyvalp))) = NULL;
3371 }
3372 #line 3373 "src/parser_proc.c" /* glr.c:816 */
3373 break;
3374
3375 case 336:
3376 #line 1265 "src/parser_proc_grammar.y" /* glr.c:816 */
3377 {
3378 (*(struct psi_layout **)(&(*yyvalp))) = psi_layout_init(atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text), atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text));
3379 }
3380 #line 3381 "src/parser_proc.c" /* glr.c:816 */
3381 break;
3382
3383 case 337:
3384 #line 1271 "src/parser_proc_grammar.y" /* glr.c:816 */
3385 {
3386 (*(struct psi_layout*)(&(*yyvalp))).pos = 0;
3387 (*(struct psi_layout*)(&(*yyvalp))).len = 0;
3388 }
3389 #line 3390 "src/parser_proc.c" /* glr.c:816 */
3390 break;
3391
3392 case 338:
3393 #line 1275 "src/parser_proc_grammar.y" /* glr.c:816 */
3394 {
3395 (*(struct psi_layout*)(&(*yyvalp))).pos = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text);
3396 (*(struct psi_layout*)(&(*yyvalp))).len = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text);
3397 }
3398 #line 3399 "src/parser_proc.c" /* glr.c:816 */
3399 break;
3400
3401 case 339:
3402 #line 1282 "src/parser_proc_grammar.y" /* glr.c:816 */
3403 {
3404 (*(size_t*)(&(*yyvalp))) = 0;
3405 }
3406 #line 3407 "src/parser_proc.c" /* glr.c:816 */
3407 break;
3408
3409 case 340:
3410 #line 1285 "src/parser_proc_grammar.y" /* glr.c:816 */
3411 {
3412 (*(size_t*)(&(*yyvalp))) = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text);
3413 }
3414 #line 3415 "src/parser_proc.c" /* glr.c:816 */
3415 break;
3416
3417 case 341:
3418 #line 1291 "src/parser_proc_grammar.y" /* glr.c:816 */
3419 {
3420 (*(size_t*)(&(*yyvalp))) = 0;
3421 }
3422 #line 3423 "src/parser_proc.c" /* glr.c:816 */
3423 break;
3424
3425 case 342:
3426 #line 1294 "src/parser_proc_grammar.y" /* glr.c:816 */
3427 {
3428 (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3429 }
3430 #line 3431 "src/parser_proc.c" /* glr.c:816 */
3431 break;
3432
3433 case 343:
3434 #line 1300 "src/parser_proc_grammar.y" /* glr.c:816 */
3435 {
3436 (*(size_t*)(&(*yyvalp))) = 1;
3437 }
3438 #line 3439 "src/parser_proc.c" /* glr.c:816 */
3439 break;
3440
3441 case 344:
3442 #line 1303 "src/parser_proc_grammar.y" /* glr.c:816 */
3443 {
3444 (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)) + 1;
3445 }
3446 #line 3447 "src/parser_proc.c" /* glr.c:816 */
3447 break;
3448
3449 case 345:
3450 #line 1315 "src/parser_proc_grammar.y" /* glr.c:816 */
3451 {
3452 (*(struct psi_impl **)(&(*yyvalp))) = psi_impl_init((*(struct psi_impl_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3453 }
3454 #line 3455 "src/parser_proc.c" /* glr.c:816 */
3455 break;
3456
3457 case 346:
3458 #line 1318 "src/parser_proc_grammar.y" /* glr.c:816 */
3459 {
3460 (*(struct psi_impl **)(&(*yyvalp))) = psi_impl_init((*(struct psi_impl_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3461 (*(struct psi_impl_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->static_memory = 1;
3462 }
3463 #line 3464 "src/parser_proc.c" /* glr.c:816 */
3464 break;
3465
3466 case 347:
3467 #line 1325 "src/parser_proc_grammar.y" /* glr.c:816 */
3468 {
3469 (*(struct psi_impl_func **)(&(*yyvalp))) = psi_impl_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->text, NULL, (*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3470 (*(struct psi_impl_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
3471 (*(struct psi_impl_func **)(&(*yyvalp)))->return_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval));
3472 }
3473 #line 3474 "src/parser_proc.c" /* glr.c:816 */
3474 break;
3475
3476 case 348:
3477 #line 1330 "src/parser_proc_grammar.y" /* glr.c:816 */
3478 {
3479 (*(struct psi_impl_func **)(&(*yyvalp))) = psi_impl_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3480 (*(struct psi_impl_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
3481 (*(struct psi_impl_func **)(&(*yyvalp)))->return_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval));
3482 }
3483 #line 3484 "src/parser_proc.c" /* glr.c:816 */
3484 break;
3485
3486 case 349:
3487 #line 1335 "src/parser_proc_grammar.y" /* glr.c:816 */
3488 {
3489 (*(struct psi_impl_func **)(&(*yyvalp))) = psi_impl_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval)), (*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3490 (*(struct psi_impl_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval)));
3491 (*(struct psi_impl_func **)(&(*yyvalp)))->return_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-11)].yystate.yysemantics.yysval));
3492 (*(struct psi_impl_func **)(&(*yyvalp)))->vararg = psi_impl_arg_init((*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)), psi_impl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))), NULL);
3493 (*(struct psi_impl_func **)(&(*yyvalp)))->vararg->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
3494 }
3495 #line 3496 "src/parser_proc.c" /* glr.c:816 */
3496 break;
3497
3498 case 350:
3499 #line 1345 "src/parser_proc_grammar.y" /* glr.c:816 */
3500 {
3501 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_arg_free), &(*(struct psi_impl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3502 }
3503 #line 3504 "src/parser_proc.c" /* glr.c:816 */
3504 break;
3505
3506 case 351:
3507 #line 1348 "src/parser_proc_grammar.y" /* glr.c:816 */
3508 {
3509 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_impl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3510 }
3511 #line 3512 "src/parser_proc.c" /* glr.c:816 */
3512 break;
3513
3514 case 352:
3515 #line 1354 "src/parser_proc_grammar.y" /* glr.c:816 */
3516 {
3517 (*(struct psi_impl_arg **)(&(*yyvalp))) = psi_impl_arg_init((*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), NULL);
3518 }
3519 #line 3520 "src/parser_proc.c" /* glr.c:816 */
3520 break;
3521
3522 case 353:
3523 #line 1357 "src/parser_proc_grammar.y" /* glr.c:816 */
3524 {
3525 (*(struct psi_impl_arg **)(&(*yyvalp))) = psi_impl_arg_init((*(struct psi_impl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), (*(struct psi_impl_def_val **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3526 }
3527 #line 3528 "src/parser_proc.c" /* glr.c:816 */
3528 break;
3529
3530 case 354:
3531 #line 1363 "src/parser_proc_grammar.y" /* glr.c:816 */
3532 {
3533 (*(struct psi_impl_var **)(&(*yyvalp))) = psi_impl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3534 (*(struct psi_impl_var **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3535 }
3536 #line 3537 "src/parser_proc.c" /* glr.c:816 */
3537 break;
3538
3539 case 355:
3540 #line 1370 "src/parser_proc_grammar.y" /* glr.c:816 */
3541 {
3542 (*(struct psi_impl_type **)(&(*yyvalp))) = psi_impl_type_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text);
3543 (*(struct psi_impl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3544 }
3545 #line 3546 "src/parser_proc.c" /* glr.c:816 */
3546 break;
3547
3548 case 365:
3549 #line 1389 "src/parser_proc_grammar.y" /* glr.c:816 */
3550 {
3551 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_impl_stmt_free), &(*(struct psi_token ***)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3552 }
3553 #line 3554 "src/parser_proc.c" /* glr.c:816 */
3554 break;
3555
3556 case 366:
3557 #line 1392 "src/parser_proc_grammar.y" /* glr.c:816 */
3558 {
3559 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), &(*(struct psi_token ***)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3560 }
3561 #line 3562 "src/parser_proc.c" /* glr.c:816 */
3562 break;
3563
3564 case 367:
3565 #line 1398 "src/parser_proc_grammar.y" /* glr.c:816 */
3566 {
3567 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_return_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3568 }
3569 #line 3570 "src/parser_proc.c" /* glr.c:816 */
3570 break;
3571
3572 case 368:
3573 #line 1401 "src/parser_proc_grammar.y" /* glr.c:816 */
3574 {
3575 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_let_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3576 }
3577 #line 3578 "src/parser_proc.c" /* glr.c:816 */
3578 break;
3579
3580 case 369:
3581 #line 1404 "src/parser_proc_grammar.y" /* glr.c:816 */
3582 {
3583 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_set_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3584 }
3585 #line 3586 "src/parser_proc.c" /* glr.c:816 */
3586 break;
3587
3588 case 370:
3589 #line 1407 "src/parser_proc_grammar.y" /* glr.c:816 */
3590 {
3591 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_assert_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3592 }
3593 #line 3594 "src/parser_proc.c" /* glr.c:816 */
3594 break;
3595
3596 case 371:
3597 #line 1410 "src/parser_proc_grammar.y" /* glr.c:816 */
3598 {
3599 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_free_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3600 }
3601 #line 3602 "src/parser_proc.c" /* glr.c:816 */
3602 break;
3603
3604 case 372:
3605 #line 1416 "src/parser_proc_grammar.y" /* glr.c:816 */
3606 {
3607 (*(struct psi_let_stmt **)(&(*yyvalp))) = psi_let_stmt_init((*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3608 (*(struct psi_let_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3609 }
3610 #line 3611 "src/parser_proc.c" /* glr.c:816 */
3611 break;
3612
3613 case 373:
3614 #line 1420 "src/parser_proc_grammar.y" /* glr.c:816 */
3615 {
3616 (*(struct psi_let_stmt **)(&(*yyvalp))) = psi_let_stmt_init(psi_let_exp_init_ex((*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)), PSI_LET_TMP, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))));
3617 (*(struct psi_let_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
3618 (*(struct psi_let_stmt **)(&(*yyvalp)))->exp->is_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
3619 }
3620 #line 3621 "src/parser_proc.c" /* glr.c:816 */
3621 break;
3622
3623 case 375:
3624 #line 1429 "src/parser_proc_grammar.y" /* glr.c:816 */
3625 {
3626 (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3627 (*(struct psi_let_exp **)(&(*yyvalp)))->is_reference = true;
3628 }
3629 #line 3630 "src/parser_proc.c" /* glr.c:816 */
3630 break;
3631
3632 case 376:
3633 #line 1433 "src/parser_proc_grammar.y" /* glr.c:816 */
3634 {
3635 (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3636 (*(struct psi_let_exp **)(&(*yyvalp)))->is_reference = false;
3637 }
3638 #line 3639 "src/parser_proc.c" /* glr.c:816 */
3639 break;
3640
3641 case 377:
3642 #line 1440 "src/parser_proc_grammar.y" /* glr.c:816 */
3643 {
3644 (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_NULL, NULL);
3645 }
3646 #line 3647 "src/parser_proc.c" /* glr.c:816 */
3647 break;
3648
3649 case 378:
3650 #line 1443 "src/parser_proc_grammar.y" /* glr.c:816 */
3651 {
3652 (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_CALLOC, (*(struct psi_let_calloc **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3653 }
3654 #line 3655 "src/parser_proc.c" /* glr.c:816 */
3655 break;
3656
3657 case 379:
3658 #line 1446 "src/parser_proc_grammar.y" /* glr.c:816 */
3659 {
3660 (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_CALLBACK, (*(struct psi_let_callback **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3661 }
3662 #line 3663 "src/parser_proc.c" /* glr.c:816 */
3663 break;
3664
3665 case 380:
3666 #line 1449 "src/parser_proc_grammar.y" /* glr.c:816 */
3667 {
3668 (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init_ex(NULL, PSI_LET_FUNC, (*(struct psi_let_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3669 }
3670 #line 3671 "src/parser_proc.c" /* glr.c:816 */
3671 break;
3672
3673 case 381:
3674 #line 1452 "src/parser_proc_grammar.y" /* glr.c:816 */
3675 {
3676 (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init_ex(NULL, PSI_LET_NUMEXP, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3677 }
3678 #line 3679 "src/parser_proc.c" /* glr.c:816 */
3679 break;
3680
3681 case 382:
3682 #line 1458 "src/parser_proc_grammar.y" /* glr.c:816 */
3683 {
3684 (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3685 (*(struct psi_let_exp **)(&(*yyvalp)))->var = (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
3686 }
3687 #line 3688 "src/parser_proc.c" /* glr.c:816 */
3688 break;
3689
3690 case 383:
3691 #line 1462 "src/parser_proc_grammar.y" /* glr.c:816 */
3692 {
3693 (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3694 (*(struct psi_let_exp **)(&(*yyvalp)))->is_reference = 1;
3695 (*(struct psi_let_exp **)(&(*yyvalp)))->var = (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
3696 }
3697 #line 3698 "src/parser_proc.c" /* glr.c:816 */
3698 break;
3699
3700 case 384:
3701 #line 1470 "src/parser_proc_grammar.y" /* glr.c:816 */
3702 {
3703 (*(struct psi_let_calloc **)(&(*yyvalp))) = psi_let_calloc_init((*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)), (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3704 (*(struct psi_let_calloc **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
3705 }
3706 #line 3707 "src/parser_proc.c" /* glr.c:816 */
3707 break;
3708
3709 case 385:
3710 #line 1477 "src/parser_proc_grammar.y" /* glr.c:816 */
3711 {
3712 (*(struct psi_let_callback **)(&(*yyvalp))) = psi_let_callback_init(psi_let_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval))->text, (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))), (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3713 (*(struct psi_let_callback **)(&(*yyvalp)))->func->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)));
3714 (*(struct psi_let_callback **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval)));
3715 }
3716 #line 3717 "src/parser_proc.c" /* glr.c:816 */
3717 break;
3718
3719 case 386:
3720 #line 1485 "src/parser_proc_grammar.y" /* glr.c:816 */
3721 {
3722 (*(struct psi_let_func **)(&(*yyvalp))) = psi_let_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->text, (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3723 (*(struct psi_let_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
3724 (*(struct psi_let_func **)(&(*yyvalp)))->inner = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
3725 }
3726 #line 3727 "src/parser_proc.c" /* glr.c:816 */
3727 break;
3728
3729 case 397:
3730 #line 1506 "src/parser_proc_grammar.y" /* glr.c:816 */
3731 {
3732 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
3733 }
3734 #line 3735 "src/parser_proc.c" /* glr.c:816 */
3735 break;
3736
3737 case 398:
3738 #line 1509 "src/parser_proc_grammar.y" /* glr.c:816 */
3739 {
3740 (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3741 }
3742 #line 3743 "src/parser_proc.c" /* glr.c:816 */
3743 break;
3744
3745 case 399:
3746 #line 1515 "src/parser_proc_grammar.y" /* glr.c:816 */
3747 {
3748 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_let_exp_free), &(*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3749 }
3750 #line 3751 "src/parser_proc.c" /* glr.c:816 */
3751 break;
3752
3753 case 400:
3754 #line 1518 "src/parser_proc_grammar.y" /* glr.c:816 */
3755 {
3756 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3757 }
3758 #line 3759 "src/parser_proc.c" /* glr.c:816 */
3759 break;
3760
3761 case 403:
3762 #line 1529 "src/parser_proc_grammar.y" /* glr.c:816 */
3763 {
3764 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
3765 }
3766 #line 3767 "src/parser_proc.c" /* glr.c:816 */
3767 break;
3768
3769 case 404:
3770 #line 1532 "src/parser_proc_grammar.y" /* glr.c:816 */
3771 {
3772 (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3773 }
3774 #line 3775 "src/parser_proc.c" /* glr.c:816 */
3775 break;
3776
3777 case 405:
3778 #line 1538 "src/parser_proc_grammar.y" /* glr.c:816 */
3779 {
3780 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), &(*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3781 }
3782 #line 3783 "src/parser_proc.c" /* glr.c:816 */
3783 break;
3784
3785 case 406:
3786 #line 1541 "src/parser_proc_grammar.y" /* glr.c:816 */
3787 {
3788 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3789 }
3790 #line 3791 "src/parser_proc.c" /* glr.c:816 */
3791 break;
3792
3793 case 407:
3794 #line 1547 "src/parser_proc_grammar.y" /* glr.c:816 */
3795 {
3796 (*(struct psi_return_stmt **)(&(*yyvalp))) = psi_return_stmt_init(psi_set_exp_init(PSI_SET_FUNC, (*(struct psi_set_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))));
3797 (*(struct psi_return_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3798 }
3799 #line 3800 "src/parser_proc.c" /* glr.c:816 */
3800 break;
3801
3802 case 408:
3803 #line 1554 "src/parser_proc_grammar.y" /* glr.c:816 */
3804 {
3805 (*(struct psi_set_stmt **)(&(*yyvalp))) = psi_set_stmt_init((*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3806 (*(struct psi_set_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3807 }
3808 #line 3809 "src/parser_proc.c" /* glr.c:816 */
3809 break;
3810
3811 case 409:
3812 #line 1561 "src/parser_proc_grammar.y" /* glr.c:816 */
3813 {
3814 (*(struct psi_set_exp **)(&(*yyvalp))) = psi_set_exp_init(PSI_SET_FUNC, (*(struct psi_set_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3815 }
3816 #line 3817 "src/parser_proc.c" /* glr.c:816 */
3817 break;
3818
3819 case 410:
3820 #line 1564 "src/parser_proc_grammar.y" /* glr.c:816 */
3821 {
3822 (*(struct psi_set_exp **)(&(*yyvalp))) = psi_set_exp_init(PSI_SET_NUMEXP, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3823 }
3824 #line 3825 "src/parser_proc.c" /* glr.c:816 */
3825 break;
3826
3827 case 411:
3828 #line 1567 "src/parser_proc_grammar.y" /* glr.c:816 */
3829 {
3830 (*(struct psi_set_exp **)(&(*yyvalp))) = (*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3831 (*(struct psi_set_exp **)(&(*yyvalp)))->var = (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
3832 }
3833 #line 3834 "src/parser_proc.c" /* glr.c:816 */
3834 break;
3835
3836 case 412:
3837 #line 1574 "src/parser_proc_grammar.y" /* glr.c:816 */
3838 {
3839 (*(struct psi_set_func **)(&(*yyvalp))) = psi_set_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->text, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3840 (*(struct psi_set_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
3841 (*(struct psi_set_func **)(&(*yyvalp)))->inner = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
3842 }
3843 #line 3844 "src/parser_proc.c" /* glr.c:816 */
3844 break;
3845
3846 case 413:
3847 #line 1579 "src/parser_proc_grammar.y" /* glr.c:816 */
3848 {
3849 (*(struct psi_set_func **)(&(*yyvalp))) = psi_set_func_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval))->text, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
3850 (*(struct psi_set_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
3851 (*(struct psi_set_func **)(&(*yyvalp)))->recursive = 1;
3852 }
3853 #line 3854 "src/parser_proc.c" /* glr.c:816 */
3854 break;
3855
3856 case 422:
3857 #line 1598 "src/parser_proc_grammar.y" /* glr.c:816 */
3858 {
3859 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
3860 }
3861 #line 3862 "src/parser_proc.c" /* glr.c:816 */
3862 break;
3863
3864 case 423:
3865 #line 1601 "src/parser_proc_grammar.y" /* glr.c:816 */
3866 {
3867 (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3868 }
3869 #line 3870 "src/parser_proc.c" /* glr.c:816 */
3870 break;
3871
3872 case 424:
3873 #line 1607 "src/parser_proc_grammar.y" /* glr.c:816 */
3874 {
3875 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_set_exp_free), &(*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3876 }
3877 #line 3878 "src/parser_proc.c" /* glr.c:816 */
3878 break;
3879
3880 case 425:
3881 #line 1610 "src/parser_proc_grammar.y" /* glr.c:816 */
3882 {
3883 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3884 }
3885 #line 3886 "src/parser_proc.c" /* glr.c:816 */
3886 break;
3887
3888 case 426:
3889 #line 1616 "src/parser_proc_grammar.y" /* glr.c:816 */
3890 {
3891 (*(struct psi_assert_stmt **)(&(*yyvalp))) = psi_assert_stmt_init((enum psi_assert_kind) (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3892 (*(struct psi_assert_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3893 }
3894 #line 3895 "src/parser_proc.c" /* glr.c:816 */
3895 break;
3896
3897 case 429:
3898 #line 1628 "src/parser_proc_grammar.y" /* glr.c:816 */
3899 {
3900 (*(struct psi_free_stmt **)(&(*yyvalp))) = psi_free_stmt_init((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3901 (*(struct psi_free_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3902 }
3903 #line 3904 "src/parser_proc.c" /* glr.c:816 */
3904 break;
3905
3906 case 430:
3907 #line 1635 "src/parser_proc_grammar.y" /* glr.c:816 */
3908 {
3909 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_free_exp_free), &(*(struct psi_free_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3910 }
3911 #line 3912 "src/parser_proc.c" /* glr.c:816 */
3912 break;
3913
3914 case 431:
3915 #line 1638 "src/parser_proc_grammar.y" /* glr.c:816 */
3916 {
3917 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_free_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3918 }
3919 #line 3920 "src/parser_proc.c" /* glr.c:816 */
3920 break;
3921
3922 case 432:
3923 #line 1644 "src/parser_proc_grammar.y" /* glr.c:816 */
3924 {
3925 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3926 (*(struct psi_free_exp **)(&(*yyvalp))) = psi_free_exp_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text, (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3927 (*(struct psi_free_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
3928 }
3929 #line 3930 "src/parser_proc.c" /* glr.c:816 */
3930 break;
3931
3932 case 433:
3933 #line 1652 "src/parser_proc_grammar.y" /* glr.c:816 */
3934 {
3935 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add(psi_plist_init((psi_plist_dtor) psi_decl_var_free), &(*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3936 }
3937 #line 3938 "src/parser_proc.c" /* glr.c:816 */
3938 break;
3939
3940 case 434:
3941 #line 1655 "src/parser_proc_grammar.y" /* glr.c:816 */
3942 {
3943 (*(struct psi_plist **)(&(*yyvalp))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)), &(*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3944 }
3945 #line 3946 "src/parser_proc.c" /* glr.c:816 */
3946 break;
3947
3948 case 435:
3949 #line 1661 "src/parser_proc_grammar.y" /* glr.c:816 */
3950 {
3951 (*(bool*)(&(*yyvalp))) = false;
3952 }
3953 #line 3954 "src/parser_proc.c" /* glr.c:816 */
3954 break;
3955
3956 case 436:
3957 #line 1664 "src/parser_proc_grammar.y" /* glr.c:816 */
3958 {
3959 (*(bool*)(&(*yyvalp))) = true;
3960 }
3961 #line 3962 "src/parser_proc.c" /* glr.c:816 */
3962 break;
3963
3964
3965 #line 3966 "src/parser_proc.c" /* glr.c:816 */
3966 default: break;
3967 }
3968
3969 return yyok;
3970 # undef yyerrok
3971 # undef YYABORT
3972 # undef YYACCEPT
3973 # undef YYERROR
3974 # undef YYBACKUP
3975 # undef yyclearin
3976 # undef YYRECOVERING
3977 }
3978
3979
3980 static void
3981 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
3982 {
3983 YYUSE (yy0);
3984 YYUSE (yy1);
3985
3986 switch (yyn)
3987 {
3988
3989 default: break;
3990 }
3991 }
3992
3993 /* Bison grammar-table manipulation. */
3994
3995 /*-----------------------------------------------.
3996 | Release the memory associated to this symbol. |
3997 `-----------------------------------------------*/
3998
3999 static void
4000 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
4001 {
4002 YYUSE (yyvaluep);
4003 YYUSE (P);
4004 YYUSE (tokens);
4005 YYUSE (index);
4006 if (!yymsg)
4007 yymsg = "Deleting";
4008 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
4009
4010 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4011 switch (yytype)
4012 {
4013 case 128: /* binary_op_token */
4014 #line 272 "src/parser_proc_grammar.y" /* glr.c:846 */
4015 {}
4016 #line 4017 "src/parser_proc.c" /* glr.c:846 */
4017 break;
4018
4019 case 129: /* unary_op_token */
4020 #line 272 "src/parser_proc_grammar.y" /* glr.c:846 */
4021 {}
4022 #line 4023 "src/parser_proc.c" /* glr.c:846 */
4023 break;
4024
4025 case 130: /* name_token */
4026 #line 272 "src/parser_proc_grammar.y" /* glr.c:846 */
4027 {}
4028 #line 4029 "src/parser_proc.c" /* glr.c:846 */
4029 break;
4030
4031 case 131: /* any_noeol_token */
4032 #line 272 "src/parser_proc_grammar.y" /* glr.c:846 */
4033 {}
4034 #line 4035 "src/parser_proc.c" /* glr.c:846 */
4035 break;
4036
4037 case 135: /* lib */
4038 #line 266 "src/parser_proc_grammar.y" /* glr.c:846 */
4039 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4040 #line 4041 "src/parser_proc.c" /* glr.c:846 */
4041 break;
4042
4043 case 136: /* cpp */
4044 #line 281 "src/parser_proc_grammar.y" /* glr.c:846 */
4045 {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
4046 #line 4047 "src/parser_proc.c" /* glr.c:846 */
4047 break;
4048
4049 case 137: /* cpp_exp */
4050 #line 281 "src/parser_proc_grammar.y" /* glr.c:846 */
4051 {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
4052 #line 4053 "src/parser_proc.c" /* glr.c:846 */
4053 break;
4054
4055 case 138: /* cpp_message_token */
4056 #line 269 "src/parser_proc_grammar.y" /* glr.c:846 */
4057 {}
4058 #line 4059 "src/parser_proc.c" /* glr.c:846 */
4059 break;
4060
4061 case 139: /* cpp_include_token */
4062 #line 269 "src/parser_proc_grammar.y" /* glr.c:846 */
4063 {}
4064 #line 4065 "src/parser_proc.c" /* glr.c:846 */
4065 break;
4066
4067 case 140: /* cpp_header_token */
4068 #line 269 "src/parser_proc_grammar.y" /* glr.c:846 */
4069 {}
4070 #line 4071 "src/parser_proc.c" /* glr.c:846 */
4071 break;
4072
4073 case 141: /* cpp_no_arg_token */
4074 #line 269 "src/parser_proc_grammar.y" /* glr.c:846 */
4075 {}
4076 #line 4077 "src/parser_proc.c" /* glr.c:846 */
4077 break;
4078
4079 case 142: /* cpp_name_arg_token */
4080 #line 269 "src/parser_proc_grammar.y" /* glr.c:846 */
4081 {}
4082 #line 4083 "src/parser_proc.c" /* glr.c:846 */
4083 break;
4084
4085 case 143: /* cpp_exp_arg_token */
4086 #line 269 "src/parser_proc_grammar.y" /* glr.c:846 */
4087 {}
4088 #line 4089 "src/parser_proc.c" /* glr.c:846 */
4089 break;
4090
4091 case 144: /* cpp_macro_decl */
4092 #line 283 "src/parser_proc_grammar.y" /* glr.c:846 */
4093 {psi_cpp_macro_decl_free(&(*(struct psi_cpp_macro_decl **)(&(*yyvaluep))));}
4094 #line 4095 "src/parser_proc.c" /* glr.c:846 */
4095 break;
4096
4097 case 145: /* cpp_macro_sig */
4098 #line 285 "src/parser_proc_grammar.y" /* glr.c:846 */
4099 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4100 #line 4101 "src/parser_proc.c" /* glr.c:846 */
4101 break;
4102
4103 case 146: /* cpp_macro_sig_args */
4104 #line 285 "src/parser_proc_grammar.y" /* glr.c:846 */
4105 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4106 #line 4107 "src/parser_proc.c" /* glr.c:846 */
4107 break;
4108
4109 case 147: /* cpp_macro_decl_tokens */
4110 #line 285 "src/parser_proc_grammar.y" /* glr.c:846 */
4111 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4112 #line 4113 "src/parser_proc.c" /* glr.c:846 */
4113 break;
4114
4115 case 148: /* cpp_macro_decl_token_list */
4116 #line 285 "src/parser_proc_grammar.y" /* glr.c:846 */
4117 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4118 #line 4119 "src/parser_proc.c" /* glr.c:846 */
4119 break;
4120
4121 case 149: /* cpp_macro_exp */
4122 #line 287 "src/parser_proc_grammar.y" /* glr.c:846 */
4123 {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
4124 #line 4125 "src/parser_proc.c" /* glr.c:846 */
4125 break;
4126
4127 case 150: /* cpp_macro_call_args */
4128 #line 285 "src/parser_proc_grammar.y" /* glr.c:846 */
4129 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4130 #line 4131 "src/parser_proc.c" /* glr.c:846 */
4131 break;
4132
4133 case 151: /* cpp_macro_call_arg_list */
4134 #line 285 "src/parser_proc_grammar.y" /* glr.c:846 */
4135 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4136 #line 4137 "src/parser_proc.c" /* glr.c:846 */
4137 break;
4138
4139 case 152: /* constant */
4140 #line 293 "src/parser_proc_grammar.y" /* glr.c:846 */
4141 {psi_const_free(&(*(struct psi_const **)(&(*yyvaluep))));}
4142 #line 4143 "src/parser_proc.c" /* glr.c:846 */
4143 break;
4144
4145 case 153: /* constant_type */
4146 #line 295 "src/parser_proc_grammar.y" /* glr.c:846 */
4147 {psi_const_type_free(&(*(struct psi_const_type **)(&(*yyvaluep))));}
4148 #line 4149 "src/parser_proc.c" /* glr.c:846 */
4149 break;
4150
4151 case 154: /* constant_type_token */
4152 #line 290 "src/parser_proc_grammar.y" /* glr.c:846 */
4153 {}
4154 #line 4155 "src/parser_proc.c" /* glr.c:846 */
4155 break;
4156
4157 case 155: /* impl_def_val */
4158 #line 297 "src/parser_proc_grammar.y" /* glr.c:846 */
4159 {psi_impl_def_val_free(&(*(struct psi_impl_def_val **)(&(*yyvaluep))));}
4160 #line 4161 "src/parser_proc.c" /* glr.c:846 */
4161 break;
4162
4163 case 156: /* impl_def_val_token */
4164 #line 290 "src/parser_proc_grammar.y" /* glr.c:846 */
4165 {}
4166 #line 4167 "src/parser_proc.c" /* glr.c:846 */
4167 break;
4168
4169 case 157: /* decl_typedef */
4170 #line 310 "src/parser_proc_grammar.y" /* glr.c:846 */
4171 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4172 #line 4173 "src/parser_proc.c" /* glr.c:846 */
4173 break;
4174
4175 case 158: /* typedef */
4176 #line 310 "src/parser_proc_grammar.y" /* glr.c:846 */
4177 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4178 #line 4179 "src/parser_proc.c" /* glr.c:846 */
4179 break;
4180
4181 case 159: /* const_decl_type */
4182 #line 306 "src/parser_proc_grammar.y" /* glr.c:846 */
4183 {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
4184 #line 4185 "src/parser_proc.c" /* glr.c:846 */
4185 break;
4186
4187 case 160: /* decl_type */
4188 #line 306 "src/parser_proc_grammar.y" /* glr.c:846 */
4189 {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
4190 #line 4191 "src/parser_proc.c" /* glr.c:846 */
4191 break;
4192
4193 case 161: /* decl_type_complex */
4194 #line 306 "src/parser_proc_grammar.y" /* glr.c:846 */
4195 {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
4196 #line 4197 "src/parser_proc.c" /* glr.c:846 */
4197 break;
4198
4199 case 162: /* decl_type_simple */
4200 #line 300 "src/parser_proc_grammar.y" /* glr.c:846 */
4201 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4202 #line 4203 "src/parser_proc.c" /* glr.c:846 */
4203 break;
4204
4205 case 163: /* decl_real_type */
4206 #line 300 "src/parser_proc_grammar.y" /* glr.c:846 */
4207 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4208 #line 4209 "src/parser_proc.c" /* glr.c:846 */
4209 break;
4210
4211 case 164: /* decl_stdint_type */
4212 #line 303 "src/parser_proc_grammar.y" /* glr.c:846 */
4213 {}
4214 #line 4215 "src/parser_proc.c" /* glr.c:846 */
4215 break;
4216
4217 case 165: /* int_signed */
4218 #line 278 "src/parser_proc_grammar.y" /* glr.c:846 */
4219 {}
4220 #line 4221 "src/parser_proc.c" /* glr.c:846 */
4221 break;
4222
4223 case 166: /* int_width */
4224 #line 275 "src/parser_proc_grammar.y" /* glr.c:846 */
4225 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4226 #line 4227 "src/parser_proc.c" /* glr.c:846 */
4227 break;
4228
4229 case 167: /* decl_int_type */
4230 #line 300 "src/parser_proc_grammar.y" /* glr.c:846 */
4231 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4232 #line 4233 "src/parser_proc.c" /* glr.c:846 */
4233 break;
4234
4235 case 168: /* int_signed_types */
4236 #line 275 "src/parser_proc_grammar.y" /* glr.c:846 */
4237 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4238 #line 4239 "src/parser_proc.c" /* glr.c:846 */
4239 break;
4240
4241 case 169: /* signed_short_types */
4242 #line 278 "src/parser_proc_grammar.y" /* glr.c:846 */
4243 {}
4244 #line 4245 "src/parser_proc.c" /* glr.c:846 */
4245 break;
4246
4247 case 170: /* signed_long_types */
4248 #line 278 "src/parser_proc_grammar.y" /* glr.c:846 */
4249 {}
4250 #line 4251 "src/parser_proc.c" /* glr.c:846 */
4251 break;
4252
4253 case 171: /* int_width_types */
4254 #line 275 "src/parser_proc_grammar.y" /* glr.c:846 */
4255 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4256 #line 4257 "src/parser_proc.c" /* glr.c:846 */
4257 break;
4258
4259 case 172: /* decl_stmt */
4260 #line 308 "src/parser_proc_grammar.y" /* glr.c:846 */
4261 {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
4262 #line 4263 "src/parser_proc.c" /* glr.c:846 */
4263 break;
4264
4265 case 173: /* decl */
4266 #line 308 "src/parser_proc_grammar.y" /* glr.c:846 */
4267 {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
4268 #line 4269 "src/parser_proc.c" /* glr.c:846 */
4269 break;
4270
4271 case 174: /* decl_fn */
4272 #line 310 "src/parser_proc_grammar.y" /* glr.c:846 */
4273 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4274 #line 4275 "src/parser_proc.c" /* glr.c:846 */
4275 break;
4276
4277 case 175: /* decl_functor */
4278 #line 310 "src/parser_proc_grammar.y" /* glr.c:846 */
4279 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4280 #line 4281 "src/parser_proc.c" /* glr.c:846 */
4281 break;
4282
4283 case 176: /* decl_func */
4284 #line 310 "src/parser_proc_grammar.y" /* glr.c:846 */
4285 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4286 #line 4287 "src/parser_proc.c" /* glr.c:846 */
4287 break;
4288
4289 case 177: /* decl_args */
4290 #line 322 "src/parser_proc_grammar.y" /* glr.c:846 */
4291 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4292 #line 4293 "src/parser_proc.c" /* glr.c:846 */
4293 break;
4294
4295 case 178: /* decl_arg */
4296 #line 310 "src/parser_proc_grammar.y" /* glr.c:846 */
4297 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4298 #line 4299 "src/parser_proc.c" /* glr.c:846 */
4299 break;
4300
4301 case 179: /* decl_var */
4302 #line 312 "src/parser_proc_grammar.y" /* glr.c:846 */
4303 {psi_decl_var_free(&(*(struct psi_decl_var **)(&(*yyvaluep))));}
4304 #line 4305 "src/parser_proc.c" /* glr.c:846 */
4305 break;
4306
4307 case 180: /* decl_union */
4308 #line 316 "src/parser_proc_grammar.y" /* glr.c:846 */
4309 {psi_decl_union_free(&(*(struct psi_decl_union **)(&(*yyvaluep))));}
4310 #line 4311 "src/parser_proc.c" /* glr.c:846 */
4311 break;
4312
4313 case 181: /* decl_struct */
4314 #line 314 "src/parser_proc_grammar.y" /* glr.c:846 */
4315 {psi_decl_struct_free(&(*(struct psi_decl_struct **)(&(*yyvaluep))));}
4316 #line 4317 "src/parser_proc.c" /* glr.c:846 */
4317 break;
4318
4319 case 182: /* decl_struct_args */
4320 #line 322 "src/parser_proc_grammar.y" /* glr.c:846 */
4321 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4322 #line 4323 "src/parser_proc.c" /* glr.c:846 */
4323 break;
4324
4325 case 183: /* struct_args_block */
4326 #line 322 "src/parser_proc_grammar.y" /* glr.c:846 */
4327 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4328 #line 4329 "src/parser_proc.c" /* glr.c:846 */
4329 break;
4330
4331 case 184: /* struct_args */
4332 #line 322 "src/parser_proc_grammar.y" /* glr.c:846 */
4333 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4334 #line 4335 "src/parser_proc.c" /* glr.c:846 */
4335 break;
4336
4337 case 185: /* struct_arg */
4338 #line 310 "src/parser_proc_grammar.y" /* glr.c:846 */
4339 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4340 #line 4341 "src/parser_proc.c" /* glr.c:846 */
4341 break;
4342
4343 case 186: /* decl_enum */
4344 #line 318 "src/parser_proc_grammar.y" /* glr.c:846 */
4345 {psi_decl_enum_free(&(*(struct psi_decl_enum **)(&(*yyvaluep))));}
4346 #line 4347 "src/parser_proc.c" /* glr.c:846 */
4347 break;
4348
4349 case 187: /* decl_enum_items */
4350 #line 322 "src/parser_proc_grammar.y" /* glr.c:846 */
4351 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4352 #line 4353 "src/parser_proc.c" /* glr.c:846 */
4353 break;
4354
4355 case 188: /* decl_enum_item */
4356 #line 320 "src/parser_proc_grammar.y" /* glr.c:846 */
4357 {psi_decl_enum_item_free(&(*(struct psi_decl_enum_item **)(&(*yyvaluep))));}
4358 #line 4359 "src/parser_proc.c" /* glr.c:846 */
4359 break;
4360
4361 case 189: /* num_exp */
4362 #line 373 "src/parser_proc_grammar.y" /* glr.c:846 */
4363 {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
4364 #line 4365 "src/parser_proc.c" /* glr.c:846 */
4365 break;
4366
4367 case 190: /* number */
4368 #line 375 "src/parser_proc_grammar.y" /* glr.c:846 */
4369 {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
4370 #line 4371 "src/parser_proc.c" /* glr.c:846 */
4371 break;
4372
4373 case 191: /* enum_name */
4374 #line 266 "src/parser_proc_grammar.y" /* glr.c:846 */
4375 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4376 #line 4377 "src/parser_proc.c" /* glr.c:846 */
4377 break;
4378
4379 case 192: /* union_name */
4380 #line 266 "src/parser_proc_grammar.y" /* glr.c:846 */
4381 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4382 #line 4383 "src/parser_proc.c" /* glr.c:846 */
4383 break;
4384
4385 case 193: /* struct_name */
4386 #line 266 "src/parser_proc_grammar.y" /* glr.c:846 */
4387 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4388 #line 4389 "src/parser_proc.c" /* glr.c:846 */
4389 break;
4390
4391 case 194: /* optional_name */
4392 #line 266 "src/parser_proc_grammar.y" /* glr.c:846 */
4393 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4394 #line 4395 "src/parser_proc.c" /* glr.c:846 */
4395 break;
4396
4397 case 195: /* decl_layout */
4398 #line 327 "src/parser_proc_grammar.y" /* glr.c:846 */
4399 {psi_layout_free(&(*(struct psi_layout **)(&(*yyvaluep))));}
4400 #line 4401 "src/parser_proc.c" /* glr.c:846 */
4401 break;
4402
4403 case 196: /* align_and_size */
4404 #line 325 "src/parser_proc_grammar.y" /* glr.c:846 */
4405 {}
4406 #line 4407 "src/parser_proc.c" /* glr.c:846 */
4407 break;
4408
4409 case 197: /* array_size */
4410 #line 378 "src/parser_proc_grammar.y" /* glr.c:846 */
4411 {}
4412 #line 4413 "src/parser_proc.c" /* glr.c:846 */
4413 break;
4414
4415 case 198: /* indirection */
4416 #line 378 "src/parser_proc_grammar.y" /* glr.c:846 */
4417 {}
4418 #line 4419 "src/parser_proc.c" /* glr.c:846 */
4419 break;
4420
4421 case 199: /* pointers */
4422 #line 378 "src/parser_proc_grammar.y" /* glr.c:846 */
4423 {}
4424 #line 4425 "src/parser_proc.c" /* glr.c:846 */
4425 break;
4426
4427 case 200: /* impl */
4428 #line 330 "src/parser_proc_grammar.y" /* glr.c:846 */
4429 {psi_impl_free(&(*(struct psi_impl **)(&(*yyvaluep))));}
4430 #line 4431 "src/parser_proc.c" /* glr.c:846 */
4431 break;
4432
4433 case 201: /* impl_func */
4434 #line 332 "src/parser_proc_grammar.y" /* glr.c:846 */
4435 {psi_impl_func_free(&(*(struct psi_impl_func **)(&(*yyvaluep))));}
4436 #line 4437 "src/parser_proc.c" /* glr.c:846 */
4437 break;
4438
4439 case 202: /* impl_args */
4440 #line 370 "src/parser_proc_grammar.y" /* glr.c:846 */
4441 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4442 #line 4443 "src/parser_proc.c" /* glr.c:846 */
4443 break;
4444
4445 case 203: /* impl_arg */
4446 #line 334 "src/parser_proc_grammar.y" /* glr.c:846 */
4447 {psi_impl_arg_free(&(*(struct psi_impl_arg **)(&(*yyvaluep))));}
4448 #line 4449 "src/parser_proc.c" /* glr.c:846 */
4449 break;
4450
4451 case 204: /* impl_var */
4452 #line 338 "src/parser_proc_grammar.y" /* glr.c:846 */
4453 {psi_impl_var_free(&(*(struct psi_impl_var **)(&(*yyvaluep))));}
4454 #line 4455 "src/parser_proc.c" /* glr.c:846 */
4455 break;
4456
4457 case 205: /* impl_type */
4458 #line 336 "src/parser_proc_grammar.y" /* glr.c:846 */
4459 {psi_impl_type_free(&(*(struct psi_impl_type **)(&(*yyvaluep))));}
4460 #line 4461 "src/parser_proc.c" /* glr.c:846 */
4461 break;
4462
4463 case 206: /* impl_type_token */
4464 #line 368 "src/parser_proc_grammar.y" /* glr.c:846 */
4465 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4466 #line 4467 "src/parser_proc.c" /* glr.c:846 */
4467 break;
4468
4469 case 207: /* impl_stmts */
4470 #line 370 "src/parser_proc_grammar.y" /* glr.c:846 */
4471 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4472 #line 4473 "src/parser_proc.c" /* glr.c:846 */
4473 break;
4474
4475 case 208: /* impl_stmt */
4476 #line 366 "src/parser_proc_grammar.y" /* glr.c:846 */
4477 {psi_impl_stmt_free(&(*(struct psi_token ***)(&(*yyvaluep))));}
4478 #line 4479 "src/parser_proc.c" /* glr.c:846 */
4479 break;
4480
4481 case 209: /* let_stmt */
4482 #line 341 "src/parser_proc_grammar.y" /* glr.c:846 */
4483 {psi_let_stmt_free(&(*(struct psi_let_stmt **)(&(*yyvaluep))));}
4484 #line 4485 "src/parser_proc.c" /* glr.c:846 */
4485 break;
4486
4487 case 210: /* let_exp */
4488 #line 343 "src/parser_proc_grammar.y" /* glr.c:846 */
4489 {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
4490 #line 4491 "src/parser_proc.c" /* glr.c:846 */
4491 break;
4492
4493 case 211: /* let_exp_byref */
4494 #line 343 "src/parser_proc_grammar.y" /* glr.c:846 */
4495 {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
4496 #line 4497 "src/parser_proc.c" /* glr.c:846 */
4497 break;
4498
4499 case 212: /* let_exp_assign */
4500 #line 343 "src/parser_proc_grammar.y" /* glr.c:846 */
4501 {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
4502 #line 4503 "src/parser_proc.c" /* glr.c:846 */
4503 break;
4504
4505 case 213: /* let_calloc */
4506 #line 345 "src/parser_proc_grammar.y" /* glr.c:846 */
4507 {psi_let_calloc_free(&(*(struct psi_let_calloc **)(&(*yyvaluep))));}
4508 #line 4509 "src/parser_proc.c" /* glr.c:846 */
4509 break;
4510
4511 case 214: /* let_callback */
4512 #line 347 "src/parser_proc_grammar.y" /* glr.c:846 */
4513 {psi_let_callback_free(&(*(struct psi_let_callback **)(&(*yyvaluep))));}
4514 #line 4515 "src/parser_proc.c" /* glr.c:846 */
4515 break;
4516
4517 case 215: /* let_func */
4518 #line 349 "src/parser_proc_grammar.y" /* glr.c:846 */
4519 {psi_let_func_free(&(*(struct psi_let_func **)(&(*yyvaluep))));}
4520 #line 4521 "src/parser_proc.c" /* glr.c:846 */
4521 break;
4522
4523 case 216: /* let_func_token */
4524 #line 368 "src/parser_proc_grammar.y" /* glr.c:846 */
4525 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4526 #line 4527 "src/parser_proc.c" /* glr.c:846 */
4527 break;
4528
4529 case 217: /* let_func_exps */
4530 #line 370 "src/parser_proc_grammar.y" /* glr.c:846 */
4531 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4532 #line 4533 "src/parser_proc.c" /* glr.c:846 */
4533 break;
4534
4535 case 218: /* let_exps */
4536 #line 370 "src/parser_proc_grammar.y" /* glr.c:846 */
4537 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4538 #line 4539 "src/parser_proc.c" /* glr.c:846 */
4539 break;
4540
4541 case 219: /* callback_rval */
4542 #line 368 "src/parser_proc_grammar.y" /* glr.c:846 */
4543 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4544 #line 4545 "src/parser_proc.c" /* glr.c:846 */
4545 break;
4546
4547 case 220: /* callback_arg_list */
4548 #line 370 "src/parser_proc_grammar.y" /* glr.c:846 */
4549 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4550 #line 4551 "src/parser_proc.c" /* glr.c:846 */
4551 break;
4552
4553 case 221: /* callback_args */
4554 #line 370 "src/parser_proc_grammar.y" /* glr.c:846 */
4555 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4556 #line 4557 "src/parser_proc.c" /* glr.c:846 */
4557 break;
4558
4559 case 222: /* return_stmt */
4560 #line 359 "src/parser_proc_grammar.y" /* glr.c:846 */
4561 {psi_return_stmt_free(&(*(struct psi_return_stmt **)(&(*yyvaluep))));}
4562 #line 4563 "src/parser_proc.c" /* glr.c:846 */
4563 break;
4564
4565 case 223: /* set_stmt */
4566 #line 351 "src/parser_proc_grammar.y" /* glr.c:846 */
4567 {psi_set_stmt_free(&(*(struct psi_set_stmt **)(&(*yyvaluep))));}
4568 #line 4569 "src/parser_proc.c" /* glr.c:846 */
4569 break;
4570
4571 case 224: /* set_exp */
4572 #line 353 "src/parser_proc_grammar.y" /* glr.c:846 */
4573 {psi_set_exp_free(&(*(struct psi_set_exp **)(&(*yyvaluep))));}
4574 #line 4575 "src/parser_proc.c" /* glr.c:846 */
4575 break;
4576
4577 case 225: /* set_func */
4578 #line 355 "src/parser_proc_grammar.y" /* glr.c:846 */
4579 {psi_set_func_free(&(*(struct psi_set_func **)(&(*yyvaluep))));}
4580 #line 4581 "src/parser_proc.c" /* glr.c:846 */
4581 break;
4582
4583 case 226: /* set_func_token */
4584 #line 368 "src/parser_proc_grammar.y" /* glr.c:846 */
4585 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4586 #line 4587 "src/parser_proc.c" /* glr.c:846 */
4587 break;
4588
4589 case 227: /* set_func_exps */
4590 #line 370 "src/parser_proc_grammar.y" /* glr.c:846 */
4591 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4592 #line 4593 "src/parser_proc.c" /* glr.c:846 */
4593 break;
4594
4595 case 228: /* set_exps */
4596 #line 370 "src/parser_proc_grammar.y" /* glr.c:846 */
4597 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4598 #line 4599 "src/parser_proc.c" /* glr.c:846 */
4599 break;
4600
4601 case 229: /* assert_stmt */
4602 #line 357 "src/parser_proc_grammar.y" /* glr.c:846 */
4603 {psi_assert_stmt_free(&(*(struct psi_assert_stmt **)(&(*yyvaluep))));}
4604 #line 4605 "src/parser_proc.c" /* glr.c:846 */
4605 break;
4606
4607 case 230: /* assert_stmt_token */
4608 #line 368 "src/parser_proc_grammar.y" /* glr.c:846 */
4609 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4610 #line 4611 "src/parser_proc.c" /* glr.c:846 */
4611 break;
4612
4613 case 231: /* free_stmt */
4614 #line 361 "src/parser_proc_grammar.y" /* glr.c:846 */
4615 {psi_free_stmt_free(&(*(struct psi_free_stmt **)(&(*yyvaluep))));}
4616 #line 4617 "src/parser_proc.c" /* glr.c:846 */
4617 break;
4618
4619 case 232: /* free_exps */
4620 #line 370 "src/parser_proc_grammar.y" /* glr.c:846 */
4621 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4622 #line 4623 "src/parser_proc.c" /* glr.c:846 */
4623 break;
4624
4625 case 233: /* free_exp */
4626 #line 363 "src/parser_proc_grammar.y" /* glr.c:846 */
4627 {psi_free_exp_free(&(*(struct psi_free_exp **)(&(*yyvaluep))));}
4628 #line 4629 "src/parser_proc.c" /* glr.c:846 */
4629 break;
4630
4631 case 234: /* decl_vars */
4632 #line 322 "src/parser_proc_grammar.y" /* glr.c:846 */
4633 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4634 #line 4635 "src/parser_proc.c" /* glr.c:846 */
4635 break;
4636
4637 case 235: /* reference */
4638 #line 380 "src/parser_proc_grammar.y" /* glr.c:846 */
4639 {}
4640 #line 4641 "src/parser_proc.c" /* glr.c:846 */
4641 break;
4642
4643
4644 default:
4645 break;
4646 }
4647 YY_IGNORE_MAYBE_UNINITIALIZED_END
4648 }
4649
4650 /** Number of symbols composing the right hand side of rule #RULE. */
4651 static inline int
4652 yyrhsLength (yyRuleNum yyrule)
4653 {
4654 return yyr2[yyrule];
4655 }
4656
4657 static void
4658 yydestroyGLRState (char const *yymsg, yyGLRState *yys, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
4659 {
4660 if (yys->yyresolved)
4661 yydestruct (yymsg, yystos[yys->yylrState],
4662 &yys->yysemantics.yysval, P, tokens, index);
4663 else
4664 {
4665 #if YYDEBUG
4666 if (yydebug)
4667 {
4668 if (yys->yysemantics.yyfirstVal)
4669 YYFPRINTF (stderr, "%s unresolved", yymsg);
4670 else
4671 YYFPRINTF (stderr, "%s incomplete", yymsg);
4672 YY_SYMBOL_PRINT ("", yystos[yys->yylrState], YY_NULLPTR, &yys->yyloc);
4673 }
4674 #endif
4675
4676 if (yys->yysemantics.yyfirstVal)
4677 {
4678 yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
4679 yyGLRState *yyrh;
4680 int yyn;
4681 for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
4682 yyn > 0;
4683 yyrh = yyrh->yypred, yyn -= 1)
4684 yydestroyGLRState (yymsg, yyrh, P, tokens, index);
4685 }
4686 }
4687 }
4688
4689 /** Left-hand-side symbol for rule #YYRULE. */
4690 static inline yySymbol
4691 yylhsNonterm (yyRuleNum yyrule)
4692 {
4693 return yyr1[yyrule];
4694 }
4695
4696 #define yypact_value_is_default(Yystate) \
4697 (!!((Yystate) == (-505)))
4698
4699 /** True iff LR state YYSTATE has only a default reduction (regardless
4700 * of token). */
4701 static inline yybool
4702 yyisDefaultedState (yyStateNum yystate)
4703 {
4704 return yypact_value_is_default (yypact[yystate]);
4705 }
4706
4707 /** The default reduction for YYSTATE, assuming it has one. */
4708 static inline yyRuleNum
4709 yydefaultAction (yyStateNum yystate)
4710 {
4711 return yydefact[yystate];
4712 }
4713
4714 #define yytable_value_is_error(Yytable_value) \
4715 0
4716
4717 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
4718 * Result R means
4719 * R < 0: Reduce on rule -R.
4720 * R = 0: Error.
4721 * R > 0: Shift to state R.
4722 * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
4723 * of conflicting reductions.
4724 */
4725 static inline void
4726 yygetLRActions (yyStateNum yystate, int yytoken,
4727 int* yyaction, const short int** yyconflicts)
4728 {
4729 int yyindex = yypact[yystate] + yytoken;
4730 if (yypact_value_is_default (yypact[yystate])
4731 || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
4732 {
4733 *yyaction = -yydefact[yystate];
4734 *yyconflicts = yyconfl;
4735 }
4736 else if (! yytable_value_is_error (yytable[yyindex]))
4737 {
4738 *yyaction = yytable[yyindex];
4739 *yyconflicts = yyconfl + yyconflp[yyindex];
4740 }
4741 else
4742 {
4743 *yyaction = 0;
4744 *yyconflicts = yyconfl + yyconflp[yyindex];
4745 }
4746 }
4747
4748 /** Compute post-reduction state.
4749 * \param yystate the current state
4750 * \param yysym the nonterminal to push on the stack
4751 */
4752 static inline yyStateNum
4753 yyLRgotoState (yyStateNum yystate, yySymbol yysym)
4754 {
4755 int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
4756 if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
4757 return yytable[yyr];
4758 else
4759 return yydefgoto[yysym - YYNTOKENS];
4760 }
4761
4762 static inline yybool
4763 yyisShiftAction (int yyaction)
4764 {
4765 return 0 < yyaction;
4766 }
4767
4768 static inline yybool
4769 yyisErrorAction (int yyaction)
4770 {
4771 return yyaction == 0;
4772 }
4773
4774 /* GLRStates */
4775
4776 /** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
4777 * if YYISSTATE, and otherwise a semantic option. Callers should call
4778 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
4779 * headroom. */
4780
4781 static inline yyGLRStackItem*
4782 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
4783 {
4784 yyGLRStackItem* yynewItem = yystackp->yynextFree;
4785 yystackp->yyspaceLeft -= 1;
4786 yystackp->yynextFree += 1;
4787 yynewItem->yystate.yyisState = yyisState;
4788 return yynewItem;
4789 }
4790
4791 /** Add a new semantic action that will execute the action for rule
4792 * YYRULE on the semantic values in YYRHS to the list of
4793 * alternative actions for YYSTATE. Assumes that YYRHS comes from
4794 * stack #YYK of *YYSTACKP. */
4795 static void
4796 yyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate,
4797 yyGLRState* yyrhs, yyRuleNum yyrule)
4798 {
4799 yySemanticOption* yynewOption =
4800 &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
4801 YYASSERT (!yynewOption->yyisState);
4802 yynewOption->yystate = yyrhs;
4803 yynewOption->yyrule = yyrule;
4804 if (yystackp->yytops.yylookaheadNeeds[yyk])
4805 {
4806 yynewOption->yyrawchar = yychar;
4807 yynewOption->yyval = yylval;
4808 }
4809 else
4810 yynewOption->yyrawchar = YYEMPTY;
4811 yynewOption->yynext = yystate->yysemantics.yyfirstVal;
4812 yystate->yysemantics.yyfirstVal = yynewOption;
4813
4814 YY_RESERVE_GLRSTACK (yystackp);
4815 }
4816
4817 /* GLRStacks */
4818
4819 /** Initialize YYSET to a singleton set containing an empty stack. */
4820 static yybool
4821 yyinitStateSet (yyGLRStateSet* yyset)
4822 {
4823 yyset->yysize = 1;
4824 yyset->yycapacity = 16;
4825 yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]);
4826 if (! yyset->yystates)
4827 return yyfalse;
4828 yyset->yystates[0] = YY_NULLPTR;
4829 yyset->yylookaheadNeeds =
4830 (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadNeeds[0]);
4831 if (! yyset->yylookaheadNeeds)
4832 {
4833 YYFREE (yyset->yystates);
4834 return yyfalse;
4835 }
4836 return yytrue;
4837 }
4838
4839 static void yyfreeStateSet (yyGLRStateSet* yyset)
4840 {
4841 YYFREE (yyset->yystates);
4842 YYFREE (yyset->yylookaheadNeeds);
4843 }
4844
4845 /** Initialize *YYSTACKP to a single empty stack, with total maximum
4846 * capacity for all stacks of YYSIZE. */
4847 static yybool
4848 yyinitGLRStack (yyGLRStack* yystackp, size_t yysize)
4849 {
4850 yystackp->yyerrState = 0;
4851 yynerrs = 0;
4852 yystackp->yyspaceLeft = yysize;
4853 yystackp->yyitems =
4854 (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystackp->yynextFree[0]);
4855 if (!yystackp->yyitems)
4856 return yyfalse;
4857 yystackp->yynextFree = yystackp->yyitems;
4858 yystackp->yysplitPoint = YY_NULLPTR;
4859 yystackp->yylastDeleted = YY_NULLPTR;
4860 return yyinitStateSet (&yystackp->yytops);
4861 }
4862
4863
4864 #if YYSTACKEXPANDABLE
4865 # define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
4866 &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
4867
4868 /** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
4869 stack from outside should be considered invalid after this call.
4870 We always expand when there are 1 or fewer items left AFTER an
4871 allocation, so that we can avoid having external pointers exist
4872 across an allocation. */
4873 static void
4874 yyexpandGLRStack (yyGLRStack* yystackp)
4875 {
4876 yyGLRStackItem* yynewItems;
4877 yyGLRStackItem* yyp0, *yyp1;
4878 size_t yynewSize;
4879 size_t yyn;
4880 size_t yysize = yystackp->yynextFree - yystackp->yyitems;
4881 if (YYMAXDEPTH - YYHEADROOM < yysize)
4882 yyMemoryExhausted (yystackp);
4883 yynewSize = 2*yysize;
4884 if (YYMAXDEPTH < yynewSize)
4885 yynewSize = YYMAXDEPTH;
4886 yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]);
4887 if (! yynewItems)
4888 yyMemoryExhausted (yystackp);
4889 for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
4890 0 < yyn;
4891 yyn -= 1, yyp0 += 1, yyp1 += 1)
4892 {
4893 *yyp1 = *yyp0;
4894 if (*(yybool *) yyp0)
4895 {
4896 yyGLRState* yys0 = &yyp0->yystate;
4897 yyGLRState* yys1 = &yyp1->yystate;
4898 if (yys0->yypred != YY_NULLPTR)
4899 yys1->yypred =
4900 YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
4901 if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
4902 yys1->yysemantics.yyfirstVal =
4903 YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
4904 }
4905 else
4906 {
4907 yySemanticOption* yyv0 = &yyp0->yyoption;
4908 yySemanticOption* yyv1 = &yyp1->yyoption;
4909 if (yyv0->yystate != YY_NULLPTR)
4910 yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
4911 if (yyv0->yynext != YY_NULLPTR)
4912 yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
4913 }
4914 }
4915 if (yystackp->yysplitPoint != YY_NULLPTR)
4916 yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
4917 yystackp->yysplitPoint, yystate);
4918
4919 for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
4920 if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
4921 yystackp->yytops.yystates[yyn] =
4922 YYRELOC (yystackp->yyitems, yynewItems,
4923 yystackp->yytops.yystates[yyn], yystate);
4924 YYFREE (yystackp->yyitems);
4925 yystackp->yyitems = yynewItems;
4926 yystackp->yynextFree = yynewItems + yysize;
4927 yystackp->yyspaceLeft = yynewSize - yysize;
4928 }
4929 #endif
4930
4931 static void
4932 yyfreeGLRStack (yyGLRStack* yystackp)
4933 {
4934 YYFREE (yystackp->yyitems);
4935 yyfreeStateSet (&yystackp->yytops);
4936 }
4937
4938 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
4939 * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
4940 * YYS. */
4941 static inline void
4942 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
4943 {
4944 if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
4945 yystackp->yysplitPoint = yys;
4946 }
4947
4948 /** Invalidate stack #YYK in *YYSTACKP. */
4949 static inline void
4950 yymarkStackDeleted (yyGLRStack* yystackp, size_t yyk)
4951 {
4952 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
4953 yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
4954 yystackp->yytops.yystates[yyk] = YY_NULLPTR;
4955 }
4956
4957 /** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
4958 only be done once after a deletion, and only when all other stacks have
4959 been deleted. */
4960 static void
4961 yyundeleteLastStack (yyGLRStack* yystackp)
4962 {
4963 if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
4964 return;
4965 yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
4966 yystackp->yytops.yysize = 1;
4967 YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
4968 yystackp->yylastDeleted = YY_NULLPTR;
4969 }
4970
4971 static inline void
4972 yyremoveDeletes (yyGLRStack* yystackp)
4973 {
4974 size_t yyi, yyj;
4975 yyi = yyj = 0;
4976 while (yyj < yystackp->yytops.yysize)
4977 {
4978 if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
4979 {
4980 if (yyi == yyj)
4981 {
4982 YYDPRINTF ((stderr, "Removing dead stacks.\n"));
4983 }
4984 yystackp->yytops.yysize -= 1;
4985 }
4986 else
4987 {
4988 yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
4989 /* In the current implementation, it's unnecessary to copy
4990 yystackp->yytops.yylookaheadNeeds[yyi] since, after
4991 yyremoveDeletes returns, the parser immediately either enters
4992 deterministic operation or shifts a token. However, it doesn't
4993 hurt, and the code might evolve to need it. */
4994 yystackp->yytops.yylookaheadNeeds[yyj] =
4995 yystackp->yytops.yylookaheadNeeds[yyi];
4996 if (yyj != yyi)
4997 {
4998 YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n",
4999 (unsigned long int) yyi, (unsigned long int) yyj));
5000 }
5001 yyj += 1;
5002 }
5003 yyi += 1;
5004 }
5005 }
5006
5007 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
5008 * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
5009 * value *YYVALP and source location *YYLOCP. */
5010 static inline void
5011 yyglrShift (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
5012 size_t yyposn,
5013 YYSTYPE* yyvalp)
5014 {
5015 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
5016
5017 yynewState->yylrState = yylrState;
5018 yynewState->yyposn = yyposn;
5019 yynewState->yyresolved = yytrue;
5020 yynewState->yypred = yystackp->yytops.yystates[yyk];
5021 yynewState->yysemantics.yysval = *yyvalp;
5022 yystackp->yytops.yystates[yyk] = yynewState;
5023
5024 YY_RESERVE_GLRSTACK (yystackp);
5025 }
5026
5027 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
5028 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
5029 * semantic value of YYRHS under the action for YYRULE. */
5030 static inline void
5031 yyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
5032 size_t yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
5033 {
5034 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
5035 YYASSERT (yynewState->yyisState);
5036
5037 yynewState->yylrState = yylrState;
5038 yynewState->yyposn = yyposn;
5039 yynewState->yyresolved = yyfalse;
5040 yynewState->yypred = yystackp->yytops.yystates[yyk];
5041 yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
5042 yystackp->yytops.yystates[yyk] = yynewState;
5043
5044 /* Invokes YY_RESERVE_GLRSTACK. */
5045 yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
5046 }
5047
5048 #if !YYDEBUG
5049 # define YY_REDUCE_PRINT(Args)
5050 #else
5051 # define YY_REDUCE_PRINT(Args) \
5052 do { \
5053 if (yydebug) \
5054 yy_reduce_print Args; \
5055 } while (0)
5056
5057 /*----------------------------------------------------------------------.
5058 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
5059 `----------------------------------------------------------------------*/
5060
5061 static inline void
5062 yy_reduce_print (int yynormal, yyGLRStackItem* yyvsp, size_t yyk,
5063 yyRuleNum yyrule, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5064 {
5065 int yynrhs = yyrhsLength (yyrule);
5066 int yyi;
5067 YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n",
5068 (unsigned long int) yyk, yyrule - 1,
5069 (unsigned long int) yyrline[yyrule]);
5070 if (! yynormal)
5071 yyfillin (yyvsp, 1, -yynrhs);
5072 /* The symbols being reduced. */
5073 for (yyi = 0; yyi < yynrhs; yyi++)
5074 {
5075 YYFPRINTF (stderr, " $%d = ", yyi + 1);
5076 yy_symbol_print (stderr,
5077 yystos[yyvsp[yyi - yynrhs + 1].yystate.yylrState],
5078 &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yysval
5079 , P, tokens, index);
5080 if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
5081 YYFPRINTF (stderr, " (unresolved)");
5082 YYFPRINTF (stderr, "\n");
5083 }
5084 }
5085 #endif
5086
5087 /** Pop the symbols consumed by reduction #YYRULE from the top of stack
5088 * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
5089 * semantic values. Assumes that all ambiguities in semantic values
5090 * have been previously resolved. Set *YYVALP to the resulting value,
5091 * and *YYLOCP to the computed location (if any). Return value is as
5092 * for userAction. */
5093 static inline YYRESULTTAG
5094 yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
5095 YYSTYPE* yyvalp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5096 {
5097 int yynrhs = yyrhsLength (yyrule);
5098
5099 if (yystackp->yysplitPoint == YY_NULLPTR)
5100 {
5101 /* Standard special case: single stack. */
5102 yyGLRStackItem* yyrhs = (yyGLRStackItem*) yystackp->yytops.yystates[yyk];
5103 YYASSERT (yyk == 0);
5104 yystackp->yynextFree -= yynrhs;
5105 yystackp->yyspaceLeft += yynrhs;
5106 yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
5107 YY_REDUCE_PRINT ((1, yyrhs, yyk, yyrule, P, tokens, index));
5108 return yyuserAction (yyrule, yynrhs, yyrhs, yystackp,
5109 yyvalp, P, tokens, index);
5110 }
5111 else
5112 {
5113 int yyi;
5114 yyGLRState* yys;
5115 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
5116 yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
5117 = yystackp->yytops.yystates[yyk];
5118 for (yyi = 0; yyi < yynrhs; yyi += 1)
5119 {
5120 yys = yys->yypred;
5121 YYASSERT (yys);
5122 }
5123 yyupdateSplit (yystackp, yys);
5124 yystackp->yytops.yystates[yyk] = yys;
5125 YY_REDUCE_PRINT ((0, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, yyk, yyrule, P, tokens, index));
5126 return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
5127 yystackp, yyvalp, P, tokens, index);
5128 }
5129 }
5130
5131 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
5132 * and push back on the resulting nonterminal symbol. Perform the
5133 * semantic action associated with YYRULE and store its value with the
5134 * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
5135 * unambiguous. Otherwise, store the deferred semantic action with
5136 * the new state. If the new state would have an identical input
5137 * position, LR state, and predecessor to an existing state on the stack,
5138 * it is identified with that existing state, eliminating stack #YYK from
5139 * *YYSTACKP. In this case, the semantic value is
5140 * added to the options for the existing state's semantic value.
5141 */
5142 static inline YYRESULTTAG
5143 yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
5144 yybool yyforceEval, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5145 {
5146 size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn;
5147
5148 if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
5149 {
5150 YYSTYPE yysval;
5151
5152 YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yysval, P, tokens, index);
5153 if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
5154 {
5155 YYDPRINTF ((stderr, "Parse on stack %lu rejected by rule #%d.\n",
5156 (unsigned long int) yyk, yyrule - 1));
5157 }
5158 if (yyflag != yyok)
5159 return yyflag;
5160 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc);
5161 yyglrShift (yystackp, yyk,
5162 yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
5163 yylhsNonterm (yyrule)),
5164 yyposn, &yysval);
5165 }
5166 else
5167 {
5168 size_t yyi;
5169 int yyn;
5170 yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
5171 yyStateNum yynewLRState;
5172
5173 for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
5174 0 < yyn; yyn -= 1)
5175 {
5176 yys = yys->yypred;
5177 YYASSERT (yys);
5178 }
5179 yyupdateSplit (yystackp, yys);
5180 yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
5181 YYDPRINTF ((stderr,
5182 "Reduced stack %lu by rule #%d; action deferred. "
5183 "Now in state %d.\n",
5184 (unsigned long int) yyk, yyrule - 1, yynewLRState));
5185 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
5186 if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
5187 {
5188 yyGLRState *yysplit = yystackp->yysplitPoint;
5189 yyGLRState *yyp = yystackp->yytops.yystates[yyi];
5190 while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
5191 {
5192 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
5193 {
5194 yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
5195 yymarkStackDeleted (yystackp, yyk);
5196 YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n",
5197 (unsigned long int) yyk,
5198 (unsigned long int) yyi));
5199 return yyok;
5200 }
5201 yyp = yyp->yypred;
5202 }
5203 }
5204 yystackp->yytops.yystates[yyk] = yys;
5205 yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
5206 }
5207 return yyok;
5208 }
5209
5210 static size_t
5211 yysplitStack (yyGLRStack* yystackp, size_t yyk)
5212 {
5213 if (yystackp->yysplitPoint == YY_NULLPTR)
5214 {
5215 YYASSERT (yyk == 0);
5216 yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
5217 }
5218 if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity)
5219 {
5220 yyGLRState** yynewStates;
5221 yybool* yynewLookaheadNeeds;
5222
5223 yynewStates = YY_NULLPTR;
5224
5225 if (yystackp->yytops.yycapacity
5226 > (YYSIZEMAX / (2 * sizeof yynewStates[0])))
5227 yyMemoryExhausted (yystackp);
5228 yystackp->yytops.yycapacity *= 2;
5229
5230 yynewStates =
5231 (yyGLRState**) YYREALLOC (yystackp->yytops.yystates,
5232 (yystackp->yytops.yycapacity
5233 * sizeof yynewStates[0]));
5234 if (yynewStates == YY_NULLPTR)
5235 yyMemoryExhausted (yystackp);
5236 yystackp->yytops.yystates = yynewStates;
5237
5238 yynewLookaheadNeeds =
5239 (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds,
5240 (yystackp->yytops.yycapacity
5241 * sizeof yynewLookaheadNeeds[0]));
5242 if (yynewLookaheadNeeds == YY_NULLPTR)
5243 yyMemoryExhausted (yystackp);
5244 yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
5245 }
5246 yystackp->yytops.yystates[yystackp->yytops.yysize]
5247 = yystackp->yytops.yystates[yyk];
5248 yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
5249 = yystackp->yytops.yylookaheadNeeds[yyk];
5250 yystackp->yytops.yysize += 1;
5251 return yystackp->yytops.yysize-1;
5252 }
5253
5254 /** True iff YYY0 and YYY1 represent identical options at the top level.
5255 * That is, they represent the same rule applied to RHS symbols
5256 * that produce the same terminal symbols. */
5257 static yybool
5258 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
5259 {
5260 if (yyy0->yyrule == yyy1->yyrule)
5261 {
5262 yyGLRState *yys0, *yys1;
5263 int yyn;
5264 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
5265 yyn = yyrhsLength (yyy0->yyrule);
5266 yyn > 0;
5267 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
5268 if (yys0->yyposn != yys1->yyposn)
5269 return yyfalse;
5270 return yytrue;
5271 }
5272 else
5273 return yyfalse;
5274 }
5275
5276 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the
5277 * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
5278 static void
5279 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
5280 {
5281 yyGLRState *yys0, *yys1;
5282 int yyn;
5283 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
5284 yyn = yyrhsLength (yyy0->yyrule);
5285 yyn > 0;
5286 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
5287 {
5288 if (yys0 == yys1)
5289 break;
5290 else if (yys0->yyresolved)
5291 {
5292 yys1->yyresolved = yytrue;
5293 yys1->yysemantics.yysval = yys0->yysemantics.yysval;
5294 }
5295 else if (yys1->yyresolved)
5296 {
5297 yys0->yyresolved = yytrue;
5298 yys0->yysemantics.yysval = yys1->yysemantics.yysval;
5299 }
5300 else
5301 {
5302 yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
5303 yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
5304 while (yytrue)
5305 {
5306 if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
5307 break;
5308 else if (*yyz0p == YY_NULLPTR)
5309 {
5310 *yyz0p = yyz1;
5311 break;
5312 }
5313 else if (*yyz0p < yyz1)
5314 {
5315 yySemanticOption* yyz = *yyz0p;
5316 *yyz0p = yyz1;
5317 yyz1 = yyz1->yynext;
5318 (*yyz0p)->yynext = yyz;
5319 }
5320 yyz0p = &(*yyz0p)->yynext;
5321 }
5322 yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
5323 }
5324 }
5325 }
5326
5327 /** Y0 and Y1 represent two possible actions to take in a given
5328 * parsing state; return 0 if no combination is possible,
5329 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
5330 static int
5331 yypreference (yySemanticOption* y0, yySemanticOption* y1)
5332 {
5333 yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
5334 int p0 = yydprec[r0], p1 = yydprec[r1];
5335
5336 if (p0 == p1)
5337 {
5338 if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
5339 return 0;
5340 else
5341 return 1;
5342 }
5343 if (p0 == 0 || p1 == 0)
5344 return 0;
5345 if (p0 < p1)
5346 return 3;
5347 if (p1 < p0)
5348 return 2;
5349 return 0;
5350 }
5351
5352 static YYRESULTTAG yyresolveValue (yyGLRState* yys,
5353 yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index);
5354
5355
5356 /** Resolve the previous YYN states starting at and including state YYS
5357 * on *YYSTACKP. If result != yyok, some states may have been left
5358 * unresolved possibly with empty semantic option chains. Regardless
5359 * of whether result = yyok, each state has been left with consistent
5360 * data so that yydestroyGLRState can be invoked if necessary. */
5361 static YYRESULTTAG
5362 yyresolveStates (yyGLRState* yys, int yyn,
5363 yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5364 {
5365 if (0 < yyn)
5366 {
5367 YYASSERT (yys->yypred);
5368 YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, P, tokens, index));
5369 if (! yys->yyresolved)
5370 YYCHK (yyresolveValue (yys, yystackp, P, tokens, index));
5371 }
5372 return yyok;
5373 }
5374
5375 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
5376 * user action, and return the semantic value and location in *YYVALP
5377 * and *YYLOCP. Regardless of whether result = yyok, all RHS states
5378 * have been destroyed (assuming the user action destroys all RHS
5379 * semantic values if invoked). */
5380 static YYRESULTTAG
5381 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
5382 YYSTYPE* yyvalp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5383 {
5384 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
5385 int yynrhs = yyrhsLength (yyopt->yyrule);
5386 YYRESULTTAG yyflag =
5387 yyresolveStates (yyopt->yystate, yynrhs, yystackp, P, tokens, index);
5388 if (yyflag != yyok)
5389 {
5390 yyGLRState *yys;
5391 for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
5392 yydestroyGLRState ("Cleanup: popping", yys, P, tokens, index);
5393 return yyflag;
5394 }
5395
5396 yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
5397 {
5398 int yychar_current = yychar;
5399 YYSTYPE yylval_current = yylval;
5400 yychar = yyopt->yyrawchar;
5401 yylval = yyopt->yyval;
5402 yyflag = yyuserAction (yyopt->yyrule, yynrhs,
5403 yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
5404 yystackp, yyvalp, P, tokens, index);
5405 yychar = yychar_current;
5406 yylval = yylval_current;
5407 }
5408 return yyflag;
5409 }
5410
5411 #if YYDEBUG
5412 static void
5413 yyreportTree (yySemanticOption* yyx, int yyindent)
5414 {
5415 int yynrhs = yyrhsLength (yyx->yyrule);
5416 int yyi;
5417 yyGLRState* yys;
5418 yyGLRState* yystates[1 + YYMAXRHS];
5419 yyGLRState yyleftmost_state;
5420
5421 for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
5422 yystates[yyi] = yys;
5423 if (yys == YY_NULLPTR)
5424 {
5425 yyleftmost_state.yyposn = 0;
5426 yystates[0] = &yyleftmost_state;
5427 }
5428 else
5429 yystates[0] = yys;
5430
5431 if (yyx->yystate->yyposn < yys->yyposn + 1)
5432 YYFPRINTF (stderr, "%*s%s -> <Rule %d, empty>\n",
5433 yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
5434 yyx->yyrule - 1);
5435 else
5436 YYFPRINTF (stderr, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
5437 yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
5438 yyx->yyrule - 1, (unsigned long int) (yys->yyposn + 1),
5439 (unsigned long int) yyx->yystate->yyposn);
5440 for (yyi = 1; yyi <= yynrhs; yyi += 1)
5441 {
5442 if (yystates[yyi]->yyresolved)
5443 {
5444 if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
5445 YYFPRINTF (stderr, "%*s%s <empty>\n", yyindent+2, "",
5446 yytokenName (yystos[yystates[yyi]->yylrState]));
5447 else
5448 YYFPRINTF (stderr, "%*s%s <tokens %lu .. %lu>\n", yyindent+2, "",
5449 yytokenName (yystos[yystates[yyi]->yylrState]),
5450 (unsigned long int) (yystates[yyi-1]->yyposn + 1),
5451 (unsigned long int) yystates[yyi]->yyposn);
5452 }
5453 else
5454 yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
5455 }
5456 }
5457 #endif
5458
5459 static YYRESULTTAG
5460 yyreportAmbiguity (yySemanticOption* yyx0,
5461 yySemanticOption* yyx1, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5462 {
5463 YYUSE (yyx0);
5464 YYUSE (yyx1);
5465
5466 #if YYDEBUG
5467 YYFPRINTF (stderr, "Ambiguity detected.\n");
5468 YYFPRINTF (stderr, "Option 1,\n");
5469 yyreportTree (yyx0, 2);
5470 YYFPRINTF (stderr, "\nOption 2,\n");
5471 yyreportTree (yyx1, 2);
5472 YYFPRINTF (stderr, "\n");
5473 #endif
5474
5475 yyerror (P, tokens, index, YY_("syntax is ambiguous"));
5476 return yyabort;
5477 }
5478
5479 /** Resolve the ambiguity represented in state YYS in *YYSTACKP,
5480 * perform the indicated actions, and set the semantic value of YYS.
5481 * If result != yyok, the chain of semantic options in YYS has been
5482 * cleared instead or it has been left unmodified except that
5483 * redundant options may have been removed. Regardless of whether
5484 * result = yyok, YYS has been left with consistent data so that
5485 * yydestroyGLRState can be invoked if necessary. */
5486 static YYRESULTTAG
5487 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5488 {
5489 yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
5490 yySemanticOption* yybest = yyoptionList;
5491 yySemanticOption** yypp;
5492 yybool yymerge = yyfalse;
5493 YYSTYPE yysval;
5494 YYRESULTTAG yyflag;
5495
5496 for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
5497 {
5498 yySemanticOption* yyp = *yypp;
5499
5500 if (yyidenticalOptions (yybest, yyp))
5501 {
5502 yymergeOptionSets (yybest, yyp);
5503 *yypp = yyp->yynext;
5504 }
5505 else
5506 {
5507 switch (yypreference (yybest, yyp))
5508 {
5509 case 0:
5510 return yyreportAmbiguity (yybest, yyp, P, tokens, index);
5511 break;
5512 case 1:
5513 yymerge = yytrue;
5514 break;
5515 case 2:
5516 break;
5517 case 3:
5518 yybest = yyp;
5519 yymerge = yyfalse;
5520 break;
5521 default:
5522 /* This cannot happen so it is not worth a YYASSERT (yyfalse),
5523 but some compilers complain if the default case is
5524 omitted. */
5525 break;
5526 }
5527 yypp = &yyp->yynext;
5528 }
5529 }
5530
5531 if (yymerge)
5532 {
5533 yySemanticOption* yyp;
5534 int yyprec = yydprec[yybest->yyrule];
5535 yyflag = yyresolveAction (yybest, yystackp, &yysval, P, tokens, index);
5536 if (yyflag == yyok)
5537 for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
5538 {
5539 if (yyprec == yydprec[yyp->yyrule])
5540 {
5541 YYSTYPE yysval_other;
5542 yyflag = yyresolveAction (yyp, yystackp, &yysval_other, P, tokens, index);
5543 if (yyflag != yyok)
5544 {
5545 yydestruct ("Cleanup: discarding incompletely merged value for",
5546 yystos[yys->yylrState],
5547 &yysval, P, tokens, index);
5548 break;
5549 }
5550 yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other);
5551 }
5552 }
5553 }
5554 else
5555 yyflag = yyresolveAction (yybest, yystackp, &yysval, P, tokens, index);
5556
5557 if (yyflag == yyok)
5558 {
5559 yys->yyresolved = yytrue;
5560 yys->yysemantics.yysval = yysval;
5561 }
5562 else
5563 yys->yysemantics.yyfirstVal = YY_NULLPTR;
5564 return yyflag;
5565 }
5566
5567 static YYRESULTTAG
5568 yyresolveStack (yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5569 {
5570 if (yystackp->yysplitPoint != YY_NULLPTR)
5571 {
5572 yyGLRState* yys;
5573 int yyn;
5574
5575 for (yyn = 0, yys = yystackp->yytops.yystates[0];
5576 yys != yystackp->yysplitPoint;
5577 yys = yys->yypred, yyn += 1)
5578 continue;
5579 YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
5580 , P, tokens, index));
5581 }
5582 return yyok;
5583 }
5584
5585 static void
5586 yycompressStack (yyGLRStack* yystackp)
5587 {
5588 yyGLRState* yyp, *yyq, *yyr;
5589
5590 if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
5591 return;
5592
5593 for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
5594 yyp != yystackp->yysplitPoint;
5595 yyr = yyp, yyp = yyq, yyq = yyp->yypred)
5596 yyp->yypred = yyr;
5597
5598 yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
5599 yystackp->yynextFree = ((yyGLRStackItem*) yystackp->yysplitPoint) + 1;
5600 yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
5601 yystackp->yysplitPoint = YY_NULLPTR;
5602 yystackp->yylastDeleted = YY_NULLPTR;
5603
5604 while (yyr != YY_NULLPTR)
5605 {
5606 yystackp->yynextFree->yystate = *yyr;
5607 yyr = yyr->yypred;
5608 yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
5609 yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
5610 yystackp->yynextFree += 1;
5611 yystackp->yyspaceLeft -= 1;
5612 }
5613 }
5614
5615 static YYRESULTTAG
5616 yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
5617 size_t yyposn, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5618 {
5619 while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
5620 {
5621 yyStateNum yystate = yystackp->yytops.yystates[yyk]->yylrState;
5622 YYDPRINTF ((stderr, "Stack %lu Entering state %d\n",
5623 (unsigned long int) yyk, yystate));
5624
5625 YYASSERT (yystate != YYFINAL);
5626
5627 if (yyisDefaultedState (yystate))
5628 {
5629 YYRESULTTAG yyflag;
5630 yyRuleNum yyrule = yydefaultAction (yystate);
5631 if (yyrule == 0)
5632 {
5633 YYDPRINTF ((stderr, "Stack %lu dies.\n",
5634 (unsigned long int) yyk));
5635 yymarkStackDeleted (yystackp, yyk);
5636 return yyok;
5637 }
5638 yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], P, tokens, index);
5639 if (yyflag == yyerr)
5640 {
5641 YYDPRINTF ((stderr,
5642 "Stack %lu dies "
5643 "(predicate failure or explicit user error).\n",
5644 (unsigned long int) yyk));
5645 yymarkStackDeleted (yystackp, yyk);
5646 return yyok;
5647 }
5648 if (yyflag != yyok)
5649 return yyflag;
5650 }
5651 else
5652 {
5653 yySymbol yytoken;
5654 int yyaction;
5655 const short int* yyconflicts;
5656
5657 yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
5658 if (yychar == YYEMPTY)
5659 {
5660 YYDPRINTF ((stderr, "Reading a token: "));
5661 yychar = yylex (&yylval, P, tokens, index);
5662 }
5663
5664 if (yychar <= YYEOF)
5665 {
5666 yychar = yytoken = YYEOF;
5667 YYDPRINTF ((stderr, "Now at end of input.\n"));
5668 }
5669 else
5670 {
5671 yytoken = YYTRANSLATE (yychar);
5672 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
5673 }
5674
5675 yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts);
5676
5677 while (*yyconflicts != 0)
5678 {
5679 YYRESULTTAG yyflag;
5680 size_t yynewStack = yysplitStack (yystackp, yyk);
5681 YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n",
5682 (unsigned long int) yynewStack,
5683 (unsigned long int) yyk));
5684 yyflag = yyglrReduce (yystackp, yynewStack,
5685 *yyconflicts,
5686 yyimmediate[*yyconflicts], P, tokens, index);
5687 if (yyflag == yyok)
5688 YYCHK (yyprocessOneStack (yystackp, yynewStack,
5689 yyposn, P, tokens, index));
5690 else if (yyflag == yyerr)
5691 {
5692 YYDPRINTF ((stderr, "Stack %lu dies.\n",
5693 (unsigned long int) yynewStack));
5694 yymarkStackDeleted (yystackp, yynewStack);
5695 }
5696 else
5697 return yyflag;
5698 yyconflicts += 1;
5699 }
5700
5701 if (yyisShiftAction (yyaction))
5702 break;
5703 else if (yyisErrorAction (yyaction))
5704 {
5705 YYDPRINTF ((stderr, "Stack %lu dies.\n",
5706 (unsigned long int) yyk));
5707 yymarkStackDeleted (yystackp, yyk);
5708 break;
5709 }
5710 else
5711 {
5712 YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
5713 yyimmediate[-yyaction], P, tokens, index);
5714 if (yyflag == yyerr)
5715 {
5716 YYDPRINTF ((stderr,
5717 "Stack %lu dies "
5718 "(predicate failure or explicit user error).\n",
5719 (unsigned long int) yyk));
5720 yymarkStackDeleted (yystackp, yyk);
5721 break;
5722 }
5723 else if (yyflag != yyok)
5724 return yyflag;
5725 }
5726 }
5727 }
5728 return yyok;
5729 }
5730
5731 static void
5732 yyreportSyntaxError (yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5733 {
5734 if (yystackp->yyerrState != 0)
5735 return;
5736 #if ! YYERROR_VERBOSE
5737 yyerror (P, tokens, index, YY_("syntax error"));
5738 #else
5739 {
5740 yySymbol yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
5741 size_t yysize0 = yytnamerr (YY_NULLPTR, yytokenName (yytoken));
5742 size_t yysize = yysize0;
5743 yybool yysize_overflow = yyfalse;
5744 char* yymsg = YY_NULLPTR;
5745 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
5746 /* Internationalized format string. */
5747 const char *yyformat = YY_NULLPTR;
5748 /* Arguments of yyformat. */
5749 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
5750 /* Number of reported tokens (one for the "unexpected", one per
5751 "expected"). */
5752 int yycount = 0;
5753
5754 /* There are many possibilities here to consider:
5755 - If this state is a consistent state with a default action, then
5756 the only way this function was invoked is if the default action
5757 is an error action. In that case, don't check for expected
5758 tokens because there are none.
5759 - The only way there can be no lookahead present (in yychar) is if
5760 this state is a consistent state with a default action. Thus,
5761 detecting the absence of a lookahead is sufficient to determine
5762 that there is no unexpected or expected token to report. In that
5763 case, just report a simple "syntax error".
5764 - Don't assume there isn't a lookahead just because this state is a
5765 consistent state with a default action. There might have been a
5766 previous inconsistent state, consistent state with a non-default
5767 action, or user semantic action that manipulated yychar.
5768 - Of course, the expected token list depends on states to have
5769 correct lookahead information, and it depends on the parser not
5770 to perform extra reductions after fetching a lookahead from the
5771 scanner and before detecting a syntax error. Thus, state merging
5772 (from LALR or IELR) and default reductions corrupt the expected
5773 token list. However, the list is correct for canonical LR with
5774 one exception: it will still contain any token that will not be
5775 accepted due to an error action in a later state.
5776 */
5777 if (yytoken != YYEMPTY)
5778 {
5779 int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
5780 yyarg[yycount++] = yytokenName (yytoken);
5781 if (!yypact_value_is_default (yyn))
5782 {
5783 /* Start YYX at -YYN if negative to avoid negative indexes in
5784 YYCHECK. In other words, skip the first -YYN actions for this
5785 state because they are default actions. */
5786 int yyxbegin = yyn < 0 ? -yyn : 0;
5787 /* Stay within bounds of both yycheck and yytname. */
5788 int yychecklim = YYLAST - yyn + 1;
5789 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
5790 int yyx;
5791 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
5792 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
5793 && !yytable_value_is_error (yytable[yyx + yyn]))
5794 {
5795 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
5796 {
5797 yycount = 1;
5798 yysize = yysize0;
5799 break;
5800 }
5801 yyarg[yycount++] = yytokenName (yyx);
5802 {
5803 size_t yysz = yysize + yytnamerr (YY_NULLPTR, yytokenName (yyx));
5804 yysize_overflow |= yysz < yysize;
5805 yysize = yysz;
5806 }
5807 }
5808 }
5809 }
5810
5811 switch (yycount)
5812 {
5813 #define YYCASE_(N, S) \
5814 case N: \
5815 yyformat = S; \
5816 break
5817 YYCASE_(0, YY_("syntax error"));
5818 YYCASE_(1, YY_("syntax error, unexpected %s"));
5819 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
5820 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
5821 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
5822 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
5823 #undef YYCASE_
5824 }
5825
5826 {
5827 size_t yysz = yysize + strlen (yyformat);
5828 yysize_overflow |= yysz < yysize;
5829 yysize = yysz;
5830 }
5831
5832 if (!yysize_overflow)
5833 yymsg = (char *) YYMALLOC (yysize);
5834
5835 if (yymsg)
5836 {
5837 char *yyp = yymsg;
5838 int yyi = 0;
5839 while ((*yyp = *yyformat))
5840 {
5841 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
5842 {
5843 yyp += yytnamerr (yyp, yyarg[yyi++]);
5844 yyformat += 2;
5845 }
5846 else
5847 {
5848 yyp++;
5849 yyformat++;
5850 }
5851 }
5852 yyerror (P, tokens, index, yymsg);
5853 YYFREE (yymsg);
5854 }
5855 else
5856 {
5857 yyerror (P, tokens, index, YY_("syntax error"));
5858 yyMemoryExhausted (yystackp);
5859 }
5860 }
5861 #endif /* YYERROR_VERBOSE */
5862 yynerrs += 1;
5863 }
5864
5865 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
5866 yylval, and yylloc are the syntactic category, semantic value, and location
5867 of the lookahead. */
5868 static void
5869 yyrecoverSyntaxError (yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5870 {
5871 size_t yyk;
5872 int yyj;
5873
5874 if (yystackp->yyerrState == 3)
5875 /* We just shifted the error token and (perhaps) took some
5876 reductions. Skip tokens until we can proceed. */
5877 while (yytrue)
5878 {
5879 yySymbol yytoken;
5880 if (yychar == YYEOF)
5881 yyFail (yystackp, P, tokens, index, YY_NULLPTR);
5882 if (yychar != YYEMPTY)
5883 {
5884 yytoken = YYTRANSLATE (yychar);
5885 yydestruct ("Error: discarding",
5886 yytoken, &yylval, P, tokens, index);
5887 }
5888 YYDPRINTF ((stderr, "Reading a token: "));
5889 yychar = yylex (&yylval, P, tokens, index);
5890 if (yychar <= YYEOF)
5891 {
5892 yychar = yytoken = YYEOF;
5893 YYDPRINTF ((stderr, "Now at end of input.\n"));
5894 }
5895 else
5896 {
5897 yytoken = YYTRANSLATE (yychar);
5898 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
5899 }
5900 yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
5901 if (yypact_value_is_default (yyj))
5902 return;
5903 yyj += yytoken;
5904 if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
5905 {
5906 if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
5907 return;
5908 }
5909 else if (! yytable_value_is_error (yytable[yyj]))
5910 return;
5911 }
5912
5913 /* Reduce to one stack. */
5914 for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
5915 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
5916 break;
5917 if (yyk >= yystackp->yytops.yysize)
5918 yyFail (yystackp, P, tokens, index, YY_NULLPTR);
5919 for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
5920 yymarkStackDeleted (yystackp, yyk);
5921 yyremoveDeletes (yystackp);
5922 yycompressStack (yystackp);
5923
5924 /* Now pop stack until we find a state that shifts the error token. */
5925 yystackp->yyerrState = 3;
5926 while (yystackp->yytops.yystates[0] != YY_NULLPTR)
5927 {
5928 yyGLRState *yys = yystackp->yytops.yystates[0];
5929 yyj = yypact[yys->yylrState];
5930 if (! yypact_value_is_default (yyj))
5931 {
5932 yyj += YYTERROR;
5933 if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR
5934 && yyisShiftAction (yytable[yyj]))
5935 {
5936 /* Shift the error token. */
5937 YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]],
5938 &yylval, &yyerrloc);
5939 yyglrShift (yystackp, 0, yytable[yyj],
5940 yys->yyposn, &yylval);
5941 yys = yystackp->yytops.yystates[0];
5942 break;
5943 }
5944 }
5945 if (yys->yypred != YY_NULLPTR)
5946 yydestroyGLRState ("Error: popping", yys, P, tokens, index);
5947 yystackp->yytops.yystates[0] = yys->yypred;
5948 yystackp->yynextFree -= 1;
5949 yystackp->yyspaceLeft += 1;
5950 }
5951 if (yystackp->yytops.yystates[0] == YY_NULLPTR)
5952 yyFail (yystackp, P, tokens, index, YY_NULLPTR);
5953 }
5954
5955 #define YYCHK1(YYE) \
5956 do { \
5957 switch (YYE) { \
5958 case yyok: \
5959 break; \
5960 case yyabort: \
5961 goto yyabortlab; \
5962 case yyaccept: \
5963 goto yyacceptlab; \
5964 case yyerr: \
5965 goto yyuser_error; \
5966 default: \
5967 goto yybuglab; \
5968 } \
5969 } while (0)
5970
5971 /*----------.
5972 | yyparse. |
5973 `----------*/
5974
5975 int
5976 yyparse (struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5977 {
5978 int yyresult;
5979 yyGLRStack yystack;
5980 yyGLRStack* const yystackp = &yystack;
5981 size_t yyposn;
5982
5983 YYDPRINTF ((stderr, "Starting parse\n"));
5984
5985 yychar = YYEMPTY;
5986 yylval = yyval_default;
5987
5988 /* User initialization code. */
5989 #line 117 "src/parser_proc_grammar.y" /* glr.c:2270 */
5990 {
5991 }
5992
5993 #line 5994 "src/parser_proc.c" /* glr.c:2270 */
5994
5995 if (! yyinitGLRStack (yystackp, YYINITDEPTH))
5996 goto yyexhaustedlab;
5997 switch (YYSETJMP (yystack.yyexception_buffer))
5998 {
5999 case 0: break;
6000 case 1: goto yyabortlab;
6001 case 2: goto yyexhaustedlab;
6002 default: goto yybuglab;
6003 }
6004 yyglrShift (&yystack, 0, 0, 0, &yylval);
6005 yyposn = 0;
6006
6007 while (yytrue)
6008 {
6009 /* For efficiency, we have two loops, the first of which is
6010 specialized to deterministic operation (single stack, no
6011 potential ambiguity). */
6012 /* Standard mode */
6013 while (yytrue)
6014 {
6015 yyRuleNum yyrule;
6016 int yyaction;
6017 const short int* yyconflicts;
6018
6019 yyStateNum yystate = yystack.yytops.yystates[0]->yylrState;
6020 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
6021 if (yystate == YYFINAL)
6022 goto yyacceptlab;
6023 if (yyisDefaultedState (yystate))
6024 {
6025 yyrule = yydefaultAction (yystate);
6026 if (yyrule == 0)
6027 {
6028
6029 yyreportSyntaxError (&yystack, P, tokens, index);
6030 goto yyuser_error;
6031 }
6032 YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, P, tokens, index));
6033 }
6034 else
6035 {
6036 yySymbol yytoken;
6037 if (yychar == YYEMPTY)
6038 {
6039 YYDPRINTF ((stderr, "Reading a token: "));
6040 yychar = yylex (&yylval, P, tokens, index);
6041 }
6042
6043 if (yychar <= YYEOF)
6044 {
6045 yychar = yytoken = YYEOF;
6046 YYDPRINTF ((stderr, "Now at end of input.\n"));
6047 }
6048 else
6049 {
6050 yytoken = YYTRANSLATE (yychar);
6051 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
6052 }
6053
6054 yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts);
6055 if (*yyconflicts != 0)
6056 break;
6057 if (yyisShiftAction (yyaction))
6058 {
6059 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
6060 yychar = YYEMPTY;
6061 yyposn += 1;
6062 yyglrShift (&yystack, 0, yyaction, yyposn, &yylval);
6063 if (0 < yystack.yyerrState)
6064 yystack.yyerrState -= 1;
6065 }
6066 else if (yyisErrorAction (yyaction))
6067 {
6068
6069 yyreportSyntaxError (&yystack, P, tokens, index);
6070 goto yyuser_error;
6071 }
6072 else
6073 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, P, tokens, index));
6074 }
6075 }
6076
6077 while (yytrue)
6078 {
6079 yySymbol yytoken_to_shift;
6080 size_t yys;
6081
6082 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
6083 yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY;
6084
6085 /* yyprocessOneStack returns one of three things:
6086
6087 - An error flag. If the caller is yyprocessOneStack, it
6088 immediately returns as well. When the caller is finally
6089 yyparse, it jumps to an error label via YYCHK1.
6090
6091 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
6092 (&yystack, yys), which sets the top state of yys to NULL. Thus,
6093 yyparse's following invocation of yyremoveDeletes will remove
6094 the stack.
6095
6096 - yyok, when ready to shift a token.
6097
6098 Except in the first case, yyparse will invoke yyremoveDeletes and
6099 then shift the next token onto all remaining stacks. This
6100 synchronization of the shift (that is, after all preceding
6101 reductions on all stacks) helps prevent double destructor calls
6102 on yylval in the event of memory exhaustion. */
6103
6104 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
6105 YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, P, tokens, index));
6106 yyremoveDeletes (&yystack);
6107 if (yystack.yytops.yysize == 0)
6108 {
6109 yyundeleteLastStack (&yystack);
6110 if (yystack.yytops.yysize == 0)
6111 yyFail (&yystack, P, tokens, index, YY_("syntax error"));
6112 YYCHK1 (yyresolveStack (&yystack, P, tokens, index));
6113 YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
6114
6115 yyreportSyntaxError (&yystack, P, tokens, index);
6116 goto yyuser_error;
6117 }
6118
6119 /* If any yyglrShift call fails, it will fail after shifting. Thus,
6120 a copy of yylval will already be on stack 0 in the event of a
6121 failure in the following loop. Thus, yychar is set to YYEMPTY
6122 before the loop to make sure the user destructor for yylval isn't
6123 called twice. */
6124 yytoken_to_shift = YYTRANSLATE (yychar);
6125 yychar = YYEMPTY;
6126 yyposn += 1;
6127 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
6128 {
6129 int yyaction;
6130 const short int* yyconflicts;
6131 yyStateNum yystate = yystack.yytops.yystates[yys]->yylrState;
6132 yygetLRActions (yystate, yytoken_to_shift, &yyaction,
6133 &yyconflicts);
6134 /* Note that yyconflicts were handled by yyprocessOneStack. */
6135 YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yys));
6136 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
6137 yyglrShift (&yystack, yys, yyaction, yyposn,
6138 &yylval);
6139 YYDPRINTF ((stderr, "Stack %lu now in state #%d\n",
6140 (unsigned long int) yys,
6141 yystack.yytops.yystates[yys]->yylrState));
6142 }
6143
6144 if (yystack.yytops.yysize == 1)
6145 {
6146 YYCHK1 (yyresolveStack (&yystack, P, tokens, index));
6147 YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
6148 yycompressStack (&yystack);
6149 break;
6150 }
6151 }
6152 continue;
6153 yyuser_error:
6154 yyrecoverSyntaxError (&yystack, P, tokens, index);
6155 yyposn = yystack.yytops.yystates[0]->yyposn;
6156 }
6157
6158 yyacceptlab:
6159 yyresult = 0;
6160 goto yyreturn;
6161
6162 yybuglab:
6163 YYASSERT (yyfalse);
6164 goto yyabortlab;
6165
6166 yyabortlab:
6167 yyresult = 1;
6168 goto yyreturn;
6169
6170 yyexhaustedlab:
6171 yyerror (P, tokens, index, YY_("memory exhausted"));
6172 yyresult = 2;
6173 goto yyreturn;
6174
6175 yyreturn:
6176 if (yychar != YYEMPTY)
6177 yydestruct ("Cleanup: discarding lookahead",
6178 YYTRANSLATE (yychar), &yylval, P, tokens, index);
6179
6180 /* If the stack is well-formed, pop the stack until it is empty,
6181 destroying its entries as we go. But free the stack regardless
6182 of whether it is well-formed. */
6183 if (yystack.yyitems)
6184 {
6185 yyGLRState** yystates = yystack.yytops.yystates;
6186 if (yystates)
6187 {
6188 size_t yysize = yystack.yytops.yysize;
6189 size_t yyk;
6190 for (yyk = 0; yyk < yysize; yyk += 1)
6191 if (yystates[yyk])
6192 {
6193 while (yystates[yyk])
6194 {
6195 yyGLRState *yys = yystates[yyk];
6196 if (yys->yypred != YY_NULLPTR)
6197 yydestroyGLRState ("Cleanup: popping", yys, P, tokens, index);
6198 yystates[yyk] = yys->yypred;
6199 yystack.yynextFree -= 1;
6200 yystack.yyspaceLeft += 1;
6201 }
6202 break;
6203 }
6204 }
6205 yyfreeGLRStack (&yystack);
6206 }
6207
6208 return yyresult;
6209 }
6210
6211 /* DEBUGGING ONLY */
6212 #if YYDEBUG
6213 static void
6214 yy_yypstack (yyGLRState* yys)
6215 {
6216 if (yys->yypred)
6217 {
6218 yy_yypstack (yys->yypred);
6219 YYFPRINTF (stderr, " -> ");
6220 }
6221 YYFPRINTF (stderr, "%d@%lu", yys->yylrState,
6222 (unsigned long int) yys->yyposn);
6223 }
6224
6225 static void
6226 yypstates (yyGLRState* yyst)
6227 {
6228 if (yyst == YY_NULLPTR)
6229 YYFPRINTF (stderr, "<null>");
6230 else
6231 yy_yypstack (yyst);
6232 YYFPRINTF (stderr, "\n");
6233 }
6234
6235 static void
6236 yypstack (yyGLRStack* yystackp, size_t yyk)
6237 {
6238 yypstates (yystackp->yytops.yystates[yyk]);
6239 }
6240
6241 #define YYINDEX(YYX) \
6242 ((YYX) == YY_NULLPTR ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems)
6243
6244
6245 static void
6246 yypdumpstack (yyGLRStack* yystackp)
6247 {
6248 yyGLRStackItem* yyp;
6249 size_t yyi;
6250 for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
6251 {
6252 YYFPRINTF (stderr, "%3lu. ",
6253 (unsigned long int) (yyp - yystackp->yyitems));
6254 if (*(yybool *) yyp)
6255 {
6256 YYASSERT (yyp->yystate.yyisState);
6257 YYASSERT (yyp->yyoption.yyisState);
6258 YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
6259 yyp->yystate.yyresolved, yyp->yystate.yylrState,
6260 (unsigned long int) yyp->yystate.yyposn,
6261 (long int) YYINDEX (yyp->yystate.yypred));
6262 if (! yyp->yystate.yyresolved)
6263 YYFPRINTF (stderr, ", firstVal: %ld",
6264 (long int) YYINDEX (yyp->yystate
6265 .yysemantics.yyfirstVal));
6266 }
6267 else
6268 {
6269 YYASSERT (!yyp->yystate.yyisState);
6270 YYASSERT (!yyp->yyoption.yyisState);
6271 YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld",
6272 yyp->yyoption.yyrule - 1,
6273 (long int) YYINDEX (yyp->yyoption.yystate),
6274 (long int) YYINDEX (yyp->yyoption.yynext));
6275 }
6276 YYFPRINTF (stderr, "\n");
6277 }
6278 YYFPRINTF (stderr, "Tops:");
6279 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
6280 YYFPRINTF (stderr, "%lu: %ld; ", (unsigned long int) yyi,
6281 (long int) YYINDEX (yystackp->yytops.yystates[yyi]));
6282 YYFPRINTF (stderr, "\n");
6283 }
6284 #endif
6285
6286 #undef yylval
6287 #undef yychar
6288 #undef yynerrs
6289
6290 /* Substitute the variable and function names. */
6291 #define yyparse psi_parser_proc_parse
6292 #define yylex psi_parser_proc_lex
6293 #define yyerror psi_parser_proc_error
6294 #define yylval psi_parser_proc_lval
6295 #define yychar psi_parser_proc_char
6296 #define yydebug psi_parser_proc_debug
6297 #define yynerrs psi_parser_proc_nerrs
6298
6299 #line 1673 "src/parser_proc_grammar.y" /* glr.c:2584 */
6300
6301
6302 /* epilogue */
6303
6304 static int psi_parser_proc_lex(YYSTYPE *lvalp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
6305 {
6306 struct psi_token *token;
6307
6308 if (psi_plist_get(tokens, (*index)++, &token)) {
6309 if (P->flags & PSI_DEBUG) {
6310 psi_token_dump(2, token);
6311 }
6312
6313 *((struct psi_token **)lvalp) = token;
6314 return token->type;
6315 } else {
6316 (*index)--;
6317 PSI_DEBUG_PRINT(P, "EOF(%d)\n", PSI_T_EOF);
6318 }
6319
6320 return PSI_T_EOF;
6321 }
6322
6323 static void psi_parser_proc_error(struct psi_parser *P, struct psi_plist *tokens, size_t *index, const char *msg)
6324 {
6325 struct psi_token *T = NULL;
6326 size_t last;
6327
6328 if (*index == 0) {
6329 last = 0;
6330 } else {
6331 last = --(*index);
6332 }
6333
6334 psi_plist_get(tokens, last, &T);
6335 if (T) {
6336 P->error(PSI_DATA(P), T, PSI_WARNING, "PSI %s at col %u", msg, T->col);
6337 } else {
6338 P->error(PSI_DATA(P), NULL, PSI_WARNING, "PSI %s", msg);
6339 }
6340 P->errors++;
6341 }
6342