split decl to allow functors as arg
[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 3049
291
292 /* YYNTOKENS -- Number of terminals. */
293 #define YYNTOKENS 132
294 /* YYNNTS -- Number of nonterminals. */
295 #define YYNNTS 120
296 /* YYNRULES -- Number of rules. */
297 #define YYNRULES 467
298 /* YYNRULES -- Number of states. */
299 #define YYNSTATES 678
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, 986, 993, 994, 998, 1005, 1016, 1023, 1034,
393 1041, 1052, 1063, 1077, 1078, 1090, 1093, 1096, 1099, 1105,
394 1113, 1116, 1126, 1139, 1144, 1152, 1162, 1172, 1175, 1179,
395 1185, 1188, 1194, 1202, 1209, 1212, 1218, 1223, 1231, 1235,
396 1239, 1243, 1247, 1251, 1258, 1262, 1266, 1270, 1277, 1290,
397 1303, 1316, 1319, 1326, 1329, 1335, 1339, 1346, 1349, 1355,
398 1358, 1364, 1365, 1371, 1374, 1386, 1389, 1396, 1401, 1406,
399 1416, 1419, 1425, 1428, 1434, 1441, 1448, 1449, 1450, 1451,
400 1452, 1453, 1454, 1455, 1456, 1460, 1463, 1469, 1472, 1475,
401 1478, 1481, 1487, 1491, 1499, 1500, 1504, 1511, 1514, 1517,
402 1520, 1523, 1529, 1533, 1541, 1548, 1556, 1564, 1565, 1566,
403 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1577, 1580, 1586,
404 1589, 1595, 1596, 1600, 1603, 1609, 1612, 1618, 1625, 1632,
405 1635, 1638, 1645, 1650, 1658, 1659, 1660, 1661, 1662, 1663,
406 1664, 1665, 1669, 1672, 1678, 1681, 1687, 1694, 1695, 1699,
407 1706, 1709, 1715, 1723, 1726, 1732, 1735, 1741
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",
451 "decl_body", "decl_func_body", "decl_functor_body", "decl_functor",
452 "decl_func", "decl_args", "decl_arg", "decl_var", "decl_union",
453 "decl_struct", "decl_struct_args", "struct_args_block", "struct_args",
454 "struct_arg", "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", "decl_vars",
465 "reference", "byref", YY_NULLPTR
466 };
467 #endif
468
469 #define YYPACT_NINF -534
470 #define YYTABLE_NINF -466
471
472 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
473 STATE-NUM. */
474 static const short int yypact[] =
475 {
476 917, -534, -534, -534, -534, -534, 65, -534, -534, 2052,
477 -534, -534, -534, -534, -534, -534, -534, -534, 2579, -534,
478 -534, 243, 2606, 2435, 2435, 2435, 1670, 17, -63, 14,
479 -534, 2656, 46, 917, -534, -534, -534, -534, -534, 2101,
480 -534, -534, -534, -534, -534, 52, 112, -534, -534, -534,
481 33, -51, -534, -534, 28, 64, 69, -534, -534, -534,
482 -534, 83, -534, 87, -534, -534, -534, -534, -534, 627,
483 -534, 31, -534, -534, -534, -534, -534, -534, -534, -534,
484 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
485 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
486 -534, 2219, -31, -534, -534, -534, 2435, 2435, 2435, 2760,
487 -534, 90, -534, -534, -534, -534, -534, -534, -534, -534,
488 -534, -534, -534, -534, 876, -534, -534, -534, -534, 118,
489 757, 757, -11, -534, 876, 1934, 2435, 2435, 120, 1698,
490 -534, -534, 136, 2435, 125, 125, 0, 0, 138, -534,
491 -534, 151, 154, -534, 31, 162, -534, -534, 157, 173,
492 -534, 165, -534, 2683, -51, -534, -534, 172, -534, 179,
493 2435, -534, 212, -534, 63, -534, -534, 52, -534, -534,
494 182, 184, 2710, 2710, 2435, 128, 2435, -534, 31, -534,
495 -534, -534, -534, -534, -534, 2101, -534, -534, -534, -534,
496 -534, -534, 99, 757, -534, -534, -534, -534, -534, -534,
497 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
498 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
499 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
500 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
501 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
502 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
503 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
504 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
505 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
506 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
507 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
508 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
509 757, -534, -534, -534, -534, -534, -534, -534, -534, 1934,
510 -534, -534, -534, -534, 2268, 1934, 195, 2906, 18, -534,
511 18, -534, -534, -534, -534, 193, 194, 194, 2, 2,
512 2386, 191, -534, 128, 200, 203, 208, -534, 31, 172,
513 -534, -534, -534, -534, -534, -534, 211, -534, -2, 55,
514 -534, 76, 202, 48, -534, 2101, 1513, 2101, 2435, 72,
515 -534, -534, 44, -534, -534, -534, -534, -534, 1816, -534,
516 210, 2435, -534, 2435, 219, 214, -534, -534, 514, 2435,
517 -534, -534, 1934, -534, -534, -534, -534, -534, -534, -534,
518 -534, -534, -534, -534, -534, -534, -534, -534, -534, -534,
519 -534, 1934, 1934, 222, 2606, 2101, 2101, -534, -534, -534,
520 -534, 31, -534, 21, 110, 241, -534, 205, 2435, -534,
521 -534, 13, 172, 522, 172, 1011, 1816, 2435, -534, 215,
522 225, -534, -534, -534, 1041, 1816, -534, 2930, -534, 217,
523 229, -534, 230, 235, 223, 234, 56, -534, -534, 236,
524 230, -534, -534, 409, -534, 237, 2101, 2435, -534, 242,
525 2906, 244, 245, 2857, -534, 249, 247, 2552, -534, -534,
526 -534, 2435, -534, -534, -534, -534, -534, 238, -534, -534,
527 -534, -534, -534, -534, -534, -534, -534, -534, -534, 248,
528 132, -534, 14, -534, -534, 252, -534, -534, -534, -2,
529 255, -534, -534, 256, 2930, -534, 1159, -534, 257, 2787,
530 266, 2775, -534, 1816, 1816, 1513, -534, 2101, -534, 14,
531 2101, -534, 2435, -534, -534, -534, -534, -534, 267, 246,
532 -534, -534, 1934, 1934, 268, 269, 272, -534, -534, 274,
533 -534, 287, 273, 287, 281, -534, 172, 172, -534, 92,
534 294, 2930, -534, -534, -534, -534, 295, 1631, 1816, -534,
535 2882, -534, -534, 297, 2101, 137, -534, 757, 2435, 2906,
536 2954, 251, 296, -534, -534, -534, 287, -534, 14, 21,
537 -534, -534, -534, -534, -534, 300, 1816, 14, -534, -534,
538 1816, 1277, 301, 298, -534, -534, -534, 304, 306, -534,
539 1, -534, 14, 2832, 305, 2978, 308, -534, 309, -534,
540 -534, -534, 310, 312, 313, 1816, 1159, 314, -534, 1513,
541 319, 315, 1395, 2805, 215, -534, -534, -534, 316, 1631,
542 -534, -534, 320, 317, 321, 322, -534, -534, 1159, -534,
543 -534, 287, 324, 1513, -534, -534, -534, -534
544 };
545
546 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
547 Performed when YYTABLE does not specify something else to do. Zero
548 means the default is an error. */
549 static const unsigned short int yydefact[] =
550 {
551 163, 284, 281, 285, 279, 280, 282, 268, 269, 0,
552 271, 272, 273, 274, 275, 276, 277, 278, 267, 168,
553 167, 0, 0, 0, 0, 361, 0, 0, 0, 465,
554 169, 0, 0, 164, 165, 171, 170, 172, 175, 369,
555 258, 260, 259, 265, 266, 288, 298, 264, 173, 174,
556 0, 303, 311, 313, 314, 0, 0, 323, 177, 176,
557 178, 0, 179, 0, 283, 270, 32, 33, 451, 417,
558 24, 369, 373, 38, 37, 36, 34, 35, 31, 30,
559 28, 27, 25, 26, 425, 424, 422, 420, 421, 423,
560 419, 418, 426, 29, 449, 447, 446, 448, 445, 444,
561 324, 0, 371, 39, 40, 267, 0, 0, 0, 0,
562 312, 309, 181, 192, 189, 191, 193, 194, 205, 202,
563 203, 200, 206, 201, 0, 204, 195, 196, 197, 0,
564 219, 219, 0, 185, 0, 0, 361, 361, 0, 369,
565 252, 329, 251, 0, 365, 365, 261, 262, 263, 358,
566 239, 285, 268, 242, 0, 0, 238, 257, 0, 0,
567 467, 0, 466, 267, 303, 1, 166, 367, 330, 0,
568 370, 289, 293, 291, 295, 286, 299, 288, 287, 307,
569 0, 0, 325, 325, 0, 0, 0, 370, 369, 332,
570 374, 372, 261, 262, 263, 0, 308, 208, 209, 210,
571 212, 211, 207, 219, 187, 182, 74, 41, 42, 43,
572 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
573 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
574 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
575 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
576 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
577 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
578 105, 106, 107, 108, 114, 112, 113, 111, 109, 110,
579 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
580 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
581 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
582 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
583 155, 156, 157, 158, 161, 159, 160, 162, 221, 190,
584 220, 183, 198, 199, 184, 207, 186, 229, 230, 0,
585 22, 23, 20, 21, 0, 0, 231, 188, 261, 360,
586 262, 359, 250, 256, 253, 0, 0, 0, 0, 0,
587 0, 0, 180, 0, 0, 0, 0, 334, 369, 367,
588 294, 290, 296, 297, 292, 300, 0, 301, 326, 0,
589 327, 0, 346, 0, 344, 0, 465, 0, 0, 0,
590 457, 458, 0, 395, 398, 397, 399, 400, 0, 401,
591 0, 0, 463, 0, 310, 0, 214, 222, 0, 0,
592 227, 224, 233, 2, 3, 4, 5, 6, 7, 8,
593 9, 10, 11, 13, 12, 14, 15, 16, 17, 18,
594 19, 0, 0, 0, 0, 0, 0, 337, 336, 338,
595 335, 369, 331, 243, 0, 0, 302, 0, 0, 333,
596 305, 0, 367, 0, 367, 0, 0, 0, 343, 0,
597 0, 355, 354, 356, 0, 0, 357, 440, 348, 0,
598 0, 439, 40, 0, 0, 0, 0, 460, 450, 0,
599 0, 375, 396, 0, 322, 0, 0, 215, 223, 0,
600 235, 0, 234, 0, 225, 0, 363, 0, 340, 255,
601 254, 0, 245, 247, 248, 246, 249, 0, 244, 376,
602 388, 389, 390, 391, 387, 392, 393, 394, 386, 0,
603 0, 380, 465, 385, 368, 0, 306, 304, 317, 0,
604 0, 328, 315, 0, 347, 345, 0, 402, 24, 0,
605 0, 0, 352, 0, 0, 465, 438, 0, 384, 465,
606 0, 459, 0, 437, 456, 321, 464, 217, 0, 216,
607 228, 232, 0, 0, 0, 0, 0, 339, 341, 0,
608 237, 0, 0, 0, 382, 319, 367, 367, 407, 30,
609 29, 411, 412, 408, 409, 410, 39, 0, 0, 350,
610 0, 351, 441, 452, 0, 0, 461, 219, 0, 236,
611 226, 0, 0, 342, 320, 377, 0, 381, 465, 243,
612 318, 316, 431, 417, 432, 0, 0, 465, 413, 349,
613 0, 465, 0, 0, 462, 213, 218, 0, 0, 378,
614 0, 383, 465, 0, 427, 353, 0, 454, 453, 442,
615 403, 366, 0, 0, 0, 0, 0, 0, 443, 465,
616 0, 0, 433, 0, 357, 429, 406, 404, 428, 0,
617 416, 455, 0, 0, 0, 434, 435, 414, 0, 405,
618 364, 0, 0, 465, 430, 379, 415, 436
619 };
620
621 /* YYPGOTO[NTERM-NUM]. */
622 static const short int yypgoto[] =
623 {
624 -534, -329, -120, -3, 25, -534, -534, 328, -534, -534,
625 -534, -534, -534, -534, -534, -534, -534, -534, 231, -534,
626 -534, -534, -122, -534, -320, -534, -534, -534, -534, -534,
627 -243, -534, -534, 345, -15, -24, -534, -534, -534, 232,
628 323, -534, -534, 196, -534, -534, -534, -534, 204, -534,
629 -534, -534, -534, 339, -5, -19, 12, -534, -534, 189,
630 -14, -39, -534, -534, 16, -205, -534, -121, 29, -534,
631 -80, -381, -534, -534, -534, -534, 42, -534, -23, -353,
632 -61, -4, -534, -534, 350, -534, -194, -491, -533, -534,
633 19, -364, -534, -287, -510, -1, -534, -534, -534, -473,
634 -534, -534, -534, -534, -534, -534, -534, -513, -6, -375,
635 -534, -534, -534, -534, -534, -534, -166, -163, -28, -509
636 };
637
638 /* YYDEFGOTO[NTERM-NUM]. */
639 static const short int yydefgoto[] =
640 {
641 -1, 544, 465, 167, 328, 32, 33, 34, 35, 36,
642 129, 130, 131, 132, 334, 133, 134, 135, 203, 204,
643 558, 559, 329, 330, 347, 491, 492, 37, 155, 156,
644 507, 508, 38, 496, 39, 40, 41, 42, 43, 44,
645 45, 46, 47, 175, 371, 374, 178, 48, 181, 451,
646 49, 50, 196, 51, 52, 53, 141, 55, 56, 379,
647 57, 466, 58, 59, 438, 439, 497, 498, 143, 383,
648 384, 467, 468, 61, 144, 145, 149, 566, 356, 367,
649 169, 403, 102, 62, 63, 520, 521, 469, 522, 523,
650 392, 393, 394, 655, 656, 657, 583, 584, 585, 103,
651 647, 658, 615, 664, 665, 395, 396, 470, 471, 104,
652 622, 638, 397, 398, 399, 476, 477, 404, 473, 162
653 };
654
655 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
656 positive, shift that token. If negative, reduce the rule whose
657 number is the opposite. If YYTABLE_NINF, syntax error. */
658 static const short int yytable[] =
659 {
660 168, 161, 157, 140, 111, 101, 100, 139, 142, 331,
661 186, 472, 54, 110, 480, 345, 449, 483, 432, 408,
662 146, 147, 148, 332, 190, 411, 582, 587, 482, 60,
663 54, 574, 592, 548, 29, 170, 71, -365, 605, 437,
664 608, 355, -365, 54, 434, 54, 165, 526, 502, 503,
665 504, 158, 527, 72, 505, 506, 171, 172, 173, -362,
666 -362, 174, 60, 586, 160, -314, -329, 187, -329, 372,
667 179, 643, 373, 629, 64, 534, 65, 618, 180, 432,
668 482, 406, 432, 541, 542, 157, 72, 481, 457, 68,
669 478, 458, 490, 551, 452, 453, 552, 191, 189, 528,
670 168, 532, 182, 192, 193, 194, 614, 183, 637, 612,
671 613, 493, 494, 333, 586, 454, 455, 574, 176, 4,
672 5, 202, 357, 358, 359, 184, 634, 401, -323, 185,
673 195, 335, 346, 348, 350, 170, 661, 659, 675, 666,
674 354, 644, 385, 386, 387, 388, 389, 390, 391, 669,
675 360, 435, 436, 509, 205, 581, 402, 352, 110, 659,
676 677, 432, 590, 591, 432, 432, 355, 369, 380, 380,
677 472, 572, 573, 586, -323, 54, 624, 486, 349, 351,
678 -362, 382, -240, 400, 187, -241, 586, 94, 95, 96,
679 97, 98, 99, 361, 362, 586, 364, 84, 85, 86,
680 87, 88, 89, 90, 91, 92, 581, 619, 385, 386,
681 387, 388, 389, 390, 391, 363, 366, 368, 370, 345,
682 376, 377, 405, 610, 611, 345, 385, 386, 387, 388,
683 389, 390, 391, 412, 433, 633, 434, 443, 445, 635,
684 446, 447, 599, 600, 510, 450, 472, 511, 456, 484,
685 524, 512, 487, 513, 514, 515, 516, 517, 518, 486,
686 495, 536, 537, 545, 653, 581, 546, 548, 547, 549,
687 432, 432, 550, 553, 472, 570, 555, 472, 581, 112,
688 519, 560, 564, 561, 627, 562, 598, 581, 565, 571,
689 510, 575, 345, 511, 576, 577, -24, 512, 472, 513,
690 514, 515, 516, 517, 518, 588, 597, 448, 601, 603,
691 602, 345, 345, 604, 606, 113, 114, 115, 116, 117,
692 118, 119, 120, 121, 122, 123, 124, 609, 125, 126,
693 127, 128, 616, 617, 628, 640, 346, 621, 632, 642,
694 639, 410, 346, 641, 651, 646, 459, 648, 474, 649,
695 650, 652, 662, 660, 663, 407, 668, 442, 671, 670,
696 672, 166, 673, 676, 187, 336, 631, 138, 365, 177,
697 164, 353, 381, 375, 101, 440, 568, 535, 159, 607,
698 501, 674, 444, 479, 460, 475, 596, 595, 0, 0,
699 0, 0, 0, 0, 0, 0, 499, 500, 485, 0,
700 369, 0, 0, 0, 0, 0, 489, 0, 0, 346,
701 0, 0, 0, 0, 0, 140, 0, 0, 0, 139,
702 142, 0, 0, 0, 0, 0, 0, 0, 346, 346,
703 0, 0, 0, 0, 0, 0, 0, 187, 0, 531,
704 0, 531, 345, 345, 0, 525, 554, 556, 0, 540,
705 0, 0, 0, 0, 382, 0, 0, 413, 414, 415,
706 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
707 426, 427, 428, 429, 430, 625, 0, 0, 140, 0,
708 543, 0, 139, 142, 557, 0, 0, 0, 0, 0,
709 0, 0, 0, 0, 0, 0, 0, 0, 569, 0,
710 0, 0, 0, 0, 0, 0, 0, 0, 593, 0,
711 0, 402, 0, 0, 0, 157, 0, 0, 0, 0,
712 0, 594, 0, 0, 0, 101, 1, 2, 3, 4,
713 5, 6, 7, 8, 0, 0, 0, 0, 0, 529,
714 0, 10, 11, 12, 13, 14, 15, 16, 17, 475,
715 0, 0, 105, 488, 0, 623, 0, 0, 0, 346,
716 346, 0, 413, 414, 415, 416, 417, 418, 419, 420,
717 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
718 630, 0, 0, 0, 0, 431, 0, 0, 0, 0,
719 0, 0, 530, 0, 0, 626, 0, 0, 0, 0,
720 0, 0, 0, 0, 0, 0, 0, 654, 0, 0,
721 0, 0, 106, 107, 108, 109, 0, 0, 0, 0,
722 0, 0, 0, 0, 0, 0, 0, -417, 0, 654,
723 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
724 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
725 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
726 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
727 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
728 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
729 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
730 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
731 -417, -417, -417, 0, -417, 0, -417, -417, -417, -417,
732 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
733 -417, -417, -417, -417, -417, -417, -417, -417, -417, -417,
734 -417, -417, -417, -417, -417, -417, -417, -417, -417, 0,
735 -417, -417, 0, -417, -417, -417, -417, 206, 0, 0,
736 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
737 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
738 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
739 237, 238, 239, 0, 240, 241, 242, 243, 244, 245,
740 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
741 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
742 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
743 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
744 286, 287, 288, 0, 289, 0, 290, 291, 292, 293,
745 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
746 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
747 314, 315, 316, 317, 318, 319, 320, 321, 322, 66,
748 0, 323, 0, 324, 325, 326, 327, 0, 67, 0,
749 0, 0, 0, 68, 69, 0, 0, 0, 0, 0,
750 0, 0, 0, 197, 198, 199, 70, 0, 0, 0,
751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
752 0, 1, 2, 3, 4, 5, 6, 7, 8, 0,
753 0, 0, 0, 0, 9, 0, 10, 11, 12, 13,
754 14, 15, 16, 17, 0, 0, 0, 18, 73, 74,
755 75, 76, 77, 19, 20, 0, 0, 0, 0, 0,
756 0, 0, 0, 0, 21, 0, 0, 0, 0, 0,
757 78, 0, 79, 0, 80, 81, 82, 83, 0, 0,
758 0, 84, 85, 86, 87, 88, 89, 90, 91, 92,
759 93, 94, 95, 96, 97, 98, 99, 0, 0, 0,
760 0, 0, 200, 0, 201, 0, 22, 23, 24, 25,
761 26, 27, 28, 0, 29, 1, 2, 3, 4, 5,
762 6, 7, 8, 0, 0, 0, 0, 0, 529, 0,
763 10, 11, 12, 13, 14, 15, 16, 17, 30, 0,
764 0, 105, 0, 31, 66, 1, 2, 3, 4, 5,
765 6, 7, 8, 67, 0, 0, 0, 0, 68, 69,
766 10, 11, 12, 13, 14, 15, 16, 17, 0, 0,
767 0, 538, 461, 0, 462, 0, 463, 0, 0, 464,
768 0, 533, 0, 0, 0, 0, 0, 0, 0, 0,
769 0, 0, 0, 0, 340, 341, 72, 0, 0, 0,
770 0, 106, 107, 108, 109, 0, 0, 342, 343, 0,
771 0, 0, 0, 73, 74, 75, 76, 77, 0, 0,
772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
773 0, 106, 107, 108, 539, 78, 0, 79, 0, 80,
774 81, 82, 83, 0, 0, 0, 84, 85, 86, 87,
775 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
776 98, 99, 66, 0, 0, 0, 0, 0, 0, 0,
777 0, 67, 0, 0, 0, 0, 68, 69, 0, 0,
778 0, 0, 0, 0, 0, 0, 578, 0, 0, 70,
779 461, 0, 462, 0, 463, 0, 0, 464, 0, 0,
780 0, 0, 0, 0, 0, 0, 0, 0, 0, 160,
781 0, 0, 340, 341, 72, 0, 0, 0, 0, 0,
782 0, 0, 0, 0, 0, 342, 343, 0, 0, 0,
783 0, 73, 74, 75, 76, 77, 0, 0, 0, 0,
784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
785 0, 0, 0, 78, 0, 579, 0, 80, 81, 82,
786 83, 0, 0, 0, 84, 85, 86, 87, 88, 89,
787 90, 91, 92, 580, 94, 95, 96, 97, 98, 99,
788 66, 0, 0, 0, 0, 0, 0, 0, 0, 67,
789 0, 0, 0, 0, 68, 69, 0, 0, 0, 0,
790 0, 0, 0, 0, 0, 0, 0, 70, 461, 0,
791 462, 0, 463, 0, 0, 464, 0, 0, 0, 0,
792 0, 0, 0, 0, 0, 0, 0, 160, 0, 0,
793 340, 341, 72, 0, 0, 0, 0, 0, 0, 0,
794 0, 0, 0, 342, 343, 0, 0, 636, 0, 73,
795 74, 75, 76, 77, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
797 0, 78, 0, 79, 0, 80, 81, 82, 83, 0,
798 0, 0, 84, 85, 86, 87, 88, 89, 90, 91,
799 92, 93, 94, 95, 96, 97, 98, 99, 66, 0,
800 0, 0, 0, 0, 0, 0, 0, 67, 0, 0,
801 0, 0, 68, 69, 0, 0, 0, 0, 0, 0,
802 0, 0, 0, 0, 0, 70, 461, -465, 462, 0,
803 463, 0, 0, 464, 0, 0, 0, 0, 0, 0,
804 0, 0, 0, 0, 0, 160, 0, 0, 340, 341,
805 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
806 0, 342, 343, 0, 0, 0, 0, 73, 74, 75,
807 76, 77, 0, 0, 0, 0, 0, 0, 0, 0,
808 0, 0, 0, 0, 0, 0, 0, 0, 0, 78,
809 0, 79, 0, 80, 81, 82, 83, 0, 0, 0,
810 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
811 94, 95, 96, 97, 98, 99, 66, 0, 0, 0,
812 0, 0, 0, 0, 0, 67, 0, 0, 0, 0,
813 68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
814 0, 0, 0, 70, 461, 0, 462, 0, 463, 0,
815 0, 464, 0, 0, 0, 0, 0, 0, 0, 0,
816 0, 0, 0, 160, 0, 0, 340, 341, 72, 0,
817 0, 0, 0, 0, 0, 0, 0, 0, 0, 342,
818 343, 0, 0, 0, 0, 73, 74, 75, 76, 77,
819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
820 0, 0, 0, 0, 0, 0, 0, 78, 0, 79,
821 0, 80, 81, 82, 83, 0, 0, 0, 84, 85,
822 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
823 96, 97, 98, 99, 66, 0, 0, 0, 0, 0,
824 0, 0, 0, 67, 0, 0, 0, 0, 68, 69,
825 0, 0, 0, 0, 0, 0, 0, 0, 578, 0,
826 0, 70, 461, 0, 462, 0, 463, 0, 0, 464,
827 0, 0, 0, 150, 1, 2, 151, 4, 5, 6,
828 152, 8, 153, 0, 340, 341, 72, 154, 0, 10,
829 11, 12, 13, 14, 15, 16, 17, 342, 343, 0,
830 105, 66, 0, 73, 74, 75, 76, 77, 0, 0,
831 67, 0, 0, 0, 0, 68, 69, 10, 11, 12,
832 13, 14, 15, 16, 17, 78, 0, 579, 70, 80,
833 81, 82, 83, 0, 0, 0, 84, 85, 86, 87,
834 88, 89, 90, 91, 92, 580, 94, 95, 96, 97,
835 98, 99, 0, 72, 0, 0, 0, 0, 0, 0,
836 106, 107, 108, 0, 0, 0, 0, 0, 0, 0,
837 73, 74, 75, 76, 77, 0, 0, 0, 0, 0,
838 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
839 0, 0, 78, 0, 79, 0, 80, 81, 82, 83,
840 0, 0, 0, 84, 85, 86, 87, 88, 89, 90,
841 91, 92, 93, 94, 95, 96, 97, 98, 99, 66,
842 0, 0, 0, 0, 0, 0, 0, 0, 67, 0,
843 0, 0, 0, 68, 69, 0, 0, 0, 0, 0,
844 0, 0, 0, 0, 0, 0, 70, 461, 0, 462,
845 0, 463, 0, 0, 464, 0, 0, 0, 0, 0,
846 0, 0, 0, 0, 0, 0, 0, 0, 0, 340,
847 341, 72, 0, 0, 0, 0, 0, 0, 0, 0,
848 0, 0, 342, 343, 0, 0, 0, 0, 73, 74,
849 75, 76, 77, 0, 0, 0, 0, 0, 0, 0,
850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
851 78, 0, 79, 0, 80, 81, 82, 83, 0, 0,
852 0, 84, 85, 86, 87, 88, 89, 90, 91, 92,
853 93, 94, 95, 96, 97, 98, 99, 66, 0, 0,
854 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
855 0, 68, 69, 0, 0, 0, 0, 0, 0, 0,
856 0, 0, 0, 0, 70, 0, 0, 337, 0, 338,
857 0, 0, 339, 0, 0, 0, 0, 0, 0, 0,
858 0, 0, 0, 0, 0, 0, 0, 340, 341, 0,
859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
860 342, 343, 0, 0, 0, 0, 73, 74, 75, 76,
861 77, 0, 0, 0, 0, 0, 0, 0, 344, 0,
862 0, 0, 0, 0, 0, 0, 0, 0, 78, 0,
863 79, 0, 80, 81, 82, 83, 0, 0, 0, 84,
864 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
865 95, 96, 97, 98, 99, 66, 0, 0, 0, 0,
866 0, 0, 0, 0, 67, 0, 0, 0, 0, 68,
867 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
868 0, 0, 70, 0, 0, 0, 0, 0, 0, 0,
869 71, 0, 0, 0, 0, 0, 0, 0, 0, 0,
870 0, 0, 0, 0, 66, 0, 0, 72, 0, 0,
871 0, 0, 0, 67, 0, 0, 0, 0, 68, 69,
872 0, 0, 0, 0, 73, 74, 75, 76, 77, 0,
873 0, 70, 0, 0, 0, 0, 0, 0, 0, 0,
874 0, 0, 0, 0, 0, 0, 78, 0, 79, 0,
875 80, 81, 82, 83, 0, 0, 72, 84, 85, 86,
876 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
877 97, 98, 99, 73, 74, 75, 76, 77, 0, 0,
878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879 0, 0, 0, 0, 0, 78, 0, 79, 0, 80,
880 81, 82, 83, 0, 0, 0, 84, 85, 86, 87,
881 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
882 98, 99, 66, 0, 0, 0, 0, 0, 0, 0,
883 0, 67, 0, 0, 0, 0, 68, 69, 0, 0,
884 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
885 0, 0, 0, 0, 0, 0, 0, 188, 0, 0,
886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
887 0, 66, 0, 0, 0, 0, 0, 0, 0, 0,
888 67, 0, 0, 0, 0, 68, 69, 0, 0, 0,
889 0, 73, 74, 75, 76, 77, 0, 0, 70, 0,
890 0, 0, 0, 0, 0, 0, 409, 0, 0, 0,
891 0, 0, 0, 78, 0, 79, 0, 80, 81, 82,
892 83, 0, 0, 0, 84, 85, 86, 87, 88, 89,
893 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
894 73, 74, 75, 76, 77, 0, 0, 0, 0, 0,
895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
896 0, 0, 78, 0, 79, 0, 80, 81, 82, 83,
897 0, 0, 0, 84, 85, 86, 87, 88, 89, 90,
898 91, 92, 93, 94, 95, 96, 97, 98, 99, 66,
899 0, 0, 0, 0, 0, 0, 0, 0, 67, 0,
900 0, 0, 0, 68, 69, 0, 0, 0, 0, 0,
901 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
902 0, 0, 0, 0, 441, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
904 0, 0, 0, 0, 0, 0, 0, 67, 0, 0,
905 0, 0, 68, 69, 0, 0, 0, 0, 73, 74,
906 75, 76, 77, 0, 0, 70, 0, 0, 0, 0,
907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908 78, 0, 79, 0, 80, 81, 82, 83, 0, 0,
909 0, 84, 85, 86, 87, 88, 89, 90, 91, 92,
910 93, 94, 95, 96, 97, 98, 99, 73, 74, 75,
911 76, 77, 0, 0, 0, 0, 0, 0, 0, 0,
912 0, 0, 0, 0, 0, 0, 0, 0, 0, 78,
913 0, 79, 0, 80, 81, 82, 83, 0, 0, 0,
914 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
915 94, 95, 96, 97, 98, 99, 1, 2, 3, 4,
916 5, 6, 7, 8, 0, 0, 0, 0, 0, 9,
917 0, 10, 11, 12, 13, 14, 15, 16, 17, 0,
918 0, 0, 105, 1, 2, 3, 4, 5, 6, 7,
919 8, 0, 0, 0, 0, 567, 9, 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, 0, 0, 0,
924 0, 0, 136, 137, 25, 109, 0, 0, 0, 0,
925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
926 1, 2, 3, 4, 5, 6, 7, 8, 0, 106,
927 107, 108, 109, 9, 0, 10, 11, 12, 13, 14,
928 15, 16, 17, 0, 0, 0, 163, 1, 2, 3,
929 4, 5, 6, 7, 8, 0, 136, 137, 25, 109,
930 9, 0, 10, 11, 12, 13, 14, 15, 16, 17,
931 0, 0, 0, 105, 1, 2, 3, 4, 5, 6,
932 7, 8, 0, 0, 0, 0, 0, 378, 0, 10,
933 11, 12, 13, 14, 15, 16, 17, 0, 0, 0,
934 105, 0, 0, 0, 0, 0, 106, 107, 108, 109,
935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
936 0, 0, 0, 0, 1, 2, 3, 4, 5, 6,
937 7, 8, 0, 106, 107, 108, 109, 154, 0, 10,
938 11, 12, 13, 14, 15, 16, 17, 0, 0, 0,
939 105, 1, 2, 3, 4, 5, 6, 7, 8, 0,
940 106, 107, 108, 109, 0, 0, 10, 11, 12, 13,
941 14, 15, 16, 17, 589, 0, 0, 105, 0, 0,
942 0, 0, 0, 413, 414, 415, 416, 417, 418, 419,
943 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
944 430, 0, 0, 0, 667, 0, 543, 0, 0, 0,
945 106, 107, 108, 413, 414, 415, 416, 417, 418, 419,
946 420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
947 430, 0, 645, 0, 0, 0, 543, 106, 107, 108,
948 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
949 423, 424, 425, 426, 427, 428, 429, 430, 563, 0,
950 0, 0, 0, 543, 0, 413, 414, 415, 416, 417,
951 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
952 428, 429, 430, 620, 0, 0, 0, 0, 431, 0,
953 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
954 423, 424, 425, 426, 427, 428, 429, 430, 0, 0,
955 0, 0, 0, 543, 413, 414, 415, 416, 417, 418,
956 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
957 429, 430, 0, 0, 0, 0, 0, 431, 413, 414,
958 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
959 425, 426, 427, 428, 429, 430, 0, 0, 0, 0,
960 0, 543, 413, 414, 415, 416, 417, 418, 419, 420,
961 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
962 0, 0, 0, 0, 0, 431, 413, 414, 415, 416,
963 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
964 427, 428, 429, 430, 0, 0, 0, 0, 0, 543
965 };
966
967 static const short int yycheck[] =
968 {
969 39, 29, 26, 22, 18, 9, 9, 22, 22, 131,
970 71, 386, 0, 18, 389, 135, 369, 398, 347, 339,
971 23, 24, 25, 34, 55, 345, 536, 536, 392, 0,
972 18, 522, 545, 32, 97, 39, 38, 37, 571, 37,
973 573, 41, 42, 31, 42, 33, 0, 34, 27, 28,
974 29, 34, 39, 55, 33, 34, 4, 5, 6, 41,
975 42, 9, 33, 536, 50, 37, 38, 71, 40, 6,
976 37, 70, 9, 606, 9, 456, 11, 587, 129, 408,
977 444, 203, 411, 464, 465, 109, 55, 43, 40, 17,
978 18, 43, 412, 37, 39, 40, 40, 128, 101, 452,
979 139, 454, 38, 106, 107, 108, 579, 38, 621, 17,
980 18, 431, 432, 124, 587, 39, 40, 608, 6, 7,
981 8, 124, 145, 146, 147, 42, 617, 188, 38, 42,
982 40, 134, 135, 136, 137, 139, 649, 646, 671, 652,
983 143, 632, 98, 99, 100, 101, 102, 103, 104, 659,
984 154, 356, 357, 43, 36, 536, 195, 37, 163, 668,
985 673, 490, 543, 544, 493, 494, 41, 170, 182, 183,
986 545, 39, 40, 646, 38, 163, 39, 40, 136, 137,
987 42, 184, 31, 186, 188, 31, 659, 115, 116, 117,
988 118, 119, 120, 31, 37, 668, 31, 105, 106, 107,
989 108, 109, 110, 111, 112, 113, 587, 588, 98, 99,
990 100, 101, 102, 103, 104, 42, 44, 38, 6, 339,
991 38, 37, 123, 576, 577, 345, 98, 99, 100, 101,
992 102, 103, 104, 38, 41, 616, 42, 46, 38, 620,
993 37, 33, 562, 563, 3, 34, 621, 6, 46, 39,
994 45, 10, 38, 12, 13, 14, 15, 16, 17, 40,
995 38, 46, 37, 46, 645, 646, 37, 32, 38, 46,
996 599, 600, 38, 37, 649, 37, 39, 652, 659, 36,
997 39, 39, 33, 39, 33, 40, 40, 668, 41, 41,
998 3, 39, 412, 6, 39, 39, 39, 10, 673, 12,
999 13, 14, 15, 16, 17, 39, 39, 368, 40, 37,
1000 41, 431, 432, 39, 41, 72, 73, 74, 75, 76,
1001 77, 78, 79, 80, 81, 82, 83, 46, 85, 86,
1002 87, 88, 38, 38, 38, 37, 339, 40, 38, 33,
1003 39, 344, 345, 39, 32, 40, 385, 39, 387, 40,
1004 40, 38, 33, 39, 39, 330, 40, 360, 41, 39,
1005 39, 33, 40, 39, 368, 134, 609, 22, 164, 46,
1006 31, 139, 183, 177, 378, 359, 497, 457, 28, 573,
1007 441, 668, 363, 389, 385, 388, 552, 550, -1, -1,
1008 -1, -1, -1, -1, -1, -1, 435, 436, 401, -1,
1009 403, -1, -1, -1, -1, -1, 409, -1, -1, 412,
1010 -1, -1, -1, -1, -1, 434, -1, -1, -1, 434,
1011 434, -1, -1, -1, -1, -1, -1, -1, 431, 432,
1012 -1, -1, -1, -1, -1, -1, -1, 441, -1, 453,
1013 -1, 455, 562, 563, -1, 448, 37, 486, -1, 464,
1014 -1, -1, -1, -1, 457, -1, -1, 48, 49, 50,
1015 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
1016 61, 62, 63, 64, 65, 597, -1, -1, 497, -1,
1017 71, -1, 497, 497, 487, -1, -1, -1, -1, -1,
1018 -1, -1, -1, -1, -1, -1, -1, -1, 501, -1,
1019 -1, -1, -1, -1, -1, -1, -1, -1, 547, -1,
1020 -1, 550, -1, -1, -1, 539, -1, -1, -1, -1,
1021 -1, 549, -1, -1, -1, 529, 4, 5, 6, 7,
1022 8, 9, 10, 11, -1, -1, -1, -1, -1, 17,
1023 -1, 19, 20, 21, 22, 23, 24, 25, 26, 552,
1024 -1, -1, 30, 39, -1, 594, -1, -1, -1, 562,
1025 563, -1, 48, 49, 50, 51, 52, 53, 54, 55,
1026 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
1027 608, -1, -1, -1, -1, 71, -1, -1, -1, -1,
1028 -1, -1, 70, -1, -1, 598, -1, -1, -1, -1,
1029 -1, -1, -1, -1, -1, -1, -1, 646, -1, -1,
1030 -1, -1, 90, 91, 92, 93, -1, -1, -1, -1,
1031 -1, -1, -1, -1, -1, -1, -1, 0, -1, 668,
1032 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
1033 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1034 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1035 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
1036 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1037 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1038 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1039 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1040 83, 84, 85, -1, 87, -1, 89, 90, 91, 92,
1041 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1042 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1043 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
1044 123, 124, -1, 126, 127, 128, 129, 0, -1, -1,
1045 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
1046 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1047 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
1048 33, 34, 35, -1, 37, 38, 39, 40, 41, 42,
1049 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1050 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1051 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1052 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1053 83, 84, 85, -1, 87, -1, 89, 90, 91, 92,
1054 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
1055 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1056 113, 114, 115, 116, 117, 118, 119, 120, 121, 3,
1057 -1, 124, -1, 126, 127, 128, 129, -1, 12, -1,
1058 -1, -1, -1, 17, 18, -1, -1, -1, -1, -1,
1059 -1, -1, -1, 27, 28, 29, 30, -1, -1, -1,
1060 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1061 -1, 4, 5, 6, 7, 8, 9, 10, 11, -1,
1062 -1, -1, -1, -1, 17, -1, 19, 20, 21, 22,
1063 23, 24, 25, 26, -1, -1, -1, 30, 72, 73,
1064 74, 75, 76, 36, 37, -1, -1, -1, -1, -1,
1065 -1, -1, -1, -1, 47, -1, -1, -1, -1, -1,
1066 94, -1, 96, -1, 98, 99, 100, 101, -1, -1,
1067 -1, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1068 114, 115, 116, 117, 118, 119, 120, -1, -1, -1,
1069 -1, -1, 126, -1, 128, -1, 89, 90, 91, 92,
1070 93, 94, 95, -1, 97, 4, 5, 6, 7, 8,
1071 9, 10, 11, -1, -1, -1, -1, -1, 17, -1,
1072 19, 20, 21, 22, 23, 24, 25, 26, 121, -1,
1073 -1, 30, -1, 126, 3, 4, 5, 6, 7, 8,
1074 9, 10, 11, 12, -1, -1, -1, -1, 17, 18,
1075 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
1076 -1, 30, 31, -1, 33, -1, 35, -1, -1, 38,
1077 -1, 70, -1, -1, -1, -1, -1, -1, -1, -1,
1078 -1, -1, -1, -1, 53, 54, 55, -1, -1, -1,
1079 -1, 90, 91, 92, 93, -1, -1, 66, 67, -1,
1080 -1, -1, -1, 72, 73, 74, 75, 76, -1, -1,
1081 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1082 -1, 90, 91, 92, 93, 94, -1, 96, -1, 98,
1083 99, 100, 101, -1, -1, -1, 105, 106, 107, 108,
1084 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
1085 119, 120, 3, -1, -1, -1, -1, -1, -1, -1,
1086 -1, 12, -1, -1, -1, -1, 17, 18, -1, -1,
1087 -1, -1, -1, -1, -1, -1, 27, -1, -1, 30,
1088 31, -1, 33, -1, 35, -1, -1, 38, -1, -1,
1089 -1, -1, -1, -1, -1, -1, -1, -1, -1, 50,
1090 -1, -1, 53, 54, 55, -1, -1, -1, -1, -1,
1091 -1, -1, -1, -1, -1, 66, 67, -1, -1, -1,
1092 -1, 72, 73, 74, 75, 76, -1, -1, -1, -1,
1093 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1094 -1, -1, -1, 94, -1, 96, -1, 98, 99, 100,
1095 101, -1, -1, -1, 105, 106, 107, 108, 109, 110,
1096 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1097 3, -1, -1, -1, -1, -1, -1, -1, -1, 12,
1098 -1, -1, -1, -1, 17, 18, -1, -1, -1, -1,
1099 -1, -1, -1, -1, -1, -1, -1, 30, 31, -1,
1100 33, -1, 35, -1, -1, 38, -1, -1, -1, -1,
1101 -1, -1, -1, -1, -1, -1, -1, 50, -1, -1,
1102 53, 54, 55, -1, -1, -1, -1, -1, -1, -1,
1103 -1, -1, -1, 66, 67, -1, -1, 70, -1, 72,
1104 73, 74, 75, 76, -1, -1, -1, -1, -1, -1,
1105 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1106 -1, 94, -1, 96, -1, 98, 99, 100, 101, -1,
1107 -1, -1, 105, 106, 107, 108, 109, 110, 111, 112,
1108 113, 114, 115, 116, 117, 118, 119, 120, 3, -1,
1109 -1, -1, -1, -1, -1, -1, -1, 12, -1, -1,
1110 -1, -1, 17, 18, -1, -1, -1, -1, -1, -1,
1111 -1, -1, -1, -1, -1, 30, 31, 32, 33, -1,
1112 35, -1, -1, 38, -1, -1, -1, -1, -1, -1,
1113 -1, -1, -1, -1, -1, 50, -1, -1, 53, 54,
1114 55, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1115 -1, 66, 67, -1, -1, -1, -1, 72, 73, 74,
1116 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
1117 -1, -1, -1, -1, -1, -1, -1, -1, -1, 94,
1118 -1, 96, -1, 98, 99, 100, 101, -1, -1, -1,
1119 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1120 115, 116, 117, 118, 119, 120, 3, -1, -1, -1,
1121 -1, -1, -1, -1, -1, 12, -1, -1, -1, -1,
1122 17, 18, -1, -1, -1, -1, -1, -1, -1, -1,
1123 -1, -1, -1, 30, 31, -1, 33, -1, 35, -1,
1124 -1, 38, -1, -1, -1, -1, -1, -1, -1, -1,
1125 -1, -1, -1, 50, -1, -1, 53, 54, 55, -1,
1126 -1, -1, -1, -1, -1, -1, -1, -1, -1, 66,
1127 67, -1, -1, -1, -1, 72, 73, 74, 75, 76,
1128 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1129 -1, -1, -1, -1, -1, -1, -1, 94, -1, 96,
1130 -1, 98, 99, 100, 101, -1, -1, -1, 105, 106,
1131 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1132 117, 118, 119, 120, 3, -1, -1, -1, -1, -1,
1133 -1, -1, -1, 12, -1, -1, -1, -1, 17, 18,
1134 -1, -1, -1, -1, -1, -1, -1, -1, 27, -1,
1135 -1, 30, 31, -1, 33, -1, 35, -1, -1, 38,
1136 -1, -1, -1, 3, 4, 5, 6, 7, 8, 9,
1137 10, 11, 12, -1, 53, 54, 55, 17, -1, 19,
1138 20, 21, 22, 23, 24, 25, 26, 66, 67, -1,
1139 30, 3, -1, 72, 73, 74, 75, 76, -1, -1,
1140 12, -1, -1, -1, -1, 17, 18, 19, 20, 21,
1141 22, 23, 24, 25, 26, 94, -1, 96, 30, 98,
1142 99, 100, 101, -1, -1, -1, 105, 106, 107, 108,
1143 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
1144 119, 120, -1, 55, -1, -1, -1, -1, -1, -1,
1145 90, 91, 92, -1, -1, -1, -1, -1, -1, -1,
1146 72, 73, 74, 75, 76, -1, -1, -1, -1, -1,
1147 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1148 -1, -1, 94, -1, 96, -1, 98, 99, 100, 101,
1149 -1, -1, -1, 105, 106, 107, 108, 109, 110, 111,
1150 112, 113, 114, 115, 116, 117, 118, 119, 120, 3,
1151 -1, -1, -1, -1, -1, -1, -1, -1, 12, -1,
1152 -1, -1, -1, 17, 18, -1, -1, -1, -1, -1,
1153 -1, -1, -1, -1, -1, -1, 30, 31, -1, 33,
1154 -1, 35, -1, -1, 38, -1, -1, -1, -1, -1,
1155 -1, -1, -1, -1, -1, -1, -1, -1, -1, 53,
1156 54, 55, -1, -1, -1, -1, -1, -1, -1, -1,
1157 -1, -1, 66, 67, -1, -1, -1, -1, 72, 73,
1158 74, 75, 76, -1, -1, -1, -1, -1, -1, -1,
1159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1160 94, -1, 96, -1, 98, 99, 100, 101, -1, -1,
1161 -1, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1162 114, 115, 116, 117, 118, 119, 120, 3, -1, -1,
1163 -1, -1, -1, -1, -1, -1, 12, -1, -1, -1,
1164 -1, 17, 18, -1, -1, -1, -1, -1, -1, -1,
1165 -1, -1, -1, -1, 30, -1, -1, 33, -1, 35,
1166 -1, -1, 38, -1, -1, -1, -1, -1, -1, -1,
1167 -1, -1, -1, -1, -1, -1, -1, 53, 54, -1,
1168 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1169 66, 67, -1, -1, -1, -1, 72, 73, 74, 75,
1170 76, -1, -1, -1, -1, -1, -1, -1, 84, -1,
1171 -1, -1, -1, -1, -1, -1, -1, -1, 94, -1,
1172 96, -1, 98, 99, 100, 101, -1, -1, -1, 105,
1173 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1174 116, 117, 118, 119, 120, 3, -1, -1, -1, -1,
1175 -1, -1, -1, -1, 12, -1, -1, -1, -1, 17,
1176 18, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1177 -1, -1, 30, -1, -1, -1, -1, -1, -1, -1,
1178 38, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1179 -1, -1, -1, -1, 3, -1, -1, 55, -1, -1,
1180 -1, -1, -1, 12, -1, -1, -1, -1, 17, 18,
1181 -1, -1, -1, -1, 72, 73, 74, 75, 76, -1,
1182 -1, 30, -1, -1, -1, -1, -1, -1, -1, -1,
1183 -1, -1, -1, -1, -1, -1, 94, -1, 96, -1,
1184 98, 99, 100, 101, -1, -1, 55, 105, 106, 107,
1185 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
1186 118, 119, 120, 72, 73, 74, 75, 76, -1, -1,
1187 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1188 -1, -1, -1, -1, -1, 94, -1, 96, -1, 98,
1189 99, 100, 101, -1, -1, -1, 105, 106, 107, 108,
1190 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
1191 119, 120, 3, -1, -1, -1, -1, -1, -1, -1,
1192 -1, 12, -1, -1, -1, -1, 17, 18, -1, -1,
1193 -1, -1, -1, -1, -1, -1, -1, -1, -1, 30,
1194 -1, -1, -1, -1, -1, -1, -1, 38, -1, -1,
1195 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1196 -1, 3, -1, -1, -1, -1, -1, -1, -1, -1,
1197 12, -1, -1, -1, -1, 17, 18, -1, -1, -1,
1198 -1, 72, 73, 74, 75, 76, -1, -1, 30, -1,
1199 -1, -1, -1, -1, -1, -1, 38, -1, -1, -1,
1200 -1, -1, -1, 94, -1, 96, -1, 98, 99, 100,
1201 101, -1, -1, -1, 105, 106, 107, 108, 109, 110,
1202 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
1203 72, 73, 74, 75, 76, -1, -1, -1, -1, -1,
1204 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1205 -1, -1, 94, -1, 96, -1, 98, 99, 100, 101,
1206 -1, -1, -1, 105, 106, 107, 108, 109, 110, 111,
1207 112, 113, 114, 115, 116, 117, 118, 119, 120, 3,
1208 -1, -1, -1, -1, -1, -1, -1, -1, 12, -1,
1209 -1, -1, -1, 17, 18, -1, -1, -1, -1, -1,
1210 -1, -1, -1, -1, -1, -1, 30, -1, -1, -1,
1211 -1, -1, -1, -1, 38, -1, -1, -1, -1, -1,
1212 -1, -1, -1, -1, -1, -1, -1, -1, 3, -1,
1213 -1, -1, -1, -1, -1, -1, -1, 12, -1, -1,
1214 -1, -1, 17, 18, -1, -1, -1, -1, 72, 73,
1215 74, 75, 76, -1, -1, 30, -1, -1, -1, -1,
1216 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1217 94, -1, 96, -1, 98, 99, 100, 101, -1, -1,
1218 -1, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1219 114, 115, 116, 117, 118, 119, 120, 72, 73, 74,
1220 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
1221 -1, -1, -1, -1, -1, -1, -1, -1, -1, 94,
1222 -1, 96, -1, 98, 99, 100, 101, -1, -1, -1,
1223 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1224 115, 116, 117, 118, 119, 120, 4, 5, 6, 7,
1225 8, 9, 10, 11, -1, -1, -1, -1, -1, 17,
1226 -1, 19, 20, 21, 22, 23, 24, 25, 26, -1,
1227 -1, -1, 30, 4, 5, 6, 7, 8, 9, 10,
1228 11, -1, -1, -1, -1, 43, 17, -1, 19, 20,
1229 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
1230 4, 5, 6, 7, 8, 9, 10, 11, -1, -1,
1231 -1, -1, -1, 17, -1, 19, 20, 21, 22, 23,
1232 24, 25, 26, -1, -1, -1, 30, -1, -1, -1,
1233 -1, -1, 90, 91, 92, 93, -1, -1, -1, -1,
1234 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1235 4, 5, 6, 7, 8, 9, 10, 11, -1, 90,
1236 91, 92, 93, 17, -1, 19, 20, 21, 22, 23,
1237 24, 25, 26, -1, -1, -1, 30, 4, 5, 6,
1238 7, 8, 9, 10, 11, -1, 90, 91, 92, 93,
1239 17, -1, 19, 20, 21, 22, 23, 24, 25, 26,
1240 -1, -1, -1, 30, 4, 5, 6, 7, 8, 9,
1241 10, 11, -1, -1, -1, -1, -1, 17, -1, 19,
1242 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
1243 30, -1, -1, -1, -1, -1, 90, 91, 92, 93,
1244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1245 -1, -1, -1, -1, 4, 5, 6, 7, 8, 9,
1246 10, 11, -1, 90, 91, 92, 93, 17, -1, 19,
1247 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
1248 30, 4, 5, 6, 7, 8, 9, 10, 11, -1,
1249 90, 91, 92, 93, -1, -1, 19, 20, 21, 22,
1250 23, 24, 25, 26, 39, -1, -1, 30, -1, -1,
1251 -1, -1, -1, 48, 49, 50, 51, 52, 53, 54,
1252 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1253 65, -1, -1, -1, 39, -1, 71, -1, -1, -1,
1254 90, 91, 92, 48, 49, 50, 51, 52, 53, 54,
1255 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1256 65, -1, 40, -1, -1, -1, 71, 90, 91, 92,
1257 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
1258 58, 59, 60, 61, 62, 63, 64, 65, 41, -1,
1259 -1, -1, -1, 71, -1, 48, 49, 50, 51, 52,
1260 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
1261 63, 64, 65, 41, -1, -1, -1, -1, 71, -1,
1262 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
1263 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
1264 -1, -1, -1, 71, 48, 49, 50, 51, 52, 53,
1265 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1266 64, 65, -1, -1, -1, -1, -1, 71, 48, 49,
1267 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
1268 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
1269 -1, 71, 48, 49, 50, 51, 52, 53, 54, 55,
1270 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
1271 -1, -1, -1, -1, -1, 71, 48, 49, 50, 51,
1272 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
1273 62, 63, 64, 65, -1, -1, -1, -1, -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, 185, 186, 187, 188, 189, 190, 192, 194, 195,
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 186, 192, 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 187, 188, 192, 200, 206, 207, 135, 135, 135, 208,
1295 3, 6, 10, 12, 17, 160, 161, 167, 34, 216,
1296 50, 250, 251, 30, 185, 0, 139, 135, 193, 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, 191,
1318 192, 191, 135, 201, 202, 98, 99, 100, 101, 102,
1319 103, 104, 222, 223, 224, 237, 238, 244, 245, 246,
1320 135, 212, 193, 213, 249, 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, 197, 197, 37, 196, 197,
1324 196, 38, 135, 46, 222, 38, 37, 33, 212, 211,
1325 34, 181, 39, 40, 39, 40, 46, 40, 43, 193,
1326 227, 31, 33, 35, 38, 134, 193, 203, 204, 219,
1327 239, 240, 241, 250, 193, 135, 247, 248, 18, 240,
1328 241, 43, 223, 203, 39, 135, 40, 38, 39, 135,
1329 156, 157, 158, 156, 156, 38, 165, 198, 199, 193,
1330 193, 212, 27, 28, 29, 33, 34, 162, 163, 43,
1331 3, 6, 10, 12, 13, 14, 15, 16, 17, 39,
1332 217, 218, 220, 221, 45, 135, 34, 39, 211, 17,
1333 70, 192, 211, 70, 203, 202, 46, 37, 30, 93,
1334 166, 203, 203, 71, 133, 46, 37, 38, 32, 46,
1335 38, 37, 40, 37, 37, 39, 193, 135, 152, 153,
1336 39, 39, 40, 41, 33, 41, 209, 43, 199, 135,
1337 37, 41, 39, 40, 219, 39, 39, 39, 27, 96,
1338 114, 203, 226, 228, 229, 230, 231, 251, 39, 39,
1339 203, 203, 239, 193, 250, 249, 248, 39, 40, 156,
1340 156, 40, 41, 37, 39, 220, 41, 218, 220, 46,
1341 211, 211, 17, 18, 231, 234, 38, 38, 226, 203,
1342 41, 40, 242, 193, 39, 154, 135, 33, 38, 220,
1343 250, 162, 38, 203, 219, 203, 70, 239, 243, 39,
1344 37, 39, 33, 70, 219, 40, 40, 232, 39, 40,
1345 40, 32, 38, 203, 193, 225, 226, 227, 233, 251,
1346 39, 239, 33, 39, 235, 236, 239, 39, 40, 226,
1347 39, 41, 39, 40, 225, 220, 39, 239
1348 };
1349
1350 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1351 static const unsigned char yyr1[] =
1352 {
1353 0, 132, 133, 133, 133, 133, 133, 133, 133, 133,
1354 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
1355 134, 134, 134, 134, 135, 135, 135, 135, 135, 135,
1356 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1357 135, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1358 136, 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, 137, 137, 138, 138, 139, 139, 139,
1370 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
1371 140, 141, 141, 142, 142, 142, 142, 142, 142, 142,
1372 142, 143, 143, 144, 144, 145, 145, 145, 146, 146,
1373 147, 147, 148, 148, 148, 149, 149, 150, 150, 150,
1374 150, 150, 150, 151, 151, 152, 152, 153, 153, 154,
1375 154, 155, 155, 156, 156, 156, 156, 156, 156, 156,
1376 156, 156, 156, 157, 157, 158, 158, 159, 160, 161,
1377 161, 161, 161, 162, 162, 163, 163, 163, 163, 163,
1378 164, 165, 165, 165, 165, 165, 165, 166, 166, 167,
1379 167, 168, 168, 168, 169, 169, 169, 169, 170, 170,
1380 170, 171, 171, 171, 171, 171, 171, 171, 171, 172,
1381 172, 173, 173, 173, 174, 174, 174, 174, 175, 175,
1382 175, 175, 175, 176, 176, 177, 177, 177, 178, 178,
1383 178, 179, 179, 180, 180, 181, 181, 182, 183, 184,
1384 184, 185, 185, 186, 186, 187, 187, 188, 188, 189,
1385 189, 189, 189, 190, 190, 191, 191, 191, 191, 192,
1386 192, 192, 192, 193, 193, 194, 195, 196, 196, 197,
1387 198, 198, 199, 200, 201, 201, 202, 202, 203, 203,
1388 203, 203, 203, 203, 204, 204, 204, 204, 205, 206,
1389 207, 208, 208, 209, 209, 210, 210, 211, 211, 212,
1390 212, 213, 213, 214, 214, 215, 215, 216, 216, 216,
1391 217, 217, 218, 218, 219, 220, 221, 221, 221, 221,
1392 221, 221, 221, 221, 221, 222, 222, 223, 223, 223,
1393 223, 223, 224, 224, 225, 225, 225, 226, 226, 226,
1394 226, 226, 227, 227, 228, 229, 230, 231, 231, 231,
1395 231, 231, 231, 231, 231, 231, 231, 232, 232, 233,
1396 233, 234, 234, 235, 235, 236, 236, 237, 238, 239,
1397 239, 239, 240, 240, 241, 241, 241, 241, 241, 241,
1398 241, 241, 242, 242, 243, 243, 244, 245, 245, 246,
1399 247, 247, 248, 249, 249, 250, 250, 251
1400 };
1401
1402 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
1403 static const unsigned char yyr2[] =
1404 {
1405 0, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1406 1, 1, 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, 0, 1, 1, 2, 1, 1, 1,
1422 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1423 3, 2, 3, 2, 2, 1, 2, 2, 2, 1,
1424 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1425 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1426 1, 1, 1, 6, 2, 0, 1, 1, 3, 0,
1427 1, 1, 2, 3, 2, 3, 5, 2, 4, 1,
1428 1, 1, 4, 0, 1, 1, 3, 6, 1, 1,
1429 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
1430 3, 1, 1, 2, 4, 4, 2, 2, 1, 1,
1431 1, 2, 2, 2, 1, 1, 1, 1, 1, 1,
1432 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1433 1, 1, 1, 2, 1, 1, 2, 2, 0, 1,
1434 2, 1, 2, 0, 1, 0, 1, 1, 0, 1,
1435 2, 3, 4, 0, 4, 1, 2, 2, 3, 0,
1436 2, 1, 2, 1, 1, 5, 7, 5, 7, 6,
1437 7, 6, 5, 1, 2, 0, 1, 1, 3, 1,
1438 2, 4, 3, 3, 2, 4, 4, 1, 1, 3,
1439 1, 2, 3, 4, 1, 3, 1, 3, 1, 4,
1440 3, 3, 2, 5, 1, 1, 1, 1, 2, 2,
1441 2, 0, 1, 0, 7, 0, 7, 0, 3, 0,
1442 1, 1, 2, 1, 2, 4, 5, 7, 8, 13,
1443 1, 3, 2, 4, 2, 1, 1, 1, 1, 1,
1444 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
1445 1, 1, 3, 6, 1, 2, 1, 1, 1, 1,
1446 1, 1, 3, 4, 6, 8, 5, 1, 1, 1,
1447 1, 1, 1, 1, 1, 1, 1, 0, 2, 1,
1448 3, 1, 1, 0, 1, 1, 3, 3, 3, 1,
1449 1, 3, 5, 6, 1, 1, 1, 1, 1, 1,
1450 1, 1, 0, 2, 1, 3, 3, 1, 1, 3,
1451 1, 3, 4, 1, 3, 0, 1, 1
1452 };
1453
1454
1455 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
1456 static const unsigned char yydprec[] =
1457 {
1458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1472 0, 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
1505 };
1506
1507 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
1508 static const unsigned char yymerger[] =
1509 {
1510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1518 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1524 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1545 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1556 0, 0, 0, 0, 0, 0, 0, 0
1557 };
1558
1559 /* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
1560 in the case of predicates. */
1561 static const yybool yyimmediate[] =
1562 {
1563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1569 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1588 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1598 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1599 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1609 0, 0, 0, 0, 0, 0, 0, 0
1610 };
1611
1612 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
1613 list of conflicting reductions corresponding to action entry for
1614 state STATE-NUM in yytable. 0 means no conflicts. The list in
1615 yyconfl is terminated by a rule number of 0. */
1616 static const unsigned short int yyconflp[] =
1617 {
1618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1623 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1624 0, 0, 0, 0, 0, 5, 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, 259, 0, 0, 0,
1648 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1667 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1677 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0,
1681 9, 11, 13, 15, 17, 19, 21, 23, 25, 27,
1682 29, 31, 33, 35, 37, 39, 41, 43, 45, 47,
1683 49, 51, 53, 55, 57, 59, 61, 63, 65, 67,
1684 69, 71, 73, 75, 77, 79, 81, 83, 85, 87,
1685 89, 91, 93, 95, 97, 99, 101, 103, 105, 107,
1686 109, 111, 113, 115, 117, 119, 121, 123, 125, 127,
1687 129, 131, 133, 135, 137, 139, 141, 143, 145, 147,
1688 149, 151, 153, 155, 157, 159, 161, 163, 165, 167,
1689 169, 171, 173, 0, 175, 0, 177, 179, 181, 183,
1690 185, 187, 189, 191, 193, 195, 197, 199, 201, 203,
1691 205, 207, 209, 211, 213, 215, 217, 219, 221, 223,
1692 225, 227, 229, 231, 233, 235, 237, 239, 241, 0,
1693 243, 245, 0, 247, 249, 251, 253, 0, 0, 0,
1694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1695 0, 0, 0, 0, 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, 1, 0, 0, 0,
1878 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
1879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1880 0, 0, 0, 0, 0, 0, 0, 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 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1889 0, 0, 0, 257, 0, 0, 0, 0, 0, 0,
1890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891 0, 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, 0, 0, 0,
1920 0, 0, 0, 0, 0, 261, 0, 0, 0, 0,
1921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0, 0, 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, 329, 0, 450, 0, 450,
1930 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1931 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1932 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1933 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1934 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1935 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1936 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1937 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1938 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1939 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1940 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1941 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1942 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1943 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1944 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1945 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1946 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1947 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1948 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1949 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1950 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1951 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1952 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1953 0, 450, 0, 450, 0, 450, 0, 450, 0, 450,
1954 0, 450, 0, 450, 0, 267, 0, 267, 0, 267,
1955 0, 226, 0, 353, 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 312:
3173 #line 986 "src/parser_proc_grammar.y" /* glr.c:816 */
3174 {
3175 (*(struct psi_decl **)(&(*yyvalp))) = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3176 (*(struct psi_decl **)(&(*yyvalp)))->abi = psi_decl_abi_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text);
3177 }
3178 #line 3179 "src/parser_proc.c" /* glr.c:816 */
3179 break;
3180
3181 case 315:
3182 #line 998 "src/parser_proc_grammar.y" /* glr.c:816 */
3183 {
3184 (*(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)));
3185 if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3186 (*(struct psi_decl **)(&(*yyvalp)))->func->var->pointer_level += 1;
3187 (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3188 }
3189 }
3190 #line 3191 "src/parser_proc.c" /* glr.c:816 */
3191 break;
3192
3193 case 316:
3194 #line 1005 "src/parser_proc_grammar.y" /* glr.c:816 */
3195 {
3196 (*(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)));
3197 (*(struct psi_decl **)(&(*yyvalp)))->varargs = 1;
3198 if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3199 (*(struct psi_decl **)(&(*yyvalp)))->func->var->pointer_level += 1;
3200 (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3201 }
3202 }
3203 #line 3204 "src/parser_proc.c" /* glr.c:816 */
3204 break;
3205
3206 case 317:
3207 #line 1016 "src/parser_proc_grammar.y" /* glr.c:816 */
3208 {
3209 (*(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)));
3210 if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3211 (*(struct psi_decl **)(&(*yyvalp)))->func->var->pointer_level += 1;
3212 (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3213 }
3214 }
3215 #line 3216 "src/parser_proc.c" /* glr.c:816 */
3216 break;
3217
3218 case 318:
3219 #line 1023 "src/parser_proc_grammar.y" /* glr.c:816 */
3220 {
3221 (*(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)));
3222 (*(struct psi_decl **)(&(*yyvalp)))->varargs = 1;
3223 if ((*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3224 (*(struct psi_decl **)(&(*yyvalp)))->func->var->pointer_level += 1;
3225 (*(struct psi_decl **)(&(*yyvalp)))->func->var->array_size = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3226 }
3227 }
3228 #line 3229 "src/parser_proc.c" /* glr.c:816 */
3229 break;
3230
3231 case 319:
3232 #line 1034 "src/parser_proc_grammar.y" /* glr.c:816 */
3233 {
3234 (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
3235 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3236 (*(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));
3237 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3238 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3239 }
3240 #line 3241 "src/parser_proc.c" /* glr.c:816 */
3241 break;
3242
3243 case 320:
3244 #line 1041 "src/parser_proc_grammar.y" /* glr.c:816 */
3245 {
3246 (void) (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
3247 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3248 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
3249 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),
3250 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)
3251 );
3252 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
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 321:
3260 #line 1052 "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 322:
3276 #line 1063 "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 (-4)].yystate.yysemantics.yysval))->type, (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval))->text),
3282 psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text, 0, 0)
3283 );
3284 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].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 1078 "src/parser_proc_grammar.y" /* glr.c:816 */
3293 {
3294 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
3295 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),
3296 psi_decl_var_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, 0, 0)
3297 );
3298 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3299 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3300 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3301 }
3302 #line 3303 "src/parser_proc.c" /* glr.c:816 */
3303 break;
3304
3305 case 325:
3306 #line 1090 "src/parser_proc_grammar.y" /* glr.c:816 */
3307 {
3308 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
3309 }
3310 #line 3311 "src/parser_proc.c" /* glr.c:816 */
3311 break;
3312
3313 case 326:
3314 #line 1093 "src/parser_proc_grammar.y" /* glr.c:816 */
3315 {
3316 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
3317 }
3318 #line 3319 "src/parser_proc.c" /* glr.c:816 */
3319 break;
3320
3321 case 327:
3322 #line 1096 "src/parser_proc_grammar.y" /* glr.c:816 */
3323 {
3324 (*(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)));
3325 }
3326 #line 3327 "src/parser_proc.c" /* glr.c:816 */
3327 break;
3328
3329 case 328:
3330 #line 1099 "src/parser_proc_grammar.y" /* glr.c:816 */
3331 {
3332 (*(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)));
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_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
3341 psi_decl_type_init(PSI_T_FUNCTION, (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->var->name),
3342 psi_decl_var_copy((*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->var)
3343 );
3344 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->func->token);
3345 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->real.func = (*(struct psi_decl **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3346 }
3347 #line 3348 "src/parser_proc.c" /* glr.c:816 */
3348 break;
3349
3350 case 330:
3351 #line 1113 "src/parser_proc_grammar.y" /* glr.c:816 */
3352 {
3353 (*(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)));
3354 }
3355 #line 3356 "src/parser_proc.c" /* glr.c:816 */
3356 break;
3357
3358 case 331:
3359 #line 1116 "src/parser_proc_grammar.y" /* glr.c:816 */
3360 {
3361 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3362 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
3363 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),
3364 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)
3365 );
3366 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3367 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3368 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3369 }
3370 #line 3371 "src/parser_proc.c" /* glr.c:816 */
3371 break;
3372
3373 case 332:
3374 #line 1126 "src/parser_proc_grammar.y" /* glr.c:816 */
3375 {
3376 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3377 (*(struct psi_decl_arg **)(&(*yyvalp))) = psi_decl_arg_init(
3378 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),
3379 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)
3380 );
3381 (*(struct psi_decl_arg **)(&(*yyvalp)))->type->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3382 (*(struct psi_decl_arg **)(&(*yyvalp)))->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3383 (*(struct psi_decl_arg **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3384 }
3385 #line 3386 "src/parser_proc.c" /* glr.c:816 */
3386 break;
3387
3388 case 333:
3389 #line 1139 "src/parser_proc_grammar.y" /* glr.c:816 */
3390 {
3391 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3392 (*(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)));
3393 (*(struct psi_decl_var **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3394 }
3395 #line 3396 "src/parser_proc.c" /* glr.c:816 */
3396 break;
3397
3398 case 334:
3399 #line 1144 "src/parser_proc_grammar.y" /* glr.c:816 */
3400 {
3401 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3402 (*(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)));
3403 (*(struct psi_decl_var **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3404 }
3405 #line 3406 "src/parser_proc.c" /* glr.c:816 */
3406 break;
3407
3408 case 335:
3409 #line 1152 "src/parser_proc_grammar.y" /* glr.c:816 */
3410 {
3411 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3412 (*(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)));
3413 (*(struct psi_decl_union **)(&(*yyvalp)))->align = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).pos;
3414 (*(struct psi_decl_union **)(&(*yyvalp)))->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
3415 (*(struct psi_decl_union **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3416 }
3417 #line 3418 "src/parser_proc.c" /* glr.c:816 */
3418 break;
3419
3420 case 336:
3421 #line 1162 "src/parser_proc_grammar.y" /* glr.c:816 */
3422 {
3423 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3424 (*(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)));
3425 (*(struct psi_decl_struct **)(&(*yyvalp)))->align = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).pos;
3426 (*(struct psi_decl_struct **)(&(*yyvalp)))->size = (*(struct psi_layout*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)).len;
3427 (*(struct psi_decl_struct **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3428 }
3429 #line 3430 "src/parser_proc.c" /* glr.c:816 */
3430 break;
3431
3432 case 337:
3433 #line 1172 "src/parser_proc_grammar.y" /* glr.c:816 */
3434 {
3435 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
3436 }
3437 #line 3438 "src/parser_proc.c" /* glr.c:816 */
3438 break;
3439
3440 case 339:
3441 #line 1179 "src/parser_proc_grammar.y" /* glr.c:816 */
3442 {
3443 (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
3444 }
3445 #line 3446 "src/parser_proc.c" /* glr.c:816 */
3446 break;
3447
3448 case 340:
3449 #line 1185 "src/parser_proc_grammar.y" /* glr.c:816 */
3450 {
3451 (*(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)));
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))) = psi_plist_add((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), &(*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
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 **)(&(*yyvalp))) = (*(struct psi_decl_arg **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
3468 (*(struct psi_decl_arg **)(&(*yyvalp)))->layout = (*(struct psi_layout **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
3469 psi_parser_proc_add_from_typedef(P, (*(struct psi_decl_arg **)(&(*yyvalp))));
3470 }
3471 #line 3472 "src/parser_proc.c" /* glr.c:816 */
3472 break;
3473
3474 case 343:
3475 #line 1202 "src/parser_proc_grammar.y" /* glr.c:816 */
3476 {
3477 (*(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)));
3478 (*(struct psi_decl_enum **)(&(*yyvalp)))->token = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
3479 }
3480 #line 3481 "src/parser_proc.c" /* glr.c:816 */
3481 break;
3482
3483 case 344:
3484 #line 1209 "src/parser_proc_grammar.y" /* glr.c:816 */
3485 {
3486 (*(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)));
3487 }
3488 #line 3489 "src/parser_proc.c" /* glr.c:816 */
3489 break;
3490
3491 case 345:
3492 #line 1212 "src/parser_proc_grammar.y" /* glr.c:816 */
3493 {
3494 (*(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)));
3495 }
3496 #line 3497 "src/parser_proc.c" /* glr.c:816 */
3497 break;
3498
3499 case 346:
3500 #line 1218 "src/parser_proc_grammar.y" /* glr.c:816 */
3501 {
3502 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3503 (*(struct psi_decl_enum_item **)(&(*yyvalp))) = psi_decl_enum_item_init((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->text, NULL);
3504 (*(struct psi_decl_enum_item **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3505 }
3506 #line 3507 "src/parser_proc.c" /* glr.c:816 */
3507 break;
3508
3509 case 347:
3510 #line 1223 "src/parser_proc_grammar.y" /* glr.c:816 */
3511 {
3512 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
3513 (*(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)));
3514 (*(struct psi_decl_enum_item **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3515 }
3516 #line 3517 "src/parser_proc.c" /* glr.c:816 */
3517 break;
3518
3519 case 348:
3520 #line 1231 "src/parser_proc_grammar.y" /* glr.c:816 */
3521 {
3522 (*(struct psi_num_exp **)(&(*yyvalp))) = psi_num_exp_init_num((*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3523 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_number **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
3524 }
3525 #line 3526 "src/parser_proc.c" /* glr.c:816 */
3526 break;
3527
3528 case 349:
3529 #line 1235 "src/parser_proc_grammar.y" /* glr.c:816 */
3530 {
3531 (*(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)));
3532 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_decl_type **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval))->token);
3533 }
3534 #line 3535 "src/parser_proc.c" /* glr.c:816 */
3535 break;
3536
3537 case 350:
3538 #line 1239 "src/parser_proc_grammar.y" /* glr.c:816 */
3539 {
3540 (*(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)));
3541 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3542 }
3543 #line 3544 "src/parser_proc.c" /* glr.c:816 */
3544 break;
3545
3546 case 351:
3547 #line 1243 "src/parser_proc_grammar.y" /* glr.c:816 */
3548 {
3549 (*(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)));
3550 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3551 }
3552 #line 3553 "src/parser_proc.c" /* glr.c:816 */
3553 break;
3554
3555 case 352:
3556 #line 1247 "src/parser_proc_grammar.y" /* glr.c:816 */
3557 {
3558 (*(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)));
3559 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3560 }
3561 #line 3562 "src/parser_proc.c" /* glr.c:816 */
3562 break;
3563
3564 case 353:
3565 #line 1251 "src/parser_proc_grammar.y" /* glr.c:816 */
3566 {
3567 (*(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)));
3568 (*(struct psi_num_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
3569 }
3570 #line 3571 "src/parser_proc.c" /* glr.c:816 */
3571 break;
3572
3573 case 354:
3574 #line 1258 "src/parser_proc_grammar.y" /* glr.c:816 */
3575 {
3576 (*(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);
3577 (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3578 }
3579 #line 3580 "src/parser_proc.c" /* glr.c:816 */
3580 break;
3581
3582 case 355:
3583 #line 1262 "src/parser_proc_grammar.y" /* glr.c:816 */
3584 {
3585 (*(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);
3586 (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3587 }
3588 #line 3589 "src/parser_proc.c" /* glr.c:816 */
3589 break;
3590
3591 case 356:
3592 #line 1266 "src/parser_proc_grammar.y" /* glr.c:816 */
3593 {
3594 (*(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);
3595 (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3596 }
3597 #line 3598 "src/parser_proc.c" /* glr.c:816 */
3598 break;
3599
3600 case 357:
3601 #line 1270 "src/parser_proc_grammar.y" /* glr.c:816 */
3602 {
3603 (*(struct psi_number **)(&(*yyvalp))) = psi_number_init(PSI_T_NAME, (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)), 0);
3604 (*(struct psi_number **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))->token);
3605 }
3606 #line 3607 "src/parser_proc.c" /* glr.c:816 */
3607 break;
3608
3609 case 358:
3610 #line 1277 "src/parser_proc_grammar.y" /* glr.c:816 */
3611 {
3612 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3613 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3614 } else {
3615 char digest[17];
3616
3617 psi_token_hash((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), digest);
3618 (*(struct psi_token **)(&(*yyvalp))) = psi_token_append("@", psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 1, digest);
3619 }
3620 }
3621 #line 3622 "src/parser_proc.c" /* glr.c:816 */
3622 break;
3623
3624 case 359:
3625 #line 1290 "src/parser_proc_grammar.y" /* glr.c:816 */
3626 {
3627 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3628 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3629 } else {
3630 char digest[17];
3631
3632 psi_token_hash((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), digest);
3633 (*(struct psi_token **)(&(*yyvalp))) = psi_token_append("@", psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 1, digest);
3634 }
3635 }
3636 #line 3637 "src/parser_proc.c" /* glr.c:816 */
3637 break;
3638
3639 case 360:
3640 #line 1303 "src/parser_proc_grammar.y" /* glr.c:816 */
3641 {
3642 if ((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval))) {
3643 (*(struct psi_token **)(&(*yyvalp))) = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3644 } else {
3645 char digest[17];
3646
3647 psi_token_hash((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)), digest);
3648 (*(struct psi_token **)(&(*yyvalp))) = psi_token_append("@", psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))), 1, digest);
3649 }
3650 }
3651 #line 3652 "src/parser_proc.c" /* glr.c:816 */
3652 break;
3653
3654 case 361:
3655 #line 1316 "src/parser_proc_grammar.y" /* glr.c:816 */
3656 {
3657 (*(struct psi_token **)(&(*yyvalp))) = NULL;
3658 }
3659 #line 3660 "src/parser_proc.c" /* glr.c:816 */
3660 break;
3661
3662 case 362:
3663 #line 1319 "src/parser_proc_grammar.y" /* glr.c:816 */
3664 {
3665 (*(struct psi_token **)(&(*yyvalp))) = (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3666 (*(struct psi_token **)(&(*yyvalp)))->type = PSI_T_NAME;
3667 }
3668 #line 3669 "src/parser_proc.c" /* glr.c:816 */
3669 break;
3670
3671 case 363:
3672 #line 1326 "src/parser_proc_grammar.y" /* glr.c:816 */
3673 {
3674 (*(struct psi_layout **)(&(*yyvalp))) = NULL;
3675 }
3676 #line 3677 "src/parser_proc.c" /* glr.c:816 */
3677 break;
3678
3679 case 364:
3680 #line 1329 "src/parser_proc_grammar.y" /* glr.c:816 */
3681 {
3682 (*(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));
3683 }
3684 #line 3685 "src/parser_proc.c" /* glr.c:816 */
3685 break;
3686
3687 case 365:
3688 #line 1335 "src/parser_proc_grammar.y" /* glr.c:816 */
3689 {
3690 (*(struct psi_layout*)(&(*yyvalp))).pos = 0;
3691 (*(struct psi_layout*)(&(*yyvalp))).len = 0;
3692 }
3693 #line 3694 "src/parser_proc.c" /* glr.c:816 */
3694 break;
3695
3696 case 366:
3697 #line 1339 "src/parser_proc_grammar.y" /* glr.c:816 */
3698 {
3699 (*(struct psi_layout*)(&(*yyvalp))).pos = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->text);
3700 (*(struct psi_layout*)(&(*yyvalp))).len = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text);
3701 }
3702 #line 3703 "src/parser_proc.c" /* glr.c:816 */
3703 break;
3704
3705 case 367:
3706 #line 1346 "src/parser_proc_grammar.y" /* glr.c:816 */
3707 {
3708 (*(size_t*)(&(*yyvalp))) = 0;
3709 }
3710 #line 3711 "src/parser_proc.c" /* glr.c:816 */
3711 break;
3712
3713 case 368:
3714 #line 1349 "src/parser_proc_grammar.y" /* glr.c:816 */
3715 {
3716 (*(size_t*)(&(*yyvalp))) = atol((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval))->text);
3717 }
3718 #line 3719 "src/parser_proc.c" /* glr.c:816 */
3719 break;
3720
3721 case 369:
3722 #line 1355 "src/parser_proc_grammar.y" /* glr.c:816 */
3723 {
3724 (*(size_t*)(&(*yyvalp))) = 0;
3725 }
3726 #line 3727 "src/parser_proc.c" /* glr.c:816 */
3727 break;
3728
3729 case 370:
3730 #line 1358 "src/parser_proc_grammar.y" /* glr.c:816 */
3731 {
3732 (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3733 }
3734 #line 3735 "src/parser_proc.c" /* glr.c:816 */
3735 break;
3736
3737 case 372:
3738 #line 1365 "src/parser_proc_grammar.y" /* glr.c:816 */
3739 {
3740 (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
3741 }
3742 #line 3743 "src/parser_proc.c" /* glr.c:816 */
3743 break;
3744
3745 case 373:
3746 #line 1371 "src/parser_proc_grammar.y" /* glr.c:816 */
3747 {
3748 (*(size_t*)(&(*yyvalp))) = 1;
3749 }
3750 #line 3751 "src/parser_proc.c" /* glr.c:816 */
3751 break;
3752
3753 case 374:
3754 #line 1374 "src/parser_proc_grammar.y" /* glr.c:816 */
3755 {
3756 (*(size_t*)(&(*yyvalp))) = (*(size_t*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)) + 1;
3757 }
3758 #line 3759 "src/parser_proc.c" /* glr.c:816 */
3759 break;
3760
3761 case 375:
3762 #line 1386 "src/parser_proc_grammar.y" /* glr.c:816 */
3763 {
3764 (*(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)));
3765 }
3766 #line 3767 "src/parser_proc.c" /* glr.c:816 */
3767 break;
3768
3769 case 376:
3770 #line 1389 "src/parser_proc_grammar.y" /* glr.c:816 */
3771 {
3772 (*(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)));
3773 (*(struct psi_impl_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->static_memory = 1;
3774 }
3775 #line 3776 "src/parser_proc.c" /* glr.c:816 */
3776 break;
3777
3778 case 377:
3779 #line 1396 "src/parser_proc_grammar.y" /* glr.c:816 */
3780 {
3781 (*(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)));
3782 (*(struct psi_impl_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
3783 (*(struct psi_impl_func **)(&(*yyvalp)))->return_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval));
3784 }
3785 #line 3786 "src/parser_proc.c" /* glr.c:816 */
3786 break;
3787
3788 case 378:
3789 #line 1401 "src/parser_proc_grammar.y" /* glr.c:816 */
3790 {
3791 (*(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)));
3792 (*(struct psi_impl_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
3793 (*(struct psi_impl_func **)(&(*yyvalp)))->return_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval));
3794 }
3795 #line 3796 "src/parser_proc.c" /* glr.c:816 */
3796 break;
3797
3798 case 379:
3799 #line 1406 "src/parser_proc_grammar.y" /* glr.c:816 */
3800 {
3801 (*(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)));
3802 (*(struct psi_impl_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval)));
3803 (*(struct psi_impl_func **)(&(*yyvalp)))->return_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-11)].yystate.yysemantics.yysval));
3804 (*(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);
3805 (*(struct psi_impl_func **)(&(*yyvalp)))->vararg->var->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
3806 }
3807 #line 3808 "src/parser_proc.c" /* glr.c:816 */
3808 break;
3809
3810 case 380:
3811 #line 1416 "src/parser_proc_grammar.y" /* glr.c:816 */
3812 {
3813 (*(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)));
3814 }
3815 #line 3816 "src/parser_proc.c" /* glr.c:816 */
3816 break;
3817
3818 case 381:
3819 #line 1419 "src/parser_proc_grammar.y" /* glr.c:816 */
3820 {
3821 (*(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)));
3822 }
3823 #line 3824 "src/parser_proc.c" /* glr.c:816 */
3824 break;
3825
3826 case 382:
3827 #line 1425 "src/parser_proc_grammar.y" /* glr.c:816 */
3828 {
3829 (*(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);
3830 }
3831 #line 3832 "src/parser_proc.c" /* glr.c:816 */
3832 break;
3833
3834 case 383:
3835 #line 1428 "src/parser_proc_grammar.y" /* glr.c:816 */
3836 {
3837 (*(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)));
3838 }
3839 #line 3840 "src/parser_proc.c" /* glr.c:816 */
3840 break;
3841
3842 case 384:
3843 #line 1434 "src/parser_proc_grammar.y" /* glr.c:816 */
3844 {
3845 (*(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)));
3846 (*(struct psi_impl_var **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3847 }
3848 #line 3849 "src/parser_proc.c" /* glr.c:816 */
3849 break;
3850
3851 case 385:
3852 #line 1441 "src/parser_proc_grammar.y" /* glr.c:816 */
3853 {
3854 (*(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);
3855 (*(struct psi_impl_type **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3856 }
3857 #line 3858 "src/parser_proc.c" /* glr.c:816 */
3858 break;
3859
3860 case 395:
3861 #line 1460 "src/parser_proc_grammar.y" /* glr.c:816 */
3862 {
3863 (*(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)));
3864 }
3865 #line 3866 "src/parser_proc.c" /* glr.c:816 */
3866 break;
3867
3868 case 396:
3869 #line 1463 "src/parser_proc_grammar.y" /* glr.c:816 */
3870 {
3871 (*(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)));
3872 }
3873 #line 3874 "src/parser_proc.c" /* glr.c:816 */
3874 break;
3875
3876 case 397:
3877 #line 1469 "src/parser_proc_grammar.y" /* glr.c:816 */
3878 {
3879 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_return_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3880 }
3881 #line 3882 "src/parser_proc.c" /* glr.c:816 */
3882 break;
3883
3884 case 398:
3885 #line 1472 "src/parser_proc_grammar.y" /* glr.c:816 */
3886 {
3887 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_let_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3888 }
3889 #line 3890 "src/parser_proc.c" /* glr.c:816 */
3890 break;
3891
3892 case 399:
3893 #line 1475 "src/parser_proc_grammar.y" /* glr.c:816 */
3894 {
3895 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_set_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3896 }
3897 #line 3898 "src/parser_proc.c" /* glr.c:816 */
3898 break;
3899
3900 case 400:
3901 #line 1478 "src/parser_proc_grammar.y" /* glr.c:816 */
3902 {
3903 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_assert_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3904 }
3905 #line 3906 "src/parser_proc.c" /* glr.c:816 */
3906 break;
3907
3908 case 401:
3909 #line 1481 "src/parser_proc_grammar.y" /* glr.c:816 */
3910 {
3911 (*(struct psi_token ***)(&(*yyvalp))) = (struct psi_token **) (*(struct psi_free_stmt **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3912 }
3913 #line 3914 "src/parser_proc.c" /* glr.c:816 */
3914 break;
3915
3916 case 402:
3917 #line 1487 "src/parser_proc_grammar.y" /* glr.c:816 */
3918 {
3919 (*(struct psi_let_stmt **)(&(*yyvalp))) = psi_let_stmt_init((*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
3920 (*(struct psi_let_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
3921 }
3922 #line 3923 "src/parser_proc.c" /* glr.c:816 */
3923 break;
3924
3925 case 403:
3926 #line 1491 "src/parser_proc_grammar.y" /* glr.c:816 */
3927 {
3928 (*(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))));
3929 (*(struct psi_let_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
3930 (*(struct psi_let_stmt **)(&(*yyvalp)))->exp->is_reference = (*(bool*)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
3931 }
3932 #line 3933 "src/parser_proc.c" /* glr.c:816 */
3933 break;
3934
3935 case 405:
3936 #line 1500 "src/parser_proc_grammar.y" /* glr.c:816 */
3937 {
3938 (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3939 (*(struct psi_let_exp **)(&(*yyvalp)))->is_reference = true;
3940 }
3941 #line 3942 "src/parser_proc.c" /* glr.c:816 */
3942 break;
3943
3944 case 406:
3945 #line 1504 "src/parser_proc_grammar.y" /* glr.c:816 */
3946 {
3947 (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3948 (*(struct psi_let_exp **)(&(*yyvalp)))->is_reference = false;
3949 }
3950 #line 3951 "src/parser_proc.c" /* glr.c:816 */
3951 break;
3952
3953 case 407:
3954 #line 1511 "src/parser_proc_grammar.y" /* glr.c:816 */
3955 {
3956 (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_NULL, NULL);
3957 }
3958 #line 3959 "src/parser_proc.c" /* glr.c:816 */
3959 break;
3960
3961 case 408:
3962 #line 1514 "src/parser_proc_grammar.y" /* glr.c:816 */
3963 {
3964 (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_CALLOC, (*(struct psi_let_calloc **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3965 }
3966 #line 3967 "src/parser_proc.c" /* glr.c:816 */
3967 break;
3968
3969 case 409:
3970 #line 1517 "src/parser_proc_grammar.y" /* glr.c:816 */
3971 {
3972 (*(struct psi_let_exp **)(&(*yyvalp))) = psi_let_exp_init(PSI_LET_CALLBACK, (*(struct psi_let_callback **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
3973 }
3974 #line 3975 "src/parser_proc.c" /* glr.c:816 */
3975 break;
3976
3977 case 410:
3978 #line 1520 "src/parser_proc_grammar.y" /* glr.c:816 */
3979 {
3980 (*(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)));
3981 }
3982 #line 3983 "src/parser_proc.c" /* glr.c:816 */
3983 break;
3984
3985 case 411:
3986 #line 1523 "src/parser_proc_grammar.y" /* glr.c:816 */
3987 {
3988 (*(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)));
3989 }
3990 #line 3991 "src/parser_proc.c" /* glr.c:816 */
3991 break;
3992
3993 case 412:
3994 #line 1529 "src/parser_proc_grammar.y" /* glr.c:816 */
3995 {
3996 (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
3997 (*(struct psi_let_exp **)(&(*yyvalp)))->var = (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
3998 }
3999 #line 4000 "src/parser_proc.c" /* glr.c:816 */
4000 break;
4001
4002 case 413:
4003 #line 1533 "src/parser_proc_grammar.y" /* glr.c:816 */
4004 {
4005 (*(struct psi_let_exp **)(&(*yyvalp))) = (*(struct psi_let_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
4006 (*(struct psi_let_exp **)(&(*yyvalp)))->is_reference = 1;
4007 (*(struct psi_let_exp **)(&(*yyvalp)))->var = (*(struct psi_decl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval));
4008 }
4009 #line 4010 "src/parser_proc.c" /* glr.c:816 */
4010 break;
4011
4012 case 414:
4013 #line 1541 "src/parser_proc_grammar.y" /* glr.c:816 */
4014 {
4015 (*(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)));
4016 (*(struct psi_let_calloc **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
4017 }
4018 #line 4019 "src/parser_proc.c" /* glr.c:816 */
4019 break;
4020
4021 case 415:
4022 #line 1548 "src/parser_proc_grammar.y" /* glr.c:816 */
4023 {
4024 (*(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)));
4025 (*(struct psi_let_callback **)(&(*yyvalp)))->func->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval)));
4026 (*(struct psi_let_callback **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval)));
4027 }
4028 #line 4029 "src/parser_proc.c" /* glr.c:816 */
4029 break;
4030
4031 case 416:
4032 #line 1556 "src/parser_proc_grammar.y" /* glr.c:816 */
4033 {
4034 (*(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)));
4035 (*(struct psi_let_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
4036 (*(struct psi_let_func **)(&(*yyvalp)))->inner = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
4037 }
4038 #line 4039 "src/parser_proc.c" /* glr.c:816 */
4039 break;
4040
4041 case 427:
4042 #line 1577 "src/parser_proc_grammar.y" /* glr.c:816 */
4043 {
4044 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
4045 }
4046 #line 4047 "src/parser_proc.c" /* glr.c:816 */
4047 break;
4048
4049 case 428:
4050 #line 1580 "src/parser_proc_grammar.y" /* glr.c:816 */
4051 {
4052 (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
4053 }
4054 #line 4055 "src/parser_proc.c" /* glr.c:816 */
4055 break;
4056
4057 case 429:
4058 #line 1586 "src/parser_proc_grammar.y" /* glr.c:816 */
4059 {
4060 (*(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)));
4061 }
4062 #line 4063 "src/parser_proc.c" /* glr.c:816 */
4063 break;
4064
4065 case 430:
4066 #line 1589 "src/parser_proc_grammar.y" /* glr.c:816 */
4067 {
4068 (*(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)));
4069 }
4070 #line 4071 "src/parser_proc.c" /* glr.c:816 */
4071 break;
4072
4073 case 433:
4074 #line 1600 "src/parser_proc_grammar.y" /* glr.c:816 */
4075 {
4076 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
4077 }
4078 #line 4079 "src/parser_proc.c" /* glr.c:816 */
4079 break;
4080
4081 case 434:
4082 #line 1603 "src/parser_proc_grammar.y" /* glr.c:816 */
4083 {
4084 (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
4085 }
4086 #line 4087 "src/parser_proc.c" /* glr.c:816 */
4087 break;
4088
4089 case 435:
4090 #line 1609 "src/parser_proc_grammar.y" /* glr.c:816 */
4091 {
4092 (*(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)));
4093 }
4094 #line 4095 "src/parser_proc.c" /* glr.c:816 */
4095 break;
4096
4097 case 436:
4098 #line 1612 "src/parser_proc_grammar.y" /* glr.c:816 */
4099 {
4100 (*(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)));
4101 }
4102 #line 4103 "src/parser_proc.c" /* glr.c:816 */
4103 break;
4104
4105 case 437:
4106 #line 1618 "src/parser_proc_grammar.y" /* glr.c:816 */
4107 {
4108 (*(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))));
4109 (*(struct psi_return_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
4110 }
4111 #line 4112 "src/parser_proc.c" /* glr.c:816 */
4112 break;
4113
4114 case 438:
4115 #line 1625 "src/parser_proc_grammar.y" /* glr.c:816 */
4116 {
4117 (*(struct psi_set_stmt **)(&(*yyvalp))) = psi_set_stmt_init((*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
4118 (*(struct psi_set_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
4119 }
4120 #line 4121 "src/parser_proc.c" /* glr.c:816 */
4121 break;
4122
4123 case 439:
4124 #line 1632 "src/parser_proc_grammar.y" /* glr.c:816 */
4125 {
4126 (*(struct psi_set_exp **)(&(*yyvalp))) = psi_set_exp_init(PSI_SET_FUNC, (*(struct psi_set_func **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
4127 }
4128 #line 4129 "src/parser_proc.c" /* glr.c:816 */
4129 break;
4130
4131 case 440:
4132 #line 1635 "src/parser_proc_grammar.y" /* glr.c:816 */
4133 {
4134 (*(struct psi_set_exp **)(&(*yyvalp))) = psi_set_exp_init(PSI_SET_NUMEXP, (*(struct psi_num_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval)));
4135 }
4136 #line 4137 "src/parser_proc.c" /* glr.c:816 */
4137 break;
4138
4139 case 441:
4140 #line 1638 "src/parser_proc_grammar.y" /* glr.c:816 */
4141 {
4142 (*(struct psi_set_exp **)(&(*yyvalp))) = (*(struct psi_set_exp **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
4143 (*(struct psi_set_exp **)(&(*yyvalp)))->var = (*(struct psi_impl_var **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval));
4144 }
4145 #line 4146 "src/parser_proc.c" /* glr.c:816 */
4146 break;
4147
4148 case 442:
4149 #line 1645 "src/parser_proc_grammar.y" /* glr.c:816 */
4150 {
4151 (*(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)));
4152 (*(struct psi_set_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval)));
4153 (*(struct psi_set_func **)(&(*yyvalp)))->inner = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval));
4154 }
4155 #line 4156 "src/parser_proc.c" /* glr.c:816 */
4156 break;
4157
4158 case 443:
4159 #line 1650 "src/parser_proc_grammar.y" /* glr.c:816 */
4160 {
4161 (*(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)));
4162 (*(struct psi_set_func **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval)));
4163 (*(struct psi_set_func **)(&(*yyvalp)))->recursive = 1;
4164 }
4165 #line 4166 "src/parser_proc.c" /* glr.c:816 */
4166 break;
4167
4168 case 452:
4169 #line 1669 "src/parser_proc_grammar.y" /* glr.c:816 */
4170 {
4171 (*(struct psi_plist **)(&(*yyvalp))) = NULL;
4172 }
4173 #line 4174 "src/parser_proc.c" /* glr.c:816 */
4174 break;
4175
4176 case 453:
4177 #line 1672 "src/parser_proc_grammar.y" /* glr.c:816 */
4178 {
4179 (*(struct psi_plist **)(&(*yyvalp))) = (*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval));
4180 }
4181 #line 4182 "src/parser_proc.c" /* glr.c:816 */
4182 break;
4183
4184 case 454:
4185 #line 1678 "src/parser_proc_grammar.y" /* glr.c:816 */
4186 {
4187 (*(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)));
4188 }
4189 #line 4190 "src/parser_proc.c" /* glr.c:816 */
4190 break;
4191
4192 case 455:
4193 #line 1681 "src/parser_proc_grammar.y" /* glr.c:816 */
4194 {
4195 (*(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)));
4196 }
4197 #line 4198 "src/parser_proc.c" /* glr.c:816 */
4198 break;
4199
4200 case 456:
4201 #line 1687 "src/parser_proc_grammar.y" /* glr.c:816 */
4202 {
4203 (*(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)));
4204 (*(struct psi_assert_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
4205 }
4206 #line 4207 "src/parser_proc.c" /* glr.c:816 */
4207 break;
4208
4209 case 459:
4210 #line 1699 "src/parser_proc_grammar.y" /* glr.c:816 */
4211 {
4212 (*(struct psi_free_stmt **)(&(*yyvalp))) = psi_free_stmt_init((*(struct psi_plist **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval)));
4213 (*(struct psi_free_stmt **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval)));
4214 }
4215 #line 4216 "src/parser_proc.c" /* glr.c:816 */
4216 break;
4217
4218 case 460:
4219 #line 1706 "src/parser_proc_grammar.y" /* glr.c:816 */
4220 {
4221 (*(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)));
4222 }
4223 #line 4224 "src/parser_proc.c" /* glr.c:816 */
4224 break;
4225
4226 case 461:
4227 #line 1709 "src/parser_proc_grammar.y" /* glr.c:816 */
4228 {
4229 (*(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)));
4230 }
4231 #line 4232 "src/parser_proc.c" /* glr.c:816 */
4232 break;
4233
4234 case 462:
4235 #line 1715 "src/parser_proc_grammar.y" /* glr.c:816 */
4236 {
4237 (*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval))->type = PSI_T_NAME;
4238 (*(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)));
4239 (*(struct psi_free_exp **)(&(*yyvalp)))->token = psi_token_copy((*(struct psi_token **)(&((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval)));
4240 }
4241 #line 4242 "src/parser_proc.c" /* glr.c:816 */
4242 break;
4243
4244 case 463:
4245 #line 1723 "src/parser_proc_grammar.y" /* glr.c:816 */
4246 {
4247 (*(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)));
4248 }
4249 #line 4250 "src/parser_proc.c" /* glr.c:816 */
4250 break;
4251
4252 case 464:
4253 #line 1726 "src/parser_proc_grammar.y" /* glr.c:816 */
4254 {
4255 (*(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)));
4256 }
4257 #line 4258 "src/parser_proc.c" /* glr.c:816 */
4258 break;
4259
4260 case 465:
4261 #line 1732 "src/parser_proc_grammar.y" /* glr.c:816 */
4262 {
4263 (*(bool*)(&(*yyvalp))) = false;
4264 }
4265 #line 4266 "src/parser_proc.c" /* glr.c:816 */
4266 break;
4267
4268 case 466:
4269 #line 1735 "src/parser_proc_grammar.y" /* glr.c:816 */
4270 {
4271 (*(bool*)(&(*yyvalp))) = true;
4272 }
4273 #line 4274 "src/parser_proc.c" /* glr.c:816 */
4274 break;
4275
4276
4277 #line 4278 "src/parser_proc.c" /* glr.c:816 */
4278 default: break;
4279 }
4280
4281 return yyok;
4282 # undef yyerrok
4283 # undef YYABORT
4284 # undef YYACCEPT
4285 # undef YYERROR
4286 # undef YYBACKUP
4287 # undef yyclearin
4288 # undef YYRECOVERING
4289 }
4290
4291
4292 static void
4293 yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
4294 {
4295 YYUSE (yy0);
4296 YYUSE (yy1);
4297
4298 switch (yyn)
4299 {
4300
4301 default: break;
4302 }
4303 }
4304
4305 /* Bison grammar-table manipulation. */
4306
4307 /*-----------------------------------------------.
4308 | Release the memory associated to this symbol. |
4309 `-----------------------------------------------*/
4310
4311 static void
4312 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
4313 {
4314 YYUSE (yyvaluep);
4315 YYUSE (P);
4316 YYUSE (tokens);
4317 YYUSE (index);
4318 if (!yymsg)
4319 yymsg = "Deleting";
4320 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
4321
4322 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4323 switch (yytype)
4324 {
4325 case 133: /* binary_op_token */
4326 #line 277 "src/parser_proc_grammar.y" /* glr.c:846 */
4327 {}
4328 #line 4329 "src/parser_proc.c" /* glr.c:846 */
4329 break;
4330
4331 case 134: /* unary_op_token */
4332 #line 277 "src/parser_proc_grammar.y" /* glr.c:846 */
4333 {}
4334 #line 4335 "src/parser_proc.c" /* glr.c:846 */
4335 break;
4336
4337 case 135: /* name_token */
4338 #line 277 "src/parser_proc_grammar.y" /* glr.c:846 */
4339 {}
4340 #line 4341 "src/parser_proc.c" /* glr.c:846 */
4341 break;
4342
4343 case 136: /* any_noeol_token */
4344 #line 277 "src/parser_proc_grammar.y" /* glr.c:846 */
4345 {}
4346 #line 4347 "src/parser_proc.c" /* glr.c:846 */
4347 break;
4348
4349 case 140: /* lib */
4350 #line 271 "src/parser_proc_grammar.y" /* glr.c:846 */
4351 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4352 #line 4353 "src/parser_proc.c" /* glr.c:846 */
4353 break;
4354
4355 case 141: /* cpp */
4356 #line 286 "src/parser_proc_grammar.y" /* glr.c:846 */
4357 {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
4358 #line 4359 "src/parser_proc.c" /* glr.c:846 */
4359 break;
4360
4361 case 142: /* cpp_exp */
4362 #line 286 "src/parser_proc_grammar.y" /* glr.c:846 */
4363 {psi_cpp_exp_free(&(*(struct psi_cpp_exp **)(&(*yyvaluep))));}
4364 #line 4365 "src/parser_proc.c" /* glr.c:846 */
4365 break;
4366
4367 case 144: /* cpp_message_token */
4368 #line 274 "src/parser_proc_grammar.y" /* glr.c:846 */
4369 {}
4370 #line 4371 "src/parser_proc.c" /* glr.c:846 */
4371 break;
4372
4373 case 145: /* cpp_include_token */
4374 #line 274 "src/parser_proc_grammar.y" /* glr.c:846 */
4375 {}
4376 #line 4377 "src/parser_proc.c" /* glr.c:846 */
4377 break;
4378
4379 case 146: /* cpp_header_token */
4380 #line 274 "src/parser_proc_grammar.y" /* glr.c:846 */
4381 {}
4382 #line 4383 "src/parser_proc.c" /* glr.c:846 */
4383 break;
4384
4385 case 147: /* cpp_no_arg_token */
4386 #line 274 "src/parser_proc_grammar.y" /* glr.c:846 */
4387 {}
4388 #line 4389 "src/parser_proc.c" /* glr.c:846 */
4389 break;
4390
4391 case 148: /* cpp_name_arg_token */
4392 #line 274 "src/parser_proc_grammar.y" /* glr.c:846 */
4393 {}
4394 #line 4395 "src/parser_proc.c" /* glr.c:846 */
4395 break;
4396
4397 case 149: /* cpp_exp_arg_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 150: /* cpp_special_name_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 151: /* cpp_macro_decl */
4410 #line 288 "src/parser_proc_grammar.y" /* glr.c:846 */
4411 {psi_cpp_macro_decl_free(&(*(struct psi_cpp_macro_decl **)(&(*yyvaluep))));}
4412 #line 4413 "src/parser_proc.c" /* glr.c:846 */
4413 break;
4414
4415 case 152: /* cpp_macro_sig */
4416 #line 290 "src/parser_proc_grammar.y" /* glr.c:846 */
4417 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4418 #line 4419 "src/parser_proc.c" /* glr.c:846 */
4419 break;
4420
4421 case 153: /* cpp_macro_sig_args */
4422 #line 290 "src/parser_proc_grammar.y" /* glr.c:846 */
4423 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4424 #line 4425 "src/parser_proc.c" /* glr.c:846 */
4425 break;
4426
4427 case 154: /* cpp_macro_decl_tokens */
4428 #line 290 "src/parser_proc_grammar.y" /* glr.c:846 */
4429 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4430 #line 4431 "src/parser_proc.c" /* glr.c:846 */
4431 break;
4432
4433 case 155: /* cpp_macro_decl_token_list */
4434 #line 290 "src/parser_proc_grammar.y" /* glr.c:846 */
4435 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4436 #line 4437 "src/parser_proc.c" /* glr.c:846 */
4437 break;
4438
4439 case 156: /* cpp_macro_exp */
4440 #line 292 "src/parser_proc_grammar.y" /* glr.c:846 */
4441 {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
4442 #line 4443 "src/parser_proc.c" /* glr.c:846 */
4443 break;
4444
4445 case 157: /* cpp_macro_call_args */
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 158: /* cpp_macro_call_arg_list */
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 159: /* constant */
4458 #line 298 "src/parser_proc_grammar.y" /* glr.c:846 */
4459 {psi_const_free(&(*(struct psi_const **)(&(*yyvaluep))));}
4460 #line 4461 "src/parser_proc.c" /* glr.c:846 */
4461 break;
4462
4463 case 160: /* constant_type */
4464 #line 300 "src/parser_proc_grammar.y" /* glr.c:846 */
4465 {psi_const_type_free(&(*(struct psi_const_type **)(&(*yyvaluep))));}
4466 #line 4467 "src/parser_proc.c" /* glr.c:846 */
4467 break;
4468
4469 case 161: /* constant_type_token */
4470 #line 295 "src/parser_proc_grammar.y" /* glr.c:846 */
4471 {}
4472 #line 4473 "src/parser_proc.c" /* glr.c:846 */
4473 break;
4474
4475 case 162: /* impl_def_val */
4476 #line 302 "src/parser_proc_grammar.y" /* glr.c:846 */
4477 {psi_impl_def_val_free(&(*(struct psi_impl_def_val **)(&(*yyvaluep))));}
4478 #line 4479 "src/parser_proc.c" /* glr.c:846 */
4479 break;
4480
4481 case 163: /* impl_def_val_token */
4482 #line 295 "src/parser_proc_grammar.y" /* glr.c:846 */
4483 {}
4484 #line 4485 "src/parser_proc.c" /* glr.c:846 */
4485 break;
4486
4487 case 164: /* decl_typedef */
4488 #line 315 "src/parser_proc_grammar.y" /* glr.c:846 */
4489 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4490 #line 4491 "src/parser_proc.c" /* glr.c:846 */
4491 break;
4492
4493 case 165: /* typedef */
4494 #line 315 "src/parser_proc_grammar.y" /* glr.c:846 */
4495 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4496 #line 4497 "src/parser_proc.c" /* glr.c:846 */
4497 break;
4498
4499 case 166: /* const_decl_type */
4500 #line 311 "src/parser_proc_grammar.y" /* glr.c:846 */
4501 {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
4502 #line 4503 "src/parser_proc.c" /* glr.c:846 */
4503 break;
4504
4505 case 167: /* decl_type */
4506 #line 311 "src/parser_proc_grammar.y" /* glr.c:846 */
4507 {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
4508 #line 4509 "src/parser_proc.c" /* glr.c:846 */
4509 break;
4510
4511 case 168: /* decl_type_complex */
4512 #line 311 "src/parser_proc_grammar.y" /* glr.c:846 */
4513 {psi_decl_type_free(&(*(struct psi_decl_type **)(&(*yyvaluep))));}
4514 #line 4515 "src/parser_proc.c" /* glr.c:846 */
4515 break;
4516
4517 case 169: /* decl_type_simple */
4518 #line 305 "src/parser_proc_grammar.y" /* glr.c:846 */
4519 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4520 #line 4521 "src/parser_proc.c" /* glr.c:846 */
4521 break;
4522
4523 case 170: /* decl_real_type */
4524 #line 305 "src/parser_proc_grammar.y" /* glr.c:846 */
4525 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4526 #line 4527 "src/parser_proc.c" /* glr.c:846 */
4527 break;
4528
4529 case 171: /* decl_stdint_type */
4530 #line 308 "src/parser_proc_grammar.y" /* glr.c:846 */
4531 {}
4532 #line 4533 "src/parser_proc.c" /* glr.c:846 */
4533 break;
4534
4535 case 172: /* int_signed */
4536 #line 283 "src/parser_proc_grammar.y" /* glr.c:846 */
4537 {}
4538 #line 4539 "src/parser_proc.c" /* glr.c:846 */
4539 break;
4540
4541 case 173: /* int_width */
4542 #line 280 "src/parser_proc_grammar.y" /* glr.c:846 */
4543 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4544 #line 4545 "src/parser_proc.c" /* glr.c:846 */
4545 break;
4546
4547 case 174: /* decl_int_type */
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 175: /* int_signed_types */
4554 #line 280 "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 176: /* signed_short_types */
4560 #line 283 "src/parser_proc_grammar.y" /* glr.c:846 */
4561 {}
4562 #line 4563 "src/parser_proc.c" /* glr.c:846 */
4563 break;
4564
4565 case 177: /* signed_long_types */
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 178: /* int_width_types */
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 179: /* decl_stmt */
4578 #line 313 "src/parser_proc_grammar.y" /* glr.c:846 */
4579 {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
4580 #line 4581 "src/parser_proc.c" /* glr.c:846 */
4581 break;
4582
4583 case 185: /* decl */
4584 #line 313 "src/parser_proc_grammar.y" /* glr.c:846 */
4585 {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
4586 #line 4587 "src/parser_proc.c" /* glr.c:846 */
4587 break;
4588
4589 case 186: /* decl_body */
4590 #line 313 "src/parser_proc_grammar.y" /* glr.c:846 */
4591 {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
4592 #line 4593 "src/parser_proc.c" /* glr.c:846 */
4593 break;
4594
4595 case 187: /* decl_func_body */
4596 #line 313 "src/parser_proc_grammar.y" /* glr.c:846 */
4597 {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
4598 #line 4599 "src/parser_proc.c" /* glr.c:846 */
4599 break;
4600
4601 case 188: /* decl_functor_body */
4602 #line 313 "src/parser_proc_grammar.y" /* glr.c:846 */
4603 {psi_decl_free(&(*(struct psi_decl **)(&(*yyvaluep))));}
4604 #line 4605 "src/parser_proc.c" /* glr.c:846 */
4605 break;
4606
4607 case 189: /* decl_functor */
4608 #line 315 "src/parser_proc_grammar.y" /* glr.c:846 */
4609 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4610 #line 4611 "src/parser_proc.c" /* glr.c:846 */
4611 break;
4612
4613 case 190: /* decl_func */
4614 #line 315 "src/parser_proc_grammar.y" /* glr.c:846 */
4615 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4616 #line 4617 "src/parser_proc.c" /* glr.c:846 */
4617 break;
4618
4619 case 191: /* decl_args */
4620 #line 327 "src/parser_proc_grammar.y" /* glr.c:846 */
4621 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4622 #line 4623 "src/parser_proc.c" /* glr.c:846 */
4623 break;
4624
4625 case 192: /* decl_arg */
4626 #line 315 "src/parser_proc_grammar.y" /* glr.c:846 */
4627 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4628 #line 4629 "src/parser_proc.c" /* glr.c:846 */
4629 break;
4630
4631 case 193: /* decl_var */
4632 #line 317 "src/parser_proc_grammar.y" /* glr.c:846 */
4633 {psi_decl_var_free(&(*(struct psi_decl_var **)(&(*yyvaluep))));}
4634 #line 4635 "src/parser_proc.c" /* glr.c:846 */
4635 break;
4636
4637 case 194: /* decl_union */
4638 #line 321 "src/parser_proc_grammar.y" /* glr.c:846 */
4639 {psi_decl_union_free(&(*(struct psi_decl_union **)(&(*yyvaluep))));}
4640 #line 4641 "src/parser_proc.c" /* glr.c:846 */
4641 break;
4642
4643 case 195: /* decl_struct */
4644 #line 319 "src/parser_proc_grammar.y" /* glr.c:846 */
4645 {psi_decl_struct_free(&(*(struct psi_decl_struct **)(&(*yyvaluep))));}
4646 #line 4647 "src/parser_proc.c" /* glr.c:846 */
4647 break;
4648
4649 case 196: /* decl_struct_args */
4650 #line 327 "src/parser_proc_grammar.y" /* glr.c:846 */
4651 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4652 #line 4653 "src/parser_proc.c" /* glr.c:846 */
4653 break;
4654
4655 case 197: /* struct_args_block */
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 198: /* struct_args */
4662 #line 327 "src/parser_proc_grammar.y" /* glr.c:846 */
4663 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4664 #line 4665 "src/parser_proc.c" /* glr.c:846 */
4665 break;
4666
4667 case 199: /* struct_arg */
4668 #line 315 "src/parser_proc_grammar.y" /* glr.c:846 */
4669 {psi_decl_arg_free(&(*(struct psi_decl_arg **)(&(*yyvaluep))));}
4670 #line 4671 "src/parser_proc.c" /* glr.c:846 */
4671 break;
4672
4673 case 200: /* decl_enum */
4674 #line 323 "src/parser_proc_grammar.y" /* glr.c:846 */
4675 {psi_decl_enum_free(&(*(struct psi_decl_enum **)(&(*yyvaluep))));}
4676 #line 4677 "src/parser_proc.c" /* glr.c:846 */
4677 break;
4678
4679 case 201: /* decl_enum_items */
4680 #line 327 "src/parser_proc_grammar.y" /* glr.c:846 */
4681 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4682 #line 4683 "src/parser_proc.c" /* glr.c:846 */
4683 break;
4684
4685 case 202: /* decl_enum_item */
4686 #line 325 "src/parser_proc_grammar.y" /* glr.c:846 */
4687 {psi_decl_enum_item_free(&(*(struct psi_decl_enum_item **)(&(*yyvaluep))));}
4688 #line 4689 "src/parser_proc.c" /* glr.c:846 */
4689 break;
4690
4691 case 203: /* num_exp */
4692 #line 378 "src/parser_proc_grammar.y" /* glr.c:846 */
4693 {psi_num_exp_free(&(*(struct psi_num_exp **)(&(*yyvaluep))));}
4694 #line 4695 "src/parser_proc.c" /* glr.c:846 */
4695 break;
4696
4697 case 204: /* number */
4698 #line 380 "src/parser_proc_grammar.y" /* glr.c:846 */
4699 {psi_number_free(&(*(struct psi_number **)(&(*yyvaluep))));}
4700 #line 4701 "src/parser_proc.c" /* glr.c:846 */
4701 break;
4702
4703 case 205: /* enum_name */
4704 #line 271 "src/parser_proc_grammar.y" /* glr.c:846 */
4705 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4706 #line 4707 "src/parser_proc.c" /* glr.c:846 */
4707 break;
4708
4709 case 206: /* union_name */
4710 #line 271 "src/parser_proc_grammar.y" /* glr.c:846 */
4711 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4712 #line 4713 "src/parser_proc.c" /* glr.c:846 */
4713 break;
4714
4715 case 207: /* struct_name */
4716 #line 271 "src/parser_proc_grammar.y" /* glr.c:846 */
4717 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4718 #line 4719 "src/parser_proc.c" /* glr.c:846 */
4719 break;
4720
4721 case 208: /* optional_name */
4722 #line 271 "src/parser_proc_grammar.y" /* glr.c:846 */
4723 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4724 #line 4725 "src/parser_proc.c" /* glr.c:846 */
4725 break;
4726
4727 case 209: /* decl_layout */
4728 #line 332 "src/parser_proc_grammar.y" /* glr.c:846 */
4729 {psi_layout_free(&(*(struct psi_layout **)(&(*yyvaluep))));}
4730 #line 4731 "src/parser_proc.c" /* glr.c:846 */
4731 break;
4732
4733 case 210: /* align_and_size */
4734 #line 330 "src/parser_proc_grammar.y" /* glr.c:846 */
4735 {}
4736 #line 4737 "src/parser_proc.c" /* glr.c:846 */
4737 break;
4738
4739 case 211: /* array_size */
4740 #line 383 "src/parser_proc_grammar.y" /* glr.c:846 */
4741 {}
4742 #line 4743 "src/parser_proc.c" /* glr.c:846 */
4743 break;
4744
4745 case 212: /* indirection */
4746 #line 383 "src/parser_proc_grammar.y" /* glr.c:846 */
4747 {}
4748 #line 4749 "src/parser_proc.c" /* glr.c:846 */
4749 break;
4750
4751 case 213: /* pointers */
4752 #line 383 "src/parser_proc_grammar.y" /* glr.c:846 */
4753 {}
4754 #line 4755 "src/parser_proc.c" /* glr.c:846 */
4755 break;
4756
4757 case 214: /* asterisks */
4758 #line 383 "src/parser_proc_grammar.y" /* glr.c:846 */
4759 {}
4760 #line 4761 "src/parser_proc.c" /* glr.c:846 */
4761 break;
4762
4763 case 215: /* impl */
4764 #line 335 "src/parser_proc_grammar.y" /* glr.c:846 */
4765 {psi_impl_free(&(*(struct psi_impl **)(&(*yyvaluep))));}
4766 #line 4767 "src/parser_proc.c" /* glr.c:846 */
4767 break;
4768
4769 case 216: /* impl_func */
4770 #line 337 "src/parser_proc_grammar.y" /* glr.c:846 */
4771 {psi_impl_func_free(&(*(struct psi_impl_func **)(&(*yyvaluep))));}
4772 #line 4773 "src/parser_proc.c" /* glr.c:846 */
4773 break;
4774
4775 case 217: /* impl_args */
4776 #line 375 "src/parser_proc_grammar.y" /* glr.c:846 */
4777 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4778 #line 4779 "src/parser_proc.c" /* glr.c:846 */
4779 break;
4780
4781 case 218: /* impl_arg */
4782 #line 339 "src/parser_proc_grammar.y" /* glr.c:846 */
4783 {psi_impl_arg_free(&(*(struct psi_impl_arg **)(&(*yyvaluep))));}
4784 #line 4785 "src/parser_proc.c" /* glr.c:846 */
4785 break;
4786
4787 case 219: /* impl_var */
4788 #line 343 "src/parser_proc_grammar.y" /* glr.c:846 */
4789 {psi_impl_var_free(&(*(struct psi_impl_var **)(&(*yyvaluep))));}
4790 #line 4791 "src/parser_proc.c" /* glr.c:846 */
4791 break;
4792
4793 case 220: /* impl_type */
4794 #line 341 "src/parser_proc_grammar.y" /* glr.c:846 */
4795 {psi_impl_type_free(&(*(struct psi_impl_type **)(&(*yyvaluep))));}
4796 #line 4797 "src/parser_proc.c" /* glr.c:846 */
4797 break;
4798
4799 case 221: /* impl_type_token */
4800 #line 373 "src/parser_proc_grammar.y" /* glr.c:846 */
4801 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4802 #line 4803 "src/parser_proc.c" /* glr.c:846 */
4803 break;
4804
4805 case 222: /* impl_stmts */
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 223: /* impl_stmt */
4812 #line 371 "src/parser_proc_grammar.y" /* glr.c:846 */
4813 {psi_impl_stmt_free(&(*(struct psi_token ***)(&(*yyvaluep))));}
4814 #line 4815 "src/parser_proc.c" /* glr.c:846 */
4815 break;
4816
4817 case 224: /* let_stmt */
4818 #line 346 "src/parser_proc_grammar.y" /* glr.c:846 */
4819 {psi_let_stmt_free(&(*(struct psi_let_stmt **)(&(*yyvaluep))));}
4820 #line 4821 "src/parser_proc.c" /* glr.c:846 */
4821 break;
4822
4823 case 225: /* let_exp */
4824 #line 348 "src/parser_proc_grammar.y" /* glr.c:846 */
4825 {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
4826 #line 4827 "src/parser_proc.c" /* glr.c:846 */
4827 break;
4828
4829 case 226: /* let_exp_byref */
4830 #line 348 "src/parser_proc_grammar.y" /* glr.c:846 */
4831 {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
4832 #line 4833 "src/parser_proc.c" /* glr.c:846 */
4833 break;
4834
4835 case 227: /* let_exp_assign */
4836 #line 348 "src/parser_proc_grammar.y" /* glr.c:846 */
4837 {psi_let_exp_free(&(*(struct psi_let_exp **)(&(*yyvaluep))));}
4838 #line 4839 "src/parser_proc.c" /* glr.c:846 */
4839 break;
4840
4841 case 228: /* let_calloc */
4842 #line 350 "src/parser_proc_grammar.y" /* glr.c:846 */
4843 {psi_let_calloc_free(&(*(struct psi_let_calloc **)(&(*yyvaluep))));}
4844 #line 4845 "src/parser_proc.c" /* glr.c:846 */
4845 break;
4846
4847 case 229: /* let_callback */
4848 #line 352 "src/parser_proc_grammar.y" /* glr.c:846 */
4849 {psi_let_callback_free(&(*(struct psi_let_callback **)(&(*yyvaluep))));}
4850 #line 4851 "src/parser_proc.c" /* glr.c:846 */
4851 break;
4852
4853 case 230: /* let_func */
4854 #line 354 "src/parser_proc_grammar.y" /* glr.c:846 */
4855 {psi_let_func_free(&(*(struct psi_let_func **)(&(*yyvaluep))));}
4856 #line 4857 "src/parser_proc.c" /* glr.c:846 */
4857 break;
4858
4859 case 231: /* let_func_token */
4860 #line 373 "src/parser_proc_grammar.y" /* glr.c:846 */
4861 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4862 #line 4863 "src/parser_proc.c" /* glr.c:846 */
4863 break;
4864
4865 case 232: /* let_func_exps */
4866 #line 375 "src/parser_proc_grammar.y" /* glr.c:846 */
4867 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4868 #line 4869 "src/parser_proc.c" /* glr.c:846 */
4869 break;
4870
4871 case 233: /* let_exps */
4872 #line 375 "src/parser_proc_grammar.y" /* glr.c:846 */
4873 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4874 #line 4875 "src/parser_proc.c" /* glr.c:846 */
4875 break;
4876
4877 case 234: /* callback_rval */
4878 #line 373 "src/parser_proc_grammar.y" /* glr.c:846 */
4879 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4880 #line 4881 "src/parser_proc.c" /* glr.c:846 */
4881 break;
4882
4883 case 235: /* callback_arg_list */
4884 #line 375 "src/parser_proc_grammar.y" /* glr.c:846 */
4885 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4886 #line 4887 "src/parser_proc.c" /* glr.c:846 */
4887 break;
4888
4889 case 236: /* callback_args */
4890 #line 375 "src/parser_proc_grammar.y" /* glr.c:846 */
4891 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4892 #line 4893 "src/parser_proc.c" /* glr.c:846 */
4893 break;
4894
4895 case 237: /* return_stmt */
4896 #line 364 "src/parser_proc_grammar.y" /* glr.c:846 */
4897 {psi_return_stmt_free(&(*(struct psi_return_stmt **)(&(*yyvaluep))));}
4898 #line 4899 "src/parser_proc.c" /* glr.c:846 */
4899 break;
4900
4901 case 238: /* set_stmt */
4902 #line 356 "src/parser_proc_grammar.y" /* glr.c:846 */
4903 {psi_set_stmt_free(&(*(struct psi_set_stmt **)(&(*yyvaluep))));}
4904 #line 4905 "src/parser_proc.c" /* glr.c:846 */
4905 break;
4906
4907 case 239: /* set_exp */
4908 #line 358 "src/parser_proc_grammar.y" /* glr.c:846 */
4909 {psi_set_exp_free(&(*(struct psi_set_exp **)(&(*yyvaluep))));}
4910 #line 4911 "src/parser_proc.c" /* glr.c:846 */
4911 break;
4912
4913 case 240: /* set_func */
4914 #line 360 "src/parser_proc_grammar.y" /* glr.c:846 */
4915 {psi_set_func_free(&(*(struct psi_set_func **)(&(*yyvaluep))));}
4916 #line 4917 "src/parser_proc.c" /* glr.c:846 */
4917 break;
4918
4919 case 241: /* set_func_token */
4920 #line 373 "src/parser_proc_grammar.y" /* glr.c:846 */
4921 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4922 #line 4923 "src/parser_proc.c" /* glr.c:846 */
4923 break;
4924
4925 case 242: /* set_func_exps */
4926 #line 375 "src/parser_proc_grammar.y" /* glr.c:846 */
4927 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4928 #line 4929 "src/parser_proc.c" /* glr.c:846 */
4929 break;
4930
4931 case 243: /* set_exps */
4932 #line 375 "src/parser_proc_grammar.y" /* glr.c:846 */
4933 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4934 #line 4935 "src/parser_proc.c" /* glr.c:846 */
4935 break;
4936
4937 case 244: /* assert_stmt */
4938 #line 362 "src/parser_proc_grammar.y" /* glr.c:846 */
4939 {psi_assert_stmt_free(&(*(struct psi_assert_stmt **)(&(*yyvaluep))));}
4940 #line 4941 "src/parser_proc.c" /* glr.c:846 */
4941 break;
4942
4943 case 245: /* assert_stmt_token */
4944 #line 373 "src/parser_proc_grammar.y" /* glr.c:846 */
4945 {psi_token_free(&(*(struct psi_token **)(&(*yyvaluep))));}
4946 #line 4947 "src/parser_proc.c" /* glr.c:846 */
4947 break;
4948
4949 case 246: /* free_stmt */
4950 #line 366 "src/parser_proc_grammar.y" /* glr.c:846 */
4951 {psi_free_stmt_free(&(*(struct psi_free_stmt **)(&(*yyvaluep))));}
4952 #line 4953 "src/parser_proc.c" /* glr.c:846 */
4953 break;
4954
4955 case 247: /* free_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 248: /* free_exp */
4962 #line 368 "src/parser_proc_grammar.y" /* glr.c:846 */
4963 {psi_free_exp_free(&(*(struct psi_free_exp **)(&(*yyvaluep))));}
4964 #line 4965 "src/parser_proc.c" /* glr.c:846 */
4965 break;
4966
4967 case 249: /* decl_vars */
4968 #line 327 "src/parser_proc_grammar.y" /* glr.c:846 */
4969 {psi_plist_free((*(struct psi_plist **)(&(*yyvaluep))));}
4970 #line 4971 "src/parser_proc.c" /* glr.c:846 */
4971 break;
4972
4973 case 250: /* reference */
4974 #line 385 "src/parser_proc_grammar.y" /* glr.c:846 */
4975 {}
4976 #line 4977 "src/parser_proc.c" /* glr.c:846 */
4977 break;
4978
4979
4980 default:
4981 break;
4982 }
4983 YY_IGNORE_MAYBE_UNINITIALIZED_END
4984 }
4985
4986 /** Number of symbols composing the right hand side of rule #RULE. */
4987 static inline int
4988 yyrhsLength (yyRuleNum yyrule)
4989 {
4990 return yyr2[yyrule];
4991 }
4992
4993 static void
4994 yydestroyGLRState (char const *yymsg, yyGLRState *yys, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
4995 {
4996 if (yys->yyresolved)
4997 yydestruct (yymsg, yystos[yys->yylrState],
4998 &yys->yysemantics.yysval, P, tokens, index);
4999 else
5000 {
5001 #if YYDEBUG
5002 if (yydebug)
5003 {
5004 if (yys->yysemantics.yyfirstVal)
5005 YYFPRINTF (stderr, "%s unresolved", yymsg);
5006 else
5007 YYFPRINTF (stderr, "%s incomplete", yymsg);
5008 YY_SYMBOL_PRINT ("", yystos[yys->yylrState], YY_NULLPTR, &yys->yyloc);
5009 }
5010 #endif
5011
5012 if (yys->yysemantics.yyfirstVal)
5013 {
5014 yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
5015 yyGLRState *yyrh;
5016 int yyn;
5017 for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
5018 yyn > 0;
5019 yyrh = yyrh->yypred, yyn -= 1)
5020 yydestroyGLRState (yymsg, yyrh, P, tokens, index);
5021 }
5022 }
5023 }
5024
5025 /** Left-hand-side symbol for rule #YYRULE. */
5026 static inline yySymbol
5027 yylhsNonterm (yyRuleNum yyrule)
5028 {
5029 return yyr1[yyrule];
5030 }
5031
5032 #define yypact_value_is_default(Yystate) \
5033 (!!((Yystate) == (-534)))
5034
5035 /** True iff LR state YYSTATE has only a default reduction (regardless
5036 * of token). */
5037 static inline yybool
5038 yyisDefaultedState (yyStateNum yystate)
5039 {
5040 return yypact_value_is_default (yypact[yystate]);
5041 }
5042
5043 /** The default reduction for YYSTATE, assuming it has one. */
5044 static inline yyRuleNum
5045 yydefaultAction (yyStateNum yystate)
5046 {
5047 return yydefact[yystate];
5048 }
5049
5050 #define yytable_value_is_error(Yytable_value) \
5051 0
5052
5053 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
5054 * Result R means
5055 * R < 0: Reduce on rule -R.
5056 * R = 0: Error.
5057 * R > 0: Shift to state R.
5058 * Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
5059 * of conflicting reductions.
5060 */
5061 static inline void
5062 yygetLRActions (yyStateNum yystate, int yytoken,
5063 int* yyaction, const short int** yyconflicts)
5064 {
5065 int yyindex = yypact[yystate] + yytoken;
5066 if (yypact_value_is_default (yypact[yystate])
5067 || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
5068 {
5069 *yyaction = -yydefact[yystate];
5070 *yyconflicts = yyconfl;
5071 }
5072 else if (! yytable_value_is_error (yytable[yyindex]))
5073 {
5074 *yyaction = yytable[yyindex];
5075 *yyconflicts = yyconfl + yyconflp[yyindex];
5076 }
5077 else
5078 {
5079 *yyaction = 0;
5080 *yyconflicts = yyconfl + yyconflp[yyindex];
5081 }
5082 }
5083
5084 /** Compute post-reduction state.
5085 * \param yystate the current state
5086 * \param yysym the nonterminal to push on the stack
5087 */
5088 static inline yyStateNum
5089 yyLRgotoState (yyStateNum yystate, yySymbol yysym)
5090 {
5091 int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
5092 if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
5093 return yytable[yyr];
5094 else
5095 return yydefgoto[yysym - YYNTOKENS];
5096 }
5097
5098 static inline yybool
5099 yyisShiftAction (int yyaction)
5100 {
5101 return 0 < yyaction;
5102 }
5103
5104 static inline yybool
5105 yyisErrorAction (int yyaction)
5106 {
5107 return yyaction == 0;
5108 }
5109
5110 /* GLRStates */
5111
5112 /** Return a fresh GLRStackItem in YYSTACKP. The item is an LR state
5113 * if YYISSTATE, and otherwise a semantic option. Callers should call
5114 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
5115 * headroom. */
5116
5117 static inline yyGLRStackItem*
5118 yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
5119 {
5120 yyGLRStackItem* yynewItem = yystackp->yynextFree;
5121 yystackp->yyspaceLeft -= 1;
5122 yystackp->yynextFree += 1;
5123 yynewItem->yystate.yyisState = yyisState;
5124 return yynewItem;
5125 }
5126
5127 /** Add a new semantic action that will execute the action for rule
5128 * YYRULE on the semantic values in YYRHS to the list of
5129 * alternative actions for YYSTATE. Assumes that YYRHS comes from
5130 * stack #YYK of *YYSTACKP. */
5131 static void
5132 yyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate,
5133 yyGLRState* yyrhs, yyRuleNum yyrule)
5134 {
5135 yySemanticOption* yynewOption =
5136 &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
5137 YYASSERT (!yynewOption->yyisState);
5138 yynewOption->yystate = yyrhs;
5139 yynewOption->yyrule = yyrule;
5140 if (yystackp->yytops.yylookaheadNeeds[yyk])
5141 {
5142 yynewOption->yyrawchar = yychar;
5143 yynewOption->yyval = yylval;
5144 }
5145 else
5146 yynewOption->yyrawchar = YYEMPTY;
5147 yynewOption->yynext = yystate->yysemantics.yyfirstVal;
5148 yystate->yysemantics.yyfirstVal = yynewOption;
5149
5150 YY_RESERVE_GLRSTACK (yystackp);
5151 }
5152
5153 /* GLRStacks */
5154
5155 /** Initialize YYSET to a singleton set containing an empty stack. */
5156 static yybool
5157 yyinitStateSet (yyGLRStateSet* yyset)
5158 {
5159 yyset->yysize = 1;
5160 yyset->yycapacity = 16;
5161 yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]);
5162 if (! yyset->yystates)
5163 return yyfalse;
5164 yyset->yystates[0] = YY_NULLPTR;
5165 yyset->yylookaheadNeeds =
5166 (yybool*) YYMALLOC (16 * sizeof yyset->yylookaheadNeeds[0]);
5167 if (! yyset->yylookaheadNeeds)
5168 {
5169 YYFREE (yyset->yystates);
5170 return yyfalse;
5171 }
5172 return yytrue;
5173 }
5174
5175 static void yyfreeStateSet (yyGLRStateSet* yyset)
5176 {
5177 YYFREE (yyset->yystates);
5178 YYFREE (yyset->yylookaheadNeeds);
5179 }
5180
5181 /** Initialize *YYSTACKP to a single empty stack, with total maximum
5182 * capacity for all stacks of YYSIZE. */
5183 static yybool
5184 yyinitGLRStack (yyGLRStack* yystackp, size_t yysize)
5185 {
5186 yystackp->yyerrState = 0;
5187 yynerrs = 0;
5188 yystackp->yyspaceLeft = yysize;
5189 yystackp->yyitems =
5190 (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystackp->yynextFree[0]);
5191 if (!yystackp->yyitems)
5192 return yyfalse;
5193 yystackp->yynextFree = yystackp->yyitems;
5194 yystackp->yysplitPoint = YY_NULLPTR;
5195 yystackp->yylastDeleted = YY_NULLPTR;
5196 return yyinitStateSet (&yystackp->yytops);
5197 }
5198
5199
5200 #if YYSTACKEXPANDABLE
5201 # define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
5202 &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
5203
5204 /** If *YYSTACKP is expandable, extend it. WARNING: Pointers into the
5205 stack from outside should be considered invalid after this call.
5206 We always expand when there are 1 or fewer items left AFTER an
5207 allocation, so that we can avoid having external pointers exist
5208 across an allocation. */
5209 static void
5210 yyexpandGLRStack (yyGLRStack* yystackp)
5211 {
5212 yyGLRStackItem* yynewItems;
5213 yyGLRStackItem* yyp0, *yyp1;
5214 size_t yynewSize;
5215 size_t yyn;
5216 size_t yysize = yystackp->yynextFree - yystackp->yyitems;
5217 if (YYMAXDEPTH - YYHEADROOM < yysize)
5218 yyMemoryExhausted (yystackp);
5219 yynewSize = 2*yysize;
5220 if (YYMAXDEPTH < yynewSize)
5221 yynewSize = YYMAXDEPTH;
5222 yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]);
5223 if (! yynewItems)
5224 yyMemoryExhausted (yystackp);
5225 for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
5226 0 < yyn;
5227 yyn -= 1, yyp0 += 1, yyp1 += 1)
5228 {
5229 *yyp1 = *yyp0;
5230 if (*(yybool *) yyp0)
5231 {
5232 yyGLRState* yys0 = &yyp0->yystate;
5233 yyGLRState* yys1 = &yyp1->yystate;
5234 if (yys0->yypred != YY_NULLPTR)
5235 yys1->yypred =
5236 YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
5237 if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
5238 yys1->yysemantics.yyfirstVal =
5239 YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
5240 }
5241 else
5242 {
5243 yySemanticOption* yyv0 = &yyp0->yyoption;
5244 yySemanticOption* yyv1 = &yyp1->yyoption;
5245 if (yyv0->yystate != YY_NULLPTR)
5246 yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
5247 if (yyv0->yynext != YY_NULLPTR)
5248 yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
5249 }
5250 }
5251 if (yystackp->yysplitPoint != YY_NULLPTR)
5252 yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
5253 yystackp->yysplitPoint, yystate);
5254
5255 for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
5256 if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
5257 yystackp->yytops.yystates[yyn] =
5258 YYRELOC (yystackp->yyitems, yynewItems,
5259 yystackp->yytops.yystates[yyn], yystate);
5260 YYFREE (yystackp->yyitems);
5261 yystackp->yyitems = yynewItems;
5262 yystackp->yynextFree = yynewItems + yysize;
5263 yystackp->yyspaceLeft = yynewSize - yysize;
5264 }
5265 #endif
5266
5267 static void
5268 yyfreeGLRStack (yyGLRStack* yystackp)
5269 {
5270 YYFREE (yystackp->yyitems);
5271 yyfreeStateSet (&yystackp->yytops);
5272 }
5273
5274 /** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
5275 * splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
5276 * YYS. */
5277 static inline void
5278 yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
5279 {
5280 if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
5281 yystackp->yysplitPoint = yys;
5282 }
5283
5284 /** Invalidate stack #YYK in *YYSTACKP. */
5285 static inline void
5286 yymarkStackDeleted (yyGLRStack* yystackp, size_t yyk)
5287 {
5288 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
5289 yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
5290 yystackp->yytops.yystates[yyk] = YY_NULLPTR;
5291 }
5292
5293 /** Undelete the last stack in *YYSTACKP that was marked as deleted. Can
5294 only be done once after a deletion, and only when all other stacks have
5295 been deleted. */
5296 static void
5297 yyundeleteLastStack (yyGLRStack* yystackp)
5298 {
5299 if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
5300 return;
5301 yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
5302 yystackp->yytops.yysize = 1;
5303 YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
5304 yystackp->yylastDeleted = YY_NULLPTR;
5305 }
5306
5307 static inline void
5308 yyremoveDeletes (yyGLRStack* yystackp)
5309 {
5310 size_t yyi, yyj;
5311 yyi = yyj = 0;
5312 while (yyj < yystackp->yytops.yysize)
5313 {
5314 if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
5315 {
5316 if (yyi == yyj)
5317 {
5318 YYDPRINTF ((stderr, "Removing dead stacks.\n"));
5319 }
5320 yystackp->yytops.yysize -= 1;
5321 }
5322 else
5323 {
5324 yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
5325 /* In the current implementation, it's unnecessary to copy
5326 yystackp->yytops.yylookaheadNeeds[yyi] since, after
5327 yyremoveDeletes returns, the parser immediately either enters
5328 deterministic operation or shifts a token. However, it doesn't
5329 hurt, and the code might evolve to need it. */
5330 yystackp->yytops.yylookaheadNeeds[yyj] =
5331 yystackp->yytops.yylookaheadNeeds[yyi];
5332 if (yyj != yyi)
5333 {
5334 YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n",
5335 (unsigned long int) yyi, (unsigned long int) yyj));
5336 }
5337 yyj += 1;
5338 }
5339 yyi += 1;
5340 }
5341 }
5342
5343 /** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
5344 * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
5345 * value *YYVALP and source location *YYLOCP. */
5346 static inline void
5347 yyglrShift (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
5348 size_t yyposn,
5349 YYSTYPE* yyvalp)
5350 {
5351 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
5352
5353 yynewState->yylrState = yylrState;
5354 yynewState->yyposn = yyposn;
5355 yynewState->yyresolved = yytrue;
5356 yynewState->yypred = yystackp->yytops.yystates[yyk];
5357 yynewState->yysemantics.yysval = *yyvalp;
5358 yystackp->yytops.yystates[yyk] = yynewState;
5359
5360 YY_RESERVE_GLRSTACK (yystackp);
5361 }
5362
5363 /** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
5364 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
5365 * semantic value of YYRHS under the action for YYRULE. */
5366 static inline void
5367 yyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
5368 size_t yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
5369 {
5370 yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
5371 YYASSERT (yynewState->yyisState);
5372
5373 yynewState->yylrState = yylrState;
5374 yynewState->yyposn = yyposn;
5375 yynewState->yyresolved = yyfalse;
5376 yynewState->yypred = yystackp->yytops.yystates[yyk];
5377 yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
5378 yystackp->yytops.yystates[yyk] = yynewState;
5379
5380 /* Invokes YY_RESERVE_GLRSTACK. */
5381 yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
5382 }
5383
5384 #if !YYDEBUG
5385 # define YY_REDUCE_PRINT(Args)
5386 #else
5387 # define YY_REDUCE_PRINT(Args) \
5388 do { \
5389 if (yydebug) \
5390 yy_reduce_print Args; \
5391 } while (0)
5392
5393 /*----------------------------------------------------------------------.
5394 | Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
5395 `----------------------------------------------------------------------*/
5396
5397 static inline void
5398 yy_reduce_print (int yynormal, yyGLRStackItem* yyvsp, size_t yyk,
5399 yyRuleNum yyrule, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5400 {
5401 int yynrhs = yyrhsLength (yyrule);
5402 int yyi;
5403 YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n",
5404 (unsigned long int) yyk, yyrule - 1,
5405 (unsigned long int) yyrline[yyrule]);
5406 if (! yynormal)
5407 yyfillin (yyvsp, 1, -yynrhs);
5408 /* The symbols being reduced. */
5409 for (yyi = 0; yyi < yynrhs; yyi++)
5410 {
5411 YYFPRINTF (stderr, " $%d = ", yyi + 1);
5412 yy_symbol_print (stderr,
5413 yystos[yyvsp[yyi - yynrhs + 1].yystate.yylrState],
5414 &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yysval
5415 , P, tokens, index);
5416 if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
5417 YYFPRINTF (stderr, " (unresolved)");
5418 YYFPRINTF (stderr, "\n");
5419 }
5420 }
5421 #endif
5422
5423 /** Pop the symbols consumed by reduction #YYRULE from the top of stack
5424 * #YYK of *YYSTACKP, and perform the appropriate semantic action on their
5425 * semantic values. Assumes that all ambiguities in semantic values
5426 * have been previously resolved. Set *YYVALP to the resulting value,
5427 * and *YYLOCP to the computed location (if any). Return value is as
5428 * for userAction. */
5429 static inline YYRESULTTAG
5430 yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
5431 YYSTYPE* yyvalp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5432 {
5433 int yynrhs = yyrhsLength (yyrule);
5434
5435 if (yystackp->yysplitPoint == YY_NULLPTR)
5436 {
5437 /* Standard special case: single stack. */
5438 yyGLRStackItem* yyrhs = (yyGLRStackItem*) yystackp->yytops.yystates[yyk];
5439 YYASSERT (yyk == 0);
5440 yystackp->yynextFree -= yynrhs;
5441 yystackp->yyspaceLeft += yynrhs;
5442 yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
5443 YY_REDUCE_PRINT ((1, yyrhs, yyk, yyrule, P, tokens, index));
5444 return yyuserAction (yyrule, yynrhs, yyrhs, yystackp,
5445 yyvalp, P, tokens, index);
5446 }
5447 else
5448 {
5449 int yyi;
5450 yyGLRState* yys;
5451 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
5452 yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
5453 = yystackp->yytops.yystates[yyk];
5454 for (yyi = 0; yyi < yynrhs; yyi += 1)
5455 {
5456 yys = yys->yypred;
5457 YYASSERT (yys);
5458 }
5459 yyupdateSplit (yystackp, yys);
5460 yystackp->yytops.yystates[yyk] = yys;
5461 YY_REDUCE_PRINT ((0, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, yyk, yyrule, P, tokens, index));
5462 return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
5463 yystackp, yyvalp, P, tokens, index);
5464 }
5465 }
5466
5467 /** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
5468 * and push back on the resulting nonterminal symbol. Perform the
5469 * semantic action associated with YYRULE and store its value with the
5470 * newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
5471 * unambiguous. Otherwise, store the deferred semantic action with
5472 * the new state. If the new state would have an identical input
5473 * position, LR state, and predecessor to an existing state on the stack,
5474 * it is identified with that existing state, eliminating stack #YYK from
5475 * *YYSTACKP. In this case, the semantic value is
5476 * added to the options for the existing state's semantic value.
5477 */
5478 static inline YYRESULTTAG
5479 yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
5480 yybool yyforceEval, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5481 {
5482 size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn;
5483
5484 if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
5485 {
5486 YYSTYPE yysval;
5487
5488 YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yysval, P, tokens, index);
5489 if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
5490 {
5491 YYDPRINTF ((stderr, "Parse on stack %lu rejected by rule #%d.\n",
5492 (unsigned long int) yyk, yyrule - 1));
5493 }
5494 if (yyflag != yyok)
5495 return yyflag;
5496 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc);
5497 yyglrShift (yystackp, yyk,
5498 yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
5499 yylhsNonterm (yyrule)),
5500 yyposn, &yysval);
5501 }
5502 else
5503 {
5504 size_t yyi;
5505 int yyn;
5506 yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
5507 yyStateNum yynewLRState;
5508
5509 for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
5510 0 < yyn; yyn -= 1)
5511 {
5512 yys = yys->yypred;
5513 YYASSERT (yys);
5514 }
5515 yyupdateSplit (yystackp, yys);
5516 yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
5517 YYDPRINTF ((stderr,
5518 "Reduced stack %lu by rule #%d; action deferred. "
5519 "Now in state %d.\n",
5520 (unsigned long int) yyk, yyrule - 1, yynewLRState));
5521 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
5522 if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
5523 {
5524 yyGLRState *yysplit = yystackp->yysplitPoint;
5525 yyGLRState *yyp = yystackp->yytops.yystates[yyi];
5526 while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
5527 {
5528 if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
5529 {
5530 yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
5531 yymarkStackDeleted (yystackp, yyk);
5532 YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n",
5533 (unsigned long int) yyk,
5534 (unsigned long int) yyi));
5535 return yyok;
5536 }
5537 yyp = yyp->yypred;
5538 }
5539 }
5540 yystackp->yytops.yystates[yyk] = yys;
5541 yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
5542 }
5543 return yyok;
5544 }
5545
5546 static size_t
5547 yysplitStack (yyGLRStack* yystackp, size_t yyk)
5548 {
5549 if (yystackp->yysplitPoint == YY_NULLPTR)
5550 {
5551 YYASSERT (yyk == 0);
5552 yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
5553 }
5554 if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity)
5555 {
5556 yyGLRState** yynewStates;
5557 yybool* yynewLookaheadNeeds;
5558
5559 yynewStates = YY_NULLPTR;
5560
5561 if (yystackp->yytops.yycapacity
5562 > (YYSIZEMAX / (2 * sizeof yynewStates[0])))
5563 yyMemoryExhausted (yystackp);
5564 yystackp->yytops.yycapacity *= 2;
5565
5566 yynewStates =
5567 (yyGLRState**) YYREALLOC (yystackp->yytops.yystates,
5568 (yystackp->yytops.yycapacity
5569 * sizeof yynewStates[0]));
5570 if (yynewStates == YY_NULLPTR)
5571 yyMemoryExhausted (yystackp);
5572 yystackp->yytops.yystates = yynewStates;
5573
5574 yynewLookaheadNeeds =
5575 (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds,
5576 (yystackp->yytops.yycapacity
5577 * sizeof yynewLookaheadNeeds[0]));
5578 if (yynewLookaheadNeeds == YY_NULLPTR)
5579 yyMemoryExhausted (yystackp);
5580 yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
5581 }
5582 yystackp->yytops.yystates[yystackp->yytops.yysize]
5583 = yystackp->yytops.yystates[yyk];
5584 yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
5585 = yystackp->yytops.yylookaheadNeeds[yyk];
5586 yystackp->yytops.yysize += 1;
5587 return yystackp->yytops.yysize-1;
5588 }
5589
5590 /** True iff YYY0 and YYY1 represent identical options at the top level.
5591 * That is, they represent the same rule applied to RHS symbols
5592 * that produce the same terminal symbols. */
5593 static yybool
5594 yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
5595 {
5596 if (yyy0->yyrule == yyy1->yyrule)
5597 {
5598 yyGLRState *yys0, *yys1;
5599 int yyn;
5600 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
5601 yyn = yyrhsLength (yyy0->yyrule);
5602 yyn > 0;
5603 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
5604 if (yys0->yyposn != yys1->yyposn)
5605 return yyfalse;
5606 return yytrue;
5607 }
5608 else
5609 return yyfalse;
5610 }
5611
5612 /** Assuming identicalOptions (YYY0,YYY1), destructively merge the
5613 * alternative semantic values for the RHS-symbols of YYY1 and YYY0. */
5614 static void
5615 yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
5616 {
5617 yyGLRState *yys0, *yys1;
5618 int yyn;
5619 for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
5620 yyn = yyrhsLength (yyy0->yyrule);
5621 yyn > 0;
5622 yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
5623 {
5624 if (yys0 == yys1)
5625 break;
5626 else if (yys0->yyresolved)
5627 {
5628 yys1->yyresolved = yytrue;
5629 yys1->yysemantics.yysval = yys0->yysemantics.yysval;
5630 }
5631 else if (yys1->yyresolved)
5632 {
5633 yys0->yyresolved = yytrue;
5634 yys0->yysemantics.yysval = yys1->yysemantics.yysval;
5635 }
5636 else
5637 {
5638 yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
5639 yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
5640 while (yytrue)
5641 {
5642 if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
5643 break;
5644 else if (*yyz0p == YY_NULLPTR)
5645 {
5646 *yyz0p = yyz1;
5647 break;
5648 }
5649 else if (*yyz0p < yyz1)
5650 {
5651 yySemanticOption* yyz = *yyz0p;
5652 *yyz0p = yyz1;
5653 yyz1 = yyz1->yynext;
5654 (*yyz0p)->yynext = yyz;
5655 }
5656 yyz0p = &(*yyz0p)->yynext;
5657 }
5658 yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
5659 }
5660 }
5661 }
5662
5663 /** Y0 and Y1 represent two possible actions to take in a given
5664 * parsing state; return 0 if no combination is possible,
5665 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
5666 static int
5667 yypreference (yySemanticOption* y0, yySemanticOption* y1)
5668 {
5669 yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
5670 int p0 = yydprec[r0], p1 = yydprec[r1];
5671
5672 if (p0 == p1)
5673 {
5674 if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
5675 return 0;
5676 else
5677 return 1;
5678 }
5679 if (p0 == 0 || p1 == 0)
5680 return 0;
5681 if (p0 < p1)
5682 return 3;
5683 if (p1 < p0)
5684 return 2;
5685 return 0;
5686 }
5687
5688 static YYRESULTTAG yyresolveValue (yyGLRState* yys,
5689 yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index);
5690
5691
5692 /** Resolve the previous YYN states starting at and including state YYS
5693 * on *YYSTACKP. If result != yyok, some states may have been left
5694 * unresolved possibly with empty semantic option chains. Regardless
5695 * of whether result = yyok, each state has been left with consistent
5696 * data so that yydestroyGLRState can be invoked if necessary. */
5697 static YYRESULTTAG
5698 yyresolveStates (yyGLRState* yys, int yyn,
5699 yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5700 {
5701 if (0 < yyn)
5702 {
5703 YYASSERT (yys->yypred);
5704 YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp, P, tokens, index));
5705 if (! yys->yyresolved)
5706 YYCHK (yyresolveValue (yys, yystackp, P, tokens, index));
5707 }
5708 return yyok;
5709 }
5710
5711 /** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
5712 * user action, and return the semantic value and location in *YYVALP
5713 * and *YYLOCP. Regardless of whether result = yyok, all RHS states
5714 * have been destroyed (assuming the user action destroys all RHS
5715 * semantic values if invoked). */
5716 static YYRESULTTAG
5717 yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
5718 YYSTYPE* yyvalp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5719 {
5720 yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
5721 int yynrhs = yyrhsLength (yyopt->yyrule);
5722 YYRESULTTAG yyflag =
5723 yyresolveStates (yyopt->yystate, yynrhs, yystackp, P, tokens, index);
5724 if (yyflag != yyok)
5725 {
5726 yyGLRState *yys;
5727 for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
5728 yydestroyGLRState ("Cleanup: popping", yys, P, tokens, index);
5729 return yyflag;
5730 }
5731
5732 yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
5733 {
5734 int yychar_current = yychar;
5735 YYSTYPE yylval_current = yylval;
5736 yychar = yyopt->yyrawchar;
5737 yylval = yyopt->yyval;
5738 yyflag = yyuserAction (yyopt->yyrule, yynrhs,
5739 yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
5740 yystackp, yyvalp, P, tokens, index);
5741 yychar = yychar_current;
5742 yylval = yylval_current;
5743 }
5744 return yyflag;
5745 }
5746
5747 #if YYDEBUG
5748 static void
5749 yyreportTree (yySemanticOption* yyx, int yyindent)
5750 {
5751 int yynrhs = yyrhsLength (yyx->yyrule);
5752 int yyi;
5753 yyGLRState* yys;
5754 yyGLRState* yystates[1 + YYMAXRHS];
5755 yyGLRState yyleftmost_state;
5756
5757 for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
5758 yystates[yyi] = yys;
5759 if (yys == YY_NULLPTR)
5760 {
5761 yyleftmost_state.yyposn = 0;
5762 yystates[0] = &yyleftmost_state;
5763 }
5764 else
5765 yystates[0] = yys;
5766
5767 if (yyx->yystate->yyposn < yys->yyposn + 1)
5768 YYFPRINTF (stderr, "%*s%s -> <Rule %d, empty>\n",
5769 yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
5770 yyx->yyrule - 1);
5771 else
5772 YYFPRINTF (stderr, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
5773 yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
5774 yyx->yyrule - 1, (unsigned long int) (yys->yyposn + 1),
5775 (unsigned long int) yyx->yystate->yyposn);
5776 for (yyi = 1; yyi <= yynrhs; yyi += 1)
5777 {
5778 if (yystates[yyi]->yyresolved)
5779 {
5780 if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
5781 YYFPRINTF (stderr, "%*s%s <empty>\n", yyindent+2, "",
5782 yytokenName (yystos[yystates[yyi]->yylrState]));
5783 else
5784 YYFPRINTF (stderr, "%*s%s <tokens %lu .. %lu>\n", yyindent+2, "",
5785 yytokenName (yystos[yystates[yyi]->yylrState]),
5786 (unsigned long int) (yystates[yyi-1]->yyposn + 1),
5787 (unsigned long int) yystates[yyi]->yyposn);
5788 }
5789 else
5790 yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
5791 }
5792 }
5793 #endif
5794
5795 static YYRESULTTAG
5796 yyreportAmbiguity (yySemanticOption* yyx0,
5797 yySemanticOption* yyx1, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5798 {
5799 YYUSE (yyx0);
5800 YYUSE (yyx1);
5801
5802 #if YYDEBUG
5803 YYFPRINTF (stderr, "Ambiguity detected.\n");
5804 YYFPRINTF (stderr, "Option 1,\n");
5805 yyreportTree (yyx0, 2);
5806 YYFPRINTF (stderr, "\nOption 2,\n");
5807 yyreportTree (yyx1, 2);
5808 YYFPRINTF (stderr, "\n");
5809 #endif
5810
5811 yyerror (P, tokens, index, YY_("syntax is ambiguous"));
5812 return yyabort;
5813 }
5814
5815 /** Resolve the ambiguity represented in state YYS in *YYSTACKP,
5816 * perform the indicated actions, and set the semantic value of YYS.
5817 * If result != yyok, the chain of semantic options in YYS has been
5818 * cleared instead or it has been left unmodified except that
5819 * redundant options may have been removed. Regardless of whether
5820 * result = yyok, YYS has been left with consistent data so that
5821 * yydestroyGLRState can be invoked if necessary. */
5822 static YYRESULTTAG
5823 yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5824 {
5825 yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
5826 yySemanticOption* yybest = yyoptionList;
5827 yySemanticOption** yypp;
5828 yybool yymerge = yyfalse;
5829 YYSTYPE yysval;
5830 YYRESULTTAG yyflag;
5831
5832 for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
5833 {
5834 yySemanticOption* yyp = *yypp;
5835
5836 if (yyidenticalOptions (yybest, yyp))
5837 {
5838 yymergeOptionSets (yybest, yyp);
5839 *yypp = yyp->yynext;
5840 }
5841 else
5842 {
5843 switch (yypreference (yybest, yyp))
5844 {
5845 case 0:
5846 return yyreportAmbiguity (yybest, yyp, P, tokens, index);
5847 break;
5848 case 1:
5849 yymerge = yytrue;
5850 break;
5851 case 2:
5852 break;
5853 case 3:
5854 yybest = yyp;
5855 yymerge = yyfalse;
5856 break;
5857 default:
5858 /* This cannot happen so it is not worth a YYASSERT (yyfalse),
5859 but some compilers complain if the default case is
5860 omitted. */
5861 break;
5862 }
5863 yypp = &yyp->yynext;
5864 }
5865 }
5866
5867 if (yymerge)
5868 {
5869 yySemanticOption* yyp;
5870 int yyprec = yydprec[yybest->yyrule];
5871 yyflag = yyresolveAction (yybest, yystackp, &yysval, P, tokens, index);
5872 if (yyflag == yyok)
5873 for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
5874 {
5875 if (yyprec == yydprec[yyp->yyrule])
5876 {
5877 YYSTYPE yysval_other;
5878 yyflag = yyresolveAction (yyp, yystackp, &yysval_other, P, tokens, index);
5879 if (yyflag != yyok)
5880 {
5881 yydestruct ("Cleanup: discarding incompletely merged value for",
5882 yystos[yys->yylrState],
5883 &yysval, P, tokens, index);
5884 break;
5885 }
5886 yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other);
5887 }
5888 }
5889 }
5890 else
5891 yyflag = yyresolveAction (yybest, yystackp, &yysval, P, tokens, index);
5892
5893 if (yyflag == yyok)
5894 {
5895 yys->yyresolved = yytrue;
5896 yys->yysemantics.yysval = yysval;
5897 }
5898 else
5899 yys->yysemantics.yyfirstVal = YY_NULLPTR;
5900 return yyflag;
5901 }
5902
5903 static YYRESULTTAG
5904 yyresolveStack (yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5905 {
5906 if (yystackp->yysplitPoint != YY_NULLPTR)
5907 {
5908 yyGLRState* yys;
5909 int yyn;
5910
5911 for (yyn = 0, yys = yystackp->yytops.yystates[0];
5912 yys != yystackp->yysplitPoint;
5913 yys = yys->yypred, yyn += 1)
5914 continue;
5915 YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
5916 , P, tokens, index));
5917 }
5918 return yyok;
5919 }
5920
5921 static void
5922 yycompressStack (yyGLRStack* yystackp)
5923 {
5924 yyGLRState* yyp, *yyq, *yyr;
5925
5926 if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
5927 return;
5928
5929 for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
5930 yyp != yystackp->yysplitPoint;
5931 yyr = yyp, yyp = yyq, yyq = yyp->yypred)
5932 yyp->yypred = yyr;
5933
5934 yystackp->yyspaceLeft += yystackp->yynextFree - yystackp->yyitems;
5935 yystackp->yynextFree = ((yyGLRStackItem*) yystackp->yysplitPoint) + 1;
5936 yystackp->yyspaceLeft -= yystackp->yynextFree - yystackp->yyitems;
5937 yystackp->yysplitPoint = YY_NULLPTR;
5938 yystackp->yylastDeleted = YY_NULLPTR;
5939
5940 while (yyr != YY_NULLPTR)
5941 {
5942 yystackp->yynextFree->yystate = *yyr;
5943 yyr = yyr->yypred;
5944 yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
5945 yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
5946 yystackp->yynextFree += 1;
5947 yystackp->yyspaceLeft -= 1;
5948 }
5949 }
5950
5951 static YYRESULTTAG
5952 yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
5953 size_t yyposn, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
5954 {
5955 while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
5956 {
5957 yyStateNum yystate = yystackp->yytops.yystates[yyk]->yylrState;
5958 YYDPRINTF ((stderr, "Stack %lu Entering state %d\n",
5959 (unsigned long int) yyk, yystate));
5960
5961 YYASSERT (yystate != YYFINAL);
5962
5963 if (yyisDefaultedState (yystate))
5964 {
5965 YYRESULTTAG yyflag;
5966 yyRuleNum yyrule = yydefaultAction (yystate);
5967 if (yyrule == 0)
5968 {
5969 YYDPRINTF ((stderr, "Stack %lu dies.\n",
5970 (unsigned long int) yyk));
5971 yymarkStackDeleted (yystackp, yyk);
5972 return yyok;
5973 }
5974 yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule], P, tokens, index);
5975 if (yyflag == yyerr)
5976 {
5977 YYDPRINTF ((stderr,
5978 "Stack %lu dies "
5979 "(predicate failure or explicit user error).\n",
5980 (unsigned long int) yyk));
5981 yymarkStackDeleted (yystackp, yyk);
5982 return yyok;
5983 }
5984 if (yyflag != yyok)
5985 return yyflag;
5986 }
5987 else
5988 {
5989 yySymbol yytoken;
5990 int yyaction;
5991 const short int* yyconflicts;
5992
5993 yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
5994 if (yychar == YYEMPTY)
5995 {
5996 YYDPRINTF ((stderr, "Reading a token: "));
5997 yychar = yylex (&yylval, P, tokens, index);
5998 }
5999
6000 if (yychar <= YYEOF)
6001 {
6002 yychar = yytoken = YYEOF;
6003 YYDPRINTF ((stderr, "Now at end of input.\n"));
6004 }
6005 else
6006 {
6007 yytoken = YYTRANSLATE (yychar);
6008 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
6009 }
6010
6011 yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts);
6012
6013 while (*yyconflicts != 0)
6014 {
6015 YYRESULTTAG yyflag;
6016 size_t yynewStack = yysplitStack (yystackp, yyk);
6017 YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n",
6018 (unsigned long int) yynewStack,
6019 (unsigned long int) yyk));
6020 yyflag = yyglrReduce (yystackp, yynewStack,
6021 *yyconflicts,
6022 yyimmediate[*yyconflicts], P, tokens, index);
6023 if (yyflag == yyok)
6024 YYCHK (yyprocessOneStack (yystackp, yynewStack,
6025 yyposn, P, tokens, index));
6026 else if (yyflag == yyerr)
6027 {
6028 YYDPRINTF ((stderr, "Stack %lu dies.\n",
6029 (unsigned long int) yynewStack));
6030 yymarkStackDeleted (yystackp, yynewStack);
6031 }
6032 else
6033 return yyflag;
6034 yyconflicts += 1;
6035 }
6036
6037 if (yyisShiftAction (yyaction))
6038 break;
6039 else if (yyisErrorAction (yyaction))
6040 {
6041 YYDPRINTF ((stderr, "Stack %lu dies.\n",
6042 (unsigned long int) yyk));
6043 yymarkStackDeleted (yystackp, yyk);
6044 break;
6045 }
6046 else
6047 {
6048 YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
6049 yyimmediate[-yyaction], P, tokens, index);
6050 if (yyflag == yyerr)
6051 {
6052 YYDPRINTF ((stderr,
6053 "Stack %lu dies "
6054 "(predicate failure or explicit user error).\n",
6055 (unsigned long int) yyk));
6056 yymarkStackDeleted (yystackp, yyk);
6057 break;
6058 }
6059 else if (yyflag != yyok)
6060 return yyflag;
6061 }
6062 }
6063 }
6064 return yyok;
6065 }
6066
6067 static void
6068 yyreportSyntaxError (yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
6069 {
6070 if (yystackp->yyerrState != 0)
6071 return;
6072 #if ! YYERROR_VERBOSE
6073 yyerror (P, tokens, index, YY_("syntax error"));
6074 #else
6075 {
6076 yySymbol yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6077 size_t yysize0 = yytnamerr (YY_NULLPTR, yytokenName (yytoken));
6078 size_t yysize = yysize0;
6079 yybool yysize_overflow = yyfalse;
6080 char* yymsg = YY_NULLPTR;
6081 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
6082 /* Internationalized format string. */
6083 const char *yyformat = YY_NULLPTR;
6084 /* Arguments of yyformat. */
6085 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
6086 /* Number of reported tokens (one for the "unexpected", one per
6087 "expected"). */
6088 int yycount = 0;
6089
6090 /* There are many possibilities here to consider:
6091 - If this state is a consistent state with a default action, then
6092 the only way this function was invoked is if the default action
6093 is an error action. In that case, don't check for expected
6094 tokens because there are none.
6095 - The only way there can be no lookahead present (in yychar) is if
6096 this state is a consistent state with a default action. Thus,
6097 detecting the absence of a lookahead is sufficient to determine
6098 that there is no unexpected or expected token to report. In that
6099 case, just report a simple "syntax error".
6100 - Don't assume there isn't a lookahead just because this state is a
6101 consistent state with a default action. There might have been a
6102 previous inconsistent state, consistent state with a non-default
6103 action, or user semantic action that manipulated yychar.
6104 - Of course, the expected token list depends on states to have
6105 correct lookahead information, and it depends on the parser not
6106 to perform extra reductions after fetching a lookahead from the
6107 scanner and before detecting a syntax error. Thus, state merging
6108 (from LALR or IELR) and default reductions corrupt the expected
6109 token list. However, the list is correct for canonical LR with
6110 one exception: it will still contain any token that will not be
6111 accepted due to an error action in a later state.
6112 */
6113 if (yytoken != YYEMPTY)
6114 {
6115 int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
6116 yyarg[yycount++] = yytokenName (yytoken);
6117 if (!yypact_value_is_default (yyn))
6118 {
6119 /* Start YYX at -YYN if negative to avoid negative indexes in
6120 YYCHECK. In other words, skip the first -YYN actions for this
6121 state because they are default actions. */
6122 int yyxbegin = yyn < 0 ? -yyn : 0;
6123 /* Stay within bounds of both yycheck and yytname. */
6124 int yychecklim = YYLAST - yyn + 1;
6125 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
6126 int yyx;
6127 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6128 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
6129 && !yytable_value_is_error (yytable[yyx + yyn]))
6130 {
6131 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
6132 {
6133 yycount = 1;
6134 yysize = yysize0;
6135 break;
6136 }
6137 yyarg[yycount++] = yytokenName (yyx);
6138 {
6139 size_t yysz = yysize + yytnamerr (YY_NULLPTR, yytokenName (yyx));
6140 yysize_overflow |= yysz < yysize;
6141 yysize = yysz;
6142 }
6143 }
6144 }
6145 }
6146
6147 switch (yycount)
6148 {
6149 #define YYCASE_(N, S) \
6150 case N: \
6151 yyformat = S; \
6152 break
6153 YYCASE_(0, YY_("syntax error"));
6154 YYCASE_(1, YY_("syntax error, unexpected %s"));
6155 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
6156 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
6157 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
6158 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
6159 #undef YYCASE_
6160 }
6161
6162 {
6163 size_t yysz = yysize + strlen (yyformat);
6164 yysize_overflow |= yysz < yysize;
6165 yysize = yysz;
6166 }
6167
6168 if (!yysize_overflow)
6169 yymsg = (char *) YYMALLOC (yysize);
6170
6171 if (yymsg)
6172 {
6173 char *yyp = yymsg;
6174 int yyi = 0;
6175 while ((*yyp = *yyformat))
6176 {
6177 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
6178 {
6179 yyp += yytnamerr (yyp, yyarg[yyi++]);
6180 yyformat += 2;
6181 }
6182 else
6183 {
6184 yyp++;
6185 yyformat++;
6186 }
6187 }
6188 yyerror (P, tokens, index, yymsg);
6189 YYFREE (yymsg);
6190 }
6191 else
6192 {
6193 yyerror (P, tokens, index, YY_("syntax error"));
6194 yyMemoryExhausted (yystackp);
6195 }
6196 }
6197 #endif /* YYERROR_VERBOSE */
6198 yynerrs += 1;
6199 }
6200
6201 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
6202 yylval, and yylloc are the syntactic category, semantic value, and location
6203 of the lookahead. */
6204 static void
6205 yyrecoverSyntaxError (yyGLRStack* yystackp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
6206 {
6207 size_t yyk;
6208 int yyj;
6209
6210 if (yystackp->yyerrState == 3)
6211 /* We just shifted the error token and (perhaps) took some
6212 reductions. Skip tokens until we can proceed. */
6213 while (yytrue)
6214 {
6215 yySymbol yytoken;
6216 if (yychar == YYEOF)
6217 yyFail (yystackp, P, tokens, index, YY_NULLPTR);
6218 if (yychar != YYEMPTY)
6219 {
6220 yytoken = YYTRANSLATE (yychar);
6221 yydestruct ("Error: discarding",
6222 yytoken, &yylval, P, tokens, index);
6223 }
6224 YYDPRINTF ((stderr, "Reading a token: "));
6225 yychar = yylex (&yylval, P, tokens, index);
6226 if (yychar <= YYEOF)
6227 {
6228 yychar = yytoken = YYEOF;
6229 YYDPRINTF ((stderr, "Now at end of input.\n"));
6230 }
6231 else
6232 {
6233 yytoken = YYTRANSLATE (yychar);
6234 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
6235 }
6236 yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
6237 if (yypact_value_is_default (yyj))
6238 return;
6239 yyj += yytoken;
6240 if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
6241 {
6242 if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
6243 return;
6244 }
6245 else if (! yytable_value_is_error (yytable[yyj]))
6246 return;
6247 }
6248
6249 /* Reduce to one stack. */
6250 for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
6251 if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
6252 break;
6253 if (yyk >= yystackp->yytops.yysize)
6254 yyFail (yystackp, P, tokens, index, YY_NULLPTR);
6255 for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
6256 yymarkStackDeleted (yystackp, yyk);
6257 yyremoveDeletes (yystackp);
6258 yycompressStack (yystackp);
6259
6260 /* Now pop stack until we find a state that shifts the error token. */
6261 yystackp->yyerrState = 3;
6262 while (yystackp->yytops.yystates[0] != YY_NULLPTR)
6263 {
6264 yyGLRState *yys = yystackp->yytops.yystates[0];
6265 yyj = yypact[yys->yylrState];
6266 if (! yypact_value_is_default (yyj))
6267 {
6268 yyj += YYTERROR;
6269 if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR
6270 && yyisShiftAction (yytable[yyj]))
6271 {
6272 /* Shift the error token. */
6273 YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]],
6274 &yylval, &yyerrloc);
6275 yyglrShift (yystackp, 0, yytable[yyj],
6276 yys->yyposn, &yylval);
6277 yys = yystackp->yytops.yystates[0];
6278 break;
6279 }
6280 }
6281 if (yys->yypred != YY_NULLPTR)
6282 yydestroyGLRState ("Error: popping", yys, P, tokens, index);
6283 yystackp->yytops.yystates[0] = yys->yypred;
6284 yystackp->yynextFree -= 1;
6285 yystackp->yyspaceLeft += 1;
6286 }
6287 if (yystackp->yytops.yystates[0] == YY_NULLPTR)
6288 yyFail (yystackp, P, tokens, index, YY_NULLPTR);
6289 }
6290
6291 #define YYCHK1(YYE) \
6292 do { \
6293 switch (YYE) { \
6294 case yyok: \
6295 break; \
6296 case yyabort: \
6297 goto yyabortlab; \
6298 case yyaccept: \
6299 goto yyacceptlab; \
6300 case yyerr: \
6301 goto yyuser_error; \
6302 default: \
6303 goto yybuglab; \
6304 } \
6305 } while (0)
6306
6307 /*----------.
6308 | yyparse. |
6309 `----------*/
6310
6311 int
6312 yyparse (struct psi_parser *P, struct psi_plist *tokens, size_t *index)
6313 {
6314 int yyresult;
6315 yyGLRStack yystack;
6316 yyGLRStack* const yystackp = &yystack;
6317 size_t yyposn;
6318
6319 YYDPRINTF ((stderr, "Starting parse\n"));
6320
6321 yychar = YYEMPTY;
6322 yylval = yyval_default;
6323
6324 /* User initialization code. */
6325 #line 117 "src/parser_proc_grammar.y" /* glr.c:2270 */
6326 {
6327 }
6328
6329 #line 6330 "src/parser_proc.c" /* glr.c:2270 */
6330
6331 if (! yyinitGLRStack (yystackp, YYINITDEPTH))
6332 goto yyexhaustedlab;
6333 switch (YYSETJMP (yystack.yyexception_buffer))
6334 {
6335 case 0: break;
6336 case 1: goto yyabortlab;
6337 case 2: goto yyexhaustedlab;
6338 default: goto yybuglab;
6339 }
6340 yyglrShift (&yystack, 0, 0, 0, &yylval);
6341 yyposn = 0;
6342
6343 while (yytrue)
6344 {
6345 /* For efficiency, we have two loops, the first of which is
6346 specialized to deterministic operation (single stack, no
6347 potential ambiguity). */
6348 /* Standard mode */
6349 while (yytrue)
6350 {
6351 yyRuleNum yyrule;
6352 int yyaction;
6353 const short int* yyconflicts;
6354
6355 yyStateNum yystate = yystack.yytops.yystates[0]->yylrState;
6356 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
6357 if (yystate == YYFINAL)
6358 goto yyacceptlab;
6359 if (yyisDefaultedState (yystate))
6360 {
6361 yyrule = yydefaultAction (yystate);
6362 if (yyrule == 0)
6363 {
6364
6365 yyreportSyntaxError (&yystack, P, tokens, index);
6366 goto yyuser_error;
6367 }
6368 YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue, P, tokens, index));
6369 }
6370 else
6371 {
6372 yySymbol yytoken;
6373 if (yychar == YYEMPTY)
6374 {
6375 YYDPRINTF ((stderr, "Reading a token: "));
6376 yychar = yylex (&yylval, P, tokens, index);
6377 }
6378
6379 if (yychar <= YYEOF)
6380 {
6381 yychar = yytoken = YYEOF;
6382 YYDPRINTF ((stderr, "Now at end of input.\n"));
6383 }
6384 else
6385 {
6386 yytoken = YYTRANSLATE (yychar);
6387 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
6388 }
6389
6390 yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts);
6391 if (*yyconflicts != 0)
6392 break;
6393 if (yyisShiftAction (yyaction))
6394 {
6395 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
6396 yychar = YYEMPTY;
6397 yyposn += 1;
6398 yyglrShift (&yystack, 0, yyaction, yyposn, &yylval);
6399 if (0 < yystack.yyerrState)
6400 yystack.yyerrState -= 1;
6401 }
6402 else if (yyisErrorAction (yyaction))
6403 {
6404
6405 yyreportSyntaxError (&yystack, P, tokens, index);
6406 goto yyuser_error;
6407 }
6408 else
6409 YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue, P, tokens, index));
6410 }
6411 }
6412
6413 while (yytrue)
6414 {
6415 yySymbol yytoken_to_shift;
6416 size_t yys;
6417
6418 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
6419 yystackp->yytops.yylookaheadNeeds[yys] = yychar != YYEMPTY;
6420
6421 /* yyprocessOneStack returns one of three things:
6422
6423 - An error flag. If the caller is yyprocessOneStack, it
6424 immediately returns as well. When the caller is finally
6425 yyparse, it jumps to an error label via YYCHK1.
6426
6427 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
6428 (&yystack, yys), which sets the top state of yys to NULL. Thus,
6429 yyparse's following invocation of yyremoveDeletes will remove
6430 the stack.
6431
6432 - yyok, when ready to shift a token.
6433
6434 Except in the first case, yyparse will invoke yyremoveDeletes and
6435 then shift the next token onto all remaining stacks. This
6436 synchronization of the shift (that is, after all preceding
6437 reductions on all stacks) helps prevent double destructor calls
6438 on yylval in the event of memory exhaustion. */
6439
6440 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
6441 YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, P, tokens, index));
6442 yyremoveDeletes (&yystack);
6443 if (yystack.yytops.yysize == 0)
6444 {
6445 yyundeleteLastStack (&yystack);
6446 if (yystack.yytops.yysize == 0)
6447 yyFail (&yystack, P, tokens, index, YY_("syntax error"));
6448 YYCHK1 (yyresolveStack (&yystack, P, tokens, index));
6449 YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
6450
6451 yyreportSyntaxError (&yystack, P, tokens, index);
6452 goto yyuser_error;
6453 }
6454
6455 /* If any yyglrShift call fails, it will fail after shifting. Thus,
6456 a copy of yylval will already be on stack 0 in the event of a
6457 failure in the following loop. Thus, yychar is set to YYEMPTY
6458 before the loop to make sure the user destructor for yylval isn't
6459 called twice. */
6460 yytoken_to_shift = YYTRANSLATE (yychar);
6461 yychar = YYEMPTY;
6462 yyposn += 1;
6463 for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
6464 {
6465 int yyaction;
6466 const short int* yyconflicts;
6467 yyStateNum yystate = yystack.yytops.yystates[yys]->yylrState;
6468 yygetLRActions (yystate, yytoken_to_shift, &yyaction,
6469 &yyconflicts);
6470 /* Note that yyconflicts were handled by yyprocessOneStack. */
6471 YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long int) yys));
6472 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
6473 yyglrShift (&yystack, yys, yyaction, yyposn,
6474 &yylval);
6475 YYDPRINTF ((stderr, "Stack %lu now in state #%d\n",
6476 (unsigned long int) yys,
6477 yystack.yytops.yystates[yys]->yylrState));
6478 }
6479
6480 if (yystack.yytops.yysize == 1)
6481 {
6482 YYCHK1 (yyresolveStack (&yystack, P, tokens, index));
6483 YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
6484 yycompressStack (&yystack);
6485 break;
6486 }
6487 }
6488 continue;
6489 yyuser_error:
6490 yyrecoverSyntaxError (&yystack, P, tokens, index);
6491 yyposn = yystack.yytops.yystates[0]->yyposn;
6492 }
6493
6494 yyacceptlab:
6495 yyresult = 0;
6496 goto yyreturn;
6497
6498 yybuglab:
6499 YYASSERT (yyfalse);
6500 goto yyabortlab;
6501
6502 yyabortlab:
6503 yyresult = 1;
6504 goto yyreturn;
6505
6506 yyexhaustedlab:
6507 yyerror (P, tokens, index, YY_("memory exhausted"));
6508 yyresult = 2;
6509 goto yyreturn;
6510
6511 yyreturn:
6512 if (yychar != YYEMPTY)
6513 yydestruct ("Cleanup: discarding lookahead",
6514 YYTRANSLATE (yychar), &yylval, P, tokens, index);
6515
6516 /* If the stack is well-formed, pop the stack until it is empty,
6517 destroying its entries as we go. But free the stack regardless
6518 of whether it is well-formed. */
6519 if (yystack.yyitems)
6520 {
6521 yyGLRState** yystates = yystack.yytops.yystates;
6522 if (yystates)
6523 {
6524 size_t yysize = yystack.yytops.yysize;
6525 size_t yyk;
6526 for (yyk = 0; yyk < yysize; yyk += 1)
6527 if (yystates[yyk])
6528 {
6529 while (yystates[yyk])
6530 {
6531 yyGLRState *yys = yystates[yyk];
6532 if (yys->yypred != YY_NULLPTR)
6533 yydestroyGLRState ("Cleanup: popping", yys, P, tokens, index);
6534 yystates[yyk] = yys->yypred;
6535 yystack.yynextFree -= 1;
6536 yystack.yyspaceLeft += 1;
6537 }
6538 break;
6539 }
6540 }
6541 yyfreeGLRStack (&yystack);
6542 }
6543
6544 return yyresult;
6545 }
6546
6547 /* DEBUGGING ONLY */
6548 #if YYDEBUG
6549 static void
6550 yy_yypstack (yyGLRState* yys)
6551 {
6552 if (yys->yypred)
6553 {
6554 yy_yypstack (yys->yypred);
6555 YYFPRINTF (stderr, " -> ");
6556 }
6557 YYFPRINTF (stderr, "%d@%lu", yys->yylrState,
6558 (unsigned long int) yys->yyposn);
6559 }
6560
6561 static void
6562 yypstates (yyGLRState* yyst)
6563 {
6564 if (yyst == YY_NULLPTR)
6565 YYFPRINTF (stderr, "<null>");
6566 else
6567 yy_yypstack (yyst);
6568 YYFPRINTF (stderr, "\n");
6569 }
6570
6571 static void
6572 yypstack (yyGLRStack* yystackp, size_t yyk)
6573 {
6574 yypstates (yystackp->yytops.yystates[yyk]);
6575 }
6576
6577 #define YYINDEX(YYX) \
6578 ((YYX) == YY_NULLPTR ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems)
6579
6580
6581 static void
6582 yypdumpstack (yyGLRStack* yystackp)
6583 {
6584 yyGLRStackItem* yyp;
6585 size_t yyi;
6586 for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
6587 {
6588 YYFPRINTF (stderr, "%3lu. ",
6589 (unsigned long int) (yyp - yystackp->yyitems));
6590 if (*(yybool *) yyp)
6591 {
6592 YYASSERT (yyp->yystate.yyisState);
6593 YYASSERT (yyp->yyoption.yyisState);
6594 YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
6595 yyp->yystate.yyresolved, yyp->yystate.yylrState,
6596 (unsigned long int) yyp->yystate.yyposn,
6597 (long int) YYINDEX (yyp->yystate.yypred));
6598 if (! yyp->yystate.yyresolved)
6599 YYFPRINTF (stderr, ", firstVal: %ld",
6600 (long int) YYINDEX (yyp->yystate
6601 .yysemantics.yyfirstVal));
6602 }
6603 else
6604 {
6605 YYASSERT (!yyp->yystate.yyisState);
6606 YYASSERT (!yyp->yyoption.yyisState);
6607 YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld",
6608 yyp->yyoption.yyrule - 1,
6609 (long int) YYINDEX (yyp->yyoption.yystate),
6610 (long int) YYINDEX (yyp->yyoption.yynext));
6611 }
6612 YYFPRINTF (stderr, "\n");
6613 }
6614 YYFPRINTF (stderr, "Tops:");
6615 for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
6616 YYFPRINTF (stderr, "%lu: %ld; ", (unsigned long int) yyi,
6617 (long int) YYINDEX (yystackp->yytops.yystates[yyi]));
6618 YYFPRINTF (stderr, "\n");
6619 }
6620 #endif
6621
6622 #undef yylval
6623 #undef yychar
6624 #undef yynerrs
6625
6626 /* Substitute the variable and function names. */
6627 #define yyparse psi_parser_proc_parse
6628 #define yylex psi_parser_proc_lex
6629 #define yyerror psi_parser_proc_error
6630 #define yylval psi_parser_proc_lval
6631 #define yychar psi_parser_proc_char
6632 #define yydebug psi_parser_proc_debug
6633 #define yynerrs psi_parser_proc_nerrs
6634
6635 #line 1744 "src/parser_proc_grammar.y" /* glr.c:2584 */
6636
6637
6638 /* epilogue */
6639
6640 static int psi_parser_proc_lex(YYSTYPE *lvalp, struct psi_parser *P, struct psi_plist *tokens, size_t *index)
6641 {
6642 struct psi_token *token;
6643
6644 if (psi_plist_get(tokens, (*index)++, &token)) {
6645 if (P->flags & PSI_DEBUG) {
6646 psi_token_dump(2, token);
6647 }
6648
6649 *((struct psi_token **)lvalp) = token;
6650 return token->type;
6651 } else {
6652 (*index)--;
6653 PSI_DEBUG_PRINT(P, "EOF(%d)\n", PSI_T_EOF);
6654 }
6655
6656 return PSI_T_EOF;
6657 }
6658
6659 static void psi_parser_proc_error(struct psi_parser *P, struct psi_plist *tokens, size_t *index, const char *msg)
6660 {
6661 struct psi_token *T = NULL;
6662 size_t last;
6663
6664 if (*index == 0) {
6665 last = 0;
6666 } else {
6667 last = --(*index);
6668 }
6669
6670 psi_plist_get(tokens, last, &T);
6671 if (T) {
6672 P->error(PSI_DATA(P), T, PSI_WARNING, "PSI %s at col %u", msg, T->col);
6673 } else {
6674 P->error(PSI_DATA(P), NULL, PSI_WARNING, "PSI %s", msg);
6675 }
6676 P->errors++;
6677 }
6678