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