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