write .incbin data when generating pure binary
[xorcyst.git] / parser.c
blob541628667194cb6a389f8ea3e7295951f1980726
1 /* A Bison parser, made by GNU Bison 1.875. */
3 /* Skeleton parser for Yacc-like parsing with Bison,
4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. */
21 /* As a special exception, when this file is copied by Bison into a
22 Bison output file, you may use that output file without restriction.
23 This special exception was added by the Free Software Foundation
24 in version 1.24 of Bison. */
26 /* Written by Richard Stallman by simplifying the original so called
27 ``semantic'' parser. */
29 /* All symbols defined below should begin with yy or YY, to avoid
30 infringing on user name space. This should be done even for local
31 variables, as they might otherwise be expanded by user macros.
32 There are some unavoidable exceptions within include files to
33 define necessary library symbols; they are noted "INFRINGES ON
34 USER NAME SPACE" below. */
36 /* Identify Bison output. */
37 #define YYBISON 1
39 /* Skeleton name. */
40 #define YYSKELETON_NAME "yacc.c"
42 /* Pure parsers. */
43 #define YYPURE 0
45 /* Using locations. */
46 #define YYLSP_NEEDED 1
50 /* Tokens. */
51 #ifndef YYTOKENTYPE
52 # define YYTOKENTYPE
53 /* Put the tokens into the symbol table, so that GDB and other debuggers
54 know about them. */
55 enum yytokentype {
56 INTEGER_LITERAL = 258,
57 STRING_LITERAL = 259,
58 FILE_PATH = 260,
59 IDENTIFIER = 261,
60 LOCAL_ID = 262,
61 FORWARD_BRANCH = 263,
62 BACKWARD_BRANCH = 264,
63 LABEL = 265,
64 LOCAL_LABEL = 266,
65 MNEMONIC = 267,
66 _LABEL_ = 268,
67 BYTE = 269,
68 CHAR = 270,
69 WORD = 271,
70 DWORD = 272,
71 DSB = 273,
72 DSW = 274,
73 DSD = 275,
74 DATASEG = 276,
75 CODESEG = 277,
76 IF = 278,
77 IFDEF = 279,
78 IFNDEF = 280,
79 ELSE = 281,
80 ELIF = 282,
81 ENDIF = 283,
82 INCSRC = 284,
83 INCBIN = 285,
84 MACRO = 286,
85 REPT = 287,
86 WHILE = 288,
87 ENDM = 289,
88 ALIGN = 290,
89 EQU = 291,
90 DEFINE = 292,
91 END = 293,
92 PUBLIC = 294,
93 EXTRN = 295,
94 CHARMAP = 296,
95 STRUC = 297,
96 UNION = 298,
97 ENDS = 299,
98 RECORD = 300,
99 ENUM = 301,
100 ENDE = 302,
101 PROC = 303,
102 ENDP = 304,
103 SIZEOF = 305,
104 MASK = 306,
105 TAG = 307,
106 MESSAGE = 308,
107 WARNING = 309,
108 ERROR = 310,
109 ZEROPAGE = 311,
110 ORG = 312,
111 SCOPE_OP = 313,
112 HI_OP = 314,
113 LO_OP = 315,
114 NE_OP = 316,
115 EQ_OP = 317,
116 GE_OP = 318,
117 LE_OP = 319,
118 SHR_OP = 320,
119 SHL_OP = 321,
120 UMINUS = 322
122 #endif
123 #define INTEGER_LITERAL 258
124 #define STRING_LITERAL 259
125 #define FILE_PATH 260
126 #define IDENTIFIER 261
127 #define LOCAL_ID 262
128 #define FORWARD_BRANCH 263
129 #define BACKWARD_BRANCH 264
130 #define LABEL 265
131 #define LOCAL_LABEL 266
132 #define MNEMONIC 267
133 #define _LABEL_ 268
134 #define BYTE 269
135 #define CHAR 270
136 #define WORD 271
137 #define DWORD 272
138 #define DSB 273
139 #define DSW 274
140 #define DSD 275
141 #define DATASEG 276
142 #define CODESEG 277
143 #define IF 278
144 #define IFDEF 279
145 #define IFNDEF 280
146 #define ELSE 281
147 #define ELIF 282
148 #define ENDIF 283
149 #define INCSRC 284
150 #define INCBIN 285
151 #define MACRO 286
152 #define REPT 287
153 #define WHILE 288
154 #define ENDM 289
155 #define ALIGN 290
156 #define EQU 291
157 #define DEFINE 292
158 #define END 293
159 #define PUBLIC 294
160 #define EXTRN 295
161 #define CHARMAP 296
162 #define STRUC 297
163 #define UNION 298
164 #define ENDS 299
165 #define RECORD 300
166 #define ENUM 301
167 #define ENDE 302
168 #define PROC 303
169 #define ENDP 304
170 #define SIZEOF 305
171 #define MASK 306
172 #define TAG 307
173 #define MESSAGE 308
174 #define WARNING 309
175 #define ERROR 310
176 #define ZEROPAGE 311
177 #define ORG 312
178 #define SCOPE_OP 313
179 #define HI_OP 314
180 #define LO_OP 315
181 #define NE_OP 316
182 #define EQ_OP 317
183 #define GE_OP 318
184 #define LE_OP 319
185 #define SHR_OP 320
186 #define SHL_OP 321
187 #define UMINUS 322
192 /* Copy the first part of user declarations. */
193 #line 1 "parser.y"
196 * $Id: parser.y,v 1.13 2007/08/19 11:19:47 khansen Exp khansen $
197 * $Log: parser.y,v $
198 * Revision 1.13 2007/08/19 11:19:47 khansen
199 * --case-insensitive option
201 * Revision 1.12 2007/08/12 18:59:00 khansen
202 * ability to generate pure 6502 binary
204 * Revision 1.11 2007/08/11 01:25:50 khansen
205 * includepaths support (-I option)
207 * Revision 1.10 2007/07/22 13:34:38 khansen
208 * convert tabs to whitespaces
210 * Revision 1.9 2005/01/05 02:28:40 kenth
211 * anonymous union parsing
213 * Revision 1.8 2004/12/29 21:45:26 kenth
214 * xorcyst 1.4.2
215 * static indexing
217 * Revision 1.7 2004/12/19 19:59:14 kenth
218 * xorcyst 1.4.0
220 * Revision 1.6 2004/12/16 13:22:27 kenth
221 * xorcyst 1.3.5
223 * Revision 1.5 2004/12/14 01:50:42 kenth
224 * xorcyst 1.3.0
226 * Revision 1.4 2004/12/11 02:12:41 kenth
227 * xorcyst 1.2.0
229 * Revision 1.3 2004/12/09 11:17:15 kenth
230 * added: warning_statement, error_statement
232 * Revision 1.2 2004/12/06 05:06:21 kenth
233 * xorcyst 1.1.0
235 * Revision 1.1 2004/06/30 07:57:03 kenth
236 * Initial revision
239 #include <stdlib.h>
240 #include <stdio.h>
241 #include <string.h>
242 #include "symtab.h"
243 #include "loc.h"
244 #include "xasm.h"
245 //#define YYDEBUG 1
246 int yyparse(void);
247 void yyerror(const char *); /* In lexer */
248 int yylex(void); /* In lexer */
249 int yypushandrestart(const char *); /* In lexer */
250 void __yy_memcpy(char *, char *, int);
251 extern char *yytext; /* In lexer */
252 extern YYLTYPE yylloc; /* In lexer */
253 extern astnode *root_node; /* Root of the generated parse tree */
254 void handle_incsrc(astnode *); /* See below */
255 void handle_incbin(astnode *); /* See below */
258 /* Enabling traces. */
259 #ifndef YYDEBUG
260 # define YYDEBUG 0
261 #endif
263 /* Enabling verbose error messages. */
264 #ifdef YYERROR_VERBOSE
265 # undef YYERROR_VERBOSE
266 # define YYERROR_VERBOSE 1
267 #else
268 # define YYERROR_VERBOSE 1
269 #endif
271 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
272 #line 65 "parser.y"
273 typedef union YYSTYPE {
274 long integer;
275 int mnemonic;
276 const char *string;
277 const char *label;
278 const char *ident;
279 astnode *node;
280 } YYSTYPE;
281 /* Line 191 of yacc.c. */
282 #line 282 "parser.c"
283 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
284 # define YYSTYPE_IS_DECLARED 1
285 # define YYSTYPE_IS_TRIVIAL 1
286 #endif
288 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
289 typedef struct YYLTYPE
291 int first_line;
292 int first_column;
293 int last_line;
294 int last_column;
295 } YYLTYPE;
296 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
297 # define YYLTYPE_IS_DECLARED 1
298 # define YYLTYPE_IS_TRIVIAL 1
299 #endif
302 /* Copy the second part of user declarations. */
305 /* Line 214 of yacc.c. */
306 #line 306 "parser.c"
308 #if ! defined (yyoverflow) || YYERROR_VERBOSE
310 /* The parser invokes alloca or malloc; define the necessary symbols. */
312 # if YYSTACK_USE_ALLOCA
313 # define YYSTACK_ALLOC alloca
314 # else
315 # ifndef YYSTACK_USE_ALLOCA
316 # if defined (alloca) || defined (_ALLOCA_H)
317 # define YYSTACK_ALLOC alloca
318 # else
319 # ifdef __GNUC__
320 # define YYSTACK_ALLOC __builtin_alloca
321 # endif
322 # endif
323 # endif
324 # endif
326 # ifdef YYSTACK_ALLOC
327 /* Pacify GCC's `empty if-body' warning. */
328 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
329 # else
330 # if defined (__STDC__) || defined (__cplusplus)
331 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
332 # define YYSIZE_T size_t
333 # endif
334 # define YYSTACK_ALLOC malloc
335 # define YYSTACK_FREE free
336 # endif
337 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
340 #if (! defined (yyoverflow) \
341 && (! defined (__cplusplus) \
342 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
344 /* A type that is properly aligned for any stack member. */
345 union yyalloc
347 short yyss;
348 YYSTYPE yyvs;
349 YYLTYPE yyls;
352 /* The size of the maximum gap between one aligned stack and the next. */
353 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
355 /* The size of an array large to enough to hold all stacks, each with
356 N elements. */
357 # define YYSTACK_BYTES(N) \
358 ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
359 + 2 * YYSTACK_GAP_MAXIMUM)
361 /* Copy COUNT objects from FROM to TO. The source and destination do
362 not overlap. */
363 # ifndef YYCOPY
364 # if 1 < __GNUC__
365 # define YYCOPY(To, From, Count) \
366 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
367 # else
368 # define YYCOPY(To, From, Count) \
369 do \
371 register YYSIZE_T yyi; \
372 for (yyi = 0; yyi < (Count); yyi++) \
373 (To)[yyi] = (From)[yyi]; \
375 while (0)
376 # endif
377 # endif
379 /* Relocate STACK from its old location to the new one. The
380 local variables YYSIZE and YYSTACKSIZE give the old and new number of
381 elements in the stack, and YYPTR gives the new location of the
382 stack. Advance YYPTR to a properly aligned location for the next
383 stack. */
384 # define YYSTACK_RELOCATE(Stack) \
385 do \
387 YYSIZE_T yynewbytes; \
388 YYCOPY (&yyptr->Stack, Stack, yysize); \
389 Stack = &yyptr->Stack; \
390 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
391 yyptr += yynewbytes / sizeof (*yyptr); \
393 while (0)
395 #endif
397 #if defined (__STDC__) || defined (__cplusplus)
398 typedef signed char yysigned_char;
399 #else
400 typedef short yysigned_char;
401 #endif
403 /* YYFINAL -- State number of the termination state. */
404 #define YYFINAL 160
405 /* YYLAST -- Last index in YYTABLE. */
406 #define YYLAST 2037
408 /* YYNTOKENS -- Number of terminals. */
409 #define YYNTOKENS 97
410 /* YYNNTS -- Number of nonterminals. */
411 #define YYNNTS 83
412 /* YYNRULES -- Number of rules. */
413 #define YYNRULES 215
414 /* YYNRULES -- Number of states. */
415 #define YYNSTATES 380
417 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
418 #define YYUNDEFTOK 2
419 #define YYMAXUTOK 322
421 #define YYTRANSLATE(YYX) \
422 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
424 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
425 static const unsigned char yytranslate[] =
427 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
428 58, 2, 2, 2, 2, 2, 2, 2, 2, 2,
429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
430 2, 2, 2, 93, 2, 73, 66, 92, 78, 2,
431 95, 96, 90, 87, 71, 88, 72, 91, 2, 2,
432 2, 2, 2, 2, 2, 2, 2, 2, 59, 2,
433 82, 65, 81, 2, 60, 62, 2, 2, 2, 2,
434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
435 2, 2, 2, 2, 2, 2, 2, 2, 63, 64,
436 2, 69, 2, 70, 77, 2, 2, 2, 2, 2,
437 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
439 2, 2, 2, 67, 76, 68, 94, 2, 2, 2,
440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
442 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
443 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
444 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
445 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
446 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
447 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
448 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
449 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
450 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
451 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
452 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
453 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
454 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
455 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
456 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
457 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
458 55, 56, 57, 61, 74, 75, 79, 80, 83, 84,
459 85, 86, 89
462 #if YYDEBUG
463 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
464 YYRHS. */
465 static const unsigned short yyprhs[] =
467 0, 0, 3, 6, 9, 10, 12, 15, 18, 20,
468 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,
469 42, 44, 46, 48, 50, 52, 54, 56, 58, 60,
470 62, 64, 66, 68, 70, 72, 74, 76, 78, 80,
471 82, 84, 87, 91, 96, 100, 104, 108, 114, 117,
472 118, 121, 122, 129, 136, 143, 150, 157, 164, 166,
473 169, 171, 174, 179, 181, 185, 189, 193, 196, 200,
474 203, 205, 207, 209, 211, 213, 216, 218, 221, 225,
475 228, 233, 238, 245, 252, 257, 259, 262, 264, 266,
476 268, 270, 272, 274, 276, 280, 282, 284, 286, 288,
477 291, 293, 298, 303, 305, 307, 309, 311, 313, 314,
478 318, 322, 326, 330, 332, 333, 335, 339, 341, 342,
479 344, 348, 352, 356, 360, 364, 368, 372, 376, 380,
480 384, 387, 390, 393, 396, 399, 402, 406, 410, 414,
481 418, 422, 426, 428, 430, 432, 434, 436, 438, 440,
482 442, 443, 445, 447, 456, 458, 459, 461, 464, 469,
483 473, 474, 482, 490, 493, 496, 499, 503, 507, 512,
484 517, 520, 522, 527, 529, 531, 533, 535, 538, 541,
485 543, 547, 551, 555, 557, 559, 567, 569, 570, 574,
486 576, 577, 579, 583, 588, 593, 597, 602, 606, 613,
487 616, 617, 619, 621, 623, 625, 627, 629, 632, 636,
488 640, 645, 650, 654, 656, 658
491 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
492 static const short yyrhs[] =
494 98, 0, -1, 100, 99, -1, 38, 127, -1, -1,
495 101, -1, 100, 101, -1, 126, 102, -1, 102, -1,
496 149, -1, 154, -1, 155, -1, 164, -1, 166, -1,
497 161, -1, 162, -1, 169, -1, 170, -1, 172, -1,
498 173, -1, 129, -1, 156, -1, 176, -1, 123, -1,
499 124, -1, 122, -1, 114, -1, 115, -1, 116, -1,
500 119, -1, 113, -1, 112, -1, 111, -1, 108, -1,
501 107, -1, 105, -1, 106, -1, 171, -1, 104, -1,
502 103, -1, 125, -1, 1, 127, -1, 57, 131, 127,
503 -1, 35, 168, 131, 127, -1, 54, 131, 127, -1,
504 55, 131, 127, -1, 53, 131, 127, -1, 13, 146,
505 109, 110, 127, -1, 65, 131, -1, -1, 59, 175,
506 -1, -1, 33, 131, 127, 100, 34, 127, -1, 32,
507 131, 127, 100, 34, 127, -1, 48, 146, 127, 100,
508 49, 127, -1, 42, 146, 127, 100, 44, 127, -1,
509 43, 147, 127, 100, 44, 127, -1, 46, 146, 127,
510 117, 47, 127, -1, 118, -1, 117, 118, -1, 170,
511 -1, 146, 127, -1, 45, 146, 120, 127, -1, 121,
512 -1, 120, 71, 121, -1, 146, 59, 131, -1, 41,
513 163, 127, -1, 21, 127, -1, 21, 56, 127, -1,
514 22, 127, -1, 127, -1, 145, -1, 128, -1, 59,
515 -1, 58, -1, 130, 127, -1, 12, -1, 12, 62,
516 -1, 12, 73, 131, -1, 12, 131, -1, 12, 131,
517 71, 63, -1, 12, 131, 71, 64, -1, 12, 69,
518 131, 71, 63, 70, -1, 12, 69, 131, 70, 71,
519 64, -1, 12, 69, 131, 70, -1, 132, -1, 50,
520 134, -1, 136, -1, 137, -1, 142, -1, 148, -1,
521 66, -1, 143, -1, 144, -1, 95, 131, 96, -1,
522 87, -1, 88, -1, 8, -1, 9, -1, 51, 136,
523 -1, 146, -1, 146, 69, 131, 70, -1, 146, 95,
524 131, 96, -1, 131, -1, 138, -1, 146, -1, 159,
525 -1, 131, -1, -1, 146, 61, 146, -1, 132, 72,
526 137, -1, 132, 72, 132, -1, 67, 139, 68, -1,
527 140, -1, -1, 141, -1, 140, 71, 141, -1, 133,
528 -1, -1, 7, -1, 131, 87, 131, -1, 131, 88,
529 131, -1, 131, 90, 131, -1, 131, 91, 131, -1,
530 131, 92, 131, -1, 131, 78, 131, -1, 131, 76,
531 131, -1, 131, 77, 131, -1, 131, 86, 131, -1,
532 131, 85, 131, -1, 94, 131, -1, 93, 131, -1,
533 77, 146, -1, 82, 131, -1, 81, 131, -1, 88,
534 131, -1, 131, 80, 131, -1, 131, 79, 131, -1,
535 131, 81, 131, -1, 131, 82, 131, -1, 131, 83,
536 131, -1, 131, 84, 131, -1, 10, -1, 11, -1,
537 87, -1, 88, -1, 8, -1, 9, -1, 6, -1,
538 146, -1, -1, 3, -1, 4, -1, 23, 131, 127,
539 100, 150, 153, 28, 127, -1, 151, -1, -1, 152,
540 -1, 151, 152, -1, 27, 131, 127, 100, -1, 26,
541 127, 100, -1, -1, 24, 146, 127, 100, 153, 28,
542 127, -1, 25, 146, 127, 100, 153, 28, 127, -1,
543 157, 127, -1, 158, 127, -1, 146, 158, -1, 56,
544 146, 158, -1, 39, 146, 158, -1, 56, 39, 146,
545 158, -1, 39, 56, 146, 158, -1, 159, 160, -1,
546 159, -1, 159, 69, 131, 70, -1, 14, -1, 15,
547 -1, 16, -1, 17, -1, 52, 146, -1, 72, 146,
548 -1, 133, -1, 160, 71, 133, -1, 29, 163, 127,
549 -1, 30, 163, 127, -1, 4, -1, 5, -1, 31,
550 146, 165, 127, 100, 34, 127, -1, 168, -1, -1,
551 146, 167, 127, -1, 160, -1, -1, 146, -1, 168,
552 71, 146, -1, 146, 36, 133, 127, -1, 146, 65,
553 133, 127, -1, 37, 146, 127, -1, 37, 146, 133,
554 127, -1, 39, 168, 127, -1, 40, 168, 59, 175,
555 174, 127, -1, 60, 146, -1, -1, 159, -1, 146,
556 -1, 48, -1, 13, -1, 177, -1, 178, -1, 146,
557 178, -1, 56, 146, 178, -1, 39, 146, 178, -1,
558 56, 39, 146, 178, -1, 39, 56, 146, 178, -1,
559 179, 135, 127, -1, 18, -1, 19, -1, 20, -1
562 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
563 static const unsigned short yyrline[] =
565 0, 119, 119, 123, 124, 128, 129, 136, 137, 141,
566 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
567 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
568 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
569 172, 173, 177, 181, 185, 189, 193, 197, 201, 202,
570 206, 207, 211, 215, 219, 223, 227, 231, 235, 236,
571 240, 241, 245, 249, 250, 254, 258, 262, 263, 266,
572 270, 274, 278, 279, 283, 287, 291, 292, 293, 294,
573 295, 296, 297, 298, 299, 303, 304, 305, 306, 307,
574 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
575 321, 322, 323, 327, 328, 332, 333, 337, 338, 342,
576 346, 347, 351, 355, 356, 360, 361, 365, 366, 370,
577 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
578 384, 385, 386, 387, 388, 389, 393, 394, 395, 396,
579 397, 398, 402, 403, 404, 405, 406, 407, 411, 415,
580 416, 420, 421, 425, 429, 430, 434, 435, 439, 443,
581 444, 448, 452, 456, 457, 461, 462, 463, 464, 465,
582 469, 470, 471, 475, 476, 477, 478, 479, 480, 484,
583 485, 489, 493, 497, 498, 502, 506, 507, 511, 515,
584 516, 520, 521, 525, 529, 533, 534, 538, 542, 546,
585 547, 551, 552, 553, 554, 558, 559, 563, 564, 565,
586 566, 567, 571, 575, 576, 577
588 #endif
590 #if YYDEBUG || YYERROR_VERBOSE
591 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
592 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
593 static const char *const yytname[] =
595 "$end", "error", "$undefined", "INTEGER_LITERAL", "STRING_LITERAL",
596 "FILE_PATH", "IDENTIFIER", "LOCAL_ID", "FORWARD_BRANCH",
597 "BACKWARD_BRANCH", "LABEL", "LOCAL_LABEL", "MNEMONIC", "_LABEL_",
598 "BYTE", "CHAR", "WORD", "DWORD", "DSB", "DSW", "DSD", "DATASEG",
599 "CODESEG", "IF", "IFDEF", "IFNDEF", "ELSE", "ELIF", "ENDIF", "INCSRC",
600 "INCBIN", "MACRO", "REPT", "WHILE", "ENDM", "ALIGN", "EQU", "DEFINE",
601 "END", "PUBLIC", "EXTRN", "CHARMAP", "STRUC", "UNION", "ENDS", "RECORD",
602 "ENUM", "ENDE", "PROC", "ENDP", "SIZEOF", "MASK", "TAG", "MESSAGE",
603 "WARNING", "ERROR", "ZEROPAGE", "ORG", "'\\n'", "':'", "'@'",
604 "SCOPE_OP", "'A'", "'X'", "'Y'", "'='", "'$'", "'{'", "'}'", "'['",
605 "']'", "','", "'.'", "'#'", "HI_OP", "LO_OP", "'|'", "'^'", "'&'",
606 "NE_OP", "EQ_OP", "'>'", "'<'", "GE_OP", "LE_OP", "SHR_OP", "SHL_OP",
607 "'+'", "'-'", "UMINUS", "'*'", "'/'", "'%'", "'!'", "'~'", "'('", "')'",
608 "$accept", "assembly_unit", "end_opt", "statement_list",
609 "labelable_statement", "statement", "org_statement", "align_statement",
610 "warning_statement", "error_statement", "message_statement",
611 "label_statement", "label_addr_part_opt", "label_type_part_opt",
612 "while_statement", "rept_statement", "proc_statement",
613 "struc_decl_statement", "union_decl_statement", "enum_decl_statement",
614 "enum_item_list", "enum_item", "record_decl_statement",
615 "record_field_list", "record_field", "charmap_statement",
616 "dataseg_statement", "codeseg_statement", "null_statement",
617 "label_decl", "line_tail", "newline", "instruction_statement",
618 "instruction", "expression", "indexed_identifier",
619 "extended_expression", "sizeof_arg", "expression_opt", "scope_access",
620 "struc_access", "struc_initializer", "field_initializer_list_opt",
621 "field_initializer_list", "field_initializer", "local_id",
622 "arithmetic_expression", "comparison_expression", "label", "identifier",
623 "identifier_opt", "literal", "if_statement", "elif_statement_list_opt",
624 "elif_statement_list", "elif_statement", "else_part_opt",
625 "ifdef_statement", "ifndef_statement", "data_statement",
626 "named_data_statement", "unnamed_data_statement", "datatype",
627 "expression_list", "incsrc_statement", "incbin_statement",
628 "file_specifier", "macro_decl_statement", "param_list_opt",
629 "macro_statement", "arg_list_opt", "identifier_list", "equ_statement",
630 "assign_statement", "define_statement", "public_statement",
631 "extrn_statement", "from_part_opt", "symbol_type", "storage_statement",
632 "named_storage_statement", "unnamed_storage_statement", "storage", 0
634 #endif
636 # ifdef YYPRINT
637 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
638 token YYLEX-NUM. */
639 static const unsigned short yytoknum[] =
641 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
642 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
643 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
644 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
645 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
646 305, 306, 307, 308, 309, 310, 311, 312, 10, 58,
647 64, 313, 65, 88, 89, 61, 36, 123, 125, 91,
648 93, 44, 46, 35, 314, 315, 124, 94, 38, 316,
649 317, 62, 60, 318, 319, 320, 321, 43, 45, 322,
650 42, 47, 37, 33, 126, 40, 41
652 # endif
654 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
655 static const unsigned char yyr1[] =
657 0, 97, 98, 99, 99, 100, 100, 101, 101, 102,
658 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
659 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
660 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
661 102, 102, 103, 104, 105, 106, 107, 108, 109, 109,
662 110, 110, 111, 112, 113, 114, 115, 116, 117, 117,
663 118, 118, 119, 120, 120, 121, 122, 123, 123, 124,
664 125, 126, 127, 127, 128, 129, 130, 130, 130, 130,
665 130, 130, 130, 130, 130, 131, 131, 131, 131, 131,
666 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
667 132, 132, 132, 133, 133, 134, 134, 135, 135, 136,
668 137, 137, 138, 139, 139, 140, 140, 141, 141, 142,
669 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
670 143, 143, 143, 143, 143, 143, 144, 144, 144, 144,
671 144, 144, 145, 145, 145, 145, 145, 145, 146, 147,
672 147, 148, 148, 149, 150, 150, 151, 151, 152, 153,
673 153, 154, 155, 156, 156, 157, 157, 157, 157, 157,
674 158, 158, 158, 159, 159, 159, 159, 159, 159, 160,
675 160, 161, 162, 163, 163, 164, 165, 165, 166, 167,
676 167, 168, 168, 169, 170, 171, 171, 172, 173, 174,
677 174, 175, 175, 175, 175, 176, 176, 177, 177, 177,
678 177, 177, 178, 179, 179, 179
681 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
682 static const unsigned char yyr2[] =
684 0, 2, 2, 2, 0, 1, 2, 2, 1, 1,
685 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
686 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
687 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
688 1, 2, 3, 4, 3, 3, 3, 5, 2, 0,
689 2, 0, 6, 6, 6, 6, 6, 6, 1, 2,
690 1, 2, 4, 1, 3, 3, 3, 2, 3, 2,
691 1, 1, 1, 1, 1, 2, 1, 2, 3, 2,
692 4, 4, 6, 6, 4, 1, 2, 1, 1, 1,
693 1, 1, 1, 1, 3, 1, 1, 1, 1, 2,
694 1, 4, 4, 1, 1, 1, 1, 1, 0, 3,
695 3, 3, 3, 1, 0, 1, 3, 1, 0, 1,
696 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
697 2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
698 3, 3, 1, 1, 1, 1, 1, 1, 1, 1,
699 0, 1, 1, 8, 1, 0, 1, 2, 4, 3,
700 0, 7, 7, 2, 2, 2, 3, 3, 4, 4,
701 2, 1, 4, 1, 1, 1, 1, 2, 2, 1,
702 3, 3, 3, 1, 1, 7, 1, 0, 3, 1,
703 0, 1, 3, 4, 4, 3, 4, 3, 6, 2,
704 0, 1, 1, 1, 1, 1, 1, 2, 3, 3,
705 4, 4, 3, 1, 1, 1
708 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
709 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
710 means the default is an error. */
711 static const unsigned char yydefact[] =
713 0, 0, 148, 146, 147, 142, 143, 76, 0, 173,
714 174, 175, 176, 213, 214, 215, 0, 0, 0, 0,
715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716 0, 0, 150, 0, 0, 0, 0, 0, 0, 0,
717 0, 0, 74, 73, 0, 144, 145, 0, 0, 5,
718 8, 39, 38, 35, 36, 34, 33, 32, 31, 30,
719 26, 27, 28, 29, 25, 23, 24, 40, 0, 70,
720 72, 20, 0, 71, 190, 9, 10, 11, 21, 0,
721 0, 171, 14, 15, 12, 13, 16, 17, 37, 18,
722 19, 22, 205, 206, 108, 41, 151, 152, 119, 97,
723 98, 0, 0, 77, 91, 0, 0, 0, 0, 0,
724 95, 96, 0, 0, 0, 79, 85, 87, 88, 89,
725 92, 93, 100, 90, 49, 0, 67, 69, 0, 0,
726 0, 183, 184, 0, 0, 187, 0, 0, 191, 0,
727 0, 0, 191, 0, 0, 0, 0, 149, 0, 0,
728 0, 0, 177, 0, 0, 0, 0, 0, 0, 178,
729 1, 0, 2, 6, 7, 75, 0, 0, 114, 103,
730 179, 104, 165, 189, 0, 207, 163, 164, 0, 170,
731 107, 0, 86, 105, 106, 99, 0, 0, 78, 132,
732 134, 133, 135, 131, 130, 0, 0, 0, 0, 0,
733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
734 0, 0, 0, 0, 0, 0, 0, 0, 51, 68,
735 0, 0, 0, 181, 182, 0, 186, 0, 0, 0,
736 0, 195, 0, 0, 167, 209, 197, 0, 66, 0,
737 0, 0, 63, 0, 0, 0, 46, 44, 45, 0,
738 166, 208, 42, 3, 0, 0, 117, 0, 113, 115,
739 0, 188, 0, 212, 84, 0, 94, 80, 81, 126,
740 127, 125, 137, 136, 138, 139, 140, 141, 129, 128,
741 120, 121, 122, 123, 124, 111, 110, 100, 109, 0,
742 0, 48, 0, 0, 0, 0, 0, 0, 0, 0,
743 192, 43, 196, 169, 211, 204, 203, 202, 201, 200,
744 0, 0, 0, 62, 0, 0, 58, 0, 60, 0,
745 168, 210, 193, 194, 112, 118, 180, 172, 0, 0,
746 101, 102, 50, 47, 0, 160, 154, 156, 0, 0,
747 0, 0, 0, 0, 0, 0, 0, 0, 64, 65,
748 0, 59, 61, 0, 116, 83, 82, 0, 0, 157,
749 0, 0, 0, 0, 53, 52, 199, 198, 55, 56,
750 57, 54, 0, 0, 0, 161, 162, 185, 0, 153
753 /* YYDEFGOTO[NTERM-NUM]. */
754 static const short yydefgoto[] =
756 -1, 47, 162, 48, 49, 50, 51, 52, 53, 54,
757 55, 56, 218, 293, 57, 58, 59, 60, 61, 62,
758 315, 316, 63, 241, 242, 64, 65, 66, 67, 68,
759 69, 70, 71, 72, 169, 116, 170, 182, 181, 117,
760 118, 171, 257, 258, 259, 119, 120, 121, 73, 122,
761 148, 123, 75, 335, 336, 337, 339, 76, 77, 78,
762 79, 80, 81, 173, 82, 83, 133, 84, 225, 85,
763 174, 139, 86, 87, 88, 89, 90, 345, 309, 91,
764 92, 93, 94
767 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
768 STATE-NUM. */
769 #define YYPACT_NINF -287
770 static const short yypact[] =
772 1808, -37, -287, -287, -287, -287, -287, 410, 10, -287,
773 -287, -287, -287, -287, -287, -287, 66, -37, 805, 10,
774 10, 71, 71, 10, 805, 805, 10, 10, 7, 10,
775 71, 10, 10, 10, 10, 10, 10, 805, 805, 805,
776 3, 805, -287, -287, 10, -287, -287, 18, 895, -287,
777 -287, -287, -287, -287, -287, -287, -287, -287, -287, -287,
778 -287, -287, -287, -287, -287, -287, -287, -287, 1869, -287,
779 -287, -287, -37, -287, 547, -287, -287, -287, -287, -37,
780 -37, 651, -287, -287, -287, -287, -287, -287, -287, -287,
781 -287, -287, -287, -287, 805, -287, -287, -287, -287, -287,
782 -287, 37, 10, -287, -287, 805, 805, 10, 805, 805,
783 -287, 53, 805, 805, 805, 1903, -42, -287, -287, -287,
784 -287, -287, 13, -287, -18, -37, -287, -287, 435, -37,
785 -37, -287, -287, -37, -37, 10, 435, 435, -287, 703,
786 586, 10, 268, -13, -47, -37, -37, -287, -37, 10,
787 -37, -37, -287, 435, 435, 435, 10, 268, 435, -287,
788 -287, -37, -287, -287, -287, -287, 796, 796, 684, 494,
789 -287, -287, -287, -7, -37, -287, -287, -287, 805, -7,
790 494, -37, -287, -287, -287, -287, 6, 745, 494, -287,
791 494, 494, 42, -287, -287, 1920, 17, 805, 805, 805,
792 805, 805, 805, 805, 805, 805, 805, 805, 805, 805,
793 805, 805, 805, 10, 10, 805, 805, 805, 27, -287,
794 1808, 1808, 1808, -287, -287, -37, 1, 1808, 1808, 10,
795 435, -287, -37, 268, -287, -287, -287, 153, -287, 1808,
796 1808, 12, -287, 28, 10, 1808, -287, -287, -287, 268,
797 -287, -287, -287, -287, -37, -37, -287, 26, 55, -287,
798 796, -287, 1866, -287, 56, 50, -287, -287, -287, 244,
799 878, 961, 298, 298, 5, 5, 5, 5, 24, 24,
800 42, 42, -287, -287, -287, -42, -287, -54, -287, 1885,
801 1941, 494, 153, -37, 978, 1144, 1144, 1808, 1227, 1310,
802 -287, -287, -287, -287, -287, -287, -287, -287, -287, 60,
803 1393, 1476, 10, -287, 805, 8, -287, 20, -287, 1559,
804 -287, -287, -287, -287, -287, 796, -287, -287, 72, 67,
805 -287, -287, -287, -287, 805, 104, 112, -287, -37, 114,
806 115, 1642, -37, -37, 10, -37, -37, -37, -287, 494,
807 -37, -287, -287, -37, -287, -287, -287, 435, 116, -287,
808 1808, -37, -37, -37, -287, -287, -287, -287, -287, -287,
809 -287, -287, 1808, -37, 1725, -287, -287, -287, 1061, -287
812 /* YYPGOTO[NTERM-NUM]. */
813 static const short yypgoto[] =
815 -287, -287, -287, -122, -41, 77, -287, -287, -287, -287,
816 -287, -287, -287, -287, -287, -287, -287, -287, -287, -287,
817 -287, -175, -287, -287, -162, -287, -287, -287, -287, -287,
818 49, -287, -287, -287, 332, -62, -129, -287, -287, 51,
819 -61, -287, -287, -287, -171, -287, -287, -287, -287, 0,
820 -287, -287, -287, -287, -287, -181, -286, -287, -287, -287,
821 -287, -73, -99, 76, -287, -287, -5, -287, -287, -287,
822 -287, -25, -287, -238, -287, -287, -287, -287, -134, -287,
823 -287, -69, -287
826 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
827 positive, shift that token. If negative, reduce the rule which
828 number is the opposite. If zero, do what YYDEFACT says.
829 If YYTABLE_NINF, syntax error. */
830 #define YYTABLE_NINF -161
831 static const short yytable[] =
833 74, 172, 184, 143, 144, 175, 318, 163, 124, 2,
834 340, 232, 237, 2, 2, 215, 2, 134, 160, 129,
835 130, 42, 43, 135, 229, 145, 138, 140, 142, 138,
836 213, 146, 147, 149, 150, 151, 152, 254, 255, 256,
837 157, 216, 156, 2, 159, 42, 43, 217, 74, 358,
838 95, 9, 10, 11, 12, 350, 96, 97, 229, 2,
839 98, 99, 100, 141, 260, 126, 127, 214, 74, 234,
840 42, 43, 229, 235, 214, 131, 132, 318, 42, 43,
841 267, 268, 215, 312, 250, 167, 292, 314, 251, 36,
842 206, 207, 208, 209, 324, 210, 211, 212, 294, 295,
843 296, 183, 186, 101, 102, 298, 299, 189, 216, 44,
844 226, 208, 209, 329, 210, 211, 212, 310, 311, 104,
845 344, 165, 125, 319, 42, 43, 325, 328, 176, 177,
846 338, 326, 210, 211, 212, 138, 355, 356, 308, 334,
847 351, 233, 361, 362, 373, 164, 112, 113, 114, 243,
848 348, 285, 286, 185, 354, 359, 249, 179, 332, 2,
849 303, 0, 0, 0, 304, 0, 305, 9, 10, 11,
850 12, 0, 0, 0, 219, 341, 320, 220, 221, 222,
851 321, 0, 223, 224, 0, 227, 228, 0, 0, 231,
852 0, 0, 236, 308, 238, 239, 256, 240, 0, 244,
853 245, 306, 246, 247, 248, 36, 0, 252, 0, 0,
854 253, 0, 0, 287, 288, 0, 0, 0, 0, 0,
855 74, 74, 74, 261, 0, 44, 0, 74, 74, 300,
856 263, 0, 0, 0, 0, 0, 0, 307, 374, 74,
857 74, 0, 0, 0, 317, 74, 0, 0, 0, 0,
858 378, 0, 0, 163, 163, 163, 0, 163, 163, 0,
859 0, 0, 0, 0, 0, 0, 0, 0, 0, 163,
860 163, 0, 0, 0, 297, 0, 0, 0, 163, 301,
861 0, 302, 9, 10, 11, 12, 13, 14, 15, 0,
862 313, 0, 307, 0, 74, 74, 74, 74, 74, 74,
863 163, 0, 0, 322, 323, 0, 0, 0, 0, 0,
864 74, 74, 243, 0, 0, 317, 0, 0, 0, 74,
865 36, 198, 199, 200, 201, 202, 203, 204, 205, 206,
866 207, 208, 209, 163, 210, 211, 212, 163, 0, 115,
867 44, 74, 333, 0, 366, 0, 0, 0, 0, 0,
868 128, 0, 0, 0, 0, 0, 136, 137, 0, 0,
869 74, 0, 0, 0, 0, 0, 352, 0, 0, 153,
870 154, 155, 74, 158, 74, 0, 0, 0, 74, 202,
871 203, 204, 205, 206, 207, 208, 209, 360, 210, 211,
872 212, 364, 365, 0, 367, 368, 369, 0, 0, 370,
873 0, 0, 371, 0, 0, 0, 372, 0, 0, 0,
874 375, 376, 377, 96, 97, 0, 2, 98, 99, 100,
875 0, 0, 379, 0, 0, 0, 180, 0, 0, 0,
876 0, 0, 0, 0, 0, 0, 0, 187, 188, 0,
877 190, 191, 0, 192, 193, 194, 195, 0, 0, 0,
878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
879 101, 102, 0, 0, 0, 0, 0, 0, 0, 0,
880 0, 230, 103, 0, 0, 0, 104, 0, 0, 105,
881 0, 0, 0, 106, 0, 0, 0, 107, 0, 0,
882 0, 108, 109, 42, 43, 0, 0, 110, 111, 0,
883 0, 0, 0, 112, 113, 114, 0, 0, 0, 0,
884 262, 197, 198, 199, 200, 201, 202, 203, 204, 205,
885 206, 207, 208, 209, 0, 210, 211, 212, 0, 269,
886 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
887 280, 281, 282, 283, 284, 0, 0, 289, 290, 291,
888 96, 97, 0, 2, 98, 99, 100, 0, 0, 0,
889 0, 9, 10, 11, 12, 13, 14, 15, 0, 0,
890 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
891 207, 208, 209, 166, 210, 211, 212, 0, 0, 96,
892 97, 0, 2, 98, 99, 100, 0, 101, 102, 36,
893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
894 0, 0, 167, 104, 168, 0, 0, 0, 0, 44,
895 0, 0, 0, 0, 107, 0, 0, 0, 108, 109,
896 0, 0, 0, 0, 110, 111, 101, 102, 0, 0,
897 112, 113, 114, 0, 42, 43, 349, 0, 0, 0,
898 0, 0, 104, 168, 96, 97, 0, 2, 98, 99,
899 100, 0, 0, 107, 0, 0, 357, 108, 109, 0,
900 0, 0, 0, 110, 111, 0, 0, 0, 0, 112,
901 113, 114, 0, 0, 0, 0, 0, 96, 97, 0,
902 2, 98, 99, 100, 0, 0, 0, 0, 0, 0,
903 0, 101, 102, 0, 0, 0, 96, 97, 0, 2,
904 98, 99, 100, 0, 0, 0, 0, 104, 168, 0,
905 178, 0, 0, 0, 0, 0, 0, 0, 107, 0,
906 0, 0, 108, 109, 101, 102, 0, 0, 110, 111,
907 0, 0, 0, 0, 112, 113, 114, 0, 0, 0,
908 104, 168, 0, 101, 102, -118, 0, 0, 0, 0,
909 0, 107, 0, 0, 0, 108, 109, 0, 0, 104,
910 0, 110, 111, 0, 229, 0, 0, 112, 113, 114,
911 107, 0, 0, 0, 108, 109, 0, 0, 0, 0,
912 110, 111, 0, 0, 0, 0, 112, 113, 114, 96,
913 97, 0, 2, 98, 99, 100, 0, 0, 96, 97,
914 0, 2, 98, 99, 100, 264, 265, 0, 0, 0,
915 0, 197, 198, 199, 200, 201, 202, 203, 204, 205,
916 206, 207, 208, 209, 0, 210, 211, 212, 0, 0,
917 0, 0, 0, 0, 0, 0, 101, 102, 0, 0,
918 0, 0, 0, 0, 0, 101, 102, 0, 0, 0,
919 0, 0, 104, 168, 0, 0, 0, 0, 0, 0,
920 0, 104, 0, 107, 0, 0, 0, 108, 109, 0,
921 0, 0, 107, 110, 111, 0, 108, 109, 0, 112,
922 113, 114, 110, 111, 0, -4, 1, 0, 112, 113,
923 114, 2, 0, 3, 4, 5, 6, 7, 8, 9,
924 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
925 20, 0, 0, 0, 21, 22, 23, 24, 25, 0,
926 26, 0, 27, 161, 28, 29, 30, 31, 32, 0,
927 33, 34, 0, 35, 0, 0, 0, 36, 37, 38,
928 39, 40, 41, 42, 43, 0, 199, 200, 201, 202,
929 203, 204, 205, 206, 207, 208, 209, 44, 210, 211,
930 212, 0, 0, 0, 0, 0, 0, 0, 0, 1,
931 0, 0, 45, 46, 2, 0, 3, 4, 5, 6,
932 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
933 17, 18, 19, 20, -155, 334, -155, 21, 22, 23,
934 24, 25, 0, 26, 0, 27, 0, 28, 29, 30,
935 31, 32, 0, 33, 34, 0, 35, 0, 0, 0,
936 36, 37, 38, 39, 40, 41, 42, 43, 0, 0,
937 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
938 44, 210, 211, 212, 0, 0, 0, 0, 0, 0,
939 0, 0, 1, 0, 0, 45, 46, 2, 0, 3,
940 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
941 14, 15, 16, 17, 18, 19, 20, -158, -158, -158,
942 21, 22, 23, 24, 25, 0, 26, 0, 27, 0,
943 28, 29, 30, 31, 32, 0, 33, 34, 0, 35,
944 0, 0, 0, 36, 37, 38, 39, 40, 41, 42,
945 43, 0, 0, 0, 0, 0, 0, 0, 0, 0,
946 0, 0, 0, 44, 0, 0, 0, 0, 0, 0,
947 0, 0, 0, 0, 0, 1, 0, 0, 45, 46,
948 2, 0, 3, 4, 5, 6, 7, 8, 9, 10,
949 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
950 338, 0, -160, 21, 22, 23, 24, 25, 0, 26,
951 0, 27, 0, 28, 29, 30, 31, 32, 0, 33,
952 34, 0, 35, 0, 0, 0, 36, 37, 38, 39,
953 40, 41, 42, 43, 0, 0, 0, 0, 0, 0,
954 0, 0, 0, 0, 0, 0, 44, 0, 0, 0,
955 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
956 0, 45, 46, 2, 0, 3, 4, 5, 6, 7,
957 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
958 18, 19, 20, 0, 0, 0, 21, 22, 23, 24,
959 25, 342, 26, 0, 27, 0, 28, 29, 30, 31,
960 32, 0, 33, 34, 0, 35, 0, 0, 0, 36,
961 37, 38, 39, 40, 41, 42, 43, 0, 0, 0,
962 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,
963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
964 0, 1, 0, 0, 45, 46, 2, 0, 3, 4,
965 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
966 15, 16, 17, 18, 19, 20, 0, 0, 0, 21,
967 22, 23, 24, 25, 343, 26, 0, 27, 0, 28,
968 29, 30, 31, 32, 0, 33, 34, 0, 35, 0,
969 0, 0, 36, 37, 38, 39, 40, 41, 42, 43,
970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
971 0, 0, 44, 0, 0, 0, 0, 0, 0, 0,
972 0, 0, 0, 0, 1, 0, 0, 45, 46, 2,
973 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
974 12, 13, 14, 15, 16, 17, 18, 19, 20, 0,
975 0, 0, 21, 22, 23, 24, 25, 0, 26, 0,
976 27, 0, 28, 29, 30, 31, 32, 346, 33, 34,
977 0, 35, 0, 0, 0, 36, 37, 38, 39, 40,
978 41, 42, 43, 0, 0, 0, 0, 0, 0, 0,
979 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
980 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
981 45, 46, 2, 0, 3, 4, 5, 6, 7, 8,
982 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
983 19, 20, 0, 0, 0, 21, 22, 23, 24, 25,
984 0, 26, 0, 27, 0, 28, 29, 30, 31, 32,
985 347, 33, 34, 0, 35, 0, 0, 0, 36, 37,
986 38, 39, 40, 41, 42, 43, 0, 0, 0, 0,
987 0, 0, 0, 0, 0, 0, 0, 0, 44, 0,
988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
989 1, 0, 0, 45, 46, 2, 0, 3, 4, 5,
990 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
991 16, 17, 18, 19, 20, 0, 0, 0, 21, 22,
992 23, 24, 25, 0, 26, 0, 27, 0, 28, 29,
993 30, 31, 32, 0, 33, 34, 0, 35, 353, 0,
994 0, 36, 37, 38, 39, 40, 41, 42, 43, 0,
995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
996 0, 44, 0, 0, 0, 0, 0, 0, 0, 0,
997 0, 0, 0, 1, 0, 0, 45, 46, 2, 0,
998 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
999 13, 14, 15, 16, 17, 18, 19, 20, 0, 0,
1000 0, 21, 22, 23, 24, 25, 363, 26, 0, 27,
1001 0, 28, 29, 30, 31, 32, 0, 33, 34, 0,
1002 35, 0, 0, 0, 36, 37, 38, 39, 40, 41,
1003 42, 43, 0, 0, 0, 0, 0, 0, 0, 0,
1004 0, 0, 0, 0, 44, 0, 0, 0, 0, 0,
1005 0, 0, 0, 0, 0, 0, 1, 0, 0, 45,
1006 46, 2, 0, 3, 4, 5, 6, 7, 8, 9,
1007 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
1008 20, 0, 0, -159, 21, 22, 23, 24, 25, 0,
1009 26, 0, 27, 0, 28, 29, 30, 31, 32, 0,
1010 33, 34, 0, 35, 0, 0, 0, 36, 37, 38,
1011 39, 40, 41, 42, 43, 0, 0, 0, 0, 0,
1012 0, 0, 0, 0, 0, 0, 0, 44, 0, 0,
1013 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
1014 0, 0, 45, 46, 2, 0, 3, 4, 5, 6,
1015 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1016 17, 18, 19, 20, 0, 0, 0, 21, 22, 23,
1017 24, 25, 0, 26, 0, 27, 0, 28, 29, 30,
1018 31, 32, 0, 33, 34, 0, 35, 0, 0, 0,
1019 36, 37, 38, 39, 40, 41, 42, 43, 0, 0,
1020 1, 0, 0, 0, 0, 2, 0, 0, 0, 0,
1021 44, 7, 8, 9, 10, 11, 12, 13, 14, 15,
1022 16, 17, 18, 19, 20, 45, 46, 0, 21, 22,
1023 23, 24, 25, 0, 26, 0, 27, 0, 28, 29,
1024 30, 31, 32, 0, 33, 34, 0, 35, 0, 0,
1025 0, 36, 37, 38, 39, 40, 41, 42, 43, 0,
1026 0, 0, 0, 0, 0, 0, 327, 0, 0, 0,
1027 0, 44, 197, 198, 199, 200, 201, 202, 203, 204,
1028 205, 206, 207, 208, 209, 330, 210, 211, 212, 0,
1029 0, 197, 198, 199, 200, 201, 202, 203, 204, 205,
1030 206, 207, 208, 209, 196, 210, 211, 212, 0, 197,
1031 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
1032 208, 209, 0, 210, 211, 212, 197, 198, 199, 200,
1033 201, 202, 203, 204, 205, 206, 207, 208, 209, 0,
1034 210, 211, 212, 0, 0, 0, 266, 197, 198, 199,
1035 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
1036 0, 210, 211, 212, 0, 0, 0, 331
1039 static const short yycheck[] =
1041 0, 74, 101, 28, 29, 74, 244, 48, 8, 6,
1042 296, 140, 59, 6, 6, 69, 6, 22, 0, 19,
1043 20, 58, 59, 23, 71, 30, 26, 27, 28, 29,
1044 72, 31, 32, 33, 34, 35, 36, 166, 167, 168,
1045 40, 95, 39, 6, 44, 58, 59, 65, 48, 335,
1046 1, 14, 15, 16, 17, 47, 3, 4, 71, 6,
1047 7, 8, 9, 56, 71, 16, 17, 61, 68, 142,
1048 58, 59, 71, 142, 61, 4, 5, 315, 58, 59,
1049 63, 64, 69, 71, 157, 65, 59, 59, 157, 52,
1050 85, 86, 87, 88, 68, 90, 91, 92, 220, 221,
1051 222, 101, 102, 50, 51, 227, 228, 107, 95, 72,
1052 135, 87, 88, 63, 90, 91, 92, 239, 240, 66,
1053 60, 72, 56, 245, 58, 59, 71, 71, 79, 80,
1054 26, 260, 90, 91, 92, 135, 64, 70, 237, 27,
1055 315, 141, 28, 28, 28, 68, 93, 94, 95, 149,
1056 312, 213, 213, 102, 325, 336, 156, 81, 292, 6,
1057 233, -1, -1, -1, 233, -1, 13, 14, 15, 16,
1058 17, -1, -1, -1, 125, 297, 249, 128, 129, 130,
1059 249, -1, 133, 134, -1, 136, 137, -1, -1, 140,
1060 -1, -1, 143, 292, 145, 146, 325, 148, -1, 150,
1061 151, 48, 153, 154, 155, 52, -1, 158, -1, -1,
1062 161, -1, -1, 213, 214, -1, -1, -1, -1, -1,
1063 220, 221, 222, 174, -1, 72, -1, 227, 228, 229,
1064 181, -1, -1, -1, -1, -1, -1, 237, 360, 239,
1065 240, -1, -1, -1, 244, 245, -1, -1, -1, -1,
1066 372, -1, -1, 294, 295, 296, -1, 298, 299, -1,
1067 -1, -1, -1, -1, -1, -1, -1, -1, -1, 310,
1068 311, -1, -1, -1, 225, -1, -1, -1, 319, 230,
1069 -1, 232, 14, 15, 16, 17, 18, 19, 20, -1,
1070 241, -1, 292, -1, 294, 295, 296, 297, 298, 299,
1071 341, -1, -1, 254, 255, -1, -1, -1, -1, -1,
1072 310, 311, 312, -1, -1, 315, -1, -1, -1, 319,
1073 52, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1074 86, 87, 88, 374, 90, 91, 92, 378, -1, 7,
1075 72, 341, 293, -1, 344, -1, -1, -1, -1, -1,
1076 18, -1, -1, -1, -1, -1, 24, 25, -1, -1,
1077 360, -1, -1, -1, -1, -1, 317, -1, -1, 37,
1078 38, 39, 372, 41, 374, -1, -1, -1, 378, 81,
1079 82, 83, 84, 85, 86, 87, 88, 338, 90, 91,
1080 92, 342, 343, -1, 345, 346, 347, -1, -1, 350,
1081 -1, -1, 353, -1, -1, -1, 357, -1, -1, -1,
1082 361, 362, 363, 3, 4, -1, 6, 7, 8, 9,
1083 -1, -1, 373, -1, -1, -1, 94, -1, -1, -1,
1084 -1, -1, -1, -1, -1, -1, -1, 105, 106, -1,
1085 108, 109, -1, 111, 112, 113, 114, -1, -1, -1,
1086 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1087 50, 51, -1, -1, -1, -1, -1, -1, -1, -1,
1088 -1, 139, 62, -1, -1, -1, 66, -1, -1, 69,
1089 -1, -1, -1, 73, -1, -1, -1, 77, -1, -1,
1090 -1, 81, 82, 58, 59, -1, -1, 87, 88, -1,
1091 -1, -1, -1, 93, 94, 95, -1, -1, -1, -1,
1092 178, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1093 85, 86, 87, 88, -1, 90, 91, 92, -1, 197,
1094 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
1095 208, 209, 210, 211, 212, -1, -1, 215, 216, 217,
1096 3, 4, -1, 6, 7, 8, 9, -1, -1, -1,
1097 -1, 14, 15, 16, 17, 18, 19, 20, -1, -1,
1098 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1099 86, 87, 88, 36, 90, 91, 92, -1, -1, 3,
1100 4, -1, 6, 7, 8, 9, -1, 50, 51, 52,
1101 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1102 -1, -1, 65, 66, 67, -1, -1, -1, -1, 72,
1103 -1, -1, -1, -1, 77, -1, -1, -1, 81, 82,
1104 -1, -1, -1, -1, 87, 88, 50, 51, -1, -1,
1105 93, 94, 95, -1, 58, 59, 314, -1, -1, -1,
1106 -1, -1, 66, 67, 3, 4, -1, 6, 7, 8,
1107 9, -1, -1, 77, -1, -1, 334, 81, 82, -1,
1108 -1, -1, -1, 87, 88, -1, -1, -1, -1, 93,
1109 94, 95, -1, -1, -1, -1, -1, 3, 4, -1,
1110 6, 7, 8, 9, -1, -1, -1, -1, -1, -1,
1111 -1, 50, 51, -1, -1, -1, 3, 4, -1, 6,
1112 7, 8, 9, -1, -1, -1, -1, 66, 67, -1,
1113 69, -1, -1, -1, -1, -1, -1, -1, 77, -1,
1114 -1, -1, 81, 82, 50, 51, -1, -1, 87, 88,
1115 -1, -1, -1, -1, 93, 94, 95, -1, -1, -1,
1116 66, 67, -1, 50, 51, 71, -1, -1, -1, -1,
1117 -1, 77, -1, -1, -1, 81, 82, -1, -1, 66,
1118 -1, 87, 88, -1, 71, -1, -1, 93, 94, 95,
1119 77, -1, -1, -1, 81, 82, -1, -1, -1, -1,
1120 87, 88, -1, -1, -1, -1, 93, 94, 95, 3,
1121 4, -1, 6, 7, 8, 9, -1, -1, 3, 4,
1122 -1, 6, 7, 8, 9, 70, 71, -1, -1, -1,
1123 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1124 85, 86, 87, 88, -1, 90, 91, 92, -1, -1,
1125 -1, -1, -1, -1, -1, -1, 50, 51, -1, -1,
1126 -1, -1, -1, -1, -1, 50, 51, -1, -1, -1,
1127 -1, -1, 66, 67, -1, -1, -1, -1, -1, -1,
1128 -1, 66, -1, 77, -1, -1, -1, 81, 82, -1,
1129 -1, -1, 77, 87, 88, -1, 81, 82, -1, 93,
1130 94, 95, 87, 88, -1, 0, 1, -1, 93, 94,
1131 95, 6, -1, 8, 9, 10, 11, 12, 13, 14,
1132 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1133 25, -1, -1, -1, 29, 30, 31, 32, 33, -1,
1134 35, -1, 37, 38, 39, 40, 41, 42, 43, -1,
1135 45, 46, -1, 48, -1, -1, -1, 52, 53, 54,
1136 55, 56, 57, 58, 59, -1, 78, 79, 80, 81,
1137 82, 83, 84, 85, 86, 87, 88, 72, 90, 91,
1138 92, -1, -1, -1, -1, -1, -1, -1, -1, 1,
1139 -1, -1, 87, 88, 6, -1, 8, 9, 10, 11,
1140 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1141 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1142 32, 33, -1, 35, -1, 37, -1, 39, 40, 41,
1143 42, 43, -1, 45, 46, -1, 48, -1, -1, -1,
1144 52, 53, 54, 55, 56, 57, 58, 59, -1, -1,
1145 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1146 72, 90, 91, 92, -1, -1, -1, -1, -1, -1,
1147 -1, -1, 1, -1, -1, 87, 88, 6, -1, 8,
1148 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
1149 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1150 29, 30, 31, 32, 33, -1, 35, -1, 37, -1,
1151 39, 40, 41, 42, 43, -1, 45, 46, -1, 48,
1152 -1, -1, -1, 52, 53, 54, 55, 56, 57, 58,
1153 59, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1154 -1, -1, -1, 72, -1, -1, -1, -1, -1, -1,
1155 -1, -1, -1, -1, -1, 1, -1, -1, 87, 88,
1156 6, -1, 8, 9, 10, 11, 12, 13, 14, 15,
1157 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1158 26, -1, 28, 29, 30, 31, 32, 33, -1, 35,
1159 -1, 37, -1, 39, 40, 41, 42, 43, -1, 45,
1160 46, -1, 48, -1, -1, -1, 52, 53, 54, 55,
1161 56, 57, 58, 59, -1, -1, -1, -1, -1, -1,
1162 -1, -1, -1, -1, -1, -1, 72, -1, -1, -1,
1163 -1, -1, -1, -1, -1, -1, -1, -1, 1, -1,
1164 -1, 87, 88, 6, -1, 8, 9, 10, 11, 12,
1165 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
1166 23, 24, 25, -1, -1, -1, 29, 30, 31, 32,
1167 33, 34, 35, -1, 37, -1, 39, 40, 41, 42,
1168 43, -1, 45, 46, -1, 48, -1, -1, -1, 52,
1169 53, 54, 55, 56, 57, 58, 59, -1, -1, -1,
1170 -1, -1, -1, -1, -1, -1, -1, -1, -1, 72,
1171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1172 -1, 1, -1, -1, 87, 88, 6, -1, 8, 9,
1173 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
1174 20, 21, 22, 23, 24, 25, -1, -1, -1, 29,
1175 30, 31, 32, 33, 34, 35, -1, 37, -1, 39,
1176 40, 41, 42, 43, -1, 45, 46, -1, 48, -1,
1177 -1, -1, 52, 53, 54, 55, 56, 57, 58, 59,
1178 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1179 -1, -1, 72, -1, -1, -1, -1, -1, -1, -1,
1180 -1, -1, -1, -1, 1, -1, -1, 87, 88, 6,
1181 -1, 8, 9, 10, 11, 12, 13, 14, 15, 16,
1182 17, 18, 19, 20, 21, 22, 23, 24, 25, -1,
1183 -1, -1, 29, 30, 31, 32, 33, -1, 35, -1,
1184 37, -1, 39, 40, 41, 42, 43, 44, 45, 46,
1185 -1, 48, -1, -1, -1, 52, 53, 54, 55, 56,
1186 57, 58, 59, -1, -1, -1, -1, -1, -1, -1,
1187 -1, -1, -1, -1, -1, 72, -1, -1, -1, -1,
1188 -1, -1, -1, -1, -1, -1, -1, 1, -1, -1,
1189 87, 88, 6, -1, 8, 9, 10, 11, 12, 13,
1190 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
1191 24, 25, -1, -1, -1, 29, 30, 31, 32, 33,
1192 -1, 35, -1, 37, -1, 39, 40, 41, 42, 43,
1193 44, 45, 46, -1, 48, -1, -1, -1, 52, 53,
1194 54, 55, 56, 57, 58, 59, -1, -1, -1, -1,
1195 -1, -1, -1, -1, -1, -1, -1, -1, 72, -1,
1196 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1197 1, -1, -1, 87, 88, 6, -1, 8, 9, 10,
1198 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
1199 21, 22, 23, 24, 25, -1, -1, -1, 29, 30,
1200 31, 32, 33, -1, 35, -1, 37, -1, 39, 40,
1201 41, 42, 43, -1, 45, 46, -1, 48, 49, -1,
1202 -1, 52, 53, 54, 55, 56, 57, 58, 59, -1,
1203 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1204 -1, 72, -1, -1, -1, -1, -1, -1, -1, -1,
1205 -1, -1, -1, 1, -1, -1, 87, 88, 6, -1,
1206 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
1207 18, 19, 20, 21, 22, 23, 24, 25, -1, -1,
1208 -1, 29, 30, 31, 32, 33, 34, 35, -1, 37,
1209 -1, 39, 40, 41, 42, 43, -1, 45, 46, -1,
1210 48, -1, -1, -1, 52, 53, 54, 55, 56, 57,
1211 58, 59, -1, -1, -1, -1, -1, -1, -1, -1,
1212 -1, -1, -1, -1, 72, -1, -1, -1, -1, -1,
1213 -1, -1, -1, -1, -1, -1, 1, -1, -1, 87,
1214 88, 6, -1, 8, 9, 10, 11, 12, 13, 14,
1215 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1216 25, -1, -1, 28, 29, 30, 31, 32, 33, -1,
1217 35, -1, 37, -1, 39, 40, 41, 42, 43, -1,
1218 45, 46, -1, 48, -1, -1, -1, 52, 53, 54,
1219 55, 56, 57, 58, 59, -1, -1, -1, -1, -1,
1220 -1, -1, -1, -1, -1, -1, -1, 72, -1, -1,
1221 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1,
1222 -1, -1, 87, 88, 6, -1, 8, 9, 10, 11,
1223 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1224 22, 23, 24, 25, -1, -1, -1, 29, 30, 31,
1225 32, 33, -1, 35, -1, 37, -1, 39, 40, 41,
1226 42, 43, -1, 45, 46, -1, 48, -1, -1, -1,
1227 52, 53, 54, 55, 56, 57, 58, 59, -1, -1,
1228 1, -1, -1, -1, -1, 6, -1, -1, -1, -1,
1229 72, 12, 13, 14, 15, 16, 17, 18, 19, 20,
1230 21, 22, 23, 24, 25, 87, 88, -1, 29, 30,
1231 31, 32, 33, -1, 35, -1, 37, -1, 39, 40,
1232 41, 42, 43, -1, 45, 46, -1, 48, -1, -1,
1233 -1, 52, 53, 54, 55, 56, 57, 58, 59, -1,
1234 -1, -1, -1, -1, -1, -1, 70, -1, -1, -1,
1235 -1, 72, 76, 77, 78, 79, 80, 81, 82, 83,
1236 84, 85, 86, 87, 88, 70, 90, 91, 92, -1,
1237 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1238 85, 86, 87, 88, 71, 90, 91, 92, -1, 76,
1239 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
1240 87, 88, -1, 90, 91, 92, 76, 77, 78, 79,
1241 80, 81, 82, 83, 84, 85, 86, 87, 88, -1,
1242 90, 91, 92, -1, -1, -1, 96, 76, 77, 78,
1243 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1244 -1, 90, 91, 92, -1, -1, -1, 96
1247 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1248 symbol of state STATE-NUM. */
1249 static const unsigned char yystos[] =
1251 0, 1, 6, 8, 9, 10, 11, 12, 13, 14,
1252 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1253 25, 29, 30, 31, 32, 33, 35, 37, 39, 40,
1254 41, 42, 43, 45, 46, 48, 52, 53, 54, 55,
1255 56, 57, 58, 59, 72, 87, 88, 98, 100, 101,
1256 102, 103, 104, 105, 106, 107, 108, 111, 112, 113,
1257 114, 115, 116, 119, 122, 123, 124, 125, 126, 127,
1258 128, 129, 130, 145, 146, 149, 154, 155, 156, 157,
1259 158, 159, 161, 162, 164, 166, 169, 170, 171, 172,
1260 173, 176, 177, 178, 179, 127, 3, 4, 7, 8,
1261 9, 50, 51, 62, 66, 69, 73, 77, 81, 82,
1262 87, 88, 93, 94, 95, 131, 132, 136, 137, 142,
1263 143, 144, 146, 148, 146, 56, 127, 127, 131, 146,
1264 146, 4, 5, 163, 163, 146, 131, 131, 146, 168,
1265 146, 56, 146, 168, 168, 163, 146, 146, 147, 146,
1266 146, 146, 146, 131, 131, 131, 39, 146, 131, 146,
1267 0, 38, 99, 101, 102, 127, 36, 65, 67, 131,
1268 133, 138, 158, 160, 167, 178, 127, 127, 69, 160,
1269 131, 135, 134, 146, 159, 136, 146, 131, 131, 146,
1270 131, 131, 131, 131, 131, 131, 71, 76, 77, 78,
1271 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
1272 90, 91, 92, 72, 61, 69, 95, 65, 109, 127,
1273 127, 127, 127, 127, 127, 165, 168, 127, 127, 71,
1274 131, 127, 133, 146, 158, 178, 127, 59, 127, 127,
1275 127, 120, 121, 146, 127, 127, 127, 127, 127, 146,
1276 158, 178, 127, 127, 133, 133, 133, 139, 140, 141,
1277 71, 127, 131, 127, 70, 71, 96, 63, 64, 131,
1278 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
1279 131, 131, 131, 131, 131, 132, 137, 146, 146, 131,
1280 131, 131, 59, 110, 100, 100, 100, 127, 100, 100,
1281 146, 127, 127, 158, 178, 13, 48, 146, 159, 175,
1282 100, 100, 71, 127, 59, 117, 118, 146, 170, 100,
1283 158, 178, 127, 127, 68, 71, 133, 70, 71, 63,
1284 70, 96, 175, 127, 27, 150, 151, 152, 26, 153,
1285 153, 100, 34, 34, 60, 174, 44, 44, 121, 131,
1286 47, 118, 127, 49, 141, 64, 70, 131, 153, 152,
1287 127, 28, 28, 34, 127, 127, 146, 127, 127, 127,
1288 127, 127, 127, 28, 100, 127, 127, 127, 100, 127
1291 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
1292 # define YYSIZE_T __SIZE_TYPE__
1293 #endif
1294 #if ! defined (YYSIZE_T) && defined (size_t)
1295 # define YYSIZE_T size_t
1296 #endif
1297 #if ! defined (YYSIZE_T)
1298 # if defined (__STDC__) || defined (__cplusplus)
1299 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1300 # define YYSIZE_T size_t
1301 # endif
1302 #endif
1303 #if ! defined (YYSIZE_T)
1304 # define YYSIZE_T unsigned int
1305 #endif
1307 #define yyerrok (yyerrstatus = 0)
1308 #define yyclearin (yychar = YYEMPTY)
1309 #define YYEMPTY (-2)
1310 #define YYEOF 0
1312 #define YYACCEPT goto yyacceptlab
1313 #define YYABORT goto yyabortlab
1314 #define YYERROR goto yyerrlab1
1316 /* Like YYERROR except do call yyerror. This remains here temporarily
1317 to ease the transition to the new meaning of YYERROR, for GCC.
1318 Once GCC version 2 has supplanted version 1, this can go. */
1320 #define YYFAIL goto yyerrlab
1322 #define YYRECOVERING() (!!yyerrstatus)
1324 #define YYBACKUP(Token, Value) \
1325 do \
1326 if (yychar == YYEMPTY && yylen == 1) \
1328 yychar = (Token); \
1329 yylval = (Value); \
1330 yytoken = YYTRANSLATE (yychar); \
1331 YYPOPSTACK; \
1332 goto yybackup; \
1334 else \
1336 yyerror ("syntax error: cannot back up");\
1337 YYERROR; \
1339 while (0)
1341 #define YYTERROR 1
1342 #define YYERRCODE 256
1344 /* YYLLOC_DEFAULT -- Compute the default location (before the actions
1345 are run). */
1347 #ifndef YYLLOC_DEFAULT
1348 # define YYLLOC_DEFAULT(Current, Rhs, N) \
1349 Current.first_line = Rhs[1].first_line; \
1350 Current.first_column = Rhs[1].first_column; \
1351 Current.last_line = Rhs[N].last_line; \
1352 Current.last_column = Rhs[N].last_column;
1353 #endif
1355 /* YYLEX -- calling `yylex' with the right arguments. */
1357 #ifdef YYLEX_PARAM
1358 # define YYLEX yylex (YYLEX_PARAM)
1359 #else
1360 # define YYLEX yylex ()
1361 #endif
1363 /* Enable debugging if requested. */
1364 #if YYDEBUG
1366 # ifndef YYFPRINTF
1367 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1368 # define YYFPRINTF fprintf
1369 # endif
1371 # define YYDPRINTF(Args) \
1372 do { \
1373 if (yydebug) \
1374 YYFPRINTF Args; \
1375 } while (0)
1377 # define YYDSYMPRINT(Args) \
1378 do { \
1379 if (yydebug) \
1380 yysymprint Args; \
1381 } while (0)
1383 # define YYDSYMPRINTF(Title, Token, Value, Location) \
1384 do { \
1385 if (yydebug) \
1387 YYFPRINTF (stderr, "%s ", Title); \
1388 yysymprint (stderr, \
1389 Token, Value, Location); \
1390 YYFPRINTF (stderr, "\n"); \
1392 } while (0)
1394 /*------------------------------------------------------------------.
1395 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1396 | TOP (cinluded). |
1397 `------------------------------------------------------------------*/
1399 #if defined (__STDC__) || defined (__cplusplus)
1400 static void
1401 yy_stack_print (short *bottom, short *top)
1402 #else
1403 static void
1404 yy_stack_print (bottom, top)
1405 short *bottom;
1406 short *top;
1407 #endif
1409 YYFPRINTF (stderr, "Stack now");
1410 for (/* Nothing. */; bottom <= top; ++bottom)
1411 YYFPRINTF (stderr, " %d", *bottom);
1412 YYFPRINTF (stderr, "\n");
1415 # define YY_STACK_PRINT(Bottom, Top) \
1416 do { \
1417 if (yydebug) \
1418 yy_stack_print ((Bottom), (Top)); \
1419 } while (0)
1422 /*------------------------------------------------.
1423 | Report that the YYRULE is going to be reduced. |
1424 `------------------------------------------------*/
1426 #if defined (__STDC__) || defined (__cplusplus)
1427 static void
1428 yy_reduce_print (int yyrule)
1429 #else
1430 static void
1431 yy_reduce_print (yyrule)
1432 int yyrule;
1433 #endif
1435 int yyi;
1436 unsigned int yylineno = yyrline[yyrule];
1437 YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
1438 yyrule - 1, yylineno);
1439 /* Print the symbols being reduced, and their result. */
1440 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1441 YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
1442 YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
1445 # define YY_REDUCE_PRINT(Rule) \
1446 do { \
1447 if (yydebug) \
1448 yy_reduce_print (Rule); \
1449 } while (0)
1451 /* Nonzero means print parse trace. It is left uninitialized so that
1452 multiple parsers can coexist. */
1453 int yydebug;
1454 #else /* !YYDEBUG */
1455 # define YYDPRINTF(Args)
1456 # define YYDSYMPRINT(Args)
1457 # define YYDSYMPRINTF(Title, Token, Value, Location)
1458 # define YY_STACK_PRINT(Bottom, Top)
1459 # define YY_REDUCE_PRINT(Rule)
1460 #endif /* !YYDEBUG */
1463 /* YYINITDEPTH -- initial size of the parser's stacks. */
1464 #ifndef YYINITDEPTH
1465 # define YYINITDEPTH 200
1466 #endif
1468 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1469 if the built-in stack extension method is used).
1471 Do not make this value too large; the results are undefined if
1472 SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1473 evaluated with infinite-precision integer arithmetic. */
1475 #if YYMAXDEPTH == 0
1476 # undef YYMAXDEPTH
1477 #endif
1479 #ifndef YYMAXDEPTH
1480 # define YYMAXDEPTH 10000
1481 #endif
1485 #if YYERROR_VERBOSE
1487 # ifndef yystrlen
1488 # if defined (__GLIBC__) && defined (_STRING_H)
1489 # define yystrlen strlen
1490 # else
1491 /* Return the length of YYSTR. */
1492 static YYSIZE_T
1493 # if defined (__STDC__) || defined (__cplusplus)
1494 yystrlen (const char *yystr)
1495 # else
1496 yystrlen (yystr)
1497 const char *yystr;
1498 # endif
1500 register const char *yys = yystr;
1502 while (*yys++ != '\0')
1503 continue;
1505 return yys - yystr - 1;
1507 # endif
1508 # endif
1510 # ifndef yystpcpy
1511 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1512 # define yystpcpy stpcpy
1513 # else
1514 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1515 YYDEST. */
1516 static char *
1517 # if defined (__STDC__) || defined (__cplusplus)
1518 yystpcpy (char *yydest, const char *yysrc)
1519 # else
1520 yystpcpy (yydest, yysrc)
1521 char *yydest;
1522 const char *yysrc;
1523 # endif
1525 register char *yyd = yydest;
1526 register const char *yys = yysrc;
1528 while ((*yyd++ = *yys++) != '\0')
1529 continue;
1531 return yyd - 1;
1533 # endif
1534 # endif
1536 #endif /* !YYERROR_VERBOSE */
1540 #if YYDEBUG
1541 /*--------------------------------.
1542 | Print this symbol on YYOUTPUT. |
1543 `--------------------------------*/
1545 #if defined (__STDC__) || defined (__cplusplus)
1546 static void
1547 yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1548 #else
1549 static void
1550 yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
1551 FILE *yyoutput;
1552 int yytype;
1553 YYSTYPE *yyvaluep;
1554 YYLTYPE *yylocationp;
1555 #endif
1557 /* Pacify ``unused variable'' warnings. */
1558 (void) yyvaluep;
1559 (void) yylocationp;
1561 if (yytype < YYNTOKENS)
1563 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1564 # ifdef YYPRINT
1565 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1566 # endif
1568 else
1569 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1571 switch (yytype)
1573 default:
1574 break;
1576 YYFPRINTF (yyoutput, ")");
1579 #endif /* ! YYDEBUG */
1580 /*-----------------------------------------------.
1581 | Release the memory associated to this symbol. |
1582 `-----------------------------------------------*/
1584 #if defined (__STDC__) || defined (__cplusplus)
1585 static void
1586 yydestruct (int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1587 #else
1588 static void
1589 yydestruct (yytype, yyvaluep, yylocationp)
1590 int yytype;
1591 YYSTYPE *yyvaluep;
1592 YYLTYPE *yylocationp;
1593 #endif
1595 /* Pacify ``unused variable'' warnings. */
1596 (void) yyvaluep;
1597 (void) yylocationp;
1599 switch (yytype)
1602 default:
1603 break;
1608 /* Prevent warnings from -Wmissing-prototypes. */
1610 #ifdef YYPARSE_PARAM
1611 # if defined (__STDC__) || defined (__cplusplus)
1612 int yyparse (void *YYPARSE_PARAM);
1613 # else
1614 int yyparse ();
1615 # endif
1616 #else /* ! YYPARSE_PARAM */
1617 #if defined (__STDC__) || defined (__cplusplus)
1618 int yyparse (void);
1619 #else
1620 int yyparse ();
1621 #endif
1622 #endif /* ! YYPARSE_PARAM */
1626 /* The lookahead symbol. */
1627 int yychar;
1629 /* The semantic value of the lookahead symbol. */
1630 YYSTYPE yylval;
1632 /* Number of syntax errors so far. */
1633 int yynerrs;
1634 /* Location data for the lookahead symbol. */
1635 YYLTYPE yylloc;
1639 /*----------.
1640 | yyparse. |
1641 `----------*/
1643 #ifdef YYPARSE_PARAM
1644 # if defined (__STDC__) || defined (__cplusplus)
1645 int yyparse (void *YYPARSE_PARAM)
1646 # else
1647 int yyparse (YYPARSE_PARAM)
1648 void *YYPARSE_PARAM;
1649 # endif
1650 #else /* ! YYPARSE_PARAM */
1651 #if defined (__STDC__) || defined (__cplusplus)
1653 yyparse (void)
1654 #else
1656 yyparse ()
1658 #endif
1659 #endif
1662 register int yystate;
1663 register int yyn;
1664 int yyresult;
1665 /* Number of tokens to shift before error messages enabled. */
1666 int yyerrstatus;
1667 /* Lookahead token as an internal (translated) token number. */
1668 int yytoken = 0;
1670 /* Three stacks and their tools:
1671 `yyss': related to states,
1672 `yyvs': related to semantic values,
1673 `yyls': related to locations.
1675 Refer to the stacks thru separate pointers, to allow yyoverflow
1676 to reallocate them elsewhere. */
1678 /* The state stack. */
1679 short yyssa[YYINITDEPTH];
1680 short *yyss = yyssa;
1681 register short *yyssp;
1683 /* The semantic value stack. */
1684 YYSTYPE yyvsa[YYINITDEPTH];
1685 YYSTYPE *yyvs = yyvsa;
1686 register YYSTYPE *yyvsp;
1688 /* The location stack. */
1689 YYLTYPE yylsa[YYINITDEPTH];
1690 YYLTYPE *yyls = yylsa;
1691 YYLTYPE *yylsp;
1692 YYLTYPE *yylerrsp;
1694 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1696 YYSIZE_T yystacksize = YYINITDEPTH;
1698 /* The variables used to return semantic value and location from the
1699 action routines. */
1700 YYSTYPE yyval;
1701 YYLTYPE yyloc;
1703 /* When reducing, the number of symbols on the RHS of the reduced
1704 rule. */
1705 int yylen;
1707 YYDPRINTF ((stderr, "Starting parse\n"));
1709 yystate = 0;
1710 yyerrstatus = 0;
1711 yynerrs = 0;
1712 yychar = YYEMPTY; /* Cause a token to be read. */
1714 /* Initialize stack pointers.
1715 Waste one element of value and location stack
1716 so that they stay on the same level as the state stack.
1717 The wasted elements are never initialized. */
1719 yyssp = yyss;
1720 yyvsp = yyvs;
1721 yylsp = yyls;
1722 goto yysetstate;
1724 /*------------------------------------------------------------.
1725 | yynewstate -- Push a new state, which is found in yystate. |
1726 `------------------------------------------------------------*/
1727 yynewstate:
1728 /* In all cases, when you get here, the value and location stacks
1729 have just been pushed. so pushing a state here evens the stacks.
1731 yyssp++;
1733 yysetstate:
1734 *yyssp = yystate;
1736 if (yyss + yystacksize - 1 <= yyssp)
1738 /* Get the current used size of the three stacks, in elements. */
1739 YYSIZE_T yysize = yyssp - yyss + 1;
1741 #ifdef yyoverflow
1743 /* Give user a chance to reallocate the stack. Use copies of
1744 these so that the &'s don't force the real ones into
1745 memory. */
1746 YYSTYPE *yyvs1 = yyvs;
1747 short *yyss1 = yyss;
1748 YYLTYPE *yyls1 = yyls;
1750 /* Each stack pointer address is followed by the size of the
1751 data in use in that stack, in bytes. This used to be a
1752 conditional around just the two extra args, but that might
1753 be undefined if yyoverflow is a macro. */
1754 yyoverflow ("parser stack overflow",
1755 &yyss1, yysize * sizeof (*yyssp),
1756 &yyvs1, yysize * sizeof (*yyvsp),
1757 &yyls1, yysize * sizeof (*yylsp),
1758 &yystacksize);
1759 yyls = yyls1;
1760 yyss = yyss1;
1761 yyvs = yyvs1;
1763 #else /* no yyoverflow */
1764 # ifndef YYSTACK_RELOCATE
1765 goto yyoverflowlab;
1766 # else
1767 /* Extend the stack our own way. */
1768 if (YYMAXDEPTH <= yystacksize)
1769 goto yyoverflowlab;
1770 yystacksize *= 2;
1771 if (YYMAXDEPTH < yystacksize)
1772 yystacksize = YYMAXDEPTH;
1775 short *yyss1 = yyss;
1776 union yyalloc *yyptr =
1777 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1778 if (! yyptr)
1779 goto yyoverflowlab;
1780 YYSTACK_RELOCATE (yyss);
1781 YYSTACK_RELOCATE (yyvs);
1782 YYSTACK_RELOCATE (yyls);
1783 # undef YYSTACK_RELOCATE
1784 if (yyss1 != yyssa)
1785 YYSTACK_FREE (yyss1);
1787 # endif
1788 #endif /* no yyoverflow */
1790 yyssp = yyss + yysize - 1;
1791 yyvsp = yyvs + yysize - 1;
1792 yylsp = yyls + yysize - 1;
1794 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1795 (unsigned long int) yystacksize));
1797 if (yyss + yystacksize - 1 <= yyssp)
1798 YYABORT;
1801 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1803 goto yybackup;
1805 /*-----------.
1806 | yybackup. |
1807 `-----------*/
1808 yybackup:
1810 /* Do appropriate processing given the current state. */
1811 /* Read a lookahead token if we need one and don't already have one. */
1812 /* yyresume: */
1814 /* First try to decide what to do without reference to lookahead token. */
1816 yyn = yypact[yystate];
1817 if (yyn == YYPACT_NINF)
1818 goto yydefault;
1820 /* Not known => get a lookahead token if don't already have one. */
1822 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1823 if (yychar == YYEMPTY)
1825 YYDPRINTF ((stderr, "Reading a token: "));
1826 yychar = YYLEX;
1829 if (yychar <= YYEOF)
1831 yychar = yytoken = YYEOF;
1832 YYDPRINTF ((stderr, "Now at end of input.\n"));
1834 else
1836 yytoken = YYTRANSLATE (yychar);
1837 YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
1840 /* If the proper action on seeing token YYTOKEN is to reduce or to
1841 detect an error, take that action. */
1842 yyn += yytoken;
1843 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1844 goto yydefault;
1845 yyn = yytable[yyn];
1846 if (yyn <= 0)
1848 if (yyn == 0 || yyn == YYTABLE_NINF)
1849 goto yyerrlab;
1850 yyn = -yyn;
1851 goto yyreduce;
1854 if (yyn == YYFINAL)
1855 YYACCEPT;
1857 /* Shift the lookahead token. */
1858 YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
1860 /* Discard the token being shifted unless it is eof. */
1861 if (yychar != YYEOF)
1862 yychar = YYEMPTY;
1864 *++yyvsp = yylval;
1865 *++yylsp = yylloc;
1867 /* Count tokens shifted since error; after three, turn off error
1868 status. */
1869 if (yyerrstatus)
1870 yyerrstatus--;
1872 yystate = yyn;
1873 goto yynewstate;
1876 /*-----------------------------------------------------------.
1877 | yydefault -- do the default action for the current state. |
1878 `-----------------------------------------------------------*/
1879 yydefault:
1880 yyn = yydefact[yystate];
1881 if (yyn == 0)
1882 goto yyerrlab;
1883 goto yyreduce;
1886 /*-----------------------------.
1887 | yyreduce -- Do a reduction. |
1888 `-----------------------------*/
1889 yyreduce:
1890 /* yyn is the number of a rule to reduce with. */
1891 yylen = yyr2[yyn];
1893 /* If YYLEN is nonzero, implement the default value of the action:
1894 `$$ = $1'.
1896 Otherwise, the following line sets YYVAL to garbage.
1897 This behavior is undocumented and Bison
1898 users should not rely upon it. Assigning to YYVAL
1899 unconditionally makes the parser a bit smaller, and it avoids a
1900 GCC warning that YYVAL may be used uninitialized. */
1901 yyval = yyvsp[1-yylen];
1903 /* Default location. */
1904 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
1905 YY_REDUCE_PRINT (yyn);
1906 switch (yyn)
1908 case 2:
1909 #line 119 "parser.y"
1910 { root_node = astnode_create_list(yyvsp[-1].node); }
1911 break;
1913 case 3:
1914 #line 123 "parser.y"
1915 { ; }
1916 break;
1918 case 5:
1919 #line 128 "parser.y"
1920 { yyval.node = yyvsp[0].node; }
1921 break;
1923 case 6:
1924 #line 129 "parser.y"
1926 if (yyvsp[-1].node != NULL) { yyval.node = yyvsp[-1].node; astnode_add_sibling(yyval.node, yyvsp[0].node); }
1927 else { yyval.node = yyvsp[0].node; }
1929 break;
1931 case 7:
1932 #line 136 "parser.y"
1933 { yyval.node = yyvsp[-1].node; astnode_add_sibling(yyval.node, yyvsp[0].node); }
1934 break;
1936 case 8:
1937 #line 137 "parser.y"
1938 { yyval.node = yyvsp[0].node; }
1939 break;
1941 case 9:
1942 #line 141 "parser.y"
1943 { yyval.node = yyvsp[0].node; }
1944 break;
1946 case 10:
1947 #line 142 "parser.y"
1948 { yyval.node = yyvsp[0].node; }
1949 break;
1951 case 11:
1952 #line 143 "parser.y"
1953 { yyval.node = yyvsp[0].node; }
1954 break;
1956 case 12:
1957 #line 144 "parser.y"
1958 { yyval.node = yyvsp[0].node; }
1959 break;
1961 case 13:
1962 #line 145 "parser.y"
1963 { yyval.node = yyvsp[0].node; }
1964 break;
1966 case 14:
1967 #line 146 "parser.y"
1968 { yyval.node = yyvsp[0].node; }
1969 break;
1971 case 15:
1972 #line 147 "parser.y"
1973 { yyval.node = yyvsp[0].node; }
1974 break;
1976 case 16:
1977 #line 148 "parser.y"
1978 { yyval.node = yyvsp[0].node; }
1979 break;
1981 case 17:
1982 #line 149 "parser.y"
1983 { yyval.node = yyvsp[0].node; }
1984 break;
1986 case 18:
1987 #line 150 "parser.y"
1988 { yyval.node = yyvsp[0].node; }
1989 break;
1991 case 19:
1992 #line 151 "parser.y"
1993 { yyval.node = yyvsp[0].node; }
1994 break;
1996 case 20:
1997 #line 152 "parser.y"
1998 { yyval.node = yyvsp[0].node; }
1999 break;
2001 case 21:
2002 #line 153 "parser.y"
2003 { yyval.node = yyvsp[0].node; }
2004 break;
2006 case 22:
2007 #line 154 "parser.y"
2008 { yyval.node = yyvsp[0].node; }
2009 break;
2011 case 23:
2012 #line 155 "parser.y"
2013 { yyval.node = yyvsp[0].node; }
2014 break;
2016 case 24:
2017 #line 156 "parser.y"
2018 { yyval.node = yyvsp[0].node; }
2019 break;
2021 case 25:
2022 #line 157 "parser.y"
2023 { yyval.node = yyvsp[0].node; }
2024 break;
2026 case 26:
2027 #line 158 "parser.y"
2028 { yyval.node = yyvsp[0].node; }
2029 break;
2031 case 27:
2032 #line 159 "parser.y"
2033 { yyval.node = yyvsp[0].node; }
2034 break;
2036 case 28:
2037 #line 160 "parser.y"
2038 { yyval.node = yyvsp[0].node; }
2039 break;
2041 case 29:
2042 #line 161 "parser.y"
2043 { yyval.node = yyvsp[0].node; }
2044 break;
2046 case 30:
2047 #line 162 "parser.y"
2048 { yyval.node = yyvsp[0].node; }
2049 break;
2051 case 31:
2052 #line 163 "parser.y"
2053 { yyval.node = yyvsp[0].node; }
2054 break;
2056 case 32:
2057 #line 164 "parser.y"
2058 { yyval.node = yyvsp[0].node; }
2059 break;
2061 case 33:
2062 #line 165 "parser.y"
2063 { yyval.node = yyvsp[0].node; }
2064 break;
2066 case 34:
2067 #line 166 "parser.y"
2068 { yyval.node = yyvsp[0].node; }
2069 break;
2071 case 35:
2072 #line 167 "parser.y"
2073 { yyval.node = yyvsp[0].node; }
2074 break;
2076 case 36:
2077 #line 168 "parser.y"
2078 { yyval.node = yyvsp[0].node; }
2079 break;
2081 case 37:
2082 #line 169 "parser.y"
2083 { yyval.node = yyvsp[0].node; }
2084 break;
2086 case 38:
2087 #line 170 "parser.y"
2088 { yyval.node = yyvsp[0].node; }
2089 break;
2091 case 39:
2092 #line 171 "parser.y"
2093 { yyval.node = yyvsp[0].node; }
2094 break;
2096 case 40:
2097 #line 172 "parser.y"
2098 { yyval.node = yyvsp[0].node; }
2099 break;
2101 case 41:
2102 #line 173 "parser.y"
2103 { yyval.node = NULL; }
2104 break;
2106 case 42:
2107 #line 177 "parser.y"
2108 { yyval.node = astnode_create_org(yyvsp[-1].node, yyloc); }
2109 break;
2111 case 43:
2112 #line 181 "parser.y"
2113 { yyval.node = astnode_create_align(yyvsp[-2].node, yyvsp[-1].node, yyloc); }
2114 break;
2116 case 44:
2117 #line 185 "parser.y"
2118 { yyval.node = astnode_create_warning(yyvsp[-1].node, yyloc); }
2119 break;
2121 case 45:
2122 #line 189 "parser.y"
2123 { yyval.node = astnode_create_error(yyvsp[-1].node, yyloc); }
2124 break;
2126 case 46:
2127 #line 193 "parser.y"
2128 { yyval.node = astnode_create_message(yyvsp[-1].node, yyloc); }
2129 break;
2131 case 47:
2132 #line 197 "parser.y"
2133 { yyval.node = astnode_create_label(yyvsp[-3].node->label, yyvsp[-2].node, yyvsp[-1].node, yyloc); }
2134 break;
2136 case 48:
2137 #line 201 "parser.y"
2138 { yyval.node = yyvsp[0].node; }
2139 break;
2141 case 49:
2142 #line 202 "parser.y"
2143 { yyval.node = NULL; }
2144 break;
2146 case 50:
2147 #line 206 "parser.y"
2148 { yyval.node = yyvsp[0].node; }
2149 break;
2151 case 51:
2152 #line 207 "parser.y"
2153 { yyval.node = NULL; }
2154 break;
2156 case 52:
2157 #line 211 "parser.y"
2158 { yyval.node = astnode_create_while(yyvsp[-4].node, yyvsp[-2].node, yyloc); }
2159 break;
2161 case 53:
2162 #line 215 "parser.y"
2163 { yyval.node = astnode_create_rept(yyvsp[-4].node, yyvsp[-2].node, yyloc); }
2164 break;
2166 case 54:
2167 #line 219 "parser.y"
2168 { yyval.node = astnode_create_proc(yyvsp[-4].node, yyvsp[-2].node, yyloc); }
2169 break;
2171 case 55:
2172 #line 223 "parser.y"
2173 { yyval.node = astnode_create_struc_decl(yyvsp[-4].node, yyvsp[-2].node, yyloc); }
2174 break;
2176 case 56:
2177 #line 227 "parser.y"
2178 { yyval.node = astnode_create_union_decl(yyvsp[-4].node, yyvsp[-2].node, yyloc); }
2179 break;
2181 case 57:
2182 #line 231 "parser.y"
2183 { yyval.node = astnode_create_enum_decl(yyvsp[-4].node, yyvsp[-2].node, yyloc); }
2184 break;
2186 case 58:
2187 #line 235 "parser.y"
2188 { yyval.node = yyvsp[0].node; }
2189 break;
2191 case 59:
2192 #line 236 "parser.y"
2193 { yyval.node = yyvsp[-1].node; astnode_add_sibling(yyval.node, yyvsp[0].node); }
2194 break;
2196 case 60:
2197 #line 240 "parser.y"
2198 { yyval.node = yyvsp[0].node; }
2199 break;
2201 case 61:
2202 #line 241 "parser.y"
2203 { yyval.node = yyvsp[-1].node; }
2204 break;
2206 case 62:
2207 #line 245 "parser.y"
2208 { yyval.node = astnode_create_record_decl(yyvsp[-2].node, yyvsp[-1].node, yyloc); }
2209 break;
2211 case 63:
2212 #line 249 "parser.y"
2213 { yyval.node = yyvsp[0].node; }
2214 break;
2216 case 64:
2217 #line 250 "parser.y"
2218 { yyval.node = yyvsp[-2].node; astnode_add_sibling(yyval.node, yyvsp[0].node); }
2219 break;
2221 case 65:
2222 #line 254 "parser.y"
2223 { yyval.node = astnode_create_bitfield_decl(yyvsp[-2].node, yyvsp[0].node, yyloc); }
2224 break;
2226 case 66:
2227 #line 258 "parser.y"
2228 { yyval.node = astnode_create_charmap(yyvsp[-1].node, yyloc); }
2229 break;
2231 case 67:
2232 #line 262 "parser.y"
2233 { yyval.node = astnode_create_dataseg(0, yyloc); }
2234 break;
2236 case 68:
2237 #line 263 "parser.y"
2238 { yyval.node = astnode_create_dataseg(ZEROPAGE_FLAG, yyloc); }
2239 break;
2241 case 69:
2242 #line 266 "parser.y"
2243 { yyval.node = astnode_create_codeseg(yyloc); }
2244 break;
2246 case 70:
2247 #line 270 "parser.y"
2248 { yyval.node = NULL; }
2249 break;
2251 case 71:
2252 #line 274 "parser.y"
2253 { yyval.node = yyvsp[0].node; }
2254 break;
2256 case 72:
2257 #line 278 "parser.y"
2258 { ; }
2259 break;
2261 case 73:
2262 #line 279 "parser.y"
2263 { ; }
2264 break;
2266 case 74:
2267 #line 283 "parser.y"
2268 { ; }
2269 break;
2271 case 75:
2272 #line 287 "parser.y"
2273 { yyval.node = yyvsp[-1].node; }
2274 break;
2276 case 76:
2277 #line 291 "parser.y"
2278 { yyval.node = astnode_create_instruction(yyvsp[0].mnemonic, IMPLIED_MODE, NULL, yyloc); }
2279 break;
2281 case 77:
2282 #line 292 "parser.y"
2283 { yyval.node = astnode_create_instruction(yyvsp[-1].mnemonic, ACCUMULATOR_MODE, NULL, yyloc); }
2284 break;
2286 case 78:
2287 #line 293 "parser.y"
2288 { yyval.node = astnode_create_instruction(yyvsp[-2].mnemonic, IMMEDIATE_MODE, yyvsp[0].node, yyloc); }
2289 break;
2291 case 79:
2292 #line 294 "parser.y"
2293 { yyval.node = astnode_create_instruction(yyvsp[-1].mnemonic, ABSOLUTE_MODE, yyvsp[0].node, yyloc); }
2294 break;
2296 case 80:
2297 #line 295 "parser.y"
2298 { yyval.node = astnode_create_instruction(yyvsp[-3].mnemonic, ABSOLUTE_X_MODE, yyvsp[-2].node, yyloc); }
2299 break;
2301 case 81:
2302 #line 296 "parser.y"
2303 { yyval.node = astnode_create_instruction(yyvsp[-3].mnemonic, ABSOLUTE_Y_MODE, yyvsp[-2].node, yyloc); }
2304 break;
2306 case 82:
2307 #line 297 "parser.y"
2308 { yyval.node = astnode_create_instruction(yyvsp[-5].mnemonic, PREINDEXED_INDIRECT_MODE, yyvsp[-3].node, yyloc); }
2309 break;
2311 case 83:
2312 #line 298 "parser.y"
2313 { yyval.node = astnode_create_instruction(yyvsp[-5].mnemonic, POSTINDEXED_INDIRECT_MODE, yyvsp[-3].node, yyloc); }
2314 break;
2316 case 84:
2317 #line 299 "parser.y"
2318 { yyval.node = astnode_create_instruction(yyvsp[-3].mnemonic, INDIRECT_MODE, yyvsp[-1].node, yyloc); }
2319 break;
2321 case 85:
2322 #line 303 "parser.y"
2323 { yyval.node = yyvsp[0].node; }
2324 break;
2326 case 86:
2327 #line 304 "parser.y"
2328 { yyval.node = astnode_create_sizeof(yyvsp[0].node, yyloc); }
2329 break;
2331 case 87:
2332 #line 305 "parser.y"
2333 { yyval.node = yyvsp[0].node; }
2334 break;
2336 case 88:
2337 #line 306 "parser.y"
2338 { yyval.node = yyvsp[0].node; }
2339 break;
2341 case 89:
2342 #line 307 "parser.y"
2343 { yyval.node = yyvsp[0].node; }
2344 break;
2346 case 90:
2347 #line 308 "parser.y"
2348 { yyval.node = yyvsp[0].node; }
2349 break;
2351 case 91:
2352 #line 309 "parser.y"
2353 { yyval.node = astnode_create_pc(yyloc); }
2354 break;
2356 case 92:
2357 #line 310 "parser.y"
2358 { yyval.node = yyvsp[0].node; }
2359 break;
2361 case 93:
2362 #line 311 "parser.y"
2363 { yyval.node = yyvsp[0].node; }
2364 break;
2366 case 94:
2367 #line 312 "parser.y"
2368 { yyval.node = yyvsp[-1].node; }
2369 break;
2371 case 95:
2372 #line 313 "parser.y"
2373 { yyval.node = astnode_create_forward_branch("+", yyloc); }
2374 break;
2376 case 96:
2377 #line 314 "parser.y"
2378 { yyval.node = astnode_create_backward_branch("-", yyloc); }
2379 break;
2381 case 97:
2382 #line 315 "parser.y"
2383 { yyval.node = astnode_create_forward_branch(yyvsp[0].ident, yyloc); }
2384 break;
2386 case 98:
2387 #line 316 "parser.y"
2388 { yyval.node = astnode_create_backward_branch(yyvsp[0].ident, yyloc); }
2389 break;
2391 case 99:
2392 #line 317 "parser.y"
2393 { yyval.node = astnode_create_mask(yyvsp[0].node, yyloc); }
2394 break;
2396 case 100:
2397 #line 321 "parser.y"
2398 { yyval.node = yyvsp[0].node; }
2399 break;
2401 case 101:
2402 #line 322 "parser.y"
2403 { yyval.node = astnode_create_index(yyvsp[-3].node, yyvsp[-1].node, yyloc); }
2404 break;
2406 case 102:
2407 #line 323 "parser.y"
2408 { yyval.node = astnode_create_index(yyvsp[-3].node, yyvsp[-1].node, yyloc); }
2409 break;
2411 case 103:
2412 #line 327 "parser.y"
2413 { yyval.node = yyvsp[0].node; }
2414 break;
2416 case 104:
2417 #line 328 "parser.y"
2418 { yyval.node = yyvsp[0].node; }
2419 break;
2421 case 105:
2422 #line 332 "parser.y"
2423 { yyval.node = yyvsp[0].node; }
2424 break;
2426 case 106:
2427 #line 333 "parser.y"
2428 { yyval.node = yyvsp[0].node; }
2429 break;
2431 case 107:
2432 #line 337 "parser.y"
2433 { yyval.node = yyvsp[0].node; }
2434 break;
2436 case 108:
2437 #line 338 "parser.y"
2438 { yyval.node = NULL; }
2439 break;
2441 case 109:
2442 #line 342 "parser.y"
2443 { yyval.node = astnode_create_scope(yyvsp[-2].node, yyvsp[0].node, yyloc); }
2444 break;
2446 case 110:
2447 #line 346 "parser.y"
2448 { yyval.node = astnode_create_dot(yyvsp[-2].node, yyvsp[0].node, yyloc); }
2449 break;
2451 case 111:
2452 #line 347 "parser.y"
2453 { yyval.node = astnode_create_dot(yyvsp[-2].node, yyvsp[0].node, yyloc); }
2454 break;
2456 case 112:
2457 #line 351 "parser.y"
2458 { yyval.node = astnode_create_struc(yyvsp[-1].node, yyloc); }
2459 break;
2461 case 113:
2462 #line 355 "parser.y"
2463 { yyval.node = yyvsp[0].node; }
2464 break;
2466 case 114:
2467 #line 356 "parser.y"
2468 { yyval.node = NULL; }
2469 break;
2471 case 115:
2472 #line 360 "parser.y"
2473 { yyval.node = yyvsp[0].node; }
2474 break;
2476 case 116:
2477 #line 361 "parser.y"
2478 { yyval.node = yyvsp[-2].node; astnode_add_sibling(yyval.node, yyvsp[0].node); }
2479 break;
2481 case 117:
2482 #line 365 "parser.y"
2483 { yyval.node = yyvsp[0].node; }
2484 break;
2486 case 118:
2487 #line 366 "parser.y"
2488 { yyval.node = astnode_create_null(yyloc); }
2489 break;
2491 case 119:
2492 #line 370 "parser.y"
2493 { yyval.node = astnode_create_local_id(yyvsp[0].ident, yyloc); }
2494 break;
2496 case 120:
2497 #line 374 "parser.y"
2498 { yyval.node = astnode_create_arithmetic(PLUS_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2499 break;
2501 case 121:
2502 #line 375 "parser.y"
2503 { yyval.node = astnode_create_arithmetic(MINUS_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2504 break;
2506 case 122:
2507 #line 376 "parser.y"
2508 { yyval.node = astnode_create_arithmetic(MUL_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2509 break;
2511 case 123:
2512 #line 377 "parser.y"
2513 { yyval.node = astnode_create_arithmetic(DIV_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2514 break;
2516 case 124:
2517 #line 378 "parser.y"
2518 { yyval.node = astnode_create_arithmetic(MOD_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2519 break;
2521 case 125:
2522 #line 379 "parser.y"
2523 { yyval.node = astnode_create_arithmetic(AND_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2524 break;
2526 case 126:
2527 #line 380 "parser.y"
2528 { yyval.node = astnode_create_arithmetic(OR_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2529 break;
2531 case 127:
2532 #line 381 "parser.y"
2533 { yyval.node = astnode_create_arithmetic(XOR_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2534 break;
2536 case 128:
2537 #line 382 "parser.y"
2538 { yyval.node = astnode_create_arithmetic(SHL_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2539 break;
2541 case 129:
2542 #line 383 "parser.y"
2543 { yyval.node = astnode_create_arithmetic(SHR_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2544 break;
2546 case 130:
2547 #line 384 "parser.y"
2548 { yyval.node = astnode_create_arithmetic(NEG_OPERATOR, yyvsp[0].node, NULL, yyloc); }
2549 break;
2551 case 131:
2552 #line 385 "parser.y"
2553 { yyval.node = astnode_create_arithmetic(NOT_OPERATOR, yyvsp[0].node, NULL, yyloc); }
2554 break;
2556 case 132:
2557 #line 386 "parser.y"
2558 { yyval.node = astnode_create_arithmetic(BANK_OPERATOR, yyvsp[0].node, NULL, yyloc); }
2559 break;
2561 case 133:
2562 #line 387 "parser.y"
2563 { yyval.node = astnode_create_arithmetic(LO_OPERATOR, yyvsp[0].node, NULL, yyloc); }
2564 break;
2566 case 134:
2567 #line 388 "parser.y"
2568 { yyval.node = astnode_create_arithmetic(HI_OPERATOR, yyvsp[0].node, NULL, yyloc); }
2569 break;
2571 case 135:
2572 #line 389 "parser.y"
2573 { yyval.node = astnode_create_arithmetic(UMINUS_OPERATOR, yyvsp[0].node, NULL, yyloc); }
2574 break;
2576 case 136:
2577 #line 393 "parser.y"
2578 { yyval.node = astnode_create_arithmetic(EQ_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2579 break;
2581 case 137:
2582 #line 394 "parser.y"
2583 { yyval.node = astnode_create_arithmetic(NE_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2584 break;
2586 case 138:
2587 #line 395 "parser.y"
2588 { yyval.node = astnode_create_arithmetic(GT_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2589 break;
2591 case 139:
2592 #line 396 "parser.y"
2593 { yyval.node = astnode_create_arithmetic(LT_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2594 break;
2596 case 140:
2597 #line 397 "parser.y"
2598 { yyval.node = astnode_create_arithmetic(GE_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2599 break;
2601 case 141:
2602 #line 398 "parser.y"
2603 { yyval.node = astnode_create_arithmetic(LE_OPERATOR, yyvsp[-2].node, yyvsp[0].node, yyloc); }
2604 break;
2606 case 142:
2607 #line 402 "parser.y"
2608 { yyval.node = astnode_create_label(yyvsp[0].label, NULL, NULL, yyloc); }
2609 break;
2611 case 143:
2612 #line 403 "parser.y"
2613 { yyval.node = astnode_create_local_label(yyvsp[0].label, yyloc); }
2614 break;
2616 case 144:
2617 #line 404 "parser.y"
2618 { yyval.node = astnode_create_forward_branch_decl("+", yyloc); }
2619 break;
2621 case 145:
2622 #line 405 "parser.y"
2623 { yyval.node = astnode_create_backward_branch_decl("-", yyloc); }
2624 break;
2626 case 146:
2627 #line 406 "parser.y"
2628 { yyval.node = astnode_create_forward_branch_decl(yyvsp[0].ident, yyloc); }
2629 break;
2631 case 147:
2632 #line 407 "parser.y"
2633 { yyval.node = astnode_create_backward_branch_decl(yyvsp[0].ident, yyloc); }
2634 break;
2636 case 148:
2637 #line 411 "parser.y"
2638 { yyval.node = astnode_create_identifier(yyvsp[0].ident, yyloc); }
2639 break;
2641 case 149:
2642 #line 415 "parser.y"
2643 { yyval.node = yyvsp[0].node; }
2644 break;
2646 case 150:
2647 #line 416 "parser.y"
2648 { yyval.node = astnode_create_null(yyloc); }
2649 break;
2651 case 151:
2652 #line 420 "parser.y"
2653 { yyval.node = astnode_create_integer(yyvsp[0].integer, yyloc); }
2654 break;
2656 case 152:
2657 #line 421 "parser.y"
2658 { yyval.node = astnode_create_string(yyvsp[0].string, yyloc); }
2659 break;
2661 case 153:
2662 #line 425 "parser.y"
2663 { yyval.node = astnode_create_if(yyvsp[-6].node, yyvsp[-4].node, yyvsp[-3].node, yyvsp[-2].node, yyloc); }
2664 break;
2666 case 154:
2667 #line 429 "parser.y"
2668 { yyval.node = yyvsp[0].node; }
2669 break;
2671 case 155:
2672 #line 430 "parser.y"
2673 { yyval.node = NULL; }
2674 break;
2676 case 156:
2677 #line 434 "parser.y"
2678 { yyval.node = yyvsp[0].node; }
2679 break;
2681 case 157:
2682 #line 435 "parser.y"
2683 { yyval.node = yyvsp[-1].node; astnode_add_sibling(yyval.node, yyvsp[0].node); }
2684 break;
2686 case 158:
2687 #line 439 "parser.y"
2688 { yyval.node = astnode_create_case(yyvsp[-2].node, yyvsp[0].node, yyloc); }
2689 break;
2691 case 159:
2692 #line 443 "parser.y"
2693 { yyval.node = yyvsp[0].node; }
2694 break;
2696 case 160:
2697 #line 444 "parser.y"
2698 { yyval.node = NULL; }
2699 break;
2701 case 161:
2702 #line 448 "parser.y"
2703 { yyval.node = astnode_create_ifdef(yyvsp[-5].node, yyvsp[-3].node, yyvsp[-2].node, yyloc); }
2704 break;
2706 case 162:
2707 #line 452 "parser.y"
2708 { yyval.node = astnode_create_ifndef(yyvsp[-5].node, yyvsp[-3].node, yyvsp[-2].node, yyloc); }
2709 break;
2711 case 163:
2712 #line 456 "parser.y"
2713 { yyval.node = yyvsp[-1].node; }
2714 break;
2716 case 164:
2717 #line 457 "parser.y"
2718 { yyval.node = yyvsp[-1].node; }
2719 break;
2721 case 165:
2722 #line 461 "parser.y"
2723 { yyval.node = astnode_create_var_decl(0, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2724 break;
2726 case 166:
2727 #line 462 "parser.y"
2728 { yyval.node = astnode_create_var_decl(ZEROPAGE_FLAG, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2729 break;
2731 case 167:
2732 #line 463 "parser.y"
2733 { yyval.node = astnode_create_var_decl(PUBLIC_FLAG, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2734 break;
2736 case 168:
2737 #line 464 "parser.y"
2738 { yyval.node = astnode_create_var_decl(ZEROPAGE_FLAG | PUBLIC_FLAG, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2739 break;
2741 case 169:
2742 #line 465 "parser.y"
2743 { yyval.node = astnode_create_var_decl(PUBLIC_FLAG | ZEROPAGE_FLAG, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2744 break;
2746 case 170:
2747 #line 469 "parser.y"
2748 { yyval.node = astnode_create_data(yyvsp[-1].node, yyvsp[0].node, yyloc); }
2749 break;
2751 case 171:
2752 #line 470 "parser.y"
2753 { yyval.node = astnode_create_storage(yyvsp[0].node, NULL, yyloc); }
2754 break;
2756 case 172:
2757 #line 471 "parser.y"
2758 { yyval.node = astnode_create_storage(yyvsp[-3].node, yyvsp[-1].node, yyloc); }
2759 break;
2761 case 173:
2762 #line 475 "parser.y"
2763 { yyval.node = astnode_create_datatype(BYTE_DATATYPE, NULL, yyloc); }
2764 break;
2766 case 174:
2767 #line 476 "parser.y"
2768 { yyval.node = astnode_create_datatype(CHAR_DATATYPE, NULL, yyloc); }
2769 break;
2771 case 175:
2772 #line 477 "parser.y"
2773 { yyval.node = astnode_create_datatype(WORD_DATATYPE, NULL, yyloc); }
2774 break;
2776 case 176:
2777 #line 478 "parser.y"
2778 { yyval.node = astnode_create_datatype(DWORD_DATATYPE, NULL, yyloc); }
2779 break;
2781 case 177:
2782 #line 479 "parser.y"
2783 { yyval.node = astnode_create_datatype(USER_DATATYPE, yyvsp[0].node, yyloc); }
2784 break;
2786 case 178:
2787 #line 480 "parser.y"
2788 { yyval.node = astnode_create_datatype(USER_DATATYPE, yyvsp[0].node, yyloc); }
2789 break;
2791 case 179:
2792 #line 484 "parser.y"
2793 { yyval.node = yyvsp[0].node; }
2794 break;
2796 case 180:
2797 #line 485 "parser.y"
2798 { yyval.node = yyvsp[-2].node; astnode_add_sibling(yyval.node, yyvsp[0].node); }
2799 break;
2801 case 181:
2802 #line 489 "parser.y"
2803 { yyval.node = astnode_create_incsrc(yyvsp[-1].node, yyloc); handle_incsrc(yyval.node); }
2804 break;
2806 case 182:
2807 #line 493 "parser.y"
2808 { yyval.node = astnode_create_incbin(yyvsp[-1].node, yyloc); handle_incbin(yyval.node); }
2809 break;
2811 case 183:
2812 #line 497 "parser.y"
2813 { yyval.node = astnode_create_string(yyvsp[0].string, yyloc); }
2814 break;
2816 case 184:
2817 #line 498 "parser.y"
2818 { yyval.node = astnode_create_file_path(yyvsp[0].string, yyloc); }
2819 break;
2821 case 185:
2822 #line 502 "parser.y"
2823 { yyval.node = astnode_create_macro_decl(yyvsp[-5].node, yyvsp[-4].node, yyvsp[-2].node, yyloc); }
2824 break;
2826 case 186:
2827 #line 506 "parser.y"
2828 { yyval.node = yyvsp[0].node; }
2829 break;
2831 case 187:
2832 #line 507 "parser.y"
2833 { yyval.node = NULL; }
2834 break;
2836 case 188:
2837 #line 511 "parser.y"
2838 { yyval.node = astnode_create_macro(yyvsp[-2].node, yyvsp[-1].node, yyloc); }
2839 break;
2841 case 189:
2842 #line 515 "parser.y"
2843 { yyval.node = yyvsp[0].node; }
2844 break;
2846 case 190:
2847 #line 516 "parser.y"
2848 { yyval.node = NULL; }
2849 break;
2851 case 191:
2852 #line 520 "parser.y"
2853 { yyval.node = yyvsp[0].node; }
2854 break;
2856 case 192:
2857 #line 521 "parser.y"
2858 { yyval.node = yyvsp[-2].node; astnode_add_sibling(yyval.node, yyvsp[0].node); }
2859 break;
2861 case 193:
2862 #line 525 "parser.y"
2863 { yyval.node = astnode_create_equ(yyvsp[-3].node, yyvsp[-1].node, yyloc); }
2864 break;
2866 case 194:
2867 #line 529 "parser.y"
2868 { yyval.node = astnode_create_assign(yyvsp[-3].node, yyvsp[-1].node, yyloc); }
2869 break;
2871 case 195:
2872 #line 533 "parser.y"
2873 { yyval.node = astnode_create_equ(yyvsp[-1].node, astnode_create_integer(0, yyloc), yyloc); }
2874 break;
2876 case 196:
2877 #line 534 "parser.y"
2878 { yyval.node = astnode_create_equ(yyvsp[-2].node, yyvsp[-1].node, yyloc); }
2879 break;
2881 case 197:
2882 #line 538 "parser.y"
2883 { yyval.node = astnode_create_public(yyvsp[-1].node, yyloc); }
2884 break;
2886 case 198:
2887 #line 542 "parser.y"
2888 { yyval.node = astnode_create_extrn(yyvsp[-4].node, yyvsp[-2].node, yyvsp[-1].node, yyloc); }
2889 break;
2891 case 199:
2892 #line 546 "parser.y"
2893 { yyval.node = yyvsp[0].node; }
2894 break;
2896 case 200:
2897 #line 547 "parser.y"
2898 { yyval.node = NULL; }
2899 break;
2901 case 201:
2902 #line 551 "parser.y"
2903 { yyval.node = yyvsp[0].node; }
2904 break;
2906 case 202:
2907 #line 552 "parser.y"
2908 { yyval.node = astnode_create_datatype(USER_DATATYPE, yyvsp[0].node, yyloc); }
2909 break;
2911 case 203:
2912 #line 553 "parser.y"
2913 { yyval.node = astnode_create_integer(PROC_SYMBOL, yyloc); }
2914 break;
2916 case 204:
2917 #line 554 "parser.y"
2918 { yyval.node = astnode_create_integer(LABEL_SYMBOL, yyloc); }
2919 break;
2921 case 205:
2922 #line 558 "parser.y"
2923 { yyval.node = yyvsp[0].node; }
2924 break;
2926 case 206:
2927 #line 559 "parser.y"
2928 { yyval.node = yyvsp[0].node; }
2929 break;
2931 case 207:
2932 #line 563 "parser.y"
2933 { yyval.node = astnode_create_var_decl(0, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2934 break;
2936 case 208:
2937 #line 564 "parser.y"
2938 { yyval.node = astnode_create_var_decl(ZEROPAGE_FLAG, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2939 break;
2941 case 209:
2942 #line 565 "parser.y"
2943 { yyval.node = astnode_create_var_decl(PUBLIC_FLAG, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2944 break;
2946 case 210:
2947 #line 566 "parser.y"
2948 { yyval.node = astnode_create_var_decl(ZEROPAGE_FLAG | PUBLIC_FLAG, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2949 break;
2951 case 211:
2952 #line 567 "parser.y"
2953 { yyval.node = astnode_create_var_decl(PUBLIC_FLAG | ZEROPAGE_FLAG, yyvsp[-1].node, yyvsp[0].node, yyloc); }
2954 break;
2956 case 212:
2957 #line 571 "parser.y"
2958 { yyval.node = astnode_create_storage(yyvsp[-2].node, yyvsp[-1].node, yyloc); }
2959 break;
2961 case 213:
2962 #line 575 "parser.y"
2963 { yyval.node = astnode_create_datatype(BYTE_DATATYPE, NULL, yyloc); }
2964 break;
2966 case 214:
2967 #line 576 "parser.y"
2968 { yyval.node = astnode_create_datatype(WORD_DATATYPE, NULL, yyloc); }
2969 break;
2971 case 215:
2972 #line 577 "parser.y"
2973 { yyval.node = astnode_create_datatype(DWORD_DATATYPE, NULL, yyloc); }
2974 break;
2979 /* Line 991 of yacc.c. */
2980 #line 2980 "parser.c"
2982 yyvsp -= yylen;
2983 yyssp -= yylen;
2984 yylsp -= yylen;
2986 YY_STACK_PRINT (yyss, yyssp);
2988 *++yyvsp = yyval;
2989 *++yylsp = yyloc;
2991 /* Now `shift' the result of the reduction. Determine what state
2992 that goes to, based on the state we popped back to and the rule
2993 number reduced by. */
2995 yyn = yyr1[yyn];
2997 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2998 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2999 yystate = yytable[yystate];
3000 else
3001 yystate = yydefgoto[yyn - YYNTOKENS];
3003 goto yynewstate;
3006 /*------------------------------------.
3007 | yyerrlab -- here on detecting error |
3008 `------------------------------------*/
3009 yyerrlab:
3010 /* If not already recovering from an error, report this error. */
3011 if (!yyerrstatus)
3013 ++yynerrs;
3014 #if YYERROR_VERBOSE
3015 yyn = yypact[yystate];
3017 if (YYPACT_NINF < yyn && yyn < YYLAST)
3019 YYSIZE_T yysize = 0;
3020 int yytype = YYTRANSLATE (yychar);
3021 char *yymsg;
3022 int yyx, yycount;
3024 yycount = 0;
3025 /* Start YYX at -YYN if negative to avoid negative indexes in
3026 YYCHECK. */
3027 for (yyx = yyn < 0 ? -yyn : 0;
3028 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
3029 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3030 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
3031 yysize += yystrlen ("syntax error, unexpected ") + 1;
3032 yysize += yystrlen (yytname[yytype]);
3033 yymsg = (char *) YYSTACK_ALLOC (yysize);
3034 if (yymsg != 0)
3036 char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
3037 yyp = yystpcpy (yyp, yytname[yytype]);
3039 if (yycount < 5)
3041 yycount = 0;
3042 for (yyx = yyn < 0 ? -yyn : 0;
3043 yyx < (int) (sizeof (yytname) / sizeof (char *));
3044 yyx++)
3045 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3047 const char *yyq = ! yycount ? ", expecting " : " or ";
3048 yyp = yystpcpy (yyp, yyq);
3049 yyp = yystpcpy (yyp, yytname[yyx]);
3050 yycount++;
3053 yyerror (yymsg);
3054 YYSTACK_FREE (yymsg);
3056 else
3057 yyerror ("syntax error; also virtual memory exhausted");
3059 else
3060 #endif /* YYERROR_VERBOSE */
3061 yyerror ("syntax error");
3064 yylerrsp = yylsp;
3066 if (yyerrstatus == 3)
3068 /* If just tried and failed to reuse lookahead token after an
3069 error, discard it. */
3071 /* Return failure if at end of input. */
3072 if (yychar == YYEOF)
3074 /* Pop the error token. */
3075 YYPOPSTACK;
3076 /* Pop the rest of the stack. */
3077 while (yyss < yyssp)
3079 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
3080 yydestruct (yystos[*yyssp], yyvsp, yylsp);
3081 YYPOPSTACK;
3083 YYABORT;
3086 YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
3087 yydestruct (yytoken, &yylval, &yylloc);
3088 yychar = YYEMPTY;
3089 *++yylerrsp = yylloc;
3092 /* Else will try to reuse lookahead token after shifting the error
3093 token. */
3094 goto yyerrlab2;
3097 /*----------------------------------------------------.
3098 | yyerrlab1 -- error raised explicitly by an action. |
3099 `----------------------------------------------------*/
3100 yyerrlab1:
3102 /* Suppress GCC warning that yyerrlab1 is unused when no action
3103 invokes YYERROR. */
3104 #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__)
3105 __attribute__ ((__unused__))
3106 #endif
3108 yylerrsp = yylsp;
3109 *++yylerrsp = yyloc;
3110 goto yyerrlab2;
3113 /*---------------------------------------------------------------.
3114 | yyerrlab2 -- pop states until the error token can be shifted. |
3115 `---------------------------------------------------------------*/
3116 yyerrlab2:
3117 yyerrstatus = 3; /* Each real token shifted decrements this. */
3119 for (;;)
3121 yyn = yypact[yystate];
3122 if (yyn != YYPACT_NINF)
3124 yyn += YYTERROR;
3125 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3127 yyn = yytable[yyn];
3128 if (0 < yyn)
3129 break;
3133 /* Pop the current state because it cannot handle the error token. */
3134 if (yyssp == yyss)
3135 YYABORT;
3137 YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
3138 yydestruct (yystos[yystate], yyvsp, yylsp);
3139 yyvsp--;
3140 yystate = *--yyssp;
3141 yylsp--;
3142 YY_STACK_PRINT (yyss, yyssp);
3145 if (yyn == YYFINAL)
3146 YYACCEPT;
3148 YYDPRINTF ((stderr, "Shifting error token, "));
3150 *++yyvsp = yylval;
3151 YYLLOC_DEFAULT (yyloc, yylsp, (yylerrsp - yylsp));
3152 *++yylsp = yyloc;
3154 yystate = yyn;
3155 goto yynewstate;
3158 /*-------------------------------------.
3159 | yyacceptlab -- YYACCEPT comes here. |
3160 `-------------------------------------*/
3161 yyacceptlab:
3162 yyresult = 0;
3163 goto yyreturn;
3165 /*-----------------------------------.
3166 | yyabortlab -- YYABORT comes here. |
3167 `-----------------------------------*/
3168 yyabortlab:
3169 yyresult = 1;
3170 goto yyreturn;
3172 #ifndef yyoverflow
3173 /*----------------------------------------------.
3174 | yyoverflowlab -- parser overflow comes here. |
3175 `----------------------------------------------*/
3176 yyoverflowlab:
3177 yyerror ("parser stack overflow");
3178 yyresult = 2;
3179 /* Fall through. */
3180 #endif
3182 yyreturn:
3183 #ifndef yyoverflow
3184 if (yyss != yyssa)
3185 YYSTACK_FREE (yyss);
3186 #endif
3187 return yyresult;
3191 #line 577 "parser.y"
3194 * Takes care of switching to a new scanner input stream when a "incsrc" statement
3195 * has been encountered.
3196 * The current stream is pushed on a stack, and will be popped when EOF is reached
3197 * in the new stream.
3198 * @param n A node of type INCSRC_NODE
3200 void handle_incsrc(astnode *n)
3202 char errs[512];
3203 /* Get the node which describes the file to include */
3204 astnode *file = astnode_get_child(n, 0);
3206 switch (astnode_get_type(file)) {
3207 case STRING_NODE:
3208 /* TODO: add path searching */
3209 case FILE_PATH_NODE:
3210 switch (yypushandrestart(file->string)) {
3211 case 0:
3212 /* Success */
3213 break;
3214 case 1:
3215 /* Failed to open file */
3216 sprintf(errs, "could not open '%s' for reading", file->string);
3217 yyerror(errs);
3218 break;
3219 case 2:
3220 /* Stack overflow */
3221 yyerror("Maximum include nesting level reached");
3222 break;
3224 break;
3226 default: break;
3230 // TODO: This shouldn't be done here but rather in astproc module.
3233 * Takes care of including the binary contents of the file specified by a parsed
3234 * "incbin" statement.
3235 * Calls yyerror() if the file can't be included for some reason.
3236 * @param n A node of type INCBIN_NODE
3238 void handle_incbin(astnode *n)
3240 FILE *fp;
3241 unsigned char *data;
3242 int size;
3243 char errs[512];
3244 /* Get the node which describes the file to include */
3245 astnode *file = astnode_get_child(n, 0);
3246 const char *filename = file->string;
3248 switch (astnode_get_type(file)) {
3249 case STRING_NODE:
3250 /* TODO: add path searching */
3251 case FILE_PATH_NODE:
3252 /* Attempt to open file */
3253 fp = fopen(filename, "rb");
3254 if (!fp && (filename[0] != '/')) {
3255 /* Try search paths */
3256 /* ### copied from scanner.l -- generalize */
3257 int i;
3258 for (i = 0; i < xasm_args.include_path_count; ++i) {
3259 const char *include_path = xasm_args.include_paths[i];
3260 char *path = (char *)malloc(
3261 strlen(include_path) + strlen("/") + strlen(filename) + 1);
3262 strcpy(path, include_path);
3263 strcat(path, "/");
3264 strcat(path, filename);
3265 fp = fopen(path, "rb");
3266 free(path);
3267 if (fp)
3268 break;
3271 if (fp) {
3272 /* Get filesize */
3273 fseek(fp, 0, SEEK_END);
3274 size = ftell(fp);
3275 rewind(fp);
3276 if (size > 0) {
3277 /* Allocate buffer to hold file contents */
3278 data = (unsigned char *)malloc(size);
3279 /* Read file contents into buffer */
3280 fread(data, 1, size, fp);
3281 /* Insert binary node */
3282 astnode_add_sibling(n, astnode_create_binary(data, size, n->loc) );
3284 /* Close file */
3285 fclose(fp);
3287 else {
3288 /* Couldn't open file */
3289 sprintf(errs, "could not open '%s' for reading", file->string);
3290 yyerror(errs);
3292 break;
3294 default: break;