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