update docs
[xorcyst.git] / RCS / parser.c,v
blobec10dc4d55936c90b3c1ef29d21d7a2e5034c38f
1 head    1.5;
2 access;
3 symbols;
4 locks; strict;
5 comment @ * @;
8 1.5
9 date    2007.08.19.11.18.56;    author khansen; state Exp;
10 branches;
11 next    1.4;
13 1.4
14 date    2007.08.12.18.58.12;    author khansen; state Exp;
15 branches;
16 next    1.3;
18 1.3
19 date    2007.08.11.01.24.36;    author khansen; state Exp;
20 branches;
21 next    1.2;
23 1.2
24 date    2007.07.22.13.33.26;    author khansen; state Exp;
25 branches;
26 next    1.1;
28 1.1
29 date    2007.07.22.12.54.17;    author khansen; state Exp;
30 branches;
31 next    ;
34 desc
35 @auto-generated parser
39 1.5
40 log
41 @--case-insensitive option
43 text
44 @/* A Bison parser, made by GNU Bison 2.3.  */
46 /* Skeleton implementation for Bison's Yacc-like parsers in C
48    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
49    Free Software Foundation, Inc.
51    This program is free software; you can redistribute it and/or modify
52    it under the terms of the GNU General Public License as published by
53    the Free Software Foundation; either version 2, or (at your option)
54    any later version.
56    This program is distributed in the hope that it will be useful,
57    but WITHOUT ANY WARRANTY; without even the implied warranty of
58    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
59    GNU General Public License for more details.
61    You should have received a copy of the GNU General Public License
62    along with this program; if not, write to the Free Software
63    Foundation, Inc., 51 Franklin Street, Fifth Floor,
64    Boston, MA 02110-1301, USA.  */
66 /* As a special exception, you may create a larger work that contains
67    part or all of the Bison parser skeleton and distribute that work
68    under terms of your choice, so long as that work isn't itself a
69    parser generator using the skeleton or a modified version thereof
70    as a parser skeleton.  Alternatively, if you modify or redistribute
71    the parser skeleton itself, you may (at your option) remove this
72    special exception, which will cause the skeleton and the resulting
73    Bison output files to be licensed under the GNU General Public
74    License without this special exception.
76    This special exception was added by the Free Software Foundation in
77    version 2.2 of Bison.  */
79 /* C LALR(1) parser skeleton written by Richard Stallman, by
80    simplifying the original so-called "semantic" parser.  */
82 /* All symbols defined below should begin with yy or YY, to avoid
83    infringing on user name space.  This should be done even for local
84    variables, as they might otherwise be expanded by user macros.
85    There are some unavoidable exceptions within include files to
86    define necessary library symbols; they are noted "INFRINGES ON
87    USER NAME SPACE" below.  */
89 /* Identify Bison output.  */
90 #define YYBISON 1
92 /* Bison version.  */
93 #define YYBISON_VERSION "2.3"
95 /* Skeleton name.  */
96 #define YYSKELETON_NAME "yacc.c"
98 /* Pure parsers.  */
99 #define YYPURE 0
101 /* Using locations.  */
102 #define YYLSP_NEEDED 1
106 /* Tokens.  */
107 #ifndef YYTOKENTYPE
108 # define YYTOKENTYPE
109    /* Put the tokens into the symbol table, so that GDB and other debuggers
110       know about them.  */
111    enum yytokentype {
112      INTEGER_LITERAL = 258,
113      STRING_LITERAL = 259,
114      FILE_PATH = 260,
115      IDENTIFIER = 261,
116      LOCAL_ID = 262,
117      FORWARD_BRANCH = 263,
118      BACKWARD_BRANCH = 264,
119      LABEL = 265,
120      LOCAL_LABEL = 266,
121      MNEMONIC = 267,
122      _LABEL_ = 268,
123      BYTE = 269,
124      CHAR = 270,
125      WORD = 271,
126      DWORD = 272,
127      DSB = 273,
128      DSW = 274,
129      DSD = 275,
130      DATASEG = 276,
131      CODESEG = 277,
132      IF = 278,
133      IFDEF = 279,
134      IFNDEF = 280,
135      ELSE = 281,
136      ELIF = 282,
137      ENDIF = 283,
138      INCSRC = 284,
139      INCBIN = 285,
140      MACRO = 286,
141      REPT = 287,
142      WHILE = 288,
143      ENDM = 289,
144      ALIGN = 290,
145      EQU = 291,
146      DEFINE = 292,
147      END = 293,
148      PUBLIC = 294,
149      EXTRN = 295,
150      CHARMAP = 296,
151      STRUC = 297,
152      UNION = 298,
153      ENDS = 299,
154      RECORD = 300,
155      ENUM = 301,
156      ENDE = 302,
157      PROC = 303,
158      ENDP = 304,
159      SIZEOF = 305,
160      MASK = 306,
161      TAG = 307,
162      MESSAGE = 308,
163      WARNING = 309,
164      ERROR = 310,
165      ZEROPAGE = 311,
166      ORG = 312,
167      SCOPE_OP = 313,
168      HI_OP = 314,
169      LO_OP = 315,
170      NE_OP = 316,
171      EQ_OP = 317,
172      GE_OP = 318,
173      LE_OP = 319,
174      SHR_OP = 320,
175      SHL_OP = 321,
176      UMINUS = 322
177    };
178 #endif
179 /* Tokens.  */
180 #define INTEGER_LITERAL 258
181 #define STRING_LITERAL 259
182 #define FILE_PATH 260
183 #define IDENTIFIER 261
184 #define LOCAL_ID 262
185 #define FORWARD_BRANCH 263
186 #define BACKWARD_BRANCH 264
187 #define LABEL 265
188 #define LOCAL_LABEL 266
189 #define MNEMONIC 267
190 #define _LABEL_ 268
191 #define BYTE 269
192 #define CHAR 270
193 #define WORD 271
194 #define DWORD 272
195 #define DSB 273
196 #define DSW 274
197 #define DSD 275
198 #define DATASEG 276
199 #define CODESEG 277
200 #define IF 278
201 #define IFDEF 279
202 #define IFNDEF 280
203 #define ELSE 281
204 #define ELIF 282
205 #define ENDIF 283
206 #define INCSRC 284
207 #define INCBIN 285
208 #define MACRO 286
209 #define REPT 287
210 #define WHILE 288
211 #define ENDM 289
212 #define ALIGN 290
213 #define EQU 291
214 #define DEFINE 292
215 #define END 293
216 #define PUBLIC 294
217 #define EXTRN 295
218 #define CHARMAP 296
219 #define STRUC 297
220 #define UNION 298
221 #define ENDS 299
222 #define RECORD 300
223 #define ENUM 301
224 #define ENDE 302
225 #define PROC 303
226 #define ENDP 304
227 #define SIZEOF 305
228 #define MASK 306
229 #define TAG 307
230 #define MESSAGE 308
231 #define WARNING 309
232 #define ERROR 310
233 #define ZEROPAGE 311
234 #define ORG 312
235 #define SCOPE_OP 313
236 #define HI_OP 314
237 #define LO_OP 315
238 #define NE_OP 316
239 #define EQ_OP 317
240 #define GE_OP 318
241 #define LE_OP 319
242 #define SHR_OP 320
243 #define SHL_OP 321
244 #define UMINUS 322
249 /* Copy the first part of user declarations.  */
250 #line 1 "parser.y"
253  * $Id: parser.y,v 1.12 2007/08/12 18:59:00 khansen Exp khansen $
254  * $Log: parser.y,v $
255  * Revision 1.12  2007/08/12 18:59:00  khansen
256  * ability to generate pure 6502 binary
258  * Revision 1.11  2007/08/11 01:25:50  khansen
259  * includepaths support (-I option)
261  * Revision 1.10  2007/07/22 13:34:38  khansen
262  * convert tabs to whitespaces
264  * Revision 1.9  2005/01/05 02:28:40  kenth
265  * anonymous union parsing
267  * Revision 1.8  2004/12/29 21:45:26  kenth
268  * xorcyst 1.4.2
269  * static indexing
271  * Revision 1.7  2004/12/19 19:59:14  kenth
272  * xorcyst 1.4.0
274  * Revision 1.6  2004/12/16 13:22:27  kenth
275  * xorcyst 1.3.5
277  * Revision 1.5  2004/12/14 01:50:42  kenth
278  * xorcyst 1.3.0
280  * Revision 1.4  2004/12/11 02:12:41  kenth
281  * xorcyst 1.2.0
283  * Revision 1.3  2004/12/09 11:17:15  kenth
284  * added: warning_statement, error_statement
286  * Revision 1.2  2004/12/06 05:06:21  kenth
287  * xorcyst 1.1.0
289  * Revision 1.1  2004/06/30 07:57:03  kenth
290  * Initial revision
292  */
293 #include <malloc.h>
294 #include <stdio.h>
295 #include <string.h>
296 #include "symtab.h"
297 #include "loc.h"
298 #include "xasm.h"
299 //#define YYDEBUG 1
300 int yyparse(void);
301 void yyerror(const char *);   /* In lexer */
302 int yylex(void);    /* In lexer */
303 int yypushandrestart(const char *);   /* In lexer */
304 void __yy_memcpy(char *, char *, int);
305 extern char *yytext;    /* In lexer */
306 extern YYLTYPE yylloc;  /* In lexer */
307 extern astnode *root_node;  /* Root of the generated parse tree */
308 void handle_incsrc(astnode *);  /* See below */
309 void handle_incbin(astnode *);  /* See below */
312 /* Enabling traces.  */
313 #ifndef YYDEBUG
314 # define YYDEBUG 0
315 #endif
317 /* Enabling verbose error messages.  */
318 #ifdef YYERROR_VERBOSE
319 # undef YYERROR_VERBOSE
320 # define YYERROR_VERBOSE 1
321 #else
322 # define YYERROR_VERBOSE 1
323 #endif
325 /* Enabling the token table.  */
326 #ifndef YYTOKEN_TABLE
327 # define YYTOKEN_TABLE 0
328 #endif
330 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
331 typedef union YYSTYPE
332 #line 62 "parser.y"
334     long integer;
335     int mnemonic;
336     const char *string;
337     const char *label;
338     const char *ident;
339     astnode *node;
341 /* Line 187 of yacc.c.  */
342 #line 300 "parser.c"
343         YYSTYPE;
344 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
345 # define YYSTYPE_IS_DECLARED 1
346 # define YYSTYPE_IS_TRIVIAL 1
347 #endif
349 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
350 typedef struct YYLTYPE
352   int first_line;
353   int first_column;
354   int last_line;
355   int last_column;
356 } YYLTYPE;
357 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
358 # define YYLTYPE_IS_DECLARED 1
359 # define YYLTYPE_IS_TRIVIAL 1
360 #endif
363 /* Copy the second part of user declarations.  */
366 /* Line 216 of yacc.c.  */
367 #line 325 "parser.c"
369 #ifdef short
370 # undef short
371 #endif
373 #ifdef YYTYPE_UINT8
374 typedef YYTYPE_UINT8 yytype_uint8;
375 #else
376 typedef unsigned char yytype_uint8;
377 #endif
379 #ifdef YYTYPE_INT8
380 typedef YYTYPE_INT8 yytype_int8;
381 #elif (defined __STDC__ || defined __C99__FUNC__ \
382      || defined __cplusplus || defined _MSC_VER)
383 typedef signed char yytype_int8;
384 #else
385 typedef short int yytype_int8;
386 #endif
388 #ifdef YYTYPE_UINT16
389 typedef YYTYPE_UINT16 yytype_uint16;
390 #else
391 typedef unsigned short int yytype_uint16;
392 #endif
394 #ifdef YYTYPE_INT16
395 typedef YYTYPE_INT16 yytype_int16;
396 #else
397 typedef short int yytype_int16;
398 #endif
400 #ifndef YYSIZE_T
401 # ifdef __SIZE_TYPE__
402 #  define YYSIZE_T __SIZE_TYPE__
403 # elif defined size_t
404 #  define YYSIZE_T size_t
405 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
406      || defined __cplusplus || defined _MSC_VER)
407 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
408 #  define YYSIZE_T size_t
409 # else
410 #  define YYSIZE_T unsigned int
411 # endif
412 #endif
414 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
416 #ifndef YY_
417 # if YYENABLE_NLS
418 #  if ENABLE_NLS
419 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
420 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
421 #  endif
422 # endif
423 # ifndef YY_
424 #  define YY_(msgid) msgid
425 # endif
426 #endif
428 /* Suppress unused-variable warnings by "using" E.  */
429 #if ! defined lint || defined __GNUC__
430 # define YYUSE(e) ((void) (e))
431 #else
432 # define YYUSE(e) /* empty */
433 #endif
435 /* Identity function, used to suppress warnings about constant conditions.  */
436 #ifndef lint
437 # define YYID(n) (n)
438 #else
439 #if (defined __STDC__ || defined __C99__FUNC__ \
440      || defined __cplusplus || defined _MSC_VER)
441 static int
442 YYID (int i)
443 #else
444 static int
445 YYID (i)
446     int i;
447 #endif
449   return i;
451 #endif
453 #if ! defined yyoverflow || YYERROR_VERBOSE
455 /* The parser invokes alloca or malloc; define the necessary symbols.  */
457 # ifdef YYSTACK_USE_ALLOCA
458 #  if YYSTACK_USE_ALLOCA
459 #   ifdef __GNUC__
460 #    define YYSTACK_ALLOC __builtin_alloca
461 #   elif defined __BUILTIN_VA_ARG_INCR
462 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
463 #   elif defined _AIX
464 #    define YYSTACK_ALLOC __alloca
465 #   elif defined _MSC_VER
466 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
467 #    define alloca _alloca
468 #   else
469 #    define YYSTACK_ALLOC alloca
470 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
471      || defined __cplusplus || defined _MSC_VER)
472 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
473 #     ifndef _STDLIB_H
474 #      define _STDLIB_H 1
475 #     endif
476 #    endif
477 #   endif
478 #  endif
479 # endif
481 # ifdef YYSTACK_ALLOC
482    /* Pacify GCC's `empty if-body' warning.  */
483 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
484 #  ifndef YYSTACK_ALLOC_MAXIMUM
485     /* The OS might guarantee only one guard page at the bottom of the stack,
486        and a page size can be as small as 4096 bytes.  So we cannot safely
487        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
488        to allow for a few compiler-allocated temporary stack slots.  */
489 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
490 #  endif
491 # else
492 #  define YYSTACK_ALLOC YYMALLOC
493 #  define YYSTACK_FREE YYFREE
494 #  ifndef YYSTACK_ALLOC_MAXIMUM
495 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
496 #  endif
497 #  if (defined __cplusplus && ! defined _STDLIB_H \
498        && ! ((defined YYMALLOC || defined malloc) \
499              && (defined YYFREE || defined free)))
500 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
501 #   ifndef _STDLIB_H
502 #    define _STDLIB_H 1
503 #   endif
504 #  endif
505 #  ifndef YYMALLOC
506 #   define YYMALLOC malloc
507 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
508      || defined __cplusplus || defined _MSC_VER)
509 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
510 #   endif
511 #  endif
512 #  ifndef YYFREE
513 #   define YYFREE free
514 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
515      || defined __cplusplus || defined _MSC_VER)
516 void free (void *); /* INFRINGES ON USER NAME SPACE */
517 #   endif
518 #  endif
519 # endif
520 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
523 #if (! defined yyoverflow \
524      && (! defined __cplusplus \
525          || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
526              && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
528 /* A type that is properly aligned for any stack member.  */
529 union yyalloc
531   yytype_int16 yyss;
532   YYSTYPE yyvs;
533     YYLTYPE yyls;
536 /* The size of the maximum gap between one aligned stack and the next.  */
537 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
539 /* The size of an array large to enough to hold all stacks, each with
540    N elements.  */
541 # define YYSTACK_BYTES(N) \
542      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
543       + 2 * YYSTACK_GAP_MAXIMUM)
545 /* Copy COUNT objects from FROM to TO.  The source and destination do
546    not overlap.  */
547 # ifndef YYCOPY
548 #  if defined __GNUC__ && 1 < __GNUC__
549 #   define YYCOPY(To, From, Count) \
550       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
551 #  else
552 #   define YYCOPY(To, From, Count)              \
553       do                                        \
554         {                                       \
555           YYSIZE_T yyi;                         \
556           for (yyi = 0; yyi < (Count); yyi++)   \
557             (To)[yyi] = (From)[yyi];            \
558         }                                       \
559       while (YYID (0))
560 #  endif
561 # endif
563 /* Relocate STACK from its old location to the new one.  The
564    local variables YYSIZE and YYSTACKSIZE give the old and new number of
565    elements in the stack, and YYPTR gives the new location of the
566    stack.  Advance YYPTR to a properly aligned location for the next
567    stack.  */
568 # define YYSTACK_RELOCATE(Stack)                                        \
569     do                                                                  \
570       {                                                                 \
571         YYSIZE_T yynewbytes;                                            \
572         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
573         Stack = &yyptr->Stack;                                          \
574         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
575         yyptr += yynewbytes / sizeof (*yyptr);                          \
576       }                                                                 \
577     while (YYID (0))
579 #endif
581 /* YYFINAL -- State number of the termination state.  */
582 #define YYFINAL  160
583 /* YYLAST -- Last index in YYTABLE.  */
584 #define YYLAST   2037
586 /* YYNTOKENS -- Number of terminals.  */
587 #define YYNTOKENS  97
588 /* YYNNTS -- Number of nonterminals.  */
589 #define YYNNTS  83
590 /* YYNRULES -- Number of rules.  */
591 #define YYNRULES  215
592 /* YYNRULES -- Number of states.  */
593 #define YYNSTATES  380
595 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
596 #define YYUNDEFTOK  2
597 #define YYMAXUTOK   322
599 #define YYTRANSLATE(YYX)                                                \
600   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
602 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
603 static const yytype_uint8 yytranslate[] =
605        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
606       58,     2,     2,     2,     2,     2,     2,     2,     2,     2,
607        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
608        2,     2,     2,    93,     2,    73,    66,    92,    78,     2,
609       95,    96,    90,    87,    71,    88,    72,    91,     2,     2,
610        2,     2,     2,     2,     2,     2,     2,     2,    59,     2,
611       82,    65,    81,     2,    60,    62,     2,     2,     2,     2,
612        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
613        2,     2,     2,     2,     2,     2,     2,     2,    63,    64,
614        2,    69,     2,    70,    77,     2,     2,     2,     2,     2,
615        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
616        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
617        2,     2,     2,    67,    76,    68,    94,     2,     2,     2,
618        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
619        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
620        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
621        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
622        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
623        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
624        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
625        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
626        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
627        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
628        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
629        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
630        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
631        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
632       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
633       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
634       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
635       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
636       55,    56,    57,    61,    74,    75,    79,    80,    83,    84,
637       85,    86,    89
640 #if YYDEBUG
641 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
642    YYRHS.  */
643 static const yytype_uint16 yyprhs[] =
645        0,     0,     3,     6,     9,    10,    12,    15,    18,    20,
646       22,    24,    26,    28,    30,    32,    34,    36,    38,    40,
647       42,    44,    46,    48,    50,    52,    54,    56,    58,    60,
648       62,    64,    66,    68,    70,    72,    74,    76,    78,    80,
649       82,    84,    87,    91,    96,   100,   104,   108,   114,   117,
650      118,   121,   122,   129,   136,   143,   150,   157,   164,   166,
651      169,   171,   174,   179,   181,   185,   189,   193,   196,   200,
652      203,   205,   207,   209,   211,   213,   216,   218,   221,   225,
653      228,   233,   238,   245,   252,   257,   259,   262,   264,   266,
654      268,   270,   272,   274,   276,   280,   282,   284,   286,   288,
655      291,   293,   298,   303,   305,   307,   309,   311,   313,   314,
656      318,   322,   326,   330,   332,   333,   335,   339,   341,   342,
657      344,   348,   352,   356,   360,   364,   368,   372,   376,   380,
658      384,   387,   390,   393,   396,   399,   402,   406,   410,   414,
659      418,   422,   426,   428,   430,   432,   434,   436,   438,   440,
660      442,   443,   445,   447,   456,   458,   459,   461,   464,   469,
661      473,   474,   482,   490,   493,   496,   499,   503,   507,   512,
662      517,   520,   522,   527,   529,   531,   533,   535,   538,   541,
663      543,   547,   551,   555,   557,   559,   567,   569,   570,   574,
664      576,   577,   579,   583,   588,   593,   597,   602,   606,   613,
665      616,   617,   619,   621,   623,   625,   627,   629,   632,   636,
666      640,   645,   650,   654,   656,   658
669 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
670 static const yytype_int16 yyrhs[] =
672       98,     0,    -1,   100,    99,    -1,    38,   127,    -1,    -1,
673      101,    -1,   100,   101,    -1,   126,   102,    -1,   102,    -1,
674      149,    -1,   154,    -1,   155,    -1,   164,    -1,   166,    -1,
675      161,    -1,   162,    -1,   169,    -1,   170,    -1,   172,    -1,
676      173,    -1,   129,    -1,   156,    -1,   176,    -1,   123,    -1,
677      124,    -1,   122,    -1,   114,    -1,   115,    -1,   116,    -1,
678      119,    -1,   113,    -1,   112,    -1,   111,    -1,   108,    -1,
679      107,    -1,   105,    -1,   106,    -1,   171,    -1,   104,    -1,
680      103,    -1,   125,    -1,     1,   127,    -1,    57,   131,   127,
681       -1,    35,   168,   131,   127,    -1,    54,   131,   127,    -1,
682       55,   131,   127,    -1,    53,   131,   127,    -1,    13,   146,
683      109,   110,   127,    -1,    65,   131,    -1,    -1,    59,   175,
684       -1,    -1,    33,   131,   127,   100,    34,   127,    -1,    32,
685      131,   127,   100,    34,   127,    -1,    48,   146,   127,   100,
686       49,   127,    -1,    42,   146,   127,   100,    44,   127,    -1,
687       43,   147,   127,   100,    44,   127,    -1,    46,   146,   127,
688      117,    47,   127,    -1,   118,    -1,   117,   118,    -1,   170,
689       -1,   146,   127,    -1,    45,   146,   120,   127,    -1,   121,
690       -1,   120,    71,   121,    -1,   146,    59,   131,    -1,    41,
691      163,   127,    -1,    21,   127,    -1,    21,    56,   127,    -1,
692       22,   127,    -1,   127,    -1,   145,    -1,   128,    -1,    59,
693       -1,    58,    -1,   130,   127,    -1,    12,    -1,    12,    62,
694       -1,    12,    73,   131,    -1,    12,   131,    -1,    12,   131,
695       71,    63,    -1,    12,   131,    71,    64,    -1,    12,    69,
696      131,    71,    63,    70,    -1,    12,    69,   131,    70,    71,
697       64,    -1,    12,    69,   131,    70,    -1,   132,    -1,    50,
698      134,    -1,   136,    -1,   137,    -1,   142,    -1,   148,    -1,
699       66,    -1,   143,    -1,   144,    -1,    95,   131,    96,    -1,
700       87,    -1,    88,    -1,     8,    -1,     9,    -1,    51,   136,
701       -1,   146,    -1,   146,    69,   131,    70,    -1,   146,    95,
702      131,    96,    -1,   131,    -1,   138,    -1,   146,    -1,   159,
703       -1,   131,    -1,    -1,   146,    61,   146,    -1,   132,    72,
704      137,    -1,   132,    72,   132,    -1,    67,   139,    68,    -1,
705      140,    -1,    -1,   141,    -1,   140,    71,   141,    -1,   133,
706       -1,    -1,     7,    -1,   131,    87,   131,    -1,   131,    88,
707      131,    -1,   131,    90,   131,    -1,   131,    91,   131,    -1,
708      131,    92,   131,    -1,   131,    78,   131,    -1,   131,    76,
709      131,    -1,   131,    77,   131,    -1,   131,    86,   131,    -1,
710      131,    85,   131,    -1,    94,   131,    -1,    93,   131,    -1,
711       77,   146,    -1,    82,   131,    -1,    81,   131,    -1,    88,
712      131,    -1,   131,    80,   131,    -1,   131,    79,   131,    -1,
713      131,    81,   131,    -1,   131,    82,   131,    -1,   131,    83,
714      131,    -1,   131,    84,   131,    -1,    10,    -1,    11,    -1,
715       87,    -1,    88,    -1,     8,    -1,     9,    -1,     6,    -1,
716      146,    -1,    -1,     3,    -1,     4,    -1,    23,   131,   127,
717      100,   150,   153,    28,   127,    -1,   151,    -1,    -1,   152,
718       -1,   151,   152,    -1,    27,   131,   127,   100,    -1,    26,
719      127,   100,    -1,    -1,    24,   146,   127,   100,   153,    28,
720      127,    -1,    25,   146,   127,   100,   153,    28,   127,    -1,
721      157,   127,    -1,   158,   127,    -1,   146,   158,    -1,    56,
722      146,   158,    -1,    39,   146,   158,    -1,    56,    39,   146,
723      158,    -1,    39,    56,   146,   158,    -1,   159,   160,    -1,
724      159,    -1,   159,    69,   131,    70,    -1,    14,    -1,    15,
725       -1,    16,    -1,    17,    -1,    52,   146,    -1,    72,   146,
726       -1,   133,    -1,   160,    71,   133,    -1,    29,   163,   127,
727       -1,    30,   163,   127,    -1,     4,    -1,     5,    -1,    31,
728      146,   165,   127,   100,    34,   127,    -1,   168,    -1,    -1,
729      146,   167,   127,    -1,   160,    -1,    -1,   146,    -1,   168,
730       71,   146,    -1,   146,    36,   133,   127,    -1,   146,    65,
731      133,   127,    -1,    37,   146,   127,    -1,    37,   146,   133,
732      127,    -1,    39,   168,   127,    -1,    40,   168,    59,   175,
733      174,   127,    -1,    60,   146,    -1,    -1,   159,    -1,   146,
734       -1,    48,    -1,    13,    -1,   177,    -1,   178,    -1,   146,
735      178,    -1,    56,   146,   178,    -1,    39,   146,   178,    -1,
736       56,    39,   146,   178,    -1,    39,    56,   146,   178,    -1,
737      179,   135,   127,    -1,    18,    -1,    19,    -1,    20,    -1
740 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
741 static const yytype_uint16 yyrline[] =
743        0,   116,   116,   120,   121,   125,   126,   133,   134,   138,
744      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
745      149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
746      159,   160,   161,   162,   163,   164,   165,   166,   167,   168,
747      169,   170,   174,   178,   182,   186,   190,   194,   198,   199,
748      203,   204,   208,   212,   216,   220,   224,   228,   232,   233,
749      237,   238,   242,   246,   247,   251,   255,   259,   260,   263,
750      267,   271,   275,   276,   280,   284,   288,   289,   290,   291,
751      292,   293,   294,   295,   296,   300,   301,   302,   303,   304,
752      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
753      318,   319,   320,   324,   325,   329,   330,   334,   335,   339,
754      343,   344,   348,   352,   353,   357,   358,   362,   363,   367,
755      371,   372,   373,   374,   375,   376,   377,   378,   379,   380,
756      381,   382,   383,   384,   385,   386,   390,   391,   392,   393,
757      394,   395,   399,   400,   401,   402,   403,   404,   408,   412,
758      413,   417,   418,   422,   426,   427,   431,   432,   436,   440,
759      441,   445,   449,   453,   454,   458,   459,   460,   461,   462,
760      466,   467,   468,   472,   473,   474,   475,   476,   477,   481,
761      482,   486,   490,   494,   495,   499,   503,   504,   508,   512,
762      513,   517,   518,   522,   526,   530,   531,   535,   539,   543,
763      544,   548,   549,   550,   551,   555,   556,   560,   561,   562,
764      563,   564,   568,   572,   573,   574
766 #endif
768 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
769 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
770    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
771 static const char *const yytname[] =
773   "$end", "error", "$undefined", "INTEGER_LITERAL", "STRING_LITERAL",
774   "FILE_PATH", "IDENTIFIER", "LOCAL_ID", "FORWARD_BRANCH",
775   "BACKWARD_BRANCH", "LABEL", "LOCAL_LABEL", "MNEMONIC", "_LABEL_", "BYTE",
776   "CHAR", "WORD", "DWORD", "DSB", "DSW", "DSD", "DATASEG", "CODESEG", "IF",
777   "IFDEF", "IFNDEF", "ELSE", "ELIF", "ENDIF", "INCSRC", "INCBIN", "MACRO",
778   "REPT", "WHILE", "ENDM", "ALIGN", "EQU", "DEFINE", "END", "PUBLIC",
779   "EXTRN", "CHARMAP", "STRUC", "UNION", "ENDS", "RECORD", "ENUM", "ENDE",
780   "PROC", "ENDP", "SIZEOF", "MASK", "TAG", "MESSAGE", "WARNING", "ERROR",
781   "ZEROPAGE", "ORG", "'\\n'", "':'", "'@@'", "SCOPE_OP", "'A'", "'X'",
782   "'Y'", "'='", "'$'", "'{'", "'}'", "'['", "']'", "','", "'.'", "'#'",
783   "HI_OP", "LO_OP", "'|'", "'^'", "'&'", "NE_OP", "EQ_OP", "'>'", "'<'",
784   "GE_OP", "LE_OP", "SHR_OP", "SHL_OP", "'+'", "'-'", "UMINUS", "'*'",
785   "'/'", "'%'", "'!'", "'~'", "'('", "')'", "$accept", "assembly_unit",
786   "end_opt", "statement_list", "labelable_statement", "statement",
787   "org_statement", "align_statement", "warning_statement",
788   "error_statement", "message_statement", "label_statement",
789   "label_addr_part_opt", "label_type_part_opt", "while_statement",
790   "rept_statement", "proc_statement", "struc_decl_statement",
791   "union_decl_statement", "enum_decl_statement", "enum_item_list",
792   "enum_item", "record_decl_statement", "record_field_list",
793   "record_field", "charmap_statement", "dataseg_statement",
794   "codeseg_statement", "null_statement", "label_decl", "line_tail",
795   "newline", "instruction_statement", "instruction", "expression",
796   "indexed_identifier", "extended_expression", "sizeof_arg",
797   "expression_opt", "scope_access", "struc_access", "struc_initializer",
798   "field_initializer_list_opt", "field_initializer_list",
799   "field_initializer", "local_id", "arithmetic_expression",
800   "comparison_expression", "label", "identifier", "identifier_opt",
801   "literal", "if_statement", "elif_statement_list_opt",
802   "elif_statement_list", "elif_statement", "else_part_opt",
803   "ifdef_statement", "ifndef_statement", "data_statement",
804   "named_data_statement", "unnamed_data_statement", "datatype",
805   "expression_list", "incsrc_statement", "incbin_statement",
806   "file_specifier", "macro_decl_statement", "param_list_opt",
807   "macro_statement", "arg_list_opt", "identifier_list", "equ_statement",
808   "assign_statement", "define_statement", "public_statement",
809   "extrn_statement", "from_part_opt", "symbol_type", "storage_statement",
810   "named_storage_statement", "unnamed_storage_statement", "storage", 0
812 #endif
814 # ifdef YYPRINT
815 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
816    token YYLEX-NUM.  */
817 static const yytype_uint16 yytoknum[] =
819        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
820      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
821      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
822      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
823      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
824      305,   306,   307,   308,   309,   310,   311,   312,    10,    58,
825       64,   313,    65,    88,    89,    61,    36,   123,   125,    91,
826       93,    44,    46,    35,   314,   315,   124,    94,    38,   316,
827      317,    62,    60,   318,   319,   320,   321,    43,    45,   322,
828       42,    47,    37,    33,   126,    40,    41
830 # endif
832 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
833 static const yytype_uint8 yyr1[] =
835        0,    97,    98,    99,    99,   100,   100,   101,   101,   102,
836      102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
837      102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
838      102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
839      102,   102,   103,   104,   105,   106,   107,   108,   109,   109,
840      110,   110,   111,   112,   113,   114,   115,   116,   117,   117,
841      118,   118,   119,   120,   120,   121,   122,   123,   123,   124,
842      125,   126,   127,   127,   128,   129,   130,   130,   130,   130,
843      130,   130,   130,   130,   130,   131,   131,   131,   131,   131,
844      131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
845      132,   132,   132,   133,   133,   134,   134,   135,   135,   136,
846      137,   137,   138,   139,   139,   140,   140,   141,   141,   142,
847      143,   143,   143,   143,   143,   143,   143,   143,   143,   143,
848      143,   143,   143,   143,   143,   143,   144,   144,   144,   144,
849      144,   144,   145,   145,   145,   145,   145,   145,   146,   147,
850      147,   148,   148,   149,   150,   150,   151,   151,   152,   153,
851      153,   154,   155,   156,   156,   157,   157,   157,   157,   157,
852      158,   158,   158,   159,   159,   159,   159,   159,   159,   160,
853      160,   161,   162,   163,   163,   164,   165,   165,   166,   167,
854      167,   168,   168,   169,   170,   171,   171,   172,   173,   174,
855      174,   175,   175,   175,   175,   176,   176,   177,   177,   177,
856      177,   177,   178,   179,   179,   179
859 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
860 static const yytype_uint8 yyr2[] =
862        0,     2,     2,     2,     0,     1,     2,     2,     1,     1,
863        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
864        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
865        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
866        1,     2,     3,     4,     3,     3,     3,     5,     2,     0,
867        2,     0,     6,     6,     6,     6,     6,     6,     1,     2,
868        1,     2,     4,     1,     3,     3,     3,     2,     3,     2,
869        1,     1,     1,     1,     1,     2,     1,     2,     3,     2,
870        4,     4,     6,     6,     4,     1,     2,     1,     1,     1,
871        1,     1,     1,     1,     3,     1,     1,     1,     1,     2,
872        1,     4,     4,     1,     1,     1,     1,     1,     0,     3,
873        3,     3,     3,     1,     0,     1,     3,     1,     0,     1,
874        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
875        2,     2,     2,     2,     2,     2,     3,     3,     3,     3,
876        3,     3,     1,     1,     1,     1,     1,     1,     1,     1,
877        0,     1,     1,     8,     1,     0,     1,     2,     4,     3,
878        0,     7,     7,     2,     2,     2,     3,     3,     4,     4,
879        2,     1,     4,     1,     1,     1,     1,     2,     2,     1,
880        3,     3,     3,     1,     1,     7,     1,     0,     3,     1,
881        0,     1,     3,     4,     4,     3,     4,     3,     6,     2,
882        0,     1,     1,     1,     1,     1,     1,     2,     3,     3,
883        4,     4,     3,     1,     1,     1
886 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
887    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
888    means the default is an error.  */
889 static const yytype_uint8 yydefact[] =
891        0,     0,   148,   146,   147,   142,   143,    76,     0,   173,
892      174,   175,   176,   213,   214,   215,     0,     0,     0,     0,
893        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
894        0,     0,   150,     0,     0,     0,     0,     0,     0,     0,
895        0,     0,    74,    73,     0,   144,   145,     0,     0,     5,
896        8,    39,    38,    35,    36,    34,    33,    32,    31,    30,
897       26,    27,    28,    29,    25,    23,    24,    40,     0,    70,
898       72,    20,     0,    71,   190,     9,    10,    11,    21,     0,
899        0,   171,    14,    15,    12,    13,    16,    17,    37,    18,
900       19,    22,   205,   206,   108,    41,   151,   152,   119,    97,
901       98,     0,     0,    77,    91,     0,     0,     0,     0,     0,
902       95,    96,     0,     0,     0,    79,    85,    87,    88,    89,
903       92,    93,   100,    90,    49,     0,    67,    69,     0,     0,
904        0,   183,   184,     0,     0,   187,     0,     0,   191,     0,
905        0,     0,   191,     0,     0,     0,     0,   149,     0,     0,
906        0,     0,   177,     0,     0,     0,     0,     0,     0,   178,
907        1,     0,     2,     6,     7,    75,     0,     0,   114,   103,
908      179,   104,   165,   189,     0,   207,   163,   164,     0,   170,
909      107,     0,    86,   105,   106,    99,     0,     0,    78,   132,
910      134,   133,   135,   131,   130,     0,     0,     0,     0,     0,
911        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
912        0,     0,     0,     0,     0,     0,     0,     0,    51,    68,
913        0,     0,     0,   181,   182,     0,   186,     0,     0,     0,
914        0,   195,     0,     0,   167,   209,   197,     0,    66,     0,
915        0,     0,    63,     0,     0,     0,    46,    44,    45,     0,
916      166,   208,    42,     3,     0,     0,   117,     0,   113,   115,
917        0,   188,     0,   212,    84,     0,    94,    80,    81,   126,
918      127,   125,   137,   136,   138,   139,   140,   141,   129,   128,
919      120,   121,   122,   123,   124,   111,   110,   100,   109,     0,
920        0,    48,     0,     0,     0,     0,     0,     0,     0,     0,
921      192,    43,   196,   169,   211,   204,   203,   202,   201,   200,
922        0,     0,     0,    62,     0,     0,    58,     0,    60,     0,
923      168,   210,   193,   194,   112,   118,   180,   172,     0,     0,
924      101,   102,    50,    47,     0,   160,   154,   156,     0,     0,
925        0,     0,     0,     0,     0,     0,     0,     0,    64,    65,
926        0,    59,    61,     0,   116,    83,    82,     0,     0,   157,
927        0,     0,     0,     0,    53,    52,   199,   198,    55,    56,
928       57,    54,     0,     0,     0,   161,   162,   185,     0,   153
931 /* YYDEFGOTO[NTERM-NUM].  */
932 static const yytype_int16 yydefgoto[] =
934       -1,    47,   162,    48,    49,    50,    51,    52,    53,    54,
935       55,    56,   218,   293,    57,    58,    59,    60,    61,    62,
936      315,   316,    63,   241,   242,    64,    65,    66,    67,    68,
937       69,    70,    71,    72,   169,   116,   170,   182,   181,   117,
938      118,   171,   257,   258,   259,   119,   120,   121,    73,   122,
939      148,   123,    75,   335,   336,   337,   339,    76,    77,    78,
940       79,    80,    81,   173,    82,    83,   133,    84,   225,    85,
941      174,   139,    86,    87,    88,    89,    90,   345,   309,    91,
942       92,    93,    94
945 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
946    STATE-NUM.  */
947 #define YYPACT_NINF -287
948 static const yytype_int16 yypact[] =
950     1808,   -37,  -287,  -287,  -287,  -287,  -287,   410,    10,  -287,
951     -287,  -287,  -287,  -287,  -287,  -287,    66,   -37,   805,    10,
952       10,    71,    71,    10,   805,   805,    10,    10,     7,    10,
953       71,    10,    10,    10,    10,    10,    10,   805,   805,   805,
954        3,   805,  -287,  -287,    10,  -287,  -287,    18,   895,  -287,
955     -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
956     -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  1869,  -287,
957     -287,  -287,   -37,  -287,   547,  -287,  -287,  -287,  -287,   -37,
958      -37,   651,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
959     -287,  -287,  -287,  -287,   805,  -287,  -287,  -287,  -287,  -287,
960     -287,    37,    10,  -287,  -287,   805,   805,    10,   805,   805,
961     -287,    53,   805,   805,   805,  1903,   -42,  -287,  -287,  -287,
962     -287,  -287,    13,  -287,   -18,   -37,  -287,  -287,   435,   -37,
963      -37,  -287,  -287,   -37,   -37,    10,   435,   435,  -287,   703,
964      586,    10,   268,   -13,   -47,   -37,   -37,  -287,   -37,    10,
965      -37,   -37,  -287,   435,   435,   435,    10,   268,   435,  -287,
966     -287,   -37,  -287,  -287,  -287,  -287,   796,   796,   684,   494,
967     -287,  -287,  -287,    -7,   -37,  -287,  -287,  -287,   805,    -7,
968      494,   -37,  -287,  -287,  -287,  -287,     6,   745,   494,  -287,
969      494,   494,    42,  -287,  -287,  1920,    17,   805,   805,   805,
970      805,   805,   805,   805,   805,   805,   805,   805,   805,   805,
971      805,   805,   805,    10,    10,   805,   805,   805,    27,  -287,
972     1808,  1808,  1808,  -287,  -287,   -37,     1,  1808,  1808,    10,
973      435,  -287,   -37,   268,  -287,  -287,  -287,   153,  -287,  1808,
974     1808,    12,  -287,    28,    10,  1808,  -287,  -287,  -287,   268,
975     -287,  -287,  -287,  -287,   -37,   -37,  -287,    26,    55,  -287,
976      796,  -287,  1866,  -287,    56,    50,  -287,  -287,  -287,   244,
977      878,   961,   298,   298,     5,     5,     5,     5,    24,    24,
978       42,    42,  -287,  -287,  -287,   -42,  -287,   -54,  -287,  1885,
979     1941,   494,   153,   -37,   978,  1144,  1144,  1808,  1227,  1310,
980     -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,    60,
981     1393,  1476,    10,  -287,   805,     8,  -287,    20,  -287,  1559,
982     -287,  -287,  -287,  -287,  -287,   796,  -287,  -287,    72,    67,
983     -287,  -287,  -287,  -287,   805,   104,   112,  -287,   -37,   114,
984      115,  1642,   -37,   -37,    10,   -37,   -37,   -37,  -287,   494,
985      -37,  -287,  -287,   -37,  -287,  -287,  -287,   435,   116,  -287,
986     1808,   -37,   -37,   -37,  -287,  -287,  -287,  -287,  -287,  -287,
987     -287,  -287,  1808,   -37,  1725,  -287,  -287,  -287,  1061,  -287
990 /* YYPGOTO[NTERM-NUM].  */
991 static const yytype_int16 yypgoto[] =
993     -287,  -287,  -287,  -122,   -41,    77,  -287,  -287,  -287,  -287,
994     -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
995     -287,  -175,  -287,  -287,  -162,  -287,  -287,  -287,  -287,  -287,
996       49,  -287,  -287,  -287,   332,   -62,  -129,  -287,  -287,    51,
997      -61,  -287,  -287,  -287,  -171,  -287,  -287,  -287,  -287,     0,
998     -287,  -287,  -287,  -287,  -287,  -181,  -286,  -287,  -287,  -287,
999     -287,   -73,   -99,    76,  -287,  -287,    -5,  -287,  -287,  -287,
1000     -287,   -25,  -287,  -238,  -287,  -287,  -287,  -287,  -134,  -287,
1001     -287,   -69,  -287
1004 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
1005    positive, shift that token.  If negative, reduce the rule which
1006    number is the opposite.  If zero, do what YYDEFACT says.
1007    If YYTABLE_NINF, syntax error.  */
1008 #define YYTABLE_NINF -161
1009 static const yytype_int16 yytable[] =
1011       74,   172,   184,   143,   144,   175,   318,   163,   124,     2,
1012      340,   232,   237,     2,     2,   215,     2,   134,   160,   129,
1013      130,    42,    43,   135,   229,   145,   138,   140,   142,   138,
1014      213,   146,   147,   149,   150,   151,   152,   254,   255,   256,
1015      157,   216,   156,     2,   159,    42,    43,   217,    74,   358,
1016       95,     9,    10,    11,    12,   350,    96,    97,   229,     2,
1017       98,    99,   100,   141,   260,   126,   127,   214,    74,   234,
1018       42,    43,   229,   235,   214,   131,   132,   318,    42,    43,
1019      267,   268,   215,   312,   250,   167,   292,   314,   251,    36,
1020      206,   207,   208,   209,   324,   210,   211,   212,   294,   295,
1021      296,   183,   186,   101,   102,   298,   299,   189,   216,    44,
1022      226,   208,   209,   329,   210,   211,   212,   310,   311,   104,
1023      344,   165,   125,   319,    42,    43,   325,   328,   176,   177,
1024      338,   326,   210,   211,   212,   138,   355,   356,   308,   334,
1025      351,   233,   361,   362,   373,   164,   112,   113,   114,   243,
1026      348,   285,   286,   185,   354,   359,   249,   179,   332,     2,
1027      303,     0,     0,     0,   304,     0,   305,     9,    10,    11,
1028       12,     0,     0,     0,   219,   341,   320,   220,   221,   222,
1029      321,     0,   223,   224,     0,   227,   228,     0,     0,   231,
1030        0,     0,   236,   308,   238,   239,   256,   240,     0,   244,
1031      245,   306,   246,   247,   248,    36,     0,   252,     0,     0,
1032      253,     0,     0,   287,   288,     0,     0,     0,     0,     0,
1033       74,    74,    74,   261,     0,    44,     0,    74,    74,   300,
1034      263,     0,     0,     0,     0,     0,     0,   307,   374,    74,
1035       74,     0,     0,     0,   317,    74,     0,     0,     0,     0,
1036      378,     0,     0,   163,   163,   163,     0,   163,   163,     0,
1037        0,     0,     0,     0,     0,     0,     0,     0,     0,   163,
1038      163,     0,     0,     0,   297,     0,     0,     0,   163,   301,
1039        0,   302,     9,    10,    11,    12,    13,    14,    15,     0,
1040      313,     0,   307,     0,    74,    74,    74,    74,    74,    74,
1041      163,     0,     0,   322,   323,     0,     0,     0,     0,     0,
1042       74,    74,   243,     0,     0,   317,     0,     0,     0,    74,
1043       36,   198,   199,   200,   201,   202,   203,   204,   205,   206,
1044      207,   208,   209,   163,   210,   211,   212,   163,     0,   115,
1045       44,    74,   333,     0,   366,     0,     0,     0,     0,     0,
1046      128,     0,     0,     0,     0,     0,   136,   137,     0,     0,
1047       74,     0,     0,     0,     0,     0,   352,     0,     0,   153,
1048      154,   155,    74,   158,    74,     0,     0,     0,    74,   202,
1049      203,   204,   205,   206,   207,   208,   209,   360,   210,   211,
1050      212,   364,   365,     0,   367,   368,   369,     0,     0,   370,
1051        0,     0,   371,     0,     0,     0,   372,     0,     0,     0,
1052      375,   376,   377,    96,    97,     0,     2,    98,    99,   100,
1053        0,     0,   379,     0,     0,     0,   180,     0,     0,     0,
1054        0,     0,     0,     0,     0,     0,     0,   187,   188,     0,
1055      190,   191,     0,   192,   193,   194,   195,     0,     0,     0,
1056        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1057      101,   102,     0,     0,     0,     0,     0,     0,     0,     0,
1058        0,   230,   103,     0,     0,     0,   104,     0,     0,   105,
1059        0,     0,     0,   106,     0,     0,     0,   107,     0,     0,
1060        0,   108,   109,    42,    43,     0,     0,   110,   111,     0,
1061        0,     0,     0,   112,   113,   114,     0,     0,     0,     0,
1062      262,   197,   198,   199,   200,   201,   202,   203,   204,   205,
1063      206,   207,   208,   209,     0,   210,   211,   212,     0,   269,
1064      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
1065      280,   281,   282,   283,   284,     0,     0,   289,   290,   291,
1066       96,    97,     0,     2,    98,    99,   100,     0,     0,     0,
1067        0,     9,    10,    11,    12,    13,    14,    15,     0,     0,
1068      197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
1069      207,   208,   209,   166,   210,   211,   212,     0,     0,    96,
1070       97,     0,     2,    98,    99,   100,     0,   101,   102,    36,
1071        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1072        0,     0,   167,   104,   168,     0,     0,     0,     0,    44,
1073        0,     0,     0,     0,   107,     0,     0,     0,   108,   109,
1074        0,     0,     0,     0,   110,   111,   101,   102,     0,     0,
1075      112,   113,   114,     0,    42,    43,   349,     0,     0,     0,
1076        0,     0,   104,   168,    96,    97,     0,     2,    98,    99,
1077      100,     0,     0,   107,     0,     0,   357,   108,   109,     0,
1078        0,     0,     0,   110,   111,     0,     0,     0,     0,   112,
1079      113,   114,     0,     0,     0,     0,     0,    96,    97,     0,
1080        2,    98,    99,   100,     0,     0,     0,     0,     0,     0,
1081        0,   101,   102,     0,     0,     0,    96,    97,     0,     2,
1082       98,    99,   100,     0,     0,     0,     0,   104,   168,     0,
1083      178,     0,     0,     0,     0,     0,     0,     0,   107,     0,
1084        0,     0,   108,   109,   101,   102,     0,     0,   110,   111,
1085        0,     0,     0,     0,   112,   113,   114,     0,     0,     0,
1086      104,   168,     0,   101,   102,  -118,     0,     0,     0,     0,
1087        0,   107,     0,     0,     0,   108,   109,     0,     0,   104,
1088        0,   110,   111,     0,   229,     0,     0,   112,   113,   114,
1089      107,     0,     0,     0,   108,   109,     0,     0,     0,     0,
1090      110,   111,     0,     0,     0,     0,   112,   113,   114,    96,
1091       97,     0,     2,    98,    99,   100,     0,     0,    96,    97,
1092        0,     2,    98,    99,   100,   264,   265,     0,     0,     0,
1093        0,   197,   198,   199,   200,   201,   202,   203,   204,   205,
1094      206,   207,   208,   209,     0,   210,   211,   212,     0,     0,
1095        0,     0,     0,     0,     0,     0,   101,   102,     0,     0,
1096        0,     0,     0,     0,     0,   101,   102,     0,     0,     0,
1097        0,     0,   104,   168,     0,     0,     0,     0,     0,     0,
1098        0,   104,     0,   107,     0,     0,     0,   108,   109,     0,
1099        0,     0,   107,   110,   111,     0,   108,   109,     0,   112,
1100      113,   114,   110,   111,     0,    -4,     1,     0,   112,   113,
1101      114,     2,     0,     3,     4,     5,     6,     7,     8,     9,
1102       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
1103       20,     0,     0,     0,    21,    22,    23,    24,    25,     0,
1104       26,     0,    27,   161,    28,    29,    30,    31,    32,     0,
1105       33,    34,     0,    35,     0,     0,     0,    36,    37,    38,
1106       39,    40,    41,    42,    43,     0,   199,   200,   201,   202,
1107      203,   204,   205,   206,   207,   208,   209,    44,   210,   211,
1108      212,     0,     0,     0,     0,     0,     0,     0,     0,     1,
1109        0,     0,    45,    46,     2,     0,     3,     4,     5,     6,
1110        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1111       17,    18,    19,    20,  -155,   334,  -155,    21,    22,    23,
1112       24,    25,     0,    26,     0,    27,     0,    28,    29,    30,
1113       31,    32,     0,    33,    34,     0,    35,     0,     0,     0,
1114       36,    37,    38,    39,    40,    41,    42,    43,     0,     0,
1115      200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
1116       44,   210,   211,   212,     0,     0,     0,     0,     0,     0,
1117        0,     0,     1,     0,     0,    45,    46,     2,     0,     3,
1118        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
1119       14,    15,    16,    17,    18,    19,    20,  -158,  -158,  -158,
1120       21,    22,    23,    24,    25,     0,    26,     0,    27,     0,
1121       28,    29,    30,    31,    32,     0,    33,    34,     0,    35,
1122        0,     0,     0,    36,    37,    38,    39,    40,    41,    42,
1123       43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1124        0,     0,     0,    44,     0,     0,     0,     0,     0,     0,
1125        0,     0,     0,     0,     0,     1,     0,     0,    45,    46,
1126        2,     0,     3,     4,     5,     6,     7,     8,     9,    10,
1127       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
1128      338,     0,  -160,    21,    22,    23,    24,    25,     0,    26,
1129        0,    27,     0,    28,    29,    30,    31,    32,     0,    33,
1130       34,     0,    35,     0,     0,     0,    36,    37,    38,    39,
1131       40,    41,    42,    43,     0,     0,     0,     0,     0,     0,
1132        0,     0,     0,     0,     0,     0,    44,     0,     0,     0,
1133        0,     0,     0,     0,     0,     0,     0,     0,     1,     0,
1134        0,    45,    46,     2,     0,     3,     4,     5,     6,     7,
1135        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
1136       18,    19,    20,     0,     0,     0,    21,    22,    23,    24,
1137       25,   342,    26,     0,    27,     0,    28,    29,    30,    31,
1138       32,     0,    33,    34,     0,    35,     0,     0,     0,    36,
1139       37,    38,    39,    40,    41,    42,    43,     0,     0,     0,
1140        0,     0,     0,     0,     0,     0,     0,     0,     0,    44,
1141        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1142        0,     1,     0,     0,    45,    46,     2,     0,     3,     4,
1143        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1144       15,    16,    17,    18,    19,    20,     0,     0,     0,    21,
1145       22,    23,    24,    25,   343,    26,     0,    27,     0,    28,
1146       29,    30,    31,    32,     0,    33,    34,     0,    35,     0,
1147        0,     0,    36,    37,    38,    39,    40,    41,    42,    43,
1148        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1149        0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
1150        0,     0,     0,     0,     1,     0,     0,    45,    46,     2,
1151        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
1152       12,    13,    14,    15,    16,    17,    18,    19,    20,     0,
1153        0,     0,    21,    22,    23,    24,    25,     0,    26,     0,
1154       27,     0,    28,    29,    30,    31,    32,   346,    33,    34,
1155        0,    35,     0,     0,     0,    36,    37,    38,    39,    40,
1156       41,    42,    43,     0,     0,     0,     0,     0,     0,     0,
1157        0,     0,     0,     0,     0,    44,     0,     0,     0,     0,
1158        0,     0,     0,     0,     0,     0,     0,     1,     0,     0,
1159       45,    46,     2,     0,     3,     4,     5,     6,     7,     8,
1160        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
1161       19,    20,     0,     0,     0,    21,    22,    23,    24,    25,
1162        0,    26,     0,    27,     0,    28,    29,    30,    31,    32,
1163      347,    33,    34,     0,    35,     0,     0,     0,    36,    37,
1164       38,    39,    40,    41,    42,    43,     0,     0,     0,     0,
1165        0,     0,     0,     0,     0,     0,     0,     0,    44,     0,
1166        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1167        1,     0,     0,    45,    46,     2,     0,     3,     4,     5,
1168        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
1169       16,    17,    18,    19,    20,     0,     0,     0,    21,    22,
1170       23,    24,    25,     0,    26,     0,    27,     0,    28,    29,
1171       30,    31,    32,     0,    33,    34,     0,    35,   353,     0,
1172        0,    36,    37,    38,    39,    40,    41,    42,    43,     0,
1173        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1174        0,    44,     0,     0,     0,     0,     0,     0,     0,     0,
1175        0,     0,     0,     1,     0,     0,    45,    46,     2,     0,
1176        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
1177       13,    14,    15,    16,    17,    18,    19,    20,     0,     0,
1178        0,    21,    22,    23,    24,    25,   363,    26,     0,    27,
1179        0,    28,    29,    30,    31,    32,     0,    33,    34,     0,
1180       35,     0,     0,     0,    36,    37,    38,    39,    40,    41,
1181       42,    43,     0,     0,     0,     0,     0,     0,     0,     0,
1182        0,     0,     0,     0,    44,     0,     0,     0,     0,     0,
1183        0,     0,     0,     0,     0,     0,     1,     0,     0,    45,
1184       46,     2,     0,     3,     4,     5,     6,     7,     8,     9,
1185       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
1186       20,     0,     0,  -159,    21,    22,    23,    24,    25,     0,
1187       26,     0,    27,     0,    28,    29,    30,    31,    32,     0,
1188       33,    34,     0,    35,     0,     0,     0,    36,    37,    38,
1189       39,    40,    41,    42,    43,     0,     0,     0,     0,     0,
1190        0,     0,     0,     0,     0,     0,     0,    44,     0,     0,
1191        0,     0,     0,     0,     0,     0,     0,     0,     0,     1,
1192        0,     0,    45,    46,     2,     0,     3,     4,     5,     6,
1193        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1194       17,    18,    19,    20,     0,     0,     0,    21,    22,    23,
1195       24,    25,     0,    26,     0,    27,     0,    28,    29,    30,
1196       31,    32,     0,    33,    34,     0,    35,     0,     0,     0,
1197       36,    37,    38,    39,    40,    41,    42,    43,     0,     0,
1198        1,     0,     0,     0,     0,     2,     0,     0,     0,     0,
1199       44,     7,     8,     9,    10,    11,    12,    13,    14,    15,
1200       16,    17,    18,    19,    20,    45,    46,     0,    21,    22,
1201       23,    24,    25,     0,    26,     0,    27,     0,    28,    29,
1202       30,    31,    32,     0,    33,    34,     0,    35,     0,     0,
1203        0,    36,    37,    38,    39,    40,    41,    42,    43,     0,
1204        0,     0,     0,     0,     0,     0,   327,     0,     0,     0,
1205        0,    44,   197,   198,   199,   200,   201,   202,   203,   204,
1206      205,   206,   207,   208,   209,   330,   210,   211,   212,     0,
1207        0,   197,   198,   199,   200,   201,   202,   203,   204,   205,
1208      206,   207,   208,   209,   196,   210,   211,   212,     0,   197,
1209      198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
1210      208,   209,     0,   210,   211,   212,   197,   198,   199,   200,
1211      201,   202,   203,   204,   205,   206,   207,   208,   209,     0,
1212      210,   211,   212,     0,     0,     0,   266,   197,   198,   199,
1213      200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
1214        0,   210,   211,   212,     0,     0,     0,   331
1217 static const yytype_int16 yycheck[] =
1219        0,    74,   101,    28,    29,    74,   244,    48,     8,     6,
1220      296,   140,    59,     6,     6,    69,     6,    22,     0,    19,
1221       20,    58,    59,    23,    71,    30,    26,    27,    28,    29,
1222       72,    31,    32,    33,    34,    35,    36,   166,   167,   168,
1223       40,    95,    39,     6,    44,    58,    59,    65,    48,   335,
1224        1,    14,    15,    16,    17,    47,     3,     4,    71,     6,
1225        7,     8,     9,    56,    71,    16,    17,    61,    68,   142,
1226       58,    59,    71,   142,    61,     4,     5,   315,    58,    59,
1227       63,    64,    69,    71,   157,    65,    59,    59,   157,    52,
1228       85,    86,    87,    88,    68,    90,    91,    92,   220,   221,
1229      222,   101,   102,    50,    51,   227,   228,   107,    95,    72,
1230      135,    87,    88,    63,    90,    91,    92,   239,   240,    66,
1231       60,    72,    56,   245,    58,    59,    71,    71,    79,    80,
1232       26,   260,    90,    91,    92,   135,    64,    70,   237,    27,
1233      315,   141,    28,    28,    28,    68,    93,    94,    95,   149,
1234      312,   213,   213,   102,   325,   336,   156,    81,   292,     6,
1235      233,    -1,    -1,    -1,   233,    -1,    13,    14,    15,    16,
1236       17,    -1,    -1,    -1,   125,   297,   249,   128,   129,   130,
1237      249,    -1,   133,   134,    -1,   136,   137,    -1,    -1,   140,
1238       -1,    -1,   143,   292,   145,   146,   325,   148,    -1,   150,
1239      151,    48,   153,   154,   155,    52,    -1,   158,    -1,    -1,
1240      161,    -1,    -1,   213,   214,    -1,    -1,    -1,    -1,    -1,
1241      220,   221,   222,   174,    -1,    72,    -1,   227,   228,   229,
1242      181,    -1,    -1,    -1,    -1,    -1,    -1,   237,   360,   239,
1243      240,    -1,    -1,    -1,   244,   245,    -1,    -1,    -1,    -1,
1244      372,    -1,    -1,   294,   295,   296,    -1,   298,   299,    -1,
1245       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   310,
1246      311,    -1,    -1,    -1,   225,    -1,    -1,    -1,   319,   230,
1247       -1,   232,    14,    15,    16,    17,    18,    19,    20,    -1,
1248      241,    -1,   292,    -1,   294,   295,   296,   297,   298,   299,
1249      341,    -1,    -1,   254,   255,    -1,    -1,    -1,    -1,    -1,
1250      310,   311,   312,    -1,    -1,   315,    -1,    -1,    -1,   319,
1251       52,    77,    78,    79,    80,    81,    82,    83,    84,    85,
1252       86,    87,    88,   374,    90,    91,    92,   378,    -1,     7,
1253       72,   341,   293,    -1,   344,    -1,    -1,    -1,    -1,    -1,
1254       18,    -1,    -1,    -1,    -1,    -1,    24,    25,    -1,    -1,
1255      360,    -1,    -1,    -1,    -1,    -1,   317,    -1,    -1,    37,
1256       38,    39,   372,    41,   374,    -1,    -1,    -1,   378,    81,
1257       82,    83,    84,    85,    86,    87,    88,   338,    90,    91,
1258       92,   342,   343,    -1,   345,   346,   347,    -1,    -1,   350,
1259       -1,    -1,   353,    -1,    -1,    -1,   357,    -1,    -1,    -1,
1260      361,   362,   363,     3,     4,    -1,     6,     7,     8,     9,
1261       -1,    -1,   373,    -1,    -1,    -1,    94,    -1,    -1,    -1,
1262       -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,   106,    -1,
1263      108,   109,    -1,   111,   112,   113,   114,    -1,    -1,    -1,
1264       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1265       50,    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1266       -1,   139,    62,    -1,    -1,    -1,    66,    -1,    -1,    69,
1267       -1,    -1,    -1,    73,    -1,    -1,    -1,    77,    -1,    -1,
1268       -1,    81,    82,    58,    59,    -1,    -1,    87,    88,    -1,
1269       -1,    -1,    -1,    93,    94,    95,    -1,    -1,    -1,    -1,
1270      178,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1271       85,    86,    87,    88,    -1,    90,    91,    92,    -1,   197,
1272      198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
1273      208,   209,   210,   211,   212,    -1,    -1,   215,   216,   217,
1274        3,     4,    -1,     6,     7,     8,     9,    -1,    -1,    -1,
1275       -1,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
1276       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
1277       86,    87,    88,    36,    90,    91,    92,    -1,    -1,     3,
1278        4,    -1,     6,     7,     8,     9,    -1,    50,    51,    52,
1279       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1280       -1,    -1,    65,    66,    67,    -1,    -1,    -1,    -1,    72,
1281       -1,    -1,    -1,    -1,    77,    -1,    -1,    -1,    81,    82,
1282       -1,    -1,    -1,    -1,    87,    88,    50,    51,    -1,    -1,
1283       93,    94,    95,    -1,    58,    59,   314,    -1,    -1,    -1,
1284       -1,    -1,    66,    67,     3,     4,    -1,     6,     7,     8,
1285        9,    -1,    -1,    77,    -1,    -1,   334,    81,    82,    -1,
1286       -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    93,
1287       94,    95,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
1288        6,     7,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,
1289       -1,    50,    51,    -1,    -1,    -1,     3,     4,    -1,     6,
1290        7,     8,     9,    -1,    -1,    -1,    -1,    66,    67,    -1,
1291       69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    77,    -1,
1292       -1,    -1,    81,    82,    50,    51,    -1,    -1,    87,    88,
1293       -1,    -1,    -1,    -1,    93,    94,    95,    -1,    -1,    -1,
1294       66,    67,    -1,    50,    51,    71,    -1,    -1,    -1,    -1,
1295       -1,    77,    -1,    -1,    -1,    81,    82,    -1,    -1,    66,
1296       -1,    87,    88,    -1,    71,    -1,    -1,    93,    94,    95,
1297       77,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,
1298       87,    88,    -1,    -1,    -1,    -1,    93,    94,    95,     3,
1299        4,    -1,     6,     7,     8,     9,    -1,    -1,     3,     4,
1300       -1,     6,     7,     8,     9,    70,    71,    -1,    -1,    -1,
1301       -1,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1302       85,    86,    87,    88,    -1,    90,    91,    92,    -1,    -1,
1303       -1,    -1,    -1,    -1,    -1,    -1,    50,    51,    -1,    -1,
1304       -1,    -1,    -1,    -1,    -1,    50,    51,    -1,    -1,    -1,
1305       -1,    -1,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,
1306       -1,    66,    -1,    77,    -1,    -1,    -1,    81,    82,    -1,
1307       -1,    -1,    77,    87,    88,    -1,    81,    82,    -1,    93,
1308       94,    95,    87,    88,    -1,     0,     1,    -1,    93,    94,
1309       95,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
1310       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1311       25,    -1,    -1,    -1,    29,    30,    31,    32,    33,    -1,
1312       35,    -1,    37,    38,    39,    40,    41,    42,    43,    -1,
1313       45,    46,    -1,    48,    -1,    -1,    -1,    52,    53,    54,
1314       55,    56,    57,    58,    59,    -1,    78,    79,    80,    81,
1315       82,    83,    84,    85,    86,    87,    88,    72,    90,    91,
1316       92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
1317       -1,    -1,    87,    88,     6,    -1,     8,     9,    10,    11,
1318       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1319       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
1320       32,    33,    -1,    35,    -1,    37,    -1,    39,    40,    41,
1321       42,    43,    -1,    45,    46,    -1,    48,    -1,    -1,    -1,
1322       52,    53,    54,    55,    56,    57,    58,    59,    -1,    -1,
1323       79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
1324       72,    90,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
1325       -1,    -1,     1,    -1,    -1,    87,    88,     6,    -1,     8,
1326        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
1327       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
1328       29,    30,    31,    32,    33,    -1,    35,    -1,    37,    -1,
1329       39,    40,    41,    42,    43,    -1,    45,    46,    -1,    48,
1330       -1,    -1,    -1,    52,    53,    54,    55,    56,    57,    58,
1331       59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1332       -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,
1333       -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    87,    88,
1334        6,    -1,     8,     9,    10,    11,    12,    13,    14,    15,
1335       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
1336       26,    -1,    28,    29,    30,    31,    32,    33,    -1,    35,
1337       -1,    37,    -1,    39,    40,    41,    42,    43,    -1,    45,
1338       46,    -1,    48,    -1,    -1,    -1,    52,    53,    54,    55,
1339       56,    57,    58,    59,    -1,    -1,    -1,    -1,    -1,    -1,
1340       -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
1341       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
1342       -1,    87,    88,     6,    -1,     8,     9,    10,    11,    12,
1343       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
1344       23,    24,    25,    -1,    -1,    -1,    29,    30,    31,    32,
1345       33,    34,    35,    -1,    37,    -1,    39,    40,    41,    42,
1346       43,    -1,    45,    46,    -1,    48,    -1,    -1,    -1,    52,
1347       53,    54,    55,    56,    57,    58,    59,    -1,    -1,    -1,
1348       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
1349       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1350       -1,     1,    -1,    -1,    87,    88,     6,    -1,     8,     9,
1351       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
1352       20,    21,    22,    23,    24,    25,    -1,    -1,    -1,    29,
1353       30,    31,    32,    33,    34,    35,    -1,    37,    -1,    39,
1354       40,    41,    42,    43,    -1,    45,    46,    -1,    48,    -1,
1355       -1,    -1,    52,    53,    54,    55,    56,    57,    58,    59,
1356       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1357       -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1358       -1,    -1,    -1,    -1,     1,    -1,    -1,    87,    88,     6,
1359       -1,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1360       17,    18,    19,    20,    21,    22,    23,    24,    25,    -1,
1361       -1,    -1,    29,    30,    31,    32,    33,    -1,    35,    -1,
1362       37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1363       -1,    48,    -1,    -1,    -1,    52,    53,    54,    55,    56,
1364       57,    58,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1365       -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
1366       -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,
1367       87,    88,     6,    -1,     8,     9,    10,    11,    12,    13,
1368       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
1369       24,    25,    -1,    -1,    -1,    29,    30,    31,    32,    33,
1370       -1,    35,    -1,    37,    -1,    39,    40,    41,    42,    43,
1371       44,    45,    46,    -1,    48,    -1,    -1,    -1,    52,    53,
1372       54,    55,    56,    57,    58,    59,    -1,    -1,    -1,    -1,
1373       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
1374       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1375        1,    -1,    -1,    87,    88,     6,    -1,     8,     9,    10,
1376       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
1377       21,    22,    23,    24,    25,    -1,    -1,    -1,    29,    30,
1378       31,    32,    33,    -1,    35,    -1,    37,    -1,    39,    40,
1379       41,    42,    43,    -1,    45,    46,    -1,    48,    49,    -1,
1380       -1,    52,    53,    54,    55,    56,    57,    58,    59,    -1,
1381       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1382       -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1383       -1,    -1,    -1,     1,    -1,    -1,    87,    88,     6,    -1,
1384        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
1385       18,    19,    20,    21,    22,    23,    24,    25,    -1,    -1,
1386       -1,    29,    30,    31,    32,    33,    34,    35,    -1,    37,
1387       -1,    39,    40,    41,    42,    43,    -1,    45,    46,    -1,
1388       48,    -1,    -1,    -1,    52,    53,    54,    55,    56,    57,
1389       58,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1390       -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,
1391       -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    87,
1392       88,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
1393       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1394       25,    -1,    -1,    28,    29,    30,    31,    32,    33,    -1,
1395       35,    -1,    37,    -1,    39,    40,    41,    42,    43,    -1,
1396       45,    46,    -1,    48,    -1,    -1,    -1,    52,    53,    54,
1397       55,    56,    57,    58,    59,    -1,    -1,    -1,    -1,    -1,
1398       -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
1399       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
1400       -1,    -1,    87,    88,     6,    -1,     8,     9,    10,    11,
1401       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1402       22,    23,    24,    25,    -1,    -1,    -1,    29,    30,    31,
1403       32,    33,    -1,    35,    -1,    37,    -1,    39,    40,    41,
1404       42,    43,    -1,    45,    46,    -1,    48,    -1,    -1,    -1,
1405       52,    53,    54,    55,    56,    57,    58,    59,    -1,    -1,
1406        1,    -1,    -1,    -1,    -1,     6,    -1,    -1,    -1,    -1,
1407       72,    12,    13,    14,    15,    16,    17,    18,    19,    20,
1408       21,    22,    23,    24,    25,    87,    88,    -1,    29,    30,
1409       31,    32,    33,    -1,    35,    -1,    37,    -1,    39,    40,
1410       41,    42,    43,    -1,    45,    46,    -1,    48,    -1,    -1,
1411       -1,    52,    53,    54,    55,    56,    57,    58,    59,    -1,
1412       -1,    -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,
1413       -1,    72,    76,    77,    78,    79,    80,    81,    82,    83,
1414       84,    85,    86,    87,    88,    70,    90,    91,    92,    -1,
1415       -1,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1416       85,    86,    87,    88,    71,    90,    91,    92,    -1,    76,
1417       77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
1418       87,    88,    -1,    90,    91,    92,    76,    77,    78,    79,
1419       80,    81,    82,    83,    84,    85,    86,    87,    88,    -1,
1420       90,    91,    92,    -1,    -1,    -1,    96,    76,    77,    78,
1421       79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
1422       -1,    90,    91,    92,    -1,    -1,    -1,    96
1425 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1426    symbol of state STATE-NUM.  */
1427 static const yytype_uint8 yystos[] =
1429        0,     1,     6,     8,     9,    10,    11,    12,    13,    14,
1430       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1431       25,    29,    30,    31,    32,    33,    35,    37,    39,    40,
1432       41,    42,    43,    45,    46,    48,    52,    53,    54,    55,
1433       56,    57,    58,    59,    72,    87,    88,    98,   100,   101,
1434      102,   103,   104,   105,   106,   107,   108,   111,   112,   113,
1435      114,   115,   116,   119,   122,   123,   124,   125,   126,   127,
1436      128,   129,   130,   145,   146,   149,   154,   155,   156,   157,
1437      158,   159,   161,   162,   164,   166,   169,   170,   171,   172,
1438      173,   176,   177,   178,   179,   127,     3,     4,     7,     8,
1439        9,    50,    51,    62,    66,    69,    73,    77,    81,    82,
1440       87,    88,    93,    94,    95,   131,   132,   136,   137,   142,
1441      143,   144,   146,   148,   146,    56,   127,   127,   131,   146,
1442      146,     4,     5,   163,   163,   146,   131,   131,   146,   168,
1443      146,    56,   146,   168,   168,   163,   146,   146,   147,   146,
1444      146,   146,   146,   131,   131,   131,    39,   146,   131,   146,
1445        0,    38,    99,   101,   102,   127,    36,    65,    67,   131,
1446      133,   138,   158,   160,   167,   178,   127,   127,    69,   160,
1447      131,   135,   134,   146,   159,   136,   146,   131,   131,   146,
1448      131,   131,   131,   131,   131,   131,    71,    76,    77,    78,
1449       79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
1450       90,    91,    92,    72,    61,    69,    95,    65,   109,   127,
1451      127,   127,   127,   127,   127,   165,   168,   127,   127,    71,
1452      131,   127,   133,   146,   158,   178,   127,    59,   127,   127,
1453      127,   120,   121,   146,   127,   127,   127,   127,   127,   146,
1454      158,   178,   127,   127,   133,   133,   133,   139,   140,   141,
1455       71,   127,   131,   127,    70,    71,    96,    63,    64,   131,
1456      131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
1457      131,   131,   131,   131,   131,   132,   137,   146,   146,   131,
1458      131,   131,    59,   110,   100,   100,   100,   127,   100,   100,
1459      146,   127,   127,   158,   178,    13,    48,   146,   159,   175,
1460      100,   100,    71,   127,    59,   117,   118,   146,   170,   100,
1461      158,   178,   127,   127,    68,    71,   133,    70,    71,    63,
1462       70,    96,   175,   127,    27,   150,   151,   152,    26,   153,
1463      153,   100,    34,    34,    60,   174,    44,    44,   121,   131,
1464       47,   118,   127,    49,   141,    64,    70,   131,   153,   152,
1465      127,    28,    28,    34,   127,   127,   146,   127,   127,   127,
1466      127,   127,   127,    28,   100,   127,   127,   127,   100,   127
1469 #define yyerrok         (yyerrstatus = 0)
1470 #define yyclearin       (yychar = YYEMPTY)
1471 #define YYEMPTY         (-2)
1472 #define YYEOF           0
1474 #define YYACCEPT        goto yyacceptlab
1475 #define YYABORT         goto yyabortlab
1476 #define YYERROR         goto yyerrorlab
1479 /* Like YYERROR except do call yyerror.  This remains here temporarily
1480    to ease the transition to the new meaning of YYERROR, for GCC.
1481    Once GCC version 2 has supplanted version 1, this can go.  */
1483 #define YYFAIL          goto yyerrlab
1485 #define YYRECOVERING()  (!!yyerrstatus)
1487 #define YYBACKUP(Token, Value)                                  \
1488 do                                                              \
1489   if (yychar == YYEMPTY && yylen == 1)                          \
1490     {                                                           \
1491       yychar = (Token);                                         \
1492       yylval = (Value);                                         \
1493       yytoken = YYTRANSLATE (yychar);                           \
1494       YYPOPSTACK (1);                                           \
1495       goto yybackup;                                            \
1496     }                                                           \
1497   else                                                          \
1498     {                                                           \
1499       yyerror (YY_("syntax error: cannot back up")); \
1500       YYERROR;                                                  \
1501     }                                                           \
1502 while (YYID (0))
1505 #define YYTERROR        1
1506 #define YYERRCODE       256
1509 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1510    If N is 0, then set CURRENT to the empty location which ends
1511    the previous symbol: RHS[0] (always defined).  */
1513 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1514 #ifndef YYLLOC_DEFAULT
1515 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
1516     do                                                                  \
1517       if (YYID (N))                                                    \
1518         {                                                               \
1519           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
1520           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
1521           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
1522           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
1523         }                                                               \
1524       else                                                              \
1525         {                                                               \
1526           (Current).first_line   = (Current).last_line   =              \
1527             YYRHSLOC (Rhs, 0).last_line;                                \
1528           (Current).first_column = (Current).last_column =              \
1529             YYRHSLOC (Rhs, 0).last_column;                              \
1530         }                                                               \
1531     while (YYID (0))
1532 #endif
1535 /* YY_LOCATION_PRINT -- Print the location on the stream.
1536    This macro was not mandated originally: define only if we know
1537    we won't break user code: when these are the locations we know.  */
1539 #ifndef YY_LOCATION_PRINT
1540 # if YYLTYPE_IS_TRIVIAL
1541 #  define YY_LOCATION_PRINT(File, Loc)                  \
1542      fprintf (File, "%d.%d-%d.%d",                      \
1543               (Loc).first_line, (Loc).first_column,     \
1544               (Loc).last_line,  (Loc).last_column)
1545 # else
1546 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1547 # endif
1548 #endif
1551 /* YYLEX -- calling `yylex' with the right arguments.  */
1553 #ifdef YYLEX_PARAM
1554 # define YYLEX yylex (YYLEX_PARAM)
1555 #else
1556 # define YYLEX yylex ()
1557 #endif
1559 /* Enable debugging if requested.  */
1560 #if YYDEBUG
1562 # ifndef YYFPRINTF
1563 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1564 #  define YYFPRINTF fprintf
1565 # endif
1567 # define YYDPRINTF(Args)                        \
1568 do {                                            \
1569   if (yydebug)                                  \
1570     YYFPRINTF Args;                             \
1571 } while (YYID (0))
1573 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1574 do {                                                                      \
1575   if (yydebug)                                                            \
1576     {                                                                     \
1577       YYFPRINTF (stderr, "%s ", Title);                                   \
1578       yy_symbol_print (stderr,                                            \
1579                   Type, Value, Location); \
1580       YYFPRINTF (stderr, "\n");                                           \
1581     }                                                                     \
1582 } while (YYID (0))
1585 /*--------------------------------.
1586 | Print this symbol on YYOUTPUT.  |
1587 `--------------------------------*/
1589 /*ARGSUSED*/
1590 #if (defined __STDC__ || defined __C99__FUNC__ \
1591      || defined __cplusplus || defined _MSC_VER)
1592 static void
1593 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
1594 #else
1595 static void
1596 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
1597     FILE *yyoutput;
1598     int yytype;
1599     YYSTYPE const * const yyvaluep;
1600     YYLTYPE const * const yylocationp;
1601 #endif
1603   if (!yyvaluep)
1604     return;
1605   YYUSE (yylocationp);
1606 # ifdef YYPRINT
1607   if (yytype < YYNTOKENS)
1608     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1609 # else
1610   YYUSE (yyoutput);
1611 # endif
1612   switch (yytype)
1613     {
1614       default:
1615         break;
1616     }
1620 /*--------------------------------.
1621 | Print this symbol on YYOUTPUT.  |
1622 `--------------------------------*/
1624 #if (defined __STDC__ || defined __C99__FUNC__ \
1625      || defined __cplusplus || defined _MSC_VER)
1626 static void
1627 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
1628 #else
1629 static void
1630 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp)
1631     FILE *yyoutput;
1632     int yytype;
1633     YYSTYPE const * const yyvaluep;
1634     YYLTYPE const * const yylocationp;
1635 #endif
1637   if (yytype < YYNTOKENS)
1638     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1639   else
1640     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1642   YY_LOCATION_PRINT (yyoutput, *yylocationp);
1643   YYFPRINTF (yyoutput, ": ");
1644   yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp);
1645   YYFPRINTF (yyoutput, ")");
1648 /*------------------------------------------------------------------.
1649 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1650 | TOP (included).                                                   |
1651 `------------------------------------------------------------------*/
1653 #if (defined __STDC__ || defined __C99__FUNC__ \
1654      || defined __cplusplus || defined _MSC_VER)
1655 static void
1656 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1657 #else
1658 static void
1659 yy_stack_print (bottom, top)
1660     yytype_int16 *bottom;
1661     yytype_int16 *top;
1662 #endif
1664   YYFPRINTF (stderr, "Stack now");
1665   for (; bottom <= top; ++bottom)
1666     YYFPRINTF (stderr, " %d", *bottom);
1667   YYFPRINTF (stderr, "\n");
1670 # define YY_STACK_PRINT(Bottom, Top)                            \
1671 do {                                                            \
1672   if (yydebug)                                                  \
1673     yy_stack_print ((Bottom), (Top));                           \
1674 } while (YYID (0))
1677 /*------------------------------------------------.
1678 | Report that the YYRULE is going to be reduced.  |
1679 `------------------------------------------------*/
1681 #if (defined __STDC__ || defined __C99__FUNC__ \
1682      || defined __cplusplus || defined _MSC_VER)
1683 static void
1684 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
1685 #else
1686 static void
1687 yy_reduce_print (yyvsp, yylsp, yyrule)
1688     YYSTYPE *yyvsp;
1689     YYLTYPE *yylsp;
1690     int yyrule;
1691 #endif
1693   int yynrhs = yyr2[yyrule];
1694   int yyi;
1695   unsigned long int yylno = yyrline[yyrule];
1696   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1697              yyrule - 1, yylno);
1698   /* The symbols being reduced.  */
1699   for (yyi = 0; yyi < yynrhs; yyi++)
1700     {
1701       fprintf (stderr, "   $%d = ", yyi + 1);
1702       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1703                        &(yyvsp[(yyi + 1) - (yynrhs)])
1704                        , &(yylsp[(yyi + 1) - (yynrhs)])                );
1705       fprintf (stderr, "\n");
1706     }
1709 # define YY_REDUCE_PRINT(Rule)          \
1710 do {                                    \
1711   if (yydebug)                          \
1712     yy_reduce_print (yyvsp, yylsp, Rule); \
1713 } while (YYID (0))
1715 /* Nonzero means print parse trace.  It is left uninitialized so that
1716    multiple parsers can coexist.  */
1717 int yydebug;
1718 #else /* !YYDEBUG */
1719 # define YYDPRINTF(Args)
1720 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1721 # define YY_STACK_PRINT(Bottom, Top)
1722 # define YY_REDUCE_PRINT(Rule)
1723 #endif /* !YYDEBUG */
1726 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1727 #ifndef YYINITDEPTH
1728 # define YYINITDEPTH 200
1729 #endif
1731 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1732    if the built-in stack extension method is used).
1734    Do not make this value too large; the results are undefined if
1735    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1736    evaluated with infinite-precision integer arithmetic.  */
1738 #ifndef YYMAXDEPTH
1739 # define YYMAXDEPTH 10000
1740 #endif
1744 #if YYERROR_VERBOSE
1746 # ifndef yystrlen
1747 #  if defined __GLIBC__ && defined _STRING_H
1748 #   define yystrlen strlen
1749 #  else
1750 /* Return the length of YYSTR.  */
1751 #if (defined __STDC__ || defined __C99__FUNC__ \
1752      || defined __cplusplus || defined _MSC_VER)
1753 static YYSIZE_T
1754 yystrlen (const char *yystr)
1755 #else
1756 static YYSIZE_T
1757 yystrlen (yystr)
1758     const char *yystr;
1759 #endif
1761   YYSIZE_T yylen;
1762   for (yylen = 0; yystr[yylen]; yylen++)
1763     continue;
1764   return yylen;
1766 #  endif
1767 # endif
1769 # ifndef yystpcpy
1770 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1771 #   define yystpcpy stpcpy
1772 #  else
1773 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1774    YYDEST.  */
1775 #if (defined __STDC__ || defined __C99__FUNC__ \
1776      || defined __cplusplus || defined _MSC_VER)
1777 static char *
1778 yystpcpy (char *yydest, const char *yysrc)
1779 #else
1780 static char *
1781 yystpcpy (yydest, yysrc)
1782     char *yydest;
1783     const char *yysrc;
1784 #endif
1786   char *yyd = yydest;
1787   const char *yys = yysrc;
1789   while ((*yyd++ = *yys++) != '\0')
1790     continue;
1792   return yyd - 1;
1794 #  endif
1795 # endif
1797 # ifndef yytnamerr
1798 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1799    quotes and backslashes, so that it's suitable for yyerror.  The
1800    heuristic is that double-quoting is unnecessary unless the string
1801    contains an apostrophe, a comma, or backslash (other than
1802    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1803    null, do not copy; instead, return the length of what the result
1804    would have been.  */
1805 static YYSIZE_T
1806 yytnamerr (char *yyres, const char *yystr)
1808   if (*yystr == '"')
1809     {
1810       YYSIZE_T yyn = 0;
1811       char const *yyp = yystr;
1813       for (;;)
1814         switch (*++yyp)
1815           {
1816           case '\'':
1817           case ',':
1818             goto do_not_strip_quotes;
1820           case '\\':
1821             if (*++yyp != '\\')
1822               goto do_not_strip_quotes;
1823             /* Fall through.  */
1824           default:
1825             if (yyres)
1826               yyres[yyn] = *yyp;
1827             yyn++;
1828             break;
1830           case '"':
1831             if (yyres)
1832               yyres[yyn] = '\0';
1833             return yyn;
1834           }
1835     do_not_strip_quotes: ;
1836     }
1838   if (! yyres)
1839     return yystrlen (yystr);
1841   return yystpcpy (yyres, yystr) - yyres;
1843 # endif
1845 /* Copy into YYRESULT an error message about the unexpected token
1846    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1847    including the terminating null byte.  If YYRESULT is null, do not
1848    copy anything; just return the number of bytes that would be
1849    copied.  As a special case, return 0 if an ordinary "syntax error"
1850    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1851    size calculation.  */
1852 static YYSIZE_T
1853 yysyntax_error (char *yyresult, int yystate, int yychar)
1855   int yyn = yypact[yystate];
1857   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1858     return 0;
1859   else
1860     {
1861       int yytype = YYTRANSLATE (yychar);
1862       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1863       YYSIZE_T yysize = yysize0;
1864       YYSIZE_T yysize1;
1865       int yysize_overflow = 0;
1866       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1867       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1868       int yyx;
1870 # if 0
1871       /* This is so xgettext sees the translatable formats that are
1872          constructed on the fly.  */
1873       YY_("syntax error, unexpected %s");
1874       YY_("syntax error, unexpected %s, expecting %s");
1875       YY_("syntax error, unexpected %s, expecting %s or %s");
1876       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1877       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1878 # endif
1879       char *yyfmt;
1880       char const *yyf;
1881       static char const yyunexpected[] = "syntax error, unexpected %s";
1882       static char const yyexpecting[] = ", expecting %s";
1883       static char const yyor[] = " or %s";
1884       char yyformat[sizeof yyunexpected
1885                     + sizeof yyexpecting - 1
1886                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1887                        * (sizeof yyor - 1))];
1888       char const *yyprefix = yyexpecting;
1890       /* Start YYX at -YYN if negative to avoid negative indexes in
1891          YYCHECK.  */
1892       int yyxbegin = yyn < 0 ? -yyn : 0;
1894       /* Stay within bounds of both yycheck and yytname.  */
1895       int yychecklim = YYLAST - yyn + 1;
1896       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1897       int yycount = 1;
1899       yyarg[0] = yytname[yytype];
1900       yyfmt = yystpcpy (yyformat, yyunexpected);
1902       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1903         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1904           {
1905             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1906               {
1907                 yycount = 1;
1908                 yysize = yysize0;
1909                 yyformat[sizeof yyunexpected - 1] = '\0';
1910                 break;
1911               }
1912             yyarg[yycount++] = yytname[yyx];
1913             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1914             yysize_overflow |= (yysize1 < yysize);
1915             yysize = yysize1;
1916             yyfmt = yystpcpy (yyfmt, yyprefix);
1917             yyprefix = yyor;
1918           }
1920       yyf = YY_(yyformat);
1921       yysize1 = yysize + yystrlen (yyf);
1922       yysize_overflow |= (yysize1 < yysize);
1923       yysize = yysize1;
1925       if (yysize_overflow)
1926         return YYSIZE_MAXIMUM;
1928       if (yyresult)
1929         {
1930           /* Avoid sprintf, as that infringes on the user's name space.
1931              Don't have undefined behavior even if the translation
1932              produced a string with the wrong number of "%s"s.  */
1933           char *yyp = yyresult;
1934           int yyi = 0;
1935           while ((*yyp = *yyf) != '\0')
1936             {
1937               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1938                 {
1939                   yyp += yytnamerr (yyp, yyarg[yyi++]);
1940                   yyf += 2;
1941                 }
1942               else
1943                 {
1944                   yyp++;
1945                   yyf++;
1946                 }
1947             }
1948         }
1949       return yysize;
1950     }
1952 #endif /* YYERROR_VERBOSE */
1955 /*-----------------------------------------------.
1956 | Release the memory associated to this symbol.  |
1957 `-----------------------------------------------*/
1959 /*ARGSUSED*/
1960 #if (defined __STDC__ || defined __C99__FUNC__ \
1961      || defined __cplusplus || defined _MSC_VER)
1962 static void
1963 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1964 #else
1965 static void
1966 yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1967     const char *yymsg;
1968     int yytype;
1969     YYSTYPE *yyvaluep;
1970     YYLTYPE *yylocationp;
1971 #endif
1973   YYUSE (yyvaluep);
1974   YYUSE (yylocationp);
1976   if (!yymsg)
1977     yymsg = "Deleting";
1978   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1980   switch (yytype)
1981     {
1983       default:
1984         break;
1985     }
1989 /* Prevent warnings from -Wmissing-prototypes.  */
1991 #ifdef YYPARSE_PARAM
1992 #if defined __STDC__ || defined __cplusplus
1993 int yyparse (void *YYPARSE_PARAM);
1994 #else
1995 int yyparse ();
1996 #endif
1997 #else /* ! YYPARSE_PARAM */
1998 #if defined __STDC__ || defined __cplusplus
1999 int yyparse (void);
2000 #else
2001 int yyparse ();
2002 #endif
2003 #endif /* ! YYPARSE_PARAM */
2007 /* The look-ahead symbol.  */
2008 int yychar;
2010 /* The semantic value of the look-ahead symbol.  */
2011 YYSTYPE yylval;
2013 /* Number of syntax errors so far.  */
2014 int yynerrs;
2015 /* Location data for the look-ahead symbol.  */
2016 YYLTYPE yylloc;
2020 /*----------.
2021 | yyparse.  |
2022 `----------*/
2024 #ifdef YYPARSE_PARAM
2025 #if (defined __STDC__ || defined __C99__FUNC__ \
2026      || defined __cplusplus || defined _MSC_VER)
2028 yyparse (void *YYPARSE_PARAM)
2029 #else
2031 yyparse (YYPARSE_PARAM)
2032     void *YYPARSE_PARAM;
2033 #endif
2034 #else /* ! YYPARSE_PARAM */
2035 #if (defined __STDC__ || defined __C99__FUNC__ \
2036      || defined __cplusplus || defined _MSC_VER)
2038 yyparse (void)
2039 #else
2041 yyparse ()
2043 #endif
2044 #endif
2046   
2047   int yystate;
2048   int yyn;
2049   int yyresult;
2050   /* Number of tokens to shift before error messages enabled.  */
2051   int yyerrstatus;
2052   /* Look-ahead token as an internal (translated) token number.  */
2053   int yytoken = 0;
2054 #if YYERROR_VERBOSE
2055   /* Buffer for error messages, and its allocated size.  */
2056   char yymsgbuf[128];
2057   char *yymsg = yymsgbuf;
2058   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2059 #endif
2061   /* Three stacks and their tools:
2062      `yyss': related to states,
2063      `yyvs': related to semantic values,
2064      `yyls': related to locations.
2066      Refer to the stacks thru separate pointers, to allow yyoverflow
2067      to reallocate them elsewhere.  */
2069   /* The state stack.  */
2070   yytype_int16 yyssa[YYINITDEPTH];
2071   yytype_int16 *yyss = yyssa;
2072   yytype_int16 *yyssp;
2074   /* The semantic value stack.  */
2075   YYSTYPE yyvsa[YYINITDEPTH];
2076   YYSTYPE *yyvs = yyvsa;
2077   YYSTYPE *yyvsp;
2079   /* The location stack.  */
2080   YYLTYPE yylsa[YYINITDEPTH];
2081   YYLTYPE *yyls = yylsa;
2082   YYLTYPE *yylsp;
2083   /* The locations where the error started and ended.  */
2084   YYLTYPE yyerror_range[2];
2086 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
2088   YYSIZE_T yystacksize = YYINITDEPTH;
2090   /* The variables used to return semantic value and location from the
2091      action routines.  */
2092   YYSTYPE yyval;
2093   YYLTYPE yyloc;
2095   /* The number of symbols on the RHS of the reduced rule.
2096      Keep to zero when no symbol should be popped.  */
2097   int yylen = 0;
2099   YYDPRINTF ((stderr, "Starting parse\n"));
2101   yystate = 0;
2102   yyerrstatus = 0;
2103   yynerrs = 0;
2104   yychar = YYEMPTY;             /* Cause a token to be read.  */
2106   /* Initialize stack pointers.
2107      Waste one element of value and location stack
2108      so that they stay on the same level as the state stack.
2109      The wasted elements are never initialized.  */
2111   yyssp = yyss;
2112   yyvsp = yyvs;
2113   yylsp = yyls;
2114 #if YYLTYPE_IS_TRIVIAL
2115   /* Initialize the default location before parsing starts.  */
2116   yylloc.first_line   = yylloc.last_line   = 1;
2117   yylloc.first_column = yylloc.last_column = 0;
2118 #endif
2120   goto yysetstate;
2122 /*------------------------------------------------------------.
2123 | yynewstate -- Push a new state, which is found in yystate.  |
2124 `------------------------------------------------------------*/
2125  yynewstate:
2126   /* In all cases, when you get here, the value and location stacks
2127      have just been pushed.  So pushing a state here evens the stacks.  */
2128   yyssp++;
2130  yysetstate:
2131   *yyssp = yystate;
2133   if (yyss + yystacksize - 1 <= yyssp)
2134     {
2135       /* Get the current used size of the three stacks, in elements.  */
2136       YYSIZE_T yysize = yyssp - yyss + 1;
2138 #ifdef yyoverflow
2139       {
2140         /* Give user a chance to reallocate the stack.  Use copies of
2141            these so that the &'s don't force the real ones into
2142            memory.  */
2143         YYSTYPE *yyvs1 = yyvs;
2144         yytype_int16 *yyss1 = yyss;
2145         YYLTYPE *yyls1 = yyls;
2147         /* Each stack pointer address is followed by the size of the
2148            data in use in that stack, in bytes.  This used to be a
2149            conditional around just the two extra args, but that might
2150            be undefined if yyoverflow is a macro.  */
2151         yyoverflow (YY_("memory exhausted"),
2152                     &yyss1, yysize * sizeof (*yyssp),
2153                     &yyvs1, yysize * sizeof (*yyvsp),
2154                     &yyls1, yysize * sizeof (*yylsp),
2155                     &yystacksize);
2156         yyls = yyls1;
2157         yyss = yyss1;
2158         yyvs = yyvs1;
2159       }
2160 #else /* no yyoverflow */
2161 # ifndef YYSTACK_RELOCATE
2162       goto yyexhaustedlab;
2163 # else
2164       /* Extend the stack our own way.  */
2165       if (YYMAXDEPTH <= yystacksize)
2166         goto yyexhaustedlab;
2167       yystacksize *= 2;
2168       if (YYMAXDEPTH < yystacksize)
2169         yystacksize = YYMAXDEPTH;
2171       {
2172         yytype_int16 *yyss1 = yyss;
2173         union yyalloc *yyptr =
2174           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2175         if (! yyptr)
2176           goto yyexhaustedlab;
2177         YYSTACK_RELOCATE (yyss);
2178         YYSTACK_RELOCATE (yyvs);
2179         YYSTACK_RELOCATE (yyls);
2180 #  undef YYSTACK_RELOCATE
2181         if (yyss1 != yyssa)
2182           YYSTACK_FREE (yyss1);
2183       }
2184 # endif
2185 #endif /* no yyoverflow */
2187       yyssp = yyss + yysize - 1;
2188       yyvsp = yyvs + yysize - 1;
2189       yylsp = yyls + yysize - 1;
2191       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2192                   (unsigned long int) yystacksize));
2194       if (yyss + yystacksize - 1 <= yyssp)
2195         YYABORT;
2196     }
2198   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2200   goto yybackup;
2202 /*-----------.
2203 | yybackup.  |
2204 `-----------*/
2205 yybackup:
2207   /* Do appropriate processing given the current state.  Read a
2208      look-ahead token if we need one and don't already have one.  */
2210   /* First try to decide what to do without reference to look-ahead token.  */
2211   yyn = yypact[yystate];
2212   if (yyn == YYPACT_NINF)
2213     goto yydefault;
2215   /* Not known => get a look-ahead token if don't already have one.  */
2217   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
2218   if (yychar == YYEMPTY)
2219     {
2220       YYDPRINTF ((stderr, "Reading a token: "));
2221       yychar = YYLEX;
2222     }
2224   if (yychar <= YYEOF)
2225     {
2226       yychar = yytoken = YYEOF;
2227       YYDPRINTF ((stderr, "Now at end of input.\n"));
2228     }
2229   else
2230     {
2231       yytoken = YYTRANSLATE (yychar);
2232       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2233     }
2235   /* If the proper action on seeing token YYTOKEN is to reduce or to
2236      detect an error, take that action.  */
2237   yyn += yytoken;
2238   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2239     goto yydefault;
2240   yyn = yytable[yyn];
2241   if (yyn <= 0)
2242     {
2243       if (yyn == 0 || yyn == YYTABLE_NINF)
2244         goto yyerrlab;
2245       yyn = -yyn;
2246       goto yyreduce;
2247     }
2249   if (yyn == YYFINAL)
2250     YYACCEPT;
2252   /* Count tokens shifted since error; after three, turn off error
2253      status.  */
2254   if (yyerrstatus)
2255     yyerrstatus--;
2257   /* Shift the look-ahead token.  */
2258   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2260   /* Discard the shifted token unless it is eof.  */
2261   if (yychar != YYEOF)
2262     yychar = YYEMPTY;
2264   yystate = yyn;
2265   *++yyvsp = yylval;
2266   *++yylsp = yylloc;
2267   goto yynewstate;
2270 /*-----------------------------------------------------------.
2271 | yydefault -- do the default action for the current state.  |
2272 `-----------------------------------------------------------*/
2273 yydefault:
2274   yyn = yydefact[yystate];
2275   if (yyn == 0)
2276     goto yyerrlab;
2277   goto yyreduce;
2280 /*-----------------------------.
2281 | yyreduce -- Do a reduction.  |
2282 `-----------------------------*/
2283 yyreduce:
2284   /* yyn is the number of a rule to reduce with.  */
2285   yylen = yyr2[yyn];
2287   /* If YYLEN is nonzero, implement the default value of the action:
2288      `$$ = $1'.
2290      Otherwise, the following line sets YYVAL to garbage.
2291      This behavior is undocumented and Bison
2292      users should not rely upon it.  Assigning to YYVAL
2293      unconditionally makes the parser a bit smaller, and it avoids a
2294      GCC warning that YYVAL may be used uninitialized.  */
2295   yyval = yyvsp[1-yylen];
2297   /* Default location.  */
2298   YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
2299   YY_REDUCE_PRINT (yyn);
2300   switch (yyn)
2301     {
2302         case 2:
2303 #line 116 "parser.y"
2304     { root_node = astnode_create_list((yyvsp[(1) - (2)].node)); }
2305     break;
2307   case 3:
2308 #line 120 "parser.y"
2309     { ; }
2310     break;
2312   case 5:
2313 #line 125 "parser.y"
2314     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2315     break;
2317   case 6:
2318 #line 126 "parser.y"
2319     {
2320          if ((yyvsp[(1) - (2)].node) != NULL) { (yyval.node) = (yyvsp[(1) - (2)].node); astnode_add_sibling((yyval.node), (yyvsp[(2) - (2)].node)); }
2321          else { (yyval.node) = (yyvsp[(2) - (2)].node); }
2322         }
2323     break;
2325   case 7:
2326 #line 133 "parser.y"
2327     { (yyval.node) = (yyvsp[(1) - (2)].node); astnode_add_sibling((yyval.node), (yyvsp[(2) - (2)].node)); }
2328     break;
2330   case 8:
2331 #line 134 "parser.y"
2332     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2333     break;
2335   case 9:
2336 #line 138 "parser.y"
2337     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2338     break;
2340   case 10:
2341 #line 139 "parser.y"
2342     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2343     break;
2345   case 11:
2346 #line 140 "parser.y"
2347     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2348     break;
2350   case 12:
2351 #line 141 "parser.y"
2352     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2353     break;
2355   case 13:
2356 #line 142 "parser.y"
2357     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2358     break;
2360   case 14:
2361 #line 143 "parser.y"
2362     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2363     break;
2365   case 15:
2366 #line 144 "parser.y"
2367     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2368     break;
2370   case 16:
2371 #line 145 "parser.y"
2372     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2373     break;
2375   case 17:
2376 #line 146 "parser.y"
2377     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2378     break;
2380   case 18:
2381 #line 147 "parser.y"
2382     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2383     break;
2385   case 19:
2386 #line 148 "parser.y"
2387     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2388     break;
2390   case 20:
2391 #line 149 "parser.y"
2392     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2393     break;
2395   case 21:
2396 #line 150 "parser.y"
2397     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2398     break;
2400   case 22:
2401 #line 151 "parser.y"
2402     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2403     break;
2405   case 23:
2406 #line 152 "parser.y"
2407     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2408     break;
2410   case 24:
2411 #line 153 "parser.y"
2412     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2413     break;
2415   case 25:
2416 #line 154 "parser.y"
2417     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2418     break;
2420   case 26:
2421 #line 155 "parser.y"
2422     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2423     break;
2425   case 27:
2426 #line 156 "parser.y"
2427     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2428     break;
2430   case 28:
2431 #line 157 "parser.y"
2432     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2433     break;
2435   case 29:
2436 #line 158 "parser.y"
2437     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2438     break;
2440   case 30:
2441 #line 159 "parser.y"
2442     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2443     break;
2445   case 31:
2446 #line 160 "parser.y"
2447     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2448     break;
2450   case 32:
2451 #line 161 "parser.y"
2452     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2453     break;
2455   case 33:
2456 #line 162 "parser.y"
2457     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2458     break;
2460   case 34:
2461 #line 163 "parser.y"
2462     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2463     break;
2465   case 35:
2466 #line 164 "parser.y"
2467     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2468     break;
2470   case 36:
2471 #line 165 "parser.y"
2472     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2473     break;
2475   case 37:
2476 #line 166 "parser.y"
2477     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2478     break;
2480   case 38:
2481 #line 167 "parser.y"
2482     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2483     break;
2485   case 39:
2486 #line 168 "parser.y"
2487     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2488     break;
2490   case 40:
2491 #line 169 "parser.y"
2492     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2493     break;
2495   case 41:
2496 #line 170 "parser.y"
2497     { (yyval.node) = NULL; }
2498     break;
2500   case 42:
2501 #line 174 "parser.y"
2502     { (yyval.node) = astnode_create_org((yyvsp[(2) - (3)].node), (yyloc)); }
2503     break;
2505   case 43:
2506 #line 178 "parser.y"
2507     { (yyval.node) = astnode_create_align((yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
2508     break;
2510   case 44:
2511 #line 182 "parser.y"
2512     { (yyval.node) = astnode_create_warning((yyvsp[(2) - (3)].node), (yyloc)); }
2513     break;
2515   case 45:
2516 #line 186 "parser.y"
2517     { (yyval.node) = astnode_create_error((yyvsp[(2) - (3)].node), (yyloc)); }
2518     break;
2520   case 46:
2521 #line 190 "parser.y"
2522     { (yyval.node) = astnode_create_message((yyvsp[(2) - (3)].node), (yyloc)); }
2523     break;
2525   case 47:
2526 #line 194 "parser.y"
2527     { (yyval.node) = astnode_create_label((yyvsp[(2) - (5)].node)->label, (yyvsp[(3) - (5)].node), (yyvsp[(4) - (5)].node), (yyloc)); }
2528     break;
2530   case 48:
2531 #line 198 "parser.y"
2532     { (yyval.node) = (yyvsp[(2) - (2)].node); }
2533     break;
2535   case 49:
2536 #line 199 "parser.y"
2537     { (yyval.node) = NULL; }
2538     break;
2540   case 50:
2541 #line 203 "parser.y"
2542     { (yyval.node) = (yyvsp[(2) - (2)].node); }
2543     break;
2545   case 51:
2546 #line 204 "parser.y"
2547     { (yyval.node) = NULL; }
2548     break;
2550   case 52:
2551 #line 208 "parser.y"
2552     { (yyval.node) = astnode_create_while((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
2553     break;
2555   case 53:
2556 #line 212 "parser.y"
2557     { (yyval.node) = astnode_create_rept((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
2558     break;
2560   case 54:
2561 #line 216 "parser.y"
2562     { (yyval.node) = astnode_create_proc((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
2563     break;
2565   case 55:
2566 #line 220 "parser.y"
2567     { (yyval.node) = astnode_create_struc_decl((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
2568     break;
2570   case 56:
2571 #line 224 "parser.y"
2572     { (yyval.node) = astnode_create_union_decl((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
2573     break;
2575   case 57:
2576 #line 228 "parser.y"
2577     { (yyval.node) = astnode_create_enum_decl((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
2578     break;
2580   case 58:
2581 #line 232 "parser.y"
2582     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2583     break;
2585   case 59:
2586 #line 233 "parser.y"
2587     { (yyval.node) = (yyvsp[(1) - (2)].node); astnode_add_sibling((yyval.node), (yyvsp[(2) - (2)].node)); }
2588     break;
2590   case 60:
2591 #line 237 "parser.y"
2592     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2593     break;
2595   case 61:
2596 #line 238 "parser.y"
2597     { (yyval.node) = (yyvsp[(1) - (2)].node); }
2598     break;
2600   case 62:
2601 #line 242 "parser.y"
2602     { (yyval.node) = astnode_create_record_decl((yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
2603     break;
2605   case 63:
2606 #line 246 "parser.y"
2607     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2608     break;
2610   case 64:
2611 #line 247 "parser.y"
2612     { (yyval.node) = (yyvsp[(1) - (3)].node); astnode_add_sibling((yyval.node), (yyvsp[(3) - (3)].node)); }
2613     break;
2615   case 65:
2616 #line 251 "parser.y"
2617     { (yyval.node) = astnode_create_bitfield_decl((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2618     break;
2620   case 66:
2621 #line 255 "parser.y"
2622     { (yyval.node) = astnode_create_charmap((yyvsp[(2) - (3)].node), (yyloc)); }
2623     break;
2625   case 67:
2626 #line 259 "parser.y"
2627     { (yyval.node) = astnode_create_dataseg(0, (yyloc)); }
2628     break;
2630   case 68:
2631 #line 260 "parser.y"
2632     { (yyval.node) = astnode_create_dataseg(ZEROPAGE_FLAG, (yyloc)); }
2633     break;
2635   case 69:
2636 #line 263 "parser.y"
2637     { (yyval.node) = astnode_create_codeseg((yyloc)); }
2638     break;
2640   case 70:
2641 #line 267 "parser.y"
2642     { (yyval.node) = NULL; }
2643     break;
2645   case 71:
2646 #line 271 "parser.y"
2647     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2648     break;
2650   case 72:
2651 #line 275 "parser.y"
2652     { ; }
2653     break;
2655   case 73:
2656 #line 276 "parser.y"
2657     { ; }
2658     break;
2660   case 74:
2661 #line 280 "parser.y"
2662     { ; }
2663     break;
2665   case 75:
2666 #line 284 "parser.y"
2667     { (yyval.node) = (yyvsp[(1) - (2)].node); }
2668     break;
2670   case 76:
2671 #line 288 "parser.y"
2672     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (1)].mnemonic), IMPLIED_MODE, NULL, (yyloc)); }
2673     break;
2675   case 77:
2676 #line 289 "parser.y"
2677     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (2)].mnemonic), ACCUMULATOR_MODE, NULL, (yyloc)); }
2678     break;
2680   case 78:
2681 #line 290 "parser.y"
2682     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (3)].mnemonic), IMMEDIATE_MODE, (yyvsp[(3) - (3)].node), (yyloc)); }
2683     break;
2685   case 79:
2686 #line 291 "parser.y"
2687     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (2)].mnemonic), ABSOLUTE_MODE, (yyvsp[(2) - (2)].node), (yyloc)); }
2688     break;
2690   case 80:
2691 #line 292 "parser.y"
2692     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (4)].mnemonic), ABSOLUTE_X_MODE, (yyvsp[(2) - (4)].node), (yyloc)); }
2693     break;
2695   case 81:
2696 #line 293 "parser.y"
2697     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (4)].mnemonic), ABSOLUTE_Y_MODE, (yyvsp[(2) - (4)].node), (yyloc)); }
2698     break;
2700   case 82:
2701 #line 294 "parser.y"
2702     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (6)].mnemonic), PREINDEXED_INDIRECT_MODE, (yyvsp[(3) - (6)].node), (yyloc)); }
2703     break;
2705   case 83:
2706 #line 295 "parser.y"
2707     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (6)].mnemonic), POSTINDEXED_INDIRECT_MODE, (yyvsp[(3) - (6)].node), (yyloc)); }
2708     break;
2710   case 84:
2711 #line 296 "parser.y"
2712     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (4)].mnemonic), INDIRECT_MODE, (yyvsp[(3) - (4)].node), (yyloc)); }
2713     break;
2715   case 85:
2716 #line 300 "parser.y"
2717     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2718     break;
2720   case 86:
2721 #line 301 "parser.y"
2722     { (yyval.node) = astnode_create_sizeof((yyvsp[(2) - (2)].node), (yyloc)); }
2723     break;
2725   case 87:
2726 #line 302 "parser.y"
2727     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2728     break;
2730   case 88:
2731 #line 303 "parser.y"
2732     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2733     break;
2735   case 89:
2736 #line 304 "parser.y"
2737     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2738     break;
2740   case 90:
2741 #line 305 "parser.y"
2742     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2743     break;
2745   case 91:
2746 #line 306 "parser.y"
2747     { (yyval.node) = astnode_create_pc((yyloc)); }
2748     break;
2750   case 92:
2751 #line 307 "parser.y"
2752     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2753     break;
2755   case 93:
2756 #line 308 "parser.y"
2757     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2758     break;
2760   case 94:
2761 #line 309 "parser.y"
2762     { (yyval.node) = (yyvsp[(2) - (3)].node); }
2763     break;
2765   case 95:
2766 #line 310 "parser.y"
2767     { (yyval.node) = astnode_create_forward_branch("+", (yyloc)); }
2768     break;
2770   case 96:
2771 #line 311 "parser.y"
2772     { (yyval.node) = astnode_create_backward_branch("-", (yyloc)); }
2773     break;
2775   case 97:
2776 #line 312 "parser.y"
2777     { (yyval.node) = astnode_create_forward_branch((yyvsp[(1) - (1)].ident), (yyloc)); }
2778     break;
2780   case 98:
2781 #line 313 "parser.y"
2782     { (yyval.node) = astnode_create_backward_branch((yyvsp[(1) - (1)].ident), (yyloc)); }
2783     break;
2785   case 99:
2786 #line 314 "parser.y"
2787     { (yyval.node) = astnode_create_mask((yyvsp[(2) - (2)].node), (yyloc)); }
2788     break;
2790   case 100:
2791 #line 318 "parser.y"
2792     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2793     break;
2795   case 101:
2796 #line 319 "parser.y"
2797     { (yyval.node) = astnode_create_index((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
2798     break;
2800   case 102:
2801 #line 320 "parser.y"
2802     { (yyval.node) = astnode_create_index((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
2803     break;
2805   case 103:
2806 #line 324 "parser.y"
2807     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2808     break;
2810   case 104:
2811 #line 325 "parser.y"
2812     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2813     break;
2815   case 105:
2816 #line 329 "parser.y"
2817     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2818     break;
2820   case 106:
2821 #line 330 "parser.y"
2822     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2823     break;
2825   case 107:
2826 #line 334 "parser.y"
2827     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2828     break;
2830   case 108:
2831 #line 335 "parser.y"
2832     { (yyval.node) = NULL; }
2833     break;
2835   case 109:
2836 #line 339 "parser.y"
2837     { (yyval.node) = astnode_create_scope((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2838     break;
2840   case 110:
2841 #line 343 "parser.y"
2842     { (yyval.node) = astnode_create_dot((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2843     break;
2845   case 111:
2846 #line 344 "parser.y"
2847     { (yyval.node) = astnode_create_dot((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2848     break;
2850   case 112:
2851 #line 348 "parser.y"
2852     { (yyval.node) = astnode_create_struc((yyvsp[(2) - (3)].node), (yyloc)); }
2853     break;
2855   case 113:
2856 #line 352 "parser.y"
2857     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2858     break;
2860   case 114:
2861 #line 353 "parser.y"
2862     { (yyval.node) = NULL; }
2863     break;
2865   case 115:
2866 #line 357 "parser.y"
2867     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2868     break;
2870   case 116:
2871 #line 358 "parser.y"
2872     { (yyval.node) = (yyvsp[(1) - (3)].node); astnode_add_sibling((yyval.node), (yyvsp[(3) - (3)].node)); }
2873     break;
2875   case 117:
2876 #line 362 "parser.y"
2877     { (yyval.node) = (yyvsp[(1) - (1)].node); }
2878     break;
2880   case 118:
2881 #line 363 "parser.y"
2882     { (yyval.node) = astnode_create_null((yyloc)); }
2883     break;
2885   case 119:
2886 #line 367 "parser.y"
2887     { (yyval.node) = astnode_create_local_id((yyvsp[(1) - (1)].ident), (yyloc)); }
2888     break;
2890   case 120:
2891 #line 371 "parser.y"
2892     { (yyval.node) = astnode_create_arithmetic(PLUS_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2893     break;
2895   case 121:
2896 #line 372 "parser.y"
2897     { (yyval.node) = astnode_create_arithmetic(MINUS_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2898     break;
2900   case 122:
2901 #line 373 "parser.y"
2902     { (yyval.node) = astnode_create_arithmetic(MUL_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2903     break;
2905   case 123:
2906 #line 374 "parser.y"
2907     { (yyval.node) = astnode_create_arithmetic(DIV_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2908     break;
2910   case 124:
2911 #line 375 "parser.y"
2912     { (yyval.node) = astnode_create_arithmetic(MOD_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2913     break;
2915   case 125:
2916 #line 376 "parser.y"
2917     { (yyval.node) = astnode_create_arithmetic(AND_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2918     break;
2920   case 126:
2921 #line 377 "parser.y"
2922     { (yyval.node) = astnode_create_arithmetic(OR_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2923     break;
2925   case 127:
2926 #line 378 "parser.y"
2927     { (yyval.node) = astnode_create_arithmetic(XOR_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2928     break;
2930   case 128:
2931 #line 379 "parser.y"
2932     { (yyval.node) = astnode_create_arithmetic(SHL_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2933     break;
2935   case 129:
2936 #line 380 "parser.y"
2937     { (yyval.node) = astnode_create_arithmetic(SHR_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2938     break;
2940   case 130:
2941 #line 381 "parser.y"
2942     { (yyval.node) = astnode_create_arithmetic(NEG_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
2943     break;
2945   case 131:
2946 #line 382 "parser.y"
2947     { (yyval.node) = astnode_create_arithmetic(NOT_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
2948     break;
2950   case 132:
2951 #line 383 "parser.y"
2952     { (yyval.node) = astnode_create_arithmetic(BANK_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
2953     break;
2955   case 133:
2956 #line 384 "parser.y"
2957     { (yyval.node) = astnode_create_arithmetic(LO_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
2958     break;
2960   case 134:
2961 #line 385 "parser.y"
2962     { (yyval.node) = astnode_create_arithmetic(HI_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
2963     break;
2965   case 135:
2966 #line 386 "parser.y"
2967     { (yyval.node) = astnode_create_arithmetic(UMINUS_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
2968     break;
2970   case 136:
2971 #line 390 "parser.y"
2972     { (yyval.node) = astnode_create_arithmetic(EQ_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2973     break;
2975   case 137:
2976 #line 391 "parser.y"
2977     { (yyval.node) = astnode_create_arithmetic(NE_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2978     break;
2980   case 138:
2981 #line 392 "parser.y"
2982     { (yyval.node) = astnode_create_arithmetic(GT_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2983     break;
2985   case 139:
2986 #line 393 "parser.y"
2987     { (yyval.node) = astnode_create_arithmetic(LT_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2988     break;
2990   case 140:
2991 #line 394 "parser.y"
2992     { (yyval.node) = astnode_create_arithmetic(GE_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2993     break;
2995   case 141:
2996 #line 395 "parser.y"
2997     { (yyval.node) = astnode_create_arithmetic(LE_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
2998     break;
3000   case 142:
3001 #line 399 "parser.y"
3002     { (yyval.node) = astnode_create_label((yyvsp[(1) - (1)].label), NULL, NULL, (yyloc)); }
3003     break;
3005   case 143:
3006 #line 400 "parser.y"
3007     { (yyval.node) = astnode_create_local_label((yyvsp[(1) - (1)].label), (yyloc)); }
3008     break;
3010   case 144:
3011 #line 401 "parser.y"
3012     { (yyval.node) = astnode_create_forward_branch_decl("+", (yyloc)); }
3013     break;
3015   case 145:
3016 #line 402 "parser.y"
3017     { (yyval.node) = astnode_create_backward_branch_decl("-", (yyloc)); }
3018     break;
3020   case 146:
3021 #line 403 "parser.y"
3022     { (yyval.node) = astnode_create_forward_branch_decl((yyvsp[(1) - (1)].ident), (yyloc)); }
3023     break;
3025   case 147:
3026 #line 404 "parser.y"
3027     { (yyval.node) = astnode_create_backward_branch_decl((yyvsp[(1) - (1)].ident), (yyloc)); }
3028     break;
3030   case 148:
3031 #line 408 "parser.y"
3032     { (yyval.node) = astnode_create_identifier((yyvsp[(1) - (1)].ident), (yyloc)); }
3033     break;
3035   case 149:
3036 #line 412 "parser.y"
3037     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3038     break;
3040   case 150:
3041 #line 413 "parser.y"
3042     { (yyval.node) = astnode_create_null((yyloc)); }
3043     break;
3045   case 151:
3046 #line 417 "parser.y"
3047     { (yyval.node) = astnode_create_integer((yyvsp[(1) - (1)].integer), (yyloc)); }
3048     break;
3050   case 152:
3051 #line 418 "parser.y"
3052     { (yyval.node) = astnode_create_string((yyvsp[(1) - (1)].string), (yyloc)); }
3053     break;
3055   case 153:
3056 #line 422 "parser.y"
3057     { (yyval.node) = astnode_create_if((yyvsp[(2) - (8)].node), (yyvsp[(4) - (8)].node), (yyvsp[(5) - (8)].node), (yyvsp[(6) - (8)].node), (yyloc)); }
3058     break;
3060   case 154:
3061 #line 426 "parser.y"
3062     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3063     break;
3065   case 155:
3066 #line 427 "parser.y"
3067     { (yyval.node) = NULL; }
3068     break;
3070   case 156:
3071 #line 431 "parser.y"
3072     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3073     break;
3075   case 157:
3076 #line 432 "parser.y"
3077     { (yyval.node) = (yyvsp[(1) - (2)].node); astnode_add_sibling((yyval.node), (yyvsp[(2) - (2)].node)); }
3078     break;
3080   case 158:
3081 #line 436 "parser.y"
3082     { (yyval.node) = astnode_create_case((yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
3083     break;
3085   case 159:
3086 #line 440 "parser.y"
3087     { (yyval.node) = (yyvsp[(3) - (3)].node); }
3088     break;
3090   case 160:
3091 #line 441 "parser.y"
3092     { (yyval.node) = NULL; }
3093     break;
3095   case 161:
3096 #line 445 "parser.y"
3097     { (yyval.node) = astnode_create_ifdef((yyvsp[(2) - (7)].node), (yyvsp[(4) - (7)].node), (yyvsp[(5) - (7)].node), (yyloc)); }
3098     break;
3100   case 162:
3101 #line 449 "parser.y"
3102     { (yyval.node) = astnode_create_ifndef((yyvsp[(2) - (7)].node), (yyvsp[(4) - (7)].node), (yyvsp[(5) - (7)].node), (yyloc)); }
3103     break;
3105   case 163:
3106 #line 453 "parser.y"
3107     { (yyval.node) = (yyvsp[(1) - (2)].node); }
3108     break;
3110   case 164:
3111 #line 454 "parser.y"
3112     { (yyval.node) = (yyvsp[(1) - (2)].node); }
3113     break;
3115   case 165:
3116 #line 458 "parser.y"
3117     { (yyval.node) = astnode_create_var_decl(0, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), (yyloc)); }
3118     break;
3120   case 166:
3121 #line 459 "parser.y"
3122     { (yyval.node) = astnode_create_var_decl(ZEROPAGE_FLAG, (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
3123     break;
3125   case 167:
3126 #line 460 "parser.y"
3127     { (yyval.node) = astnode_create_var_decl(PUBLIC_FLAG, (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
3128     break;
3130   case 168:
3131 #line 461 "parser.y"
3132     { (yyval.node) = astnode_create_var_decl(ZEROPAGE_FLAG | PUBLIC_FLAG, (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
3133     break;
3135   case 169:
3136 #line 462 "parser.y"
3137     { (yyval.node) = astnode_create_var_decl(PUBLIC_FLAG | ZEROPAGE_FLAG, (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
3138     break;
3140   case 170:
3141 #line 466 "parser.y"
3142     { (yyval.node) = astnode_create_data((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), (yyloc)); }
3143     break;
3145   case 171:
3146 #line 467 "parser.y"
3147     { (yyval.node) = astnode_create_storage((yyvsp[(1) - (1)].node), NULL, (yyloc)); }
3148     break;
3150   case 172:
3151 #line 468 "parser.y"
3152     { (yyval.node) = astnode_create_storage((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
3153     break;
3155   case 173:
3156 #line 472 "parser.y"
3157     { (yyval.node) = astnode_create_datatype(BYTE_DATATYPE, NULL, (yyloc)); }
3158     break;
3160   case 174:
3161 #line 473 "parser.y"
3162     { (yyval.node) = astnode_create_datatype(CHAR_DATATYPE, NULL, (yyloc)); }
3163     break;
3165   case 175:
3166 #line 474 "parser.y"
3167     { (yyval.node) = astnode_create_datatype(WORD_DATATYPE, NULL, (yyloc)); }
3168     break;
3170   case 176:
3171 #line 475 "parser.y"
3172     { (yyval.node) = astnode_create_datatype(DWORD_DATATYPE, NULL, (yyloc)); }
3173     break;
3175   case 177:
3176 #line 476 "parser.y"
3177     { (yyval.node) = astnode_create_datatype(USER_DATATYPE, (yyvsp[(2) - (2)].node), (yyloc)); }
3178     break;
3180   case 178:
3181 #line 477 "parser.y"
3182     { (yyval.node) = astnode_create_datatype(USER_DATATYPE, (yyvsp[(2) - (2)].node), (yyloc)); }
3183     break;
3185   case 179:
3186 #line 481 "parser.y"
3187     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3188     break;
3190   case 180:
3191 #line 482 "parser.y"
3192     { (yyval.node) = (yyvsp[(1) - (3)].node); astnode_add_sibling((yyval.node), (yyvsp[(3) - (3)].node)); }
3193     break;
3195   case 181:
3196 #line 486 "parser.y"
3197     { (yyval.node) = astnode_create_incsrc((yyvsp[(2) - (3)].node), (yyloc)); handle_incsrc((yyval.node)); }
3198     break;
3200   case 182:
3201 #line 490 "parser.y"
3202     { (yyval.node) = astnode_create_incbin((yyvsp[(2) - (3)].node), (yyloc)); handle_incbin((yyval.node)); }
3203     break;
3205   case 183:
3206 #line 494 "parser.y"
3207     { (yyval.node) = astnode_create_string((yyvsp[(1) - (1)].string), (yyloc)); }
3208     break;
3210   case 184:
3211 #line 495 "parser.y"
3212     { (yyval.node) = astnode_create_file_path((yyvsp[(1) - (1)].string), (yyloc)); }
3213     break;
3215   case 185:
3216 #line 499 "parser.y"
3217     { (yyval.node) = astnode_create_macro_decl((yyvsp[(2) - (7)].node), (yyvsp[(3) - (7)].node), (yyvsp[(5) - (7)].node), (yyloc)); }
3218     break;
3220   case 186:
3221 #line 503 "parser.y"
3222     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3223     break;
3225   case 187:
3226 #line 504 "parser.y"
3227     { (yyval.node) = NULL; }
3228     break;
3230   case 188:
3231 #line 508 "parser.y"
3232     { (yyval.node) = astnode_create_macro((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyloc)); }
3233     break;
3235   case 189:
3236 #line 512 "parser.y"
3237     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3238     break;
3240   case 190:
3241 #line 513 "parser.y"
3242     { (yyval.node) = NULL; }
3243     break;
3245   case 191:
3246 #line 517 "parser.y"
3247     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3248     break;
3250   case 192:
3251 #line 518 "parser.y"
3252     { (yyval.node) = (yyvsp[(1) - (3)].node); astnode_add_sibling((yyval.node), (yyvsp[(3) - (3)].node)); }
3253     break;
3255   case 193:
3256 #line 522 "parser.y"
3257     { (yyval.node) = astnode_create_equ((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
3258     break;
3260   case 194:
3261 #line 526 "parser.y"
3262     { (yyval.node) = astnode_create_assign((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
3263     break;
3265   case 195:
3266 #line 530 "parser.y"
3267     { (yyval.node) = astnode_create_equ((yyvsp[(2) - (3)].node), astnode_create_integer(0, (yyloc)), (yyloc)); }
3268     break;
3270   case 196:
3271 #line 531 "parser.y"
3272     { (yyval.node) = astnode_create_equ((yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
3273     break;
3275   case 197:
3276 #line 535 "parser.y"
3277     { (yyval.node) = astnode_create_public((yyvsp[(2) - (3)].node), (yyloc)); }
3278     break;
3280   case 198:
3281 #line 539 "parser.y"
3282     { (yyval.node) = astnode_create_extrn((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyvsp[(5) - (6)].node), (yyloc)); }
3283     break;
3285   case 199:
3286 #line 543 "parser.y"
3287     { (yyval.node) = (yyvsp[(2) - (2)].node); }
3288     break;
3290   case 200:
3291 #line 544 "parser.y"
3292     { (yyval.node) = NULL; }
3293     break;
3295   case 201:
3296 #line 548 "parser.y"
3297     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3298     break;
3300   case 202:
3301 #line 549 "parser.y"
3302     { (yyval.node) = astnode_create_datatype(USER_DATATYPE, (yyvsp[(1) - (1)].node), (yyloc)); }
3303     break;
3305   case 203:
3306 #line 550 "parser.y"
3307     { (yyval.node) = astnode_create_integer(PROC_SYMBOL, (yyloc)); }
3308     break;
3310   case 204:
3311 #line 551 "parser.y"
3312     { (yyval.node) = astnode_create_integer(LABEL_SYMBOL, (yyloc)); }
3313     break;
3315   case 205:
3316 #line 555 "parser.y"
3317     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3318     break;
3320   case 206:
3321 #line 556 "parser.y"
3322     { (yyval.node) = (yyvsp[(1) - (1)].node); }
3323     break;
3325   case 207:
3326 #line 560 "parser.y"
3327     { (yyval.node) = astnode_create_var_decl(0, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), (yyloc)); }
3328     break;
3330   case 208:
3331 #line 561 "parser.y"
3332     { (yyval.node) = astnode_create_var_decl(ZEROPAGE_FLAG, (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
3333     break;
3335   case 209:
3336 #line 562 "parser.y"
3337     { (yyval.node) = astnode_create_var_decl(PUBLIC_FLAG, (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
3338     break;
3340   case 210:
3341 #line 563 "parser.y"
3342     { (yyval.node) = astnode_create_var_decl(ZEROPAGE_FLAG | PUBLIC_FLAG, (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
3343     break;
3345   case 211:
3346 #line 564 "parser.y"
3347     { (yyval.node) = astnode_create_var_decl(PUBLIC_FLAG | ZEROPAGE_FLAG, (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
3348     break;
3350   case 212:
3351 #line 568 "parser.y"
3352     { (yyval.node) = astnode_create_storage((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyloc)); }
3353     break;
3355   case 213:
3356 #line 572 "parser.y"
3357     { (yyval.node) = astnode_create_datatype(BYTE_DATATYPE, NULL, (yyloc)); }
3358     break;
3360   case 214:
3361 #line 573 "parser.y"
3362     { (yyval.node) = astnode_create_datatype(WORD_DATATYPE, NULL, (yyloc)); }
3363     break;
3365   case 215:
3366 #line 574 "parser.y"
3367     { (yyval.node) = astnode_create_datatype(DWORD_DATATYPE, NULL, (yyloc)); }
3368     break;
3371 /* Line 1267 of yacc.c.  */
3372 #line 3330 "parser.c"
3373       default: break;
3374     }
3375   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3377   YYPOPSTACK (yylen);
3378   yylen = 0;
3379   YY_STACK_PRINT (yyss, yyssp);
3381   *++yyvsp = yyval;
3382   *++yylsp = yyloc;
3384   /* Now `shift' the result of the reduction.  Determine what state
3385      that goes to, based on the state we popped back to and the rule
3386      number reduced by.  */
3388   yyn = yyr1[yyn];
3390   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3391   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3392     yystate = yytable[yystate];
3393   else
3394     yystate = yydefgoto[yyn - YYNTOKENS];
3396   goto yynewstate;
3399 /*------------------------------------.
3400 | yyerrlab -- here on detecting error |
3401 `------------------------------------*/
3402 yyerrlab:
3403   /* If not already recovering from an error, report this error.  */
3404   if (!yyerrstatus)
3405     {
3406       ++yynerrs;
3407 #if ! YYERROR_VERBOSE
3408       yyerror (YY_("syntax error"));
3409 #else
3410       {
3411         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
3412         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
3413           {
3414             YYSIZE_T yyalloc = 2 * yysize;
3415             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
3416               yyalloc = YYSTACK_ALLOC_MAXIMUM;
3417             if (yymsg != yymsgbuf)
3418               YYSTACK_FREE (yymsg);
3419             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
3420             if (yymsg)
3421               yymsg_alloc = yyalloc;
3422             else
3423               {
3424                 yymsg = yymsgbuf;
3425                 yymsg_alloc = sizeof yymsgbuf;
3426               }
3427           }
3429         if (0 < yysize && yysize <= yymsg_alloc)
3430           {
3431             (void) yysyntax_error (yymsg, yystate, yychar);
3432             yyerror (yymsg);
3433           }
3434         else
3435           {
3436             yyerror (YY_("syntax error"));
3437             if (yysize != 0)
3438               goto yyexhaustedlab;
3439           }
3440       }
3441 #endif
3442     }
3444   yyerror_range[0] = yylloc;
3446   if (yyerrstatus == 3)
3447     {
3448       /* If just tried and failed to reuse look-ahead token after an
3449          error, discard it.  */
3451       if (yychar <= YYEOF)
3452         {
3453           /* Return failure if at end of input.  */
3454           if (yychar == YYEOF)
3455             YYABORT;
3456         }
3457       else
3458         {
3459           yydestruct ("Error: discarding",
3460                       yytoken, &yylval, &yylloc);
3461           yychar = YYEMPTY;
3462         }
3463     }
3465   /* Else will try to reuse look-ahead token after shifting the error
3466      token.  */
3467   goto yyerrlab1;
3470 /*---------------------------------------------------.
3471 | yyerrorlab -- error raised explicitly by YYERROR.  |
3472 `---------------------------------------------------*/
3473 yyerrorlab:
3475   /* Pacify compilers like GCC when the user code never invokes
3476      YYERROR and the label yyerrorlab therefore never appears in user
3477      code.  */
3478   if (/*CONSTCOND*/ 0)
3479      goto yyerrorlab;
3481   yyerror_range[0] = yylsp[1-yylen];
3482   /* Do not reclaim the symbols of the rule which action triggered
3483      this YYERROR.  */
3484   YYPOPSTACK (yylen);
3485   yylen = 0;
3486   YY_STACK_PRINT (yyss, yyssp);
3487   yystate = *yyssp;
3488   goto yyerrlab1;
3491 /*-------------------------------------------------------------.
3492 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3493 `-------------------------------------------------------------*/
3494 yyerrlab1:
3495   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3497   for (;;)
3498     {
3499       yyn = yypact[yystate];
3500       if (yyn != YYPACT_NINF)
3501         {
3502           yyn += YYTERROR;
3503           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3504             {
3505               yyn = yytable[yyn];
3506               if (0 < yyn)
3507                 break;
3508             }
3509         }
3511       /* Pop the current state because it cannot handle the error token.  */
3512       if (yyssp == yyss)
3513         YYABORT;
3515       yyerror_range[0] = *yylsp;
3516       yydestruct ("Error: popping",
3517                   yystos[yystate], yyvsp, yylsp);
3518       YYPOPSTACK (1);
3519       yystate = *yyssp;
3520       YY_STACK_PRINT (yyss, yyssp);
3521     }
3523   if (yyn == YYFINAL)
3524     YYACCEPT;
3526   *++yyvsp = yylval;
3528   yyerror_range[1] = yylloc;
3529   /* Using YYLLOC is tempting, but would change the location of
3530      the look-ahead.  YYLOC is available though.  */
3531   YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
3532   *++yylsp = yyloc;
3534   /* Shift the error token.  */
3535   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3537   yystate = yyn;
3538   goto yynewstate;
3541 /*-------------------------------------.
3542 | yyacceptlab -- YYACCEPT comes here.  |
3543 `-------------------------------------*/
3544 yyacceptlab:
3545   yyresult = 0;
3546   goto yyreturn;
3548 /*-----------------------------------.
3549 | yyabortlab -- YYABORT comes here.  |
3550 `-----------------------------------*/
3551 yyabortlab:
3552   yyresult = 1;
3553   goto yyreturn;
3555 #ifndef yyoverflow
3556 /*-------------------------------------------------.
3557 | yyexhaustedlab -- memory exhaustion comes here.  |
3558 `-------------------------------------------------*/
3559 yyexhaustedlab:
3560   yyerror (YY_("memory exhausted"));
3561   yyresult = 2;
3562   /* Fall through.  */
3563 #endif
3565 yyreturn:
3566   if (yychar != YYEOF && yychar != YYEMPTY)
3567      yydestruct ("Cleanup: discarding lookahead",
3568                  yytoken, &yylval, &yylloc);
3569   /* Do not reclaim the symbols of the rule which action triggered
3570      this YYABORT or YYACCEPT.  */
3571   YYPOPSTACK (yylen);
3572   YY_STACK_PRINT (yyss, yyssp);
3573   while (yyssp != yyss)
3574     {
3575       yydestruct ("Cleanup: popping",
3576                   yystos[*yyssp], yyvsp, yylsp);
3577       YYPOPSTACK (1);
3578     }
3579 #ifndef yyoverflow
3580   if (yyss != yyssa)
3581     YYSTACK_FREE (yyss);
3582 #endif
3583 #if YYERROR_VERBOSE
3584   if (yymsg != yymsgbuf)
3585     YYSTACK_FREE (yymsg);
3586 #endif
3587   /* Make sure YYID is used.  */
3588   return YYID (yyresult);
3592 #line 576 "parser.y"
3595  * Takes care of switching to a new scanner input stream when a "incsrc" statement
3596  * has been encountered.
3597  * The current stream is pushed on a stack, and will be popped when EOF is reached
3598  * in the new stream.
3599  * @@param n A node of type INCSRC_NODE
3600  */
3601 void handle_incsrc(astnode *n)
3603     char errs[512];
3604     /* Get the node which describes the file to include */
3605     astnode *file = astnode_get_child(n, 0);
3607     switch (astnode_get_type(file)) {
3608         case STRING_NODE:
3609         /* TODO: add path searching */
3610         case FILE_PATH_NODE:
3611         switch (yypushandrestart(file->string)) {
3612             case 0:
3613             /* Success */
3614             break;
3615             case 1:
3616             /* Failed to open file */
3617             sprintf(errs, "could not open '%s' for reading", file->string);
3618             yyerror(errs);
3619             break;
3620             case 2:
3621             /* Stack overflow */
3622             yyerror("Maximum include nesting level reached");
3623             break;
3624         }
3625         break;
3627         default: break;
3628     }
3631 // TODO: This shouldn't be done here but rather in astproc module.
3634  * Takes care of including the binary contents of the file specified by a parsed
3635  * "incbin" statement.
3636  * Calls yyerror() if the file can't be included for some reason.
3637  * @@param n A node of type INCBIN_NODE
3638  */
3639 void handle_incbin(astnode *n)
3641     FILE *fp;
3642     unsigned char *data;
3643     int size;
3644     char errs[512];
3645     /* Get the node which describes the file to include */
3646     astnode *file = astnode_get_child(n, 0);
3647     const char *filename = file->string;
3649     switch (astnode_get_type(file)) {
3650         case STRING_NODE:
3651         /* TODO: add path searching */
3652         case FILE_PATH_NODE:
3653         /* Attempt to open file */
3654         fp = fopen(filename, "rb");
3655         if (!fp && (filename[0] != '/')) {
3656             /* Try search paths */
3657             /* ### copied from scanner.l -- generalize */
3658             int i;
3659             for (i = 0; i < xasm_args.include_path_count; ++i) {
3660                 const char *include_path = xasm_args.include_paths[i];
3661                 char *path = (char *)malloc(
3662                     strlen(include_path) + strlen("/") + strlen(filename) + 1);
3663                 strcpy(path, include_path);
3664                 strcat(path, "/");
3665                 strcat(path, filename);
3666                 fp = fopen(path, "rb");
3667                 free(path);
3668                 if (fp)
3669                     break;
3670             }
3671         }
3672         if (fp) {
3673             /* Get filesize */
3674             fseek(fp, 0, SEEK_END);
3675             size = ftell(fp);
3676             rewind(fp);
3677             if (size > 0) {
3678                 /* Allocate buffer to hold file contents */
3679                 data = (unsigned char *)malloc(size);
3680                 /* Read file contents into buffer */
3681                 fread(data, 1, size, fp);
3682                 /* Insert binary node */
3683                 astnode_add_sibling(n, astnode_create_binary(data, size, n->loc) );
3684             }
3685             /* Close file */
3686             fclose(fp);
3687         }
3688         else {
3689             /* Couldn't open file */
3690             sprintf(errs, "could not open '%s' for reading", file->string);
3691             yyerror(errs);
3692         }
3693         break;
3695         default: break;
3696     }
3704 @ability to generate pure 6502 binary (--pure-binary switch)
3706 text
3707 @d210 1
3708 a210 1
3709  * $Id: parser.y,v 1.11 2007/08/11 01:25:50 khansen Exp khansen $
3710 d212 3
3711 d258 1
3712 a258 1
3713 void yyerror(char *);   /* In lexer */
3714 d260 1
3715 a260 1
3716 int yypushandrestart(char *);   /* In lexer */
3717 d289 1
3718 a289 1
3719 #line 59 "parser.y"
3720 d293 3
3721 a295 3
3722     char *string;
3723     char *label;
3724     char *ident;
3725 d299 1
3726 a299 1
3727 #line 297 "parser.c"
3728 d324 1
3729 a324 1
3730 #line 322 "parser.c"
3731 d700 22
3732 a721 22
3733        0,   113,   113,   117,   118,   122,   123,   130,   131,   135,
3734      136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
3735      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
3736      156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
3737      166,   167,   171,   175,   179,   183,   187,   191,   195,   196,
3738      200,   201,   205,   209,   213,   217,   221,   225,   229,   230,
3739      234,   235,   239,   243,   244,   248,   252,   256,   257,   260,
3740      264,   268,   272,   273,   277,   281,   285,   286,   287,   288,
3741      289,   290,   291,   292,   293,   297,   298,   299,   300,   301,
3742      302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
3743      315,   316,   317,   321,   322,   326,   327,   331,   332,   336,
3744      340,   341,   345,   349,   350,   354,   355,   359,   360,   364,
3745      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
3746      378,   379,   380,   381,   382,   383,   387,   388,   389,   390,
3747      391,   392,   396,   397,   398,   399,   400,   401,   405,   409,
3748      410,   414,   415,   419,   423,   424,   428,   429,   433,   437,
3749      438,   442,   446,   450,   451,   455,   456,   457,   458,   459,
3750      463,   464,   465,   469,   470,   471,   472,   473,   474,   478,
3751      479,   483,   487,   491,   492,   496,   500,   501,   505,   509,
3752      510,   514,   515,   519,   523,   527,   528,   532,   536,   540,
3753      541,   545,   546,   547,   548,   552,   553,   557,   558,   559,
3754      560,   561,   565,   569,   570,   571
3755 d2260 1
3756 a2260 1
3757 #line 113 "parser.y"
3758 d2265 1
3759 a2265 1
3760 #line 117 "parser.y"
3761 d2270 1
3762 a2270 1
3763 #line 122 "parser.y"
3764 d2275 1
3765 a2275 1
3766 #line 123 "parser.y"
3767 d2283 1
3768 a2283 1
3769 #line 130 "parser.y"
3770 d2288 1
3771 a2288 1
3772 #line 131 "parser.y"
3773 d2293 1
3774 a2293 1
3775 #line 135 "parser.y"
3776 d2298 1
3777 a2298 1
3778 #line 136 "parser.y"
3779 d2303 1
3780 a2303 1
3781 #line 137 "parser.y"
3782 d2308 1
3783 a2308 1
3784 #line 138 "parser.y"
3785 d2313 1
3786 a2313 1
3787 #line 139 "parser.y"
3788 d2318 1
3789 a2318 1
3790 #line 140 "parser.y"
3791 d2323 1
3792 a2323 1
3793 #line 141 "parser.y"
3794 d2328 1
3795 a2328 1
3796 #line 142 "parser.y"
3797 d2333 1
3798 a2333 1
3799 #line 143 "parser.y"
3800 d2338 1
3801 a2338 1
3802 #line 144 "parser.y"
3803 d2343 1
3804 a2343 1
3805 #line 145 "parser.y"
3806 d2348 1
3807 a2348 1
3808 #line 146 "parser.y"
3809 d2353 1
3810 a2353 1
3811 #line 147 "parser.y"
3812 d2358 1
3813 a2358 1
3814 #line 148 "parser.y"
3815 d2363 1
3816 a2363 1
3817 #line 149 "parser.y"
3818 d2368 1
3819 a2368 1
3820 #line 150 "parser.y"
3821 d2373 1
3822 a2373 1
3823 #line 151 "parser.y"
3824 d2378 1
3825 a2378 1
3826 #line 152 "parser.y"
3827 d2383 1
3828 a2383 1
3829 #line 153 "parser.y"
3830 d2388 1
3831 a2388 1
3832 #line 154 "parser.y"
3833 d2393 1
3834 a2393 1
3835 #line 155 "parser.y"
3836 d2398 1
3837 a2398 1
3838 #line 156 "parser.y"
3839 d2403 1
3840 a2403 1
3841 #line 157 "parser.y"
3842 d2408 1
3843 a2408 1
3844 #line 158 "parser.y"
3845 d2413 1
3846 a2413 1
3847 #line 159 "parser.y"
3848 d2418 1
3849 a2418 1
3850 #line 160 "parser.y"
3851 d2423 1
3852 a2423 1
3853 #line 161 "parser.y"
3854 d2428 1
3855 a2428 1
3856 #line 162 "parser.y"
3857 d2433 1
3858 a2433 1
3859 #line 163 "parser.y"
3860 d2438 1
3861 a2438 1
3862 #line 164 "parser.y"
3863 d2443 1
3864 a2443 1
3865 #line 165 "parser.y"
3866 d2448 1
3867 a2448 1
3868 #line 166 "parser.y"
3869 d2453 1
3870 a2453 1
3871 #line 167 "parser.y"
3872 d2458 1
3873 a2458 1
3874 #line 171 "parser.y"
3875 d2463 1
3876 a2463 1
3877 #line 175 "parser.y"
3878 d2468 1
3879 a2468 1
3880 #line 179 "parser.y"
3881 d2473 1
3882 a2473 1
3883 #line 183 "parser.y"
3884 d2478 1
3885 a2478 1
3886 #line 187 "parser.y"
3887 d2483 1
3888 a2483 1
3889 #line 191 "parser.y"
3890 d2488 1
3891 a2488 1
3892 #line 195 "parser.y"
3893 d2493 1
3894 a2493 1
3895 #line 196 "parser.y"
3896 d2498 1
3897 a2498 1
3898 #line 200 "parser.y"
3899 d2503 1
3900 a2503 1
3901 #line 201 "parser.y"
3902 d2508 1
3903 a2508 1
3904 #line 205 "parser.y"
3905 d2513 1
3906 a2513 1
3907 #line 209 "parser.y"
3908 d2518 1
3909 a2518 1
3910 #line 213 "parser.y"
3911 d2523 1
3912 a2523 1
3913 #line 217 "parser.y"
3914 d2528 1
3915 a2528 1
3916 #line 221 "parser.y"
3917 d2533 1
3918 a2533 1
3919 #line 225 "parser.y"
3920 d2538 1
3921 a2538 1
3922 #line 229 "parser.y"
3923 d2543 1
3924 a2543 1
3925 #line 230 "parser.y"
3926 d2548 1
3927 a2548 1
3928 #line 234 "parser.y"
3929 d2553 1
3930 a2553 1
3931 #line 235 "parser.y"
3932 d2558 1
3933 a2558 1
3934 #line 239 "parser.y"
3935 d2563 1
3936 a2563 1
3937 #line 243 "parser.y"
3938 d2568 1
3939 a2568 1
3940 #line 244 "parser.y"
3941 d2573 1
3942 a2573 1
3943 #line 248 "parser.y"
3944 d2578 1
3945 a2578 1
3946 #line 252 "parser.y"
3947 d2583 1
3948 a2583 1
3949 #line 256 "parser.y"
3950 d2588 1
3951 a2588 1
3952 #line 257 "parser.y"
3953 d2593 1
3954 a2593 1
3955 #line 260 "parser.y"
3956 d2598 1
3957 a2598 1
3958 #line 264 "parser.y"
3959 d2603 1
3960 a2603 1
3961 #line 268 "parser.y"
3962 d2608 1
3963 a2608 1
3964 #line 272 "parser.y"
3965 d2613 1
3966 a2613 1
3967 #line 273 "parser.y"
3968 d2618 1
3969 a2618 1
3970 #line 277 "parser.y"
3971 d2623 1
3972 a2623 1
3973 #line 281 "parser.y"
3974 d2628 1
3975 a2628 1
3976 #line 285 "parser.y"
3977 d2633 1
3978 a2633 1
3979 #line 286 "parser.y"
3980 d2638 1
3981 a2638 1
3982 #line 287 "parser.y"
3983 d2643 1
3984 a2643 1
3985 #line 288 "parser.y"
3986 d2648 1
3987 a2648 1
3988 #line 289 "parser.y"
3989 d2653 1
3990 a2653 1
3991 #line 290 "parser.y"
3992 d2658 1
3993 a2658 1
3994 #line 291 "parser.y"
3995 d2663 1
3996 a2663 1
3997 #line 292 "parser.y"
3998 d2668 1
3999 a2668 1
4000 #line 293 "parser.y"
4001 d2673 1
4002 a2673 1
4003 #line 297 "parser.y"
4004 d2678 1
4005 a2678 1
4006 #line 298 "parser.y"
4007 d2683 1
4008 a2683 1
4009 #line 299 "parser.y"
4010 d2688 1
4011 a2688 1
4012 #line 300 "parser.y"
4013 d2693 1
4014 a2693 1
4015 #line 301 "parser.y"
4016 d2698 1
4017 a2698 1
4018 #line 302 "parser.y"
4019 d2703 1
4020 a2703 1
4021 #line 303 "parser.y"
4022 d2708 1
4023 a2708 1
4024 #line 304 "parser.y"
4025 d2713 1
4026 a2713 1
4027 #line 305 "parser.y"
4028 d2718 1
4029 a2718 1
4030 #line 306 "parser.y"
4031 d2723 1
4032 a2723 1
4033 #line 307 "parser.y"
4034 d2728 1
4035 a2728 1
4036 #line 308 "parser.y"
4037 d2733 1
4038 a2733 1
4039 #line 309 "parser.y"
4040 d2738 1
4041 a2738 1
4042 #line 310 "parser.y"
4043 d2743 1
4044 a2743 1
4045 #line 311 "parser.y"
4046 d2748 1
4047 a2748 1
4048 #line 315 "parser.y"
4049 d2753 1
4050 a2753 1
4051 #line 316 "parser.y"
4052 d2758 1
4053 a2758 1
4054 #line 317 "parser.y"
4055 d2763 1
4056 a2763 1
4057 #line 321 "parser.y"
4058 d2768 1
4059 a2768 1
4060 #line 322 "parser.y"
4061 d2773 1
4062 a2773 1
4063 #line 326 "parser.y"
4064 d2778 1
4065 a2778 1
4066 #line 327 "parser.y"
4067 d2783 1
4068 a2783 1
4069 #line 331 "parser.y"
4070 d2788 1
4071 a2788 1
4072 #line 332 "parser.y"
4073 d2793 1
4074 a2793 1
4075 #line 336 "parser.y"
4076 d2798 1
4077 a2798 1
4078 #line 340 "parser.y"
4079 d2803 1
4080 a2803 1
4081 #line 341 "parser.y"
4082 d2808 1
4083 a2808 1
4084 #line 345 "parser.y"
4085 d2813 1
4086 a2813 1
4087 #line 349 "parser.y"
4088 d2818 1
4089 a2818 1
4090 #line 350 "parser.y"
4091 d2823 1
4092 a2823 1
4093 #line 354 "parser.y"
4094 d2828 1
4095 a2828 1
4096 #line 355 "parser.y"
4097 d2833 1
4098 a2833 1
4099 #line 359 "parser.y"
4100 d2838 1
4101 a2838 1
4102 #line 360 "parser.y"
4103 d2843 1
4104 a2843 1
4105 #line 364 "parser.y"
4106 d2848 1
4107 a2848 1
4108 #line 368 "parser.y"
4109 d2853 1
4110 a2853 1
4111 #line 369 "parser.y"
4112 d2858 1
4113 a2858 1
4114 #line 370 "parser.y"
4115 d2863 1
4116 a2863 1
4117 #line 371 "parser.y"
4118 d2868 1
4119 a2868 1
4120 #line 372 "parser.y"
4121 d2873 1
4122 a2873 1
4123 #line 373 "parser.y"
4124 d2878 1
4125 a2878 1
4126 #line 374 "parser.y"
4127 d2883 1
4128 a2883 1
4129 #line 375 "parser.y"
4130 d2888 1
4131 a2888 1
4132 #line 376 "parser.y"
4133 d2893 1
4134 a2893 1
4135 #line 377 "parser.y"
4136 d2898 1
4137 a2898 1
4138 #line 378 "parser.y"
4139 d2903 1
4140 a2903 1
4141 #line 379 "parser.y"
4142 d2908 1
4143 a2908 1
4144 #line 380 "parser.y"
4145 d2913 1
4146 a2913 1
4147 #line 381 "parser.y"
4148 d2918 1
4149 a2918 1
4150 #line 382 "parser.y"
4151 d2923 1
4152 a2923 1
4153 #line 383 "parser.y"
4154 d2928 1
4155 a2928 1
4156 #line 387 "parser.y"
4157 d2933 1
4158 a2933 1
4159 #line 388 "parser.y"
4160 d2938 1
4161 a2938 1
4162 #line 389 "parser.y"
4163 d2943 1
4164 a2943 1
4165 #line 390 "parser.y"
4166 d2948 1
4167 a2948 1
4168 #line 391 "parser.y"
4169 d2953 1
4170 a2953 1
4171 #line 392 "parser.y"
4172 d2958 1
4173 a2958 1
4174 #line 396 "parser.y"
4175 d2963 1
4176 a2963 1
4177 #line 397 "parser.y"
4178 d2968 1
4179 a2968 1
4180 #line 398 "parser.y"
4181 d2973 1
4182 a2973 1
4183 #line 399 "parser.y"
4184 d2978 1
4185 a2978 1
4186 #line 400 "parser.y"
4187 d2983 1
4188 a2983 1
4189 #line 401 "parser.y"
4190 d2988 1
4191 a2988 1
4192 #line 405 "parser.y"
4193 d2993 1
4194 a2993 1
4195 #line 409 "parser.y"
4196 d2998 1
4197 a2998 1
4198 #line 410 "parser.y"
4199 d3003 1
4200 a3003 1
4201 #line 414 "parser.y"
4202 d3008 1
4203 a3008 1
4204 #line 415 "parser.y"
4205 d3013 1
4206 a3013 1
4207 #line 419 "parser.y"
4208 d3018 1
4209 a3018 1
4210 #line 423 "parser.y"
4211 d3023 1
4212 a3023 1
4213 #line 424 "parser.y"
4214 d3028 1
4215 a3028 1
4216 #line 428 "parser.y"
4217 d3033 1
4218 a3033 1
4219 #line 429 "parser.y"
4220 d3038 1
4221 a3038 1
4222 #line 433 "parser.y"
4223 d3043 1
4224 a3043 1
4225 #line 437 "parser.y"
4226 d3048 1
4227 a3048 1
4228 #line 438 "parser.y"
4229 d3053 1
4230 a3053 1
4231 #line 442 "parser.y"
4232 d3058 1
4233 a3058 1
4234 #line 446 "parser.y"
4235 d3063 1
4236 a3063 1
4237 #line 450 "parser.y"
4238 d3068 1
4239 a3068 1
4240 #line 451 "parser.y"
4241 d3073 1
4242 a3073 1
4243 #line 455 "parser.y"
4244 d3078 1
4245 a3078 1
4246 #line 456 "parser.y"
4247 d3083 1
4248 a3083 1
4249 #line 457 "parser.y"
4250 d3088 1
4251 a3088 1
4252 #line 458 "parser.y"
4253 d3093 1
4254 a3093 1
4255 #line 459 "parser.y"
4256 d3098 1
4257 a3098 1
4258 #line 463 "parser.y"
4259 d3103 1
4260 a3103 1
4261 #line 464 "parser.y"
4262 d3108 1
4263 a3108 1
4264 #line 465 "parser.y"
4265 d3113 1
4266 a3113 1
4267 #line 469 "parser.y"
4268 d3118 1
4269 a3118 1
4270 #line 470 "parser.y"
4271 d3123 1
4272 a3123 1
4273 #line 471 "parser.y"
4274 d3128 1
4275 a3128 1
4276 #line 472 "parser.y"
4277 d3133 1
4278 a3133 1
4279 #line 473 "parser.y"
4280 d3138 1
4281 a3138 1
4282 #line 474 "parser.y"
4283 d3143 1
4284 a3143 1
4285 #line 478 "parser.y"
4286 d3148 1
4287 a3148 1
4288 #line 479 "parser.y"
4289 d3153 1
4290 a3153 1
4291 #line 483 "parser.y"
4292 d3158 1
4293 a3158 1
4294 #line 487 "parser.y"
4295 d3163 1
4296 a3163 1
4297 #line 491 "parser.y"
4298 d3168 1
4299 a3168 1
4300 #line 492 "parser.y"
4301 d3173 1
4302 a3173 1
4303 #line 496 "parser.y"
4304 d3178 1
4305 a3178 1
4306 #line 500 "parser.y"
4307 d3183 1
4308 a3183 1
4309 #line 501 "parser.y"
4310 d3188 1
4311 a3188 1
4312 #line 505 "parser.y"
4313 d3193 1
4314 a3193 1
4315 #line 509 "parser.y"
4316 d3198 1
4317 a3198 1
4318 #line 510 "parser.y"
4319 d3203 1
4320 a3203 1
4321 #line 514 "parser.y"
4322 d3208 1
4323 a3208 1
4324 #line 515 "parser.y"
4325 d3213 1
4326 a3213 1
4327 #line 519 "parser.y"
4328 d3218 1
4329 a3218 1
4330 #line 523 "parser.y"
4331 d3223 1
4332 a3223 1
4333 #line 527 "parser.y"
4334 d3228 1
4335 a3228 1
4336 #line 528 "parser.y"
4337 d3233 1
4338 a3233 1
4339 #line 532 "parser.y"
4340 d3238 1
4341 a3238 1
4342 #line 536 "parser.y"
4343 d3243 1
4344 a3243 1
4345 #line 540 "parser.y"
4346 d3248 1
4347 a3248 1
4348 #line 541 "parser.y"
4349 d3253 1
4350 a3253 1
4351 #line 545 "parser.y"
4352 d3258 1
4353 a3258 1
4354 #line 546 "parser.y"
4355 d3263 1
4356 a3263 1
4357 #line 547 "parser.y"
4358 d3268 1
4359 a3268 1
4360 #line 548 "parser.y"
4361 d3273 1
4362 a3273 1
4363 #line 552 "parser.y"
4364 d3278 1
4365 a3278 1
4366 #line 553 "parser.y"
4367 d3283 1
4368 a3283 1
4369 #line 557 "parser.y"
4370 d3288 1
4371 a3288 1
4372 #line 558 "parser.y"
4373 d3293 1
4374 a3293 1
4375 #line 559 "parser.y"
4376 d3298 1
4377 a3298 1
4378 #line 560 "parser.y"
4379 d3303 1
4380 a3303 1
4381 #line 561 "parser.y"
4382 d3308 1
4383 a3308 1
4384 #line 565 "parser.y"
4385 d3313 1
4386 a3313 1
4387 #line 569 "parser.y"
4388 d3318 1
4389 a3318 1
4390 #line 570 "parser.y"
4391 d3323 1
4392 a3323 1
4393 #line 571 "parser.y"
4394 d3329 1
4395 a3329 1
4396 #line 3327 "parser.c"
4397 d3549 1
4398 a3549 1
4399 #line 573 "parser.y"
4405 @includepaths support (-I option)
4407 text
4408 @d123 11
4409 a133 10
4410      SCOPE_OP = 312,
4411      HI_OP = 313,
4412      LO_OP = 314,
4413      NE_OP = 315,
4414      EQ_OP = 316,
4415      GE_OP = 317,
4416      LE_OP = 318,
4417      SHR_OP = 319,
4418      SHL_OP = 320,
4419      UMINUS = 321
4420 d191 11
4421 a201 10
4422 #define SCOPE_OP 312
4423 #define HI_OP 313
4424 #define LO_OP 314
4425 #define NE_OP 315
4426 #define EQ_OP 316
4427 #define GE_OP 317
4428 #define LE_OP 318
4429 #define SHR_OP 319
4430 #define SHL_OP 320
4431 #define UMINUS 321
4432 d210 1
4433 a210 1
4434  * $Id: parser.y,v 1.10 2007/07/22 13:34:38 khansen Exp khansen $
4435 d212 3
4436 d286 1
4437 a286 1
4438 #line 56 "parser.y"
4439 d296 1
4440 a296 1
4441 #line 292 "parser.c"
4442 d321 1
4443 a321 1
4444 #line 317 "parser.c"
4445 d536 1
4446 a536 1
4447 #define YYFINAL  157
4448 d538 1
4449 a538 1
4450 #define YYLAST   1993
4451 d541 1
4452 a541 1
4453 #define YYNTOKENS  96
4454 d543 1
4455 a543 1
4456 #define YYNNTS  82
4457 d545 1
4458 a545 1
4459 #define YYNRULES  213
4460 d547 1
4461 a547 1
4462 #define YYNSTATES  376
4463 d551 1
4464 a551 1
4465 #define YYMAXUTOK   321
4466 d560 1
4467 a560 1
4468       57,     2,     2,     2,     2,     2,     2,     2,     2,     2,
4469 d562 4
4470 a565 4
4471        2,     2,     2,    92,     2,    72,    65,    91,    77,     2,
4472       94,    95,    89,    86,    70,    87,    71,    90,     2,     2,
4473        2,     2,     2,     2,     2,     2,     2,     2,    58,     2,
4474       81,    64,    80,     2,    59,    61,     2,     2,     2,     2,
4475 d567 2
4476 a568 2
4477        2,     2,     2,     2,     2,     2,     2,     2,    62,    63,
4478        2,    68,     2,    69,    76,     2,     2,     2,     2,     2,
4479 d571 1
4480 a571 1
4481        2,     2,     2,    66,    75,    67,    93,     2,     2,     2,
4482 d590 2
4483 a591 2
4484       55,    56,    60,    73,    74,    78,    79,    82,    83,    84,
4485       85,    88
4486 d603 18
4487 a620 18
4488       82,    85,    90,    94,    98,   102,   108,   111,   112,   115,
4489      116,   123,   130,   137,   144,   151,   158,   160,   163,   165,
4490      168,   173,   175,   179,   183,   187,   190,   194,   197,   199,
4491      201,   203,   205,   207,   210,   212,   215,   219,   222,   227,
4492      232,   239,   246,   251,   253,   256,   258,   260,   262,   264,
4493      266,   268,   270,   274,   276,   278,   280,   282,   285,   287,
4494      292,   297,   299,   301,   303,   305,   307,   308,   312,   316,
4495      320,   324,   326,   327,   329,   333,   335,   336,   338,   342,
4496      346,   350,   354,   358,   362,   366,   370,   374,   378,   381,
4497      384,   387,   390,   393,   396,   400,   404,   408,   412,   416,
4498      420,   422,   424,   426,   428,   430,   432,   434,   436,   437,
4499      439,   441,   450,   452,   453,   455,   458,   463,   467,   468,
4500      476,   484,   487,   490,   493,   497,   501,   506,   511,   514,
4501      516,   521,   523,   525,   527,   529,   532,   535,   537,   541,
4502      545,   549,   551,   553,   561,   563,   564,   568,   570,   571,
4503      573,   577,   582,   587,   591,   596,   600,   607,   610,   611,
4504      613,   615,   617,   619,   621,   623,   626,   630,   634,   639,
4505      644,   648,   650,   652
4506 d626 66
4507 a691 66
4508       97,     0,    -1,    99,    98,    -1,    38,   125,    -1,    -1,
4509      100,    -1,    99,   100,    -1,   124,   101,    -1,   101,    -1,
4510      147,    -1,   152,    -1,   153,    -1,   162,    -1,   164,    -1,
4511      159,    -1,   160,    -1,   167,    -1,   168,    -1,   170,    -1,
4512      171,    -1,   127,    -1,   154,    -1,   174,    -1,   121,    -1,
4513      122,    -1,   120,    -1,   112,    -1,   113,    -1,   114,    -1,
4514      117,    -1,   111,    -1,   110,    -1,   109,    -1,   106,    -1,
4515      105,    -1,   103,    -1,   104,    -1,   169,    -1,   102,    -1,
4516      123,    -1,     1,   125,    -1,    35,   166,   129,   125,    -1,
4517       54,   129,   125,    -1,    55,   129,   125,    -1,    53,   129,
4518      125,    -1,    13,   144,   107,   108,   125,    -1,    64,     3,
4519       -1,    -1,    58,   173,    -1,    -1,    33,   129,   125,    99,
4520       34,   125,    -1,    32,   129,   125,    99,    34,   125,    -1,
4521       48,   144,   125,    99,    49,   125,    -1,    42,   144,   125,
4522       99,    44,   125,    -1,    43,   145,   125,    99,    44,   125,
4523       -1,    46,   144,   125,   115,    47,   125,    -1,   116,    -1,
4524      115,   116,    -1,   168,    -1,   144,   125,    -1,    45,   144,
4525      118,   125,    -1,   119,    -1,   118,    70,   119,    -1,   144,
4526       58,   129,    -1,    41,   161,   125,    -1,    21,   125,    -1,
4527       21,    56,   125,    -1,    22,   125,    -1,   125,    -1,   143,
4528       -1,   126,    -1,    58,    -1,    57,    -1,   128,   125,    -1,
4529       12,    -1,    12,    61,    -1,    12,    72,   129,    -1,    12,
4530      129,    -1,    12,   129,    70,    62,    -1,    12,   129,    70,
4531       63,    -1,    12,    68,   129,    70,    62,    69,    -1,    12,
4532       68,   129,    69,    70,    63,    -1,    12,    68,   129,    69,
4533       -1,   130,    -1,    50,   132,    -1,   134,    -1,   135,    -1,
4534      140,    -1,   146,    -1,    65,    -1,   141,    -1,   142,    -1,
4535       94,   129,    95,    -1,    86,    -1,    87,    -1,     8,    -1,
4536        9,    -1,    51,   134,    -1,   144,    -1,   144,    68,   129,
4537       69,    -1,   144,    94,   129,    95,    -1,   129,    -1,   136,
4538       -1,   144,    -1,   157,    -1,   129,    -1,    -1,   144,    60,
4539      144,    -1,   130,    71,   135,    -1,   130,    71,   130,    -1,
4540       66,   137,    67,    -1,   138,    -1,    -1,   139,    -1,   138,
4541       70,   139,    -1,   131,    -1,    -1,     7,    -1,   129,    86,
4542      129,    -1,   129,    87,   129,    -1,   129,    89,   129,    -1,
4543      129,    90,   129,    -1,   129,    91,   129,    -1,   129,    77,
4544      129,    -1,   129,    75,   129,    -1,   129,    76,   129,    -1,
4545      129,    85,   129,    -1,   129,    84,   129,    -1,    93,   129,
4546       -1,    92,   129,    -1,    76,   144,    -1,    81,   129,    -1,
4547       80,   129,    -1,    87,   129,    -1,   129,    79,   129,    -1,
4548      129,    78,   129,    -1,   129,    80,   129,    -1,   129,    81,
4549      129,    -1,   129,    82,   129,    -1,   129,    83,   129,    -1,
4550       10,    -1,    11,    -1,    86,    -1,    87,    -1,     8,    -1,
4551        9,    -1,     6,    -1,   144,    -1,    -1,     3,    -1,     4,
4552       -1,    23,   129,   125,    99,   148,   151,    28,   125,    -1,
4553      149,    -1,    -1,   150,    -1,   149,   150,    -1,    27,   129,
4554      125,    99,    -1,    26,   125,    99,    -1,    -1,    24,   144,
4555      125,    99,   151,    28,   125,    -1,    25,   144,   125,    99,
4556      151,    28,   125,    -1,   155,   125,    -1,   156,   125,    -1,
4557      144,   156,    -1,    56,   144,   156,    -1,    39,   144,   156,
4558       -1,    56,    39,   144,   156,    -1,    39,    56,   144,   156,
4559       -1,   157,   158,    -1,   157,    -1,   157,    68,   129,    69,
4560       -1,    14,    -1,    15,    -1,    16,    -1,    17,    -1,    52,
4561      144,    -1,    71,   144,    -1,   131,    -1,   158,    70,   131,
4562       -1,    29,   161,   125,    -1,    30,   161,   125,    -1,     4,
4563       -1,     5,    -1,    31,   144,   163,   125,    99,    34,   125,
4564       -1,   166,    -1,    -1,   144,   165,   125,    -1,   158,    -1,
4565       -1,   144,    -1,   166,    70,   144,    -1,   144,    36,   131,
4566      125,    -1,   144,    64,   131,   125,    -1,    37,   144,   125,
4567       -1,    37,   144,   131,   125,    -1,    39,   166,   125,    -1,
4568       40,   166,    58,   173,   172,   125,    -1,    59,   144,    -1,
4569       -1,   157,    -1,   144,    -1,    48,    -1,    13,    -1,   175,
4570       -1,   176,    -1,   144,   176,    -1,    56,   144,   176,    -1,
4571       39,   144,   176,    -1,    56,    39,   144,   176,    -1,    39,
4572       56,   144,   176,    -1,   177,   133,   125,    -1,    18,    -1,
4573       19,    -1,    20,    -1
4574 d697 22
4575 a718 22
4576        0,   110,   110,   114,   115,   119,   120,   127,   128,   132,
4577      133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
4578      143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
4579      153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
4580      163,   167,   171,   175,   179,   183,   187,   188,   192,   193,
4581      197,   201,   205,   209,   213,   217,   221,   222,   226,   227,
4582      231,   235,   236,   240,   244,   248,   249,   252,   256,   260,
4583      264,   265,   269,   273,   277,   278,   279,   280,   281,   282,
4584      283,   284,   285,   289,   290,   291,   292,   293,   294,   295,
4585      296,   297,   298,   299,   300,   301,   302,   303,   307,   308,
4586      309,   313,   314,   318,   319,   323,   324,   328,   332,   333,
4587      337,   341,   342,   346,   347,   351,   352,   356,   360,   361,
4588      362,   363,   364,   365,   366,   367,   368,   369,   370,   371,
4589      372,   373,   374,   375,   379,   380,   381,   382,   383,   384,
4590      388,   389,   390,   391,   392,   393,   397,   401,   402,   406,
4591      407,   411,   415,   416,   420,   421,   425,   429,   430,   434,
4592      438,   442,   443,   447,   448,   449,   450,   451,   455,   456,
4593      457,   461,   462,   463,   464,   465,   466,   470,   471,   475,
4594      479,   483,   484,   488,   492,   493,   497,   501,   502,   506,
4595      507,   511,   515,   519,   520,   524,   528,   532,   533,   537,
4596      538,   539,   540,   544,   545,   549,   550,   551,   552,   553,
4597      557,   561,   562,   563
4598 d735 16
4599 a750 15
4600   "ZEROPAGE", "'\\n'", "':'", "'@@'", "SCOPE_OP", "'A'", "'X'", "'Y'",
4601   "'='", "'$'", "'{'", "'}'", "'['", "']'", "','", "'.'", "'#'", "HI_OP",
4602   "LO_OP", "'|'", "'^'", "'&'", "NE_OP", "EQ_OP", "'>'", "'<'", "GE_OP",
4603   "LE_OP", "SHR_OP", "SHL_OP", "'+'", "'-'", "UMINUS", "'*'", "'/'", "'%'",
4604   "'!'", "'~'", "'('", "')'", "$accept", "assembly_unit", "end_opt",
4605   "statement_list", "labelable_statement", "statement", "align_statement",
4606   "warning_statement", "error_statement", "message_statement",
4607   "label_statement", "label_addr_part_opt", "label_type_part_opt",
4608   "while_statement", "rept_statement", "proc_statement",
4609   "struc_decl_statement", "union_decl_statement", "enum_decl_statement",
4610   "enum_item_list", "enum_item", "record_decl_statement",
4611   "record_field_list", "record_field", "charmap_statement",
4612   "dataseg_statement", "codeseg_statement", "null_statement", "label_decl",
4613   "line_tail", "newline", "instruction_statement", "instruction",
4614   "expression", "indexed_identifier", "extended_expression", "sizeof_arg",
4615 d778 5
4616 a782 5
4617      305,   306,   307,   308,   309,   310,   311,    10,    58,    64,
4618      312,    65,    88,    89,    61,    36,   123,   125,    91,    93,
4619       44,    46,    35,   313,   314,   124,    94,    38,   315,   316,
4620       62,    60,   317,   318,   319,   320,    43,    45,   321,    42,
4621       47,    37,    33,   126,    40,    41
4622 d789 22
4623 a810 22
4624        0,    96,    97,    98,    98,    99,    99,   100,   100,   101,
4625      101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
4626      101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
4627      101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
4628      101,   102,   103,   104,   105,   106,   107,   107,   108,   108,
4629      109,   110,   111,   112,   113,   114,   115,   115,   116,   116,
4630      117,   118,   118,   119,   120,   121,   121,   122,   123,   124,
4631      125,   125,   126,   127,   128,   128,   128,   128,   128,   128,
4632      128,   128,   128,   129,   129,   129,   129,   129,   129,   129,
4633      129,   129,   129,   129,   129,   129,   129,   129,   130,   130,
4634      130,   131,   131,   132,   132,   133,   133,   134,   135,   135,
4635      136,   137,   137,   138,   138,   139,   139,   140,   141,   141,
4636      141,   141,   141,   141,   141,   141,   141,   141,   141,   141,
4637      141,   141,   141,   141,   142,   142,   142,   142,   142,   142,
4638      143,   143,   143,   143,   143,   143,   144,   145,   145,   146,
4639      146,   147,   148,   148,   149,   149,   150,   151,   151,   152,
4640      153,   154,   154,   155,   155,   155,   155,   155,   156,   156,
4641      156,   157,   157,   157,   157,   157,   157,   158,   158,   159,
4642      160,   161,   161,   162,   163,   163,   164,   165,   165,   166,
4643      166,   167,   168,   169,   169,   170,   171,   172,   172,   173,
4644      173,   173,   173,   174,   174,   175,   175,   175,   175,   175,
4645      176,   177,   177,   177
4646 d820 18
4647 a837 18
4648        2,     4,     3,     3,     3,     5,     2,     0,     2,     0,
4649        6,     6,     6,     6,     6,     6,     1,     2,     1,     2,
4650        4,     1,     3,     3,     3,     2,     3,     2,     1,     1,
4651        1,     1,     1,     2,     1,     2,     3,     2,     4,     4,
4652        6,     6,     4,     1,     2,     1,     1,     1,     1,     1,
4653        1,     1,     3,     1,     1,     1,     1,     2,     1,     4,
4654        4,     1,     1,     1,     1,     1,     0,     3,     3,     3,
4655        3,     1,     0,     1,     3,     1,     0,     1,     3,     3,
4656        3,     3,     3,     3,     3,     3,     3,     3,     2,     2,
4657        2,     2,     2,     2,     3,     3,     3,     3,     3,     3,
4658        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
4659        1,     8,     1,     0,     1,     2,     4,     3,     0,     7,
4660        7,     2,     2,     2,     3,     3,     4,     4,     2,     1,
4661        4,     1,     1,     1,     1,     2,     2,     1,     3,     3,
4662        3,     1,     1,     7,     1,     0,     3,     1,     0,     1,
4663        3,     4,     4,     3,     4,     3,     6,     2,     0,     1,
4664        1,     1,     1,     1,     1,     2,     3,     3,     4,     4,
4665        3,     1,     1,     1
4666 d845 2
4667 a846 2
4668        0,     0,   146,   144,   145,   140,   141,    74,     0,   171,
4669      172,   173,   174,   211,   212,   213,     0,     0,     0,     0,
4670 d848 17
4671 a864 17
4672        0,     0,   148,     0,     0,     0,     0,     0,     0,     0,
4673        0,    72,    71,     0,   142,   143,     0,     0,     5,     8,
4674       38,    35,    36,    34,    33,    32,    31,    30,    26,    27,
4675       28,    29,    25,    23,    24,    39,     0,    68,    70,    20,
4676        0,    69,   188,     9,    10,    11,    21,     0,     0,   169,
4677       14,    15,    12,    13,    16,    17,    37,    18,    19,    22,
4678      203,   204,   106,    40,   149,   150,   117,    95,    96,     0,
4679        0,    75,    89,     0,     0,     0,     0,     0,    93,    94,
4680        0,     0,     0,    77,    83,    85,    86,    87,    90,    91,
4681       98,    88,    47,     0,    65,    67,     0,     0,     0,   181,
4682      182,     0,     0,   185,     0,     0,   189,     0,     0,     0,
4683      189,     0,     0,     0,     0,   147,     0,     0,     0,     0,
4684      175,     0,     0,     0,     0,     0,   176,     1,     0,     2,
4685        6,     7,    73,     0,     0,   112,   101,   177,   102,   163,
4686      187,     0,   205,   161,   162,     0,   168,   105,     0,    84,
4687      103,   104,    97,     0,     0,    76,   130,   132,   131,   133,
4688      129,   128,     0,     0,     0,     0,     0,     0,     0,     0,
4689 d866 17
4690 a882 17
4691        0,     0,     0,     0,     0,    49,    66,     0,     0,     0,
4692      179,   180,     0,   184,     0,     0,     0,     0,   193,     0,
4693        0,   165,   207,   195,     0,    64,     0,     0,     0,    61,
4694        0,     0,     0,    44,    42,    43,     0,   164,   206,     3,
4695        0,     0,   115,     0,   111,   113,     0,   186,     0,   210,
4696       82,     0,    92,    78,    79,   124,   125,   123,   135,   134,
4697      136,   137,   138,   139,   127,   126,   118,   119,   120,   121,
4698      122,   109,   108,    98,   107,     0,     0,    46,     0,     0,
4699        0,     0,     0,     0,     0,     0,   190,    41,   194,   167,
4700      209,   202,   201,   200,   199,   198,     0,     0,     0,    60,
4701        0,     0,    56,     0,    58,     0,   166,   208,   191,   192,
4702      110,   116,   178,   170,     0,     0,    99,   100,    48,    45,
4703        0,   158,   152,   154,     0,     0,     0,     0,     0,     0,
4704        0,     0,     0,     0,    62,    63,     0,    57,    59,     0,
4705      114,    81,    80,     0,     0,   155,     0,     0,     0,     0,
4706       51,    50,   197,   196,    53,    54,    55,    52,     0,     0,
4707        0,   159,   160,   183,     0,   151
4708 d888 9
4709 a896 9
4710       -1,    46,   159,    47,    48,    49,    50,    51,    52,    53,
4711       54,   215,   289,    55,    56,    57,    58,    59,    60,   311,
4712      312,    61,   238,   239,    62,    63,    64,    65,    66,    67,
4713       68,    69,    70,   166,   114,   167,   179,   178,   115,   116,
4714      168,   253,   254,   255,   117,   118,   119,    71,   120,   146,
4715      121,    73,   331,   332,   333,   335,    74,    75,    76,    77,
4716       78,    79,   170,    80,    81,   131,    82,   222,    83,   171,
4717      137,    84,    85,    86,    87,    88,   341,   305,    89,    90,
4718       91,    92
4719 d901 1
4720 a901 1
4721 #define YYPACT_NINF -272
4722 d904 38
4723 a941 38
4724     1785,    20,  -272,  -272,  -272,  -272,  -272,    87,     6,  -272,
4725     -272,  -272,  -272,  -272,  -272,  -272,    26,    20,   794,     6,
4726        6,    84,    84,     6,   794,   794,     6,     6,     3,     6,
4727       84,     6,     6,     6,     6,     6,     6,   794,   794,   794,
4728        5,  -272,  -272,     6,  -272,  -272,    37,   883,  -272,  -272,
4729     -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
4730     -272,  -272,  -272,  -272,  -272,  -272,  1845,  -272,  -272,  -272,
4731       20,  -272,   532,  -272,  -272,  -272,  -272,    20,    20,   636,
4732     -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
4733     -272,  -272,   794,  -272,  -272,  -272,  -272,  -272,  -272,   113,
4734        6,  -272,  -272,   794,   794,     6,   794,   794,  -272,   107,
4735      794,   794,   794,  1860,   -10,  -272,  -272,  -272,  -272,  -272,
4736      -30,  -272,     9,    20,  -272,  -272,   307,    20,    20,  -272,
4737     -272,    20,    20,     6,   307,   307,  -272,   702,   572,     6,
4738      213,   -12,   -48,    20,    20,  -272,    20,     6,    20,    20,
4739     -272,   307,   307,   307,     6,   213,  -272,  -272,    20,  -272,
4740     -272,  -272,  -272,   762,   762,   668,   480,  -272,  -272,  -272,
4741       -3,    20,  -272,  -272,  -272,   794,    -3,   480,    20,  -272,
4742     -272,  -272,  -272,    32,   365,   480,  -272,   480,   480,    34,
4743     -272,  -272,  1877,    35,   794,   794,   794,   794,   794,   794,
4744      794,   794,   794,   794,   794,   794,   794,   794,   794,   794,
4745        6,     6,   794,   794,   109,    74,  -272,  1785,  1785,  1785,
4746     -272,  -272,    20,    64,  1785,  1785,     6,   307,  -272,    20,
4747      213,  -272,  -272,  -272,     1,  -272,  1785,  1785,    11,  -272,
4748       77,     6,  1785,  -272,  -272,  -272,   213,  -272,  -272,  -272,
4749       20,    20,  -272,    73,    75,  -272,   762,  -272,   422,  -272,
4750       76,    82,  -272,  -272,  -272,   866,   948,   782,   319,   319,
4751       17,    17,    17,    17,    31,    31,    34,    34,  -272,  -272,
4752     -272,   -10,  -272,   -55,  -272,  1842,  1898,  -272,     1,    20,
4753      965,  1129,  1129,  1785,  1211,  1293,  -272,  -272,  -272,  -272,
4754     -272,  -272,  -272,  -272,  -272,    90,  1375,  1457,     6,  -272,
4755      794,    18,  -272,   -16,  -272,  1539,  -272,  -272,  -272,  -272,
4756     -272,   762,  -272,  -272,    88,    81,  -272,  -272,  -272,  -272,
4757      794,   127,   129,  -272,    20,   134,   136,  1621,    20,    20,
4758        6,    20,    20,    20,  -272,   480,    20,  -272,  -272,    20,
4759     -272,  -272,  -272,   307,   138,  -272,  1785,    20,    20,    20,
4760     -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  1785,    20,
4761     1703,  -272,  -272,  -272,  1047,  -272
4762 d947 9
4763 a955 9
4764     -272,  -272,  -272,  -162,     7,   103,  -272,  -272,  -272,  -272,
4765     -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
4766     -141,  -272,  -272,  -137,  -272,  -272,  -272,  -272,  -272,   125,
4767     -272,  -272,  -272,   321,   -35,  -113,  -272,  -272,    78,   -28,
4768     -272,  -272,  -272,  -138,  -272,  -272,  -272,  -272,     0,  -272,
4769     -272,  -272,  -272,  -272,  -147,  -271,  -272,  -272,  -272,  -272,
4770      -70,   -98,   108,  -272,  -272,    57,  -272,  -272,  -272,  -272,
4771      -24,  -272,  -235,  -272,  -272,  -272,  -272,  -102,  -272,  -272,
4772      -69,  -272
4773 d962 1
4774 a962 1
4775 #define YYTABLE_NINF -159
4776 d965 57
4777 a1021 50
4778       72,   181,   169,   172,   141,   142,   314,     2,   122,     2,
4779      234,     2,     2,   212,   301,     9,    10,    11,    12,   127,
4780      128,   336,   226,   133,     2,   229,   136,   138,   140,   136,
4781      211,   144,   145,   147,   148,   149,   150,   157,   212,   213,
4782      155,    41,    42,   156,   154,    41,    42,    72,   164,   302,
4783      250,   251,   252,    36,   160,   290,   291,   292,   226,   139,
4784      354,   210,   294,   295,   213,   346,    72,   256,    41,    42,
4785      231,   232,    43,   214,   306,   307,   314,    41,    42,   132,
4786      315,   308,   123,    41,    42,   247,   248,   143,   129,   130,
4787       94,    95,   211,     2,    96,    97,    98,   263,   264,   180,
4788      183,   203,   204,   205,   206,   186,   207,   208,   209,   223,
4789       94,    95,   287,     2,    96,    97,    98,   205,   206,     2,
4790      207,   208,   209,   207,   208,   209,    93,     9,    10,    11,
4791       12,   337,   288,   136,   226,   310,   304,    99,   100,   230,
4792      320,   124,   125,   322,   325,   321,   324,   240,   101,   340,
4793      352,   351,   102,   334,   246,   103,   330,    99,   100,   104,
4794      299,   300,   357,   105,   358,    36,   369,   106,   107,   161,
4795      347,   344,   102,   108,   109,   281,   316,   317,   182,   110,
4796      111,   112,   282,   350,    43,   355,   328,   176,     0,     0,
4797      304,     0,     0,     0,   370,   162,     0,     0,     0,   110,
4798      111,   112,   173,   174,     0,     0,   374,     0,   252,     0,
4799      283,   284,     0,     0,     0,     0,     0,    72,    72,    72,
4800        0,     0,     0,     0,    72,    72,   296,     9,    10,    11,
4801       12,    13,    14,    15,   303,     0,    72,    72,     0,     0,
4802        0,   313,    72,     0,     0,     0,     0,     0,   216,     0,
4803        0,   217,   218,   219,     0,     0,   220,   221,     0,   224,
4804      225,     0,     0,   228,     0,    36,   233,     0,   235,   236,
4805        0,   237,     0,   241,   242,     0,   243,   244,   245,     0,
4806        0,     0,     0,   249,    43,     0,     0,     0,   303,     0,
4807       72,    72,    72,    72,    72,    72,   257,   160,   160,   160,
4808        0,   160,   160,   259,     0,     0,    72,    72,   240,     0,
4809        0,   313,     0,   160,   160,    72,     0,     0,     0,     0,
4810        0,     0,   160,     0,     0,     0,     0,     0,   113,     0,
4811        0,     0,     0,     0,     0,     0,     0,    72,     0,   126,
4812      362,     0,     0,     0,   160,   134,   135,   293,     0,     0,
4813        0,     0,   297,     0,   298,     0,    72,     0,   151,   152,
4814      153,     0,     0,   309,    41,    42,     0,     0,    72,     0,
4815       72,     0,     0,     0,    72,   318,   319,   160,     0,     0,
4816        0,   160,   194,   195,   196,   197,   198,   199,   200,   201,
4817      202,   203,   204,   205,   206,     0,   207,   208,   209,   199,
4818      200,   201,   202,   203,   204,   205,   206,     0,   207,   208,
4819      209,     0,     0,   177,   329,     0,     0,     0,     0,     0,
4820        0,     0,     0,     0,   184,   185,     0,   187,   188,     0,
4821      189,   190,   191,   192,   260,   261,     0,     0,   348,     0,
4822      194,   195,   196,   197,   198,   199,   200,   201,   202,   203,
4823      204,   205,   206,     0,   207,   208,   209,     0,   227,   356,
4824        0,     0,     0,   360,   361,     0,   363,   364,   365,     0,
4825        0,   366,     0,     0,   367,     0,     0,     0,   368,     0,
4826        0,     0,   371,   372,   373,     0,     0,     0,     0,     0,
4827        0,   323,     0,     0,   375,     0,   258,   194,   195,   196,
4828 d1023 2
4829 a1024 18
4830        0,   207,   208,   209,     0,   265,   266,   267,   268,   269,
4831      270,   271,   272,   273,   274,   275,   276,   277,   278,   279,
4832      280,     0,     0,   285,   286,    94,    95,     0,     2,    96,
4833       97,    98,     0,     0,     0,     0,     9,    10,    11,    12,
4834       13,    14,    15,     0,     0,   194,   195,   196,   197,   198,
4835      199,   200,   201,   202,   203,   204,   205,   206,   163,   207,
4836      208,   209,     0,     0,     0,    94,    95,     0,     2,    96,
4837       97,    98,    99,   100,    36,     0,     0,     0,     0,     0,
4838        0,     0,     0,     0,     0,     0,   164,   102,   165,     0,
4839        0,     0,     0,    43,     0,     0,     0,     0,   105,     0,
4840        0,     0,   106,   107,     0,     0,     0,     0,   108,   109,
4841        0,     0,    99,   100,   110,   111,   112,     0,     0,    41,
4842       42,   345,     0,     0,     0,     0,     0,   102,   165,    94,
4843       95,     0,     2,    96,    97,    98,     0,     0,   105,     0,
4844        0,   353,   106,   107,     0,     0,     0,     0,   108,   109,
4845        0,     0,     0,     0,   110,   111,   112,     0,     0,     0,
4846        0,    94,    95,     0,     2,    96,    97,    98,     0,     0,
4847        0,     0,     0,     0,     0,     0,    99,   100,     0,     0,
4848 d1026 30
4849 a1055 28
4850        0,   102,   165,     0,   175,    94,    95,     0,     2,    96,
4851       97,    98,   105,     0,     0,     0,   106,   107,    99,   100,
4852        0,     0,   108,   109,     0,     0,     0,     0,   110,   111,
4853      112,     0,     0,   102,   165,     0,     0,     0,  -116,     0,
4854        0,     0,     0,     0,   105,     0,     0,     0,   106,   107,
4855        0,     0,    99,   100,   108,   109,     0,     0,     0,     0,
4856      110,   111,   112,     0,     0,    94,    95,   102,     2,    96,
4857       97,    98,   226,     0,     0,     0,     0,     0,   105,     0,
4858        0,     0,   106,   107,     0,     0,     0,     0,   108,   109,
4859        0,     0,     0,     0,   110,   111,   112,    94,    95,     0,
4860        2,    96,    97,    98,     0,     0,     0,     0,     0,     0,
4861        0,     0,    99,   100,     0,     0,     0,     0,     0,     0,
4862        0,     0,     0,     0,     0,     0,     0,   102,   165,     0,
4863        0,     0,     0,     0,     0,     0,     0,     0,   105,     0,
4864        0,     0,   106,   107,    99,   100,     0,     0,   108,   109,
4865        0,     0,     0,     0,   110,   111,   112,     0,     0,   102,
4866      197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
4867      105,   207,   208,   209,   106,   107,     0,     0,     0,     0,
4868      108,   109,     0,    -4,     1,     0,   110,   111,   112,     2,
4869        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
4870       12,    13,    14,    15,    16,    17,    18,    19,    20,     0,
4871        0,     0,    21,    22,    23,    24,    25,     0,    26,     0,
4872       27,   158,    28,    29,    30,    31,    32,     0,    33,    34,
4873        0,    35,     0,     0,     0,    36,    37,    38,    39,    40,
4874       41,    42,   195,   196,   197,   198,   199,   200,   201,   202,
4875      203,   204,   205,   206,    43,   207,   208,   209,     0,     0,
4876        0,     0,     0,     0,     0,     0,     1,     0,     0,    44,
4877       45,     2,     0,     3,     4,     5,     6,     7,     8,     9,
4878 d1057 2
4879 a1058 2
4880       20,  -153,   330,  -153,    21,    22,    23,    24,    25,     0,
4881       26,     0,    27,     0,    28,    29,    30,    31,    32,     0,
4882 d1060 27
4883 a1086 2
4884       39,    40,    41,    42,     0,   196,   197,   198,   199,   200,
4885      201,   202,   203,   204,   205,   206,    43,   207,   208,   209,
4886 d1088 1
4887 a1088 1
4888        0,    44,    45,     2,     0,     3,     4,     5,     6,     7,
4889 d1090 2
4890 a1091 2
4891       18,    19,    20,  -156,  -156,  -156,    21,    22,    23,    24,
4892       25,     0,    26,     0,    27,     0,    28,    29,    30,    31,
4893 d1093 2
4894 a1094 2
4895       37,    38,    39,    40,    41,    42,     0,     0,     0,     0,
4896        0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
4897 d1096 6
4898 a1101 14
4899        1,     0,     0,    44,    45,     2,     0,     3,     4,     5,
4900        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
4901       16,    17,    18,    19,    20,   334,     0,  -158,    21,    22,
4902       23,    24,    25,     0,    26,     0,    27,     0,    28,    29,
4903       30,    31,    32,     0,    33,    34,     0,    35,     0,     0,
4904        0,    36,    37,    38,    39,    40,    41,    42,     0,     0,
4905        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4906       43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4907        0,     0,     1,     0,     0,    44,    45,     2,     0,     3,
4908        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
4909       14,    15,    16,    17,    18,    19,    20,     0,     0,     0,
4910       21,    22,    23,    24,    25,   338,    26,     0,    27,     0,
4911       28,    29,    30,    31,    32,     0,    33,    34,     0,    35,
4912        0,     0,     0,    36,    37,    38,    39,    40,    41,    42,
4913 d1103 2
4914 a1104 2
4915        0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
4916        0,     0,     0,     0,     1,     0,     0,    44,    45,     2,
4917 d1107 2
4918 a1108 2
4919        0,     0,    21,    22,    23,    24,    25,   339,    26,     0,
4920       27,     0,    28,    29,    30,    31,    32,     0,    33,    34,
4921 d1110 10
4922 a1119 18
4923       41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
4924        0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
4925        0,     0,     0,     0,     0,     0,     1,     0,     0,    44,
4926       45,     2,     0,     3,     4,     5,     6,     7,     8,     9,
4927       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
4928       20,     0,     0,     0,    21,    22,    23,    24,    25,     0,
4929       26,     0,    27,     0,    28,    29,    30,    31,    32,   342,
4930       33,    34,     0,    35,     0,     0,     0,    36,    37,    38,
4931       39,    40,    41,    42,     0,     0,     0,     0,     0,     0,
4932        0,     0,     0,     0,     0,     0,    43,     0,     0,     0,
4933        0,     0,     0,     0,     0,     0,     0,     0,     1,     0,
4934        0,    44,    45,     2,     0,     3,     4,     5,     6,     7,
4935        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
4936       18,    19,    20,     0,     0,     0,    21,    22,    23,    24,
4937       25,     0,    26,     0,    27,     0,    28,    29,    30,    31,
4938       32,   343,    33,    34,     0,    35,     0,     0,     0,    36,
4939       37,    38,    39,    40,    41,    42,     0,     0,     0,     0,
4940        0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
4941 d1121 1
4942 a1121 1
4943        1,     0,     0,    44,    45,     2,     0,     3,     4,     5,
4944 d1125 2
4945 a1126 10
4946       30,    31,    32,     0,    33,    34,     0,    35,   349,     0,
4947        0,    36,    37,    38,    39,    40,    41,    42,     0,     0,
4948        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4949       43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4950        0,     0,     1,     0,     0,    44,    45,     2,     0,     3,
4951        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
4952       14,    15,    16,    17,    18,    19,    20,     0,     0,     0,
4953       21,    22,    23,    24,    25,   359,    26,     0,    27,     0,
4954       28,    29,    30,    31,    32,     0,    33,    34,     0,    35,
4955        0,     0,     0,    36,    37,    38,    39,    40,    41,    42,
4956 d1128 11
4957 a1138 11
4958        0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
4959        0,     0,     0,     0,     1,     0,     0,    44,    45,     2,
4960        0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
4961       12,    13,    14,    15,    16,    17,    18,    19,    20,     0,
4962        0,  -157,    21,    22,    23,    24,    25,     0,    26,     0,
4963       27,     0,    28,    29,    30,    31,    32,     0,    33,    34,
4964        0,    35,     0,     0,     0,    36,    37,    38,    39,    40,
4965       41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
4966        0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
4967        0,     0,     0,     0,     0,     0,     1,     0,     0,    44,
4968       45,     2,     0,     3,     4,     5,     6,     7,     8,     9,
4969 d1140 1
4970 a1140 1
4971       20,     0,     0,     0,    21,    22,    23,    24,    25,     0,
4972 d1143 26
4973 a1168 16
4974       39,    40,    41,    42,     0,     0,     1,     0,     0,     0,
4975        0,     2,     0,     0,     0,     0,    43,     7,     8,     9,
4976       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
4977       20,    44,    45,     0,    21,    22,    23,    24,    25,     0,
4978       26,     0,    27,     0,    28,    29,    30,    31,    32,     0,
4979       33,    34,     0,    35,     0,     0,     0,    36,    37,    38,
4980       39,    40,    41,    42,     0,     0,     0,     0,     0,     0,
4981        0,   326,     0,     0,     0,     0,    43,   194,   195,   196,
4982      197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
4983      193,   207,   208,   209,     0,   194,   195,   196,   197,   198,
4984      199,   200,   201,   202,   203,   204,   205,   206,     0,   207,
4985      208,   209,   194,   195,   196,   197,   198,   199,   200,   201,
4986      202,   203,   204,   205,   206,     0,   207,   208,   209,     0,
4987        0,     0,   262,   194,   195,   196,   197,   198,   199,   200,
4988      201,   202,   203,   204,   205,   206,     0,   207,   208,   209,
4989        0,     0,     0,   327
4990 d1173 60
4991 a1232 69
4992        0,    99,    72,    72,    28,    29,   241,     6,     8,     6,
4993       58,     6,     6,    68,    13,    14,    15,    16,    17,    19,
4994       20,   292,    70,    23,     6,   138,    26,    27,    28,    29,
4995       60,    31,    32,    33,    34,    35,    36,     0,    68,    94,
4996       40,    57,    58,    43,    39,    57,    58,    47,    64,    48,
4997      163,   164,   165,    52,    47,   217,   218,   219,    70,    56,
4998      331,    71,   224,   225,    94,    47,    66,    70,    57,    58,
4999      140,   140,    71,    64,   236,   237,   311,    57,    58,    22,
5000      242,    70,    56,    57,    58,   155,   155,    30,     4,     5,
5001        3,     4,    60,     6,     7,     8,     9,    62,    63,    99,
5002      100,    84,    85,    86,    87,   105,    89,    90,    91,   133,
5003        3,     4,     3,     6,     7,     8,     9,    86,    87,     6,
5004       89,    90,    91,    89,    90,    91,     1,    14,    15,    16,
5005       17,   293,    58,   133,    70,    58,   234,    50,    51,   139,
5006       67,    16,    17,   256,    62,    70,    70,   147,    61,    59,
5007       69,    63,    65,    26,   154,    68,    27,    50,    51,    72,
5008      230,   230,    28,    76,    28,    52,    28,    80,    81,    66,
5009      311,   308,    65,    86,    87,   210,   246,   246,   100,    92,
5010       93,    94,   210,   321,    71,   332,   288,    79,    -1,    -1,
5011      288,    -1,    -1,    -1,   356,    70,    -1,    -1,    -1,    92,
5012       93,    94,    77,    78,    -1,    -1,   368,    -1,   321,    -1,
5013      210,   211,    -1,    -1,    -1,    -1,    -1,   217,   218,   219,
5014       -1,    -1,    -1,    -1,   224,   225,   226,    14,    15,    16,
5015       17,    18,    19,    20,   234,    -1,   236,   237,    -1,    -1,
5016       -1,   241,   242,    -1,    -1,    -1,    -1,    -1,   123,    -1,
5017       -1,   126,   127,   128,    -1,    -1,   131,   132,    -1,   134,
5018      135,    -1,    -1,   138,    -1,    52,   141,    -1,   143,   144,
5019       -1,   146,    -1,   148,   149,    -1,   151,   152,   153,    -1,
5020       -1,    -1,    -1,   158,    71,    -1,    -1,    -1,   288,    -1,
5021      290,   291,   292,   293,   294,   295,   171,   290,   291,   292,
5022       -1,   294,   295,   178,    -1,    -1,   306,   307,   308,    -1,
5023       -1,   311,    -1,   306,   307,   315,    -1,    -1,    -1,    -1,
5024       -1,    -1,   315,    -1,    -1,    -1,    -1,    -1,     7,    -1,
5025       -1,    -1,    -1,    -1,    -1,    -1,    -1,   337,    -1,    18,
5026      340,    -1,    -1,    -1,   337,    24,    25,   222,    -1,    -1,
5027       -1,    -1,   227,    -1,   229,    -1,   356,    -1,    37,    38,
5028       39,    -1,    -1,   238,    57,    58,    -1,    -1,   368,    -1,
5029      370,    -1,    -1,    -1,   374,   250,   251,   370,    -1,    -1,
5030       -1,   374,    75,    76,    77,    78,    79,    80,    81,    82,
5031       83,    84,    85,    86,    87,    -1,    89,    90,    91,    80,
5032       81,    82,    83,    84,    85,    86,    87,    -1,    89,    90,
5033       91,    -1,    -1,    92,   289,    -1,    -1,    -1,    -1,    -1,
5034       -1,    -1,    -1,    -1,   103,   104,    -1,   106,   107,    -1,
5035      109,   110,   111,   112,    69,    70,    -1,    -1,   313,    -1,
5036       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
5037       85,    86,    87,    -1,    89,    90,    91,    -1,   137,   334,
5038       -1,    -1,    -1,   338,   339,    -1,   341,   342,   343,    -1,
5039       -1,   346,    -1,    -1,   349,    -1,    -1,    -1,   353,    -1,
5040       -1,    -1,   357,   358,   359,    -1,    -1,    -1,    -1,    -1,
5041       -1,    69,    -1,    -1,   369,    -1,   175,    75,    76,    77,
5042       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
5043       -1,    89,    90,    91,    -1,   194,   195,   196,   197,   198,
5044      199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
5045      209,    -1,    -1,   212,   213,     3,     4,    -1,     6,     7,
5046        8,     9,    -1,    -1,    -1,    -1,    14,    15,    16,    17,
5047       18,    19,    20,    -1,    -1,    75,    76,    77,    78,    79,
5048       80,    81,    82,    83,    84,    85,    86,    87,    36,    89,
5049       90,    91,    -1,    -1,    -1,     3,     4,    -1,     6,     7,
5050        8,     9,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,
5051       -1,    -1,    -1,    -1,    -1,    -1,    64,    65,    66,    -1,
5052       -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    76,    -1,
5053       -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    86,    87,
5054       -1,    -1,    50,    51,    92,    93,    94,    -1,    -1,    57,
5055       58,   310,    -1,    -1,    -1,    -1,    -1,    65,    66,     3,
5056        4,    -1,     6,     7,     8,     9,    -1,    -1,    76,    -1,
5057       -1,   330,    80,    81,    -1,    -1,    -1,    -1,    86,    87,
5058       -1,    -1,    -1,    -1,    92,    93,    94,    -1,    -1,    -1,
5059       -1,     3,     4,    -1,     6,     7,     8,     9,    -1,    -1,
5060       -1,    -1,    -1,    -1,    -1,    -1,    50,    51,    -1,    -1,
5061 d1234 8
5062 a1241 10
5063       -1,    65,    66,    -1,    68,     3,     4,    -1,     6,     7,
5064        8,     9,    76,    -1,    -1,    -1,    80,    81,    50,    51,
5065       -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,    93,
5066       94,    -1,    -1,    65,    66,    -1,    -1,    -1,    70,    -1,
5067       -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    80,    81,
5068       -1,    -1,    50,    51,    86,    87,    -1,    -1,    -1,    -1,
5069       92,    93,    94,    -1,    -1,     3,     4,    65,     6,     7,
5070        8,     9,    70,    -1,    -1,    -1,    -1,    -1,    76,    -1,
5071       -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    86,    87,
5072       -1,    -1,    -1,    -1,    92,    93,    94,     3,     4,    -1,
5073 d1243 21
5074 a1263 17
5075       -1,    -1,    50,    51,    -1,    -1,    -1,    -1,    -1,    -1,
5076       -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    66,    -1,
5077       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
5078       -1,    -1,    80,    81,    50,    51,    -1,    -1,    86,    87,
5079       -1,    -1,    -1,    -1,    92,    93,    94,    -1,    -1,    65,
5080       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
5081       76,    89,    90,    91,    80,    81,    -1,    -1,    -1,    -1,
5082       86,    87,    -1,     0,     1,    -1,    92,    93,    94,     6,
5083       -1,     8,     9,    10,    11,    12,    13,    14,    15,    16,
5084       17,    18,    19,    20,    21,    22,    23,    24,    25,    -1,
5085       -1,    -1,    29,    30,    31,    32,    33,    -1,    35,    -1,
5086       37,    38,    39,    40,    41,    42,    43,    -1,    45,    46,
5087       -1,    48,    -1,    -1,    -1,    52,    53,    54,    55,    56,
5088       57,    58,    76,    77,    78,    79,    80,    81,    82,    83,
5089       84,    85,    86,    87,    71,    89,    90,    91,    -1,    -1,
5090       -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    86,
5091       87,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
5092 d1265 2
5093 a1266 2
5094       25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
5095       35,    -1,    37,    -1,    39,    40,    41,    42,    43,    -1,
5096 d1268 27
5097 a1294 2
5098       55,    56,    57,    58,    -1,    77,    78,    79,    80,    81,
5099       82,    83,    84,    85,    86,    87,    71,    89,    90,    91,
5100 d1296 1
5101 a1296 1
5102       -1,    86,    87,     6,    -1,     8,     9,    10,    11,    12,
5103 d1298 2
5104 a1299 2
5105       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
5106       33,    -1,    35,    -1,    37,    -1,    39,    40,    41,    42,
5107 d1301 2
5108 a1302 2
5109       53,    54,    55,    56,    57,    58,    -1,    -1,    -1,    -1,
5110       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,
5111 d1304 6
5112 a1309 14
5113        1,    -1,    -1,    86,    87,     6,    -1,     8,     9,    10,
5114       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
5115       21,    22,    23,    24,    25,    26,    -1,    28,    29,    30,
5116       31,    32,    33,    -1,    35,    -1,    37,    -1,    39,    40,
5117       41,    42,    43,    -1,    45,    46,    -1,    48,    -1,    -1,
5118       -1,    52,    53,    54,    55,    56,    57,    58,    -1,    -1,
5119       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5120       71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5121       -1,    -1,     1,    -1,    -1,    86,    87,     6,    -1,     8,
5122        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
5123       19,    20,    21,    22,    23,    24,    25,    -1,    -1,    -1,
5124       29,    30,    31,    32,    33,    34,    35,    -1,    37,    -1,
5125       39,    40,    41,    42,    43,    -1,    45,    46,    -1,    48,
5126       -1,    -1,    -1,    52,    53,    54,    55,    56,    57,    58,
5127 d1311 2
5128 a1312 2
5129       -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5130       -1,    -1,    -1,    -1,     1,    -1,    -1,    86,    87,     6,
5131 d1315 2
5132 a1316 2
5133       -1,    -1,    29,    30,    31,    32,    33,    34,    35,    -1,
5134       37,    -1,    39,    40,    41,    42,    43,    -1,    45,    46,
5135 d1318 10
5136 a1327 18
5137       57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5138       -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
5139       -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    86,
5140       87,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
5141       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
5142       25,    -1,    -1,    -1,    29,    30,    31,    32,    33,    -1,
5143       35,    -1,    37,    -1,    39,    40,    41,    42,    43,    44,
5144       45,    46,    -1,    48,    -1,    -1,    -1,    52,    53,    54,
5145       55,    56,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,
5146       -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
5147       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
5148       -1,    86,    87,     6,    -1,     8,     9,    10,    11,    12,
5149       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
5150       23,    24,    25,    -1,    -1,    -1,    29,    30,    31,    32,
5151       33,    -1,    35,    -1,    37,    -1,    39,    40,    41,    42,
5152       43,    44,    45,    46,    -1,    48,    -1,    -1,    -1,    52,
5153       53,    54,    55,    56,    57,    58,    -1,    -1,    -1,    -1,
5154       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,
5155 d1329 1
5156 a1329 1
5157        1,    -1,    -1,    86,    87,     6,    -1,     8,     9,    10,
5158 d1334 1
5159 a1334 1
5160       -1,    52,    53,    54,    55,    56,    57,    58,    -1,    -1,
5161 d1336 11
5162 a1346 19
5163       71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5164       -1,    -1,     1,    -1,    -1,    86,    87,     6,    -1,     8,
5165        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
5166       19,    20,    21,    22,    23,    24,    25,    -1,    -1,    -1,
5167       29,    30,    31,    32,    33,    34,    35,    -1,    37,    -1,
5168       39,    40,    41,    42,    43,    -1,    45,    46,    -1,    48,
5169       -1,    -1,    -1,    52,    53,    54,    55,    56,    57,    58,
5170       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5171       -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5172       -1,    -1,    -1,    -1,     1,    -1,    -1,    86,    87,     6,
5173       -1,     8,     9,    10,    11,    12,    13,    14,    15,    16,
5174       17,    18,    19,    20,    21,    22,    23,    24,    25,    -1,
5175       -1,    28,    29,    30,    31,    32,    33,    -1,    35,    -1,
5176       37,    -1,    39,    40,    41,    42,    43,    -1,    45,    46,
5177       -1,    48,    -1,    -1,    -1,    52,    53,    54,    55,    56,
5178       57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5179       -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
5180       -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    86,
5181       87,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
5182 d1348 1
5183 a1348 1
5184       25,    -1,    -1,    -1,    29,    30,    31,    32,    33,    -1,
5185 d1351 26
5186 a1376 16
5187       55,    56,    57,    58,    -1,    -1,     1,    -1,    -1,    -1,
5188       -1,     6,    -1,    -1,    -1,    -1,    71,    12,    13,    14,
5189       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
5190       25,    86,    87,    -1,    29,    30,    31,    32,    33,    -1,
5191       35,    -1,    37,    -1,    39,    40,    41,    42,    43,    -1,
5192       45,    46,    -1,    48,    -1,    -1,    -1,    52,    53,    54,
5193       55,    56,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,
5194       -1,    69,    -1,    -1,    -1,    -1,    71,    75,    76,    77,
5195       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
5196       70,    89,    90,    91,    -1,    75,    76,    77,    78,    79,
5197       80,    81,    82,    83,    84,    85,    86,    87,    -1,    89,
5198       90,    91,    75,    76,    77,    78,    79,    80,    81,    82,
5199       83,    84,    85,    86,    87,    -1,    89,    90,    91,    -1,
5200       -1,    -1,    95,    75,    76,    77,    78,    79,    80,    81,
5201       82,    83,    84,    85,    86,    87,    -1,    89,    90,    91,
5202       -1,    -1,    -1,    95
5203 d1387 34
5204 a1420 34
5205       56,    57,    58,    71,    86,    87,    97,    99,   100,   101,
5206      102,   103,   104,   105,   106,   109,   110,   111,   112,   113,
5207      114,   117,   120,   121,   122,   123,   124,   125,   126,   127,
5208      128,   143,   144,   147,   152,   153,   154,   155,   156,   157,
5209      159,   160,   162,   164,   167,   168,   169,   170,   171,   174,
5210      175,   176,   177,   125,     3,     4,     7,     8,     9,    50,
5211       51,    61,    65,    68,    72,    76,    80,    81,    86,    87,
5212       92,    93,    94,   129,   130,   134,   135,   140,   141,   142,
5213      144,   146,   144,    56,   125,   125,   129,   144,   144,     4,
5214        5,   161,   161,   144,   129,   129,   144,   166,   144,    56,
5215      144,   166,   166,   161,   144,   144,   145,   144,   144,   144,
5216      144,   129,   129,   129,    39,   144,   144,     0,    38,    98,
5217      100,   101,   125,    36,    64,    66,   129,   131,   136,   156,
5218      158,   165,   176,   125,   125,    68,   158,   129,   133,   132,
5219      144,   157,   134,   144,   129,   129,   144,   129,   129,   129,
5220      129,   129,   129,    70,    75,    76,    77,    78,    79,    80,
5221       81,    82,    83,    84,    85,    86,    87,    89,    90,    91,
5222       71,    60,    68,    94,    64,   107,   125,   125,   125,   125,
5223      125,   125,   163,   166,   125,   125,    70,   129,   125,   131,
5224      144,   156,   176,   125,    58,   125,   125,   125,   118,   119,
5225      144,   125,   125,   125,   125,   125,   144,   156,   176,   125,
5226      131,   131,   131,   137,   138,   139,    70,   125,   129,   125,
5227       69,    70,    95,    62,    63,   129,   129,   129,   129,   129,
5228      129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
5229      129,   130,   135,   144,   144,   129,   129,     3,    58,   108,
5230       99,    99,    99,   125,    99,    99,   144,   125,   125,   156,
5231      176,    13,    48,   144,   157,   173,    99,    99,    70,   125,
5232       58,   115,   116,   144,   168,    99,   156,   176,   125,   125,
5233       67,    70,   131,    69,    70,    62,    69,    95,   173,   125,
5234       27,   148,   149,   150,    26,   151,   151,    99,    34,    34,
5235       59,   172,    44,    44,   119,   129,    47,   116,   125,    49,
5236      139,    63,    69,   129,   151,   150,   125,    28,    28,    34,
5237      125,   125,   144,   125,   125,   125,   125,   125,   125,    28,
5238       99,   125,   125,   125,    99,   125
5239 d2257 1
5240 a2257 1
5241 #line 110 "parser.y"
5242 d2262 1
5243 a2262 1
5244 #line 114 "parser.y"
5245 d2267 1
5246 a2267 1
5247 #line 119 "parser.y"
5248 d2272 1
5249 a2272 1
5250 #line 120 "parser.y"
5251 d2280 1
5252 a2280 1
5253 #line 127 "parser.y"
5254 d2285 1
5255 a2285 1
5256 #line 128 "parser.y"
5257 d2290 1
5258 a2290 1
5259 #line 132 "parser.y"
5260 d2295 1
5261 a2295 1
5262 #line 133 "parser.y"
5263 d2300 1
5264 a2300 1
5265 #line 134 "parser.y"
5266 d2305 1
5267 a2305 1
5268 #line 135 "parser.y"
5269 d2310 1
5270 a2310 1
5271 #line 136 "parser.y"
5272 d2315 1
5273 a2315 1
5274 #line 137 "parser.y"
5275 d2320 1
5276 a2320 1
5277 #line 138 "parser.y"
5278 d2325 1
5279 a2325 1
5280 #line 139 "parser.y"
5281 d2330 1
5282 a2330 1
5283 #line 140 "parser.y"
5284 d2335 1
5285 a2335 1
5286 #line 141 "parser.y"
5287 d2340 1
5288 a2340 1
5289 #line 142 "parser.y"
5290 d2345 1
5291 a2345 1
5292 #line 143 "parser.y"
5293 d2350 1
5294 a2350 1
5295 #line 144 "parser.y"
5296 d2355 1
5297 a2355 1
5298 #line 145 "parser.y"
5299 d2360 1
5300 a2360 1
5301 #line 146 "parser.y"
5302 d2365 1
5303 a2365 1
5304 #line 147 "parser.y"
5305 d2370 1
5306 a2370 1
5307 #line 148 "parser.y"
5308 d2375 1
5309 a2375 1
5310 #line 149 "parser.y"
5311 d2380 1
5312 a2380 1
5313 #line 150 "parser.y"
5314 d2385 1
5315 a2385 1
5316 #line 151 "parser.y"
5317 d2390 1
5318 a2390 1
5319 #line 152 "parser.y"
5320 d2395 1
5321 a2395 1
5322 #line 153 "parser.y"
5323 d2400 1
5324 a2400 1
5325 #line 154 "parser.y"
5326 d2405 1
5327 a2405 1
5328 #line 155 "parser.y"
5329 d2410 1
5330 a2410 1
5331 #line 156 "parser.y"
5332 d2415 1
5333 a2415 1
5334 #line 157 "parser.y"
5335 d2420 1
5336 a2420 1
5337 #line 158 "parser.y"
5338 d2425 1
5339 a2425 1
5340 #line 159 "parser.y"
5341 d2430 1
5342 a2430 1
5343 #line 160 "parser.y"
5344 d2435 1
5345 a2435 1
5346 #line 161 "parser.y"
5347 d2440 1
5348 a2440 1
5349 #line 162 "parser.y"
5350 d2445 2
5351 a2446 2
5352 #line 163 "parser.y"
5353     { (yyval.node) = NULL; }
5354 d2451 1
5355 a2451 1
5356     { (yyval.node) = astnode_create_align((yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
5357 d2456 1
5358 a2456 1
5359     { (yyval.node) = astnode_create_warning((yyvsp[(2) - (3)].node), (yyloc)); }
5360 d2461 1
5361 a2461 1
5362     { (yyval.node) = astnode_create_error((yyvsp[(2) - (3)].node), (yyloc)); }
5363 d2466 1
5364 a2466 1
5365     { (yyval.node) = astnode_create_message((yyvsp[(2) - (3)].node), (yyloc)); }
5366 d2471 1
5367 a2471 1
5368     { (yyval.node) = astnode_create_label((yyvsp[(2) - (5)].node)->label, (yyvsp[(3) - (5)].node), (yyvsp[(4) - (5)].node), (yyloc)); }
5369 d2476 1
5370 a2476 1
5371     { (yyval.node) = astnode_create_integer((yyvsp[(2) - (2)].integer), (yyloc)); }
5372 d2480 2
5373 a2481 2
5374 #line 188 "parser.y"
5375     { (yyval.node) = NULL; }
5376 d2485 1
5377 a2485 1
5378 #line 192 "parser.y"
5379 d2490 1
5380 a2490 1
5381 #line 193 "parser.y"
5382 d2495 2
5383 a2496 2
5384 #line 197 "parser.y"
5385     { (yyval.node) = astnode_create_while((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
5386 d2501 1
5387 a2501 1
5388     { (yyval.node) = astnode_create_rept((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
5389 d2506 1
5390 a2506 1
5391     { (yyval.node) = astnode_create_proc((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
5392 d2511 1
5393 a2511 1
5394     { (yyval.node) = astnode_create_struc_decl((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
5395 d2516 1
5396 a2516 1
5397     { (yyval.node) = astnode_create_union_decl((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
5398 d2521 1
5399 a2521 1
5400     { (yyval.node) = astnode_create_enum_decl((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyloc)); }
5401 d2526 1
5402 a2526 1
5403     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5404 d2530 2
5405 a2531 2
5406 #line 222 "parser.y"
5407     { (yyval.node) = (yyvsp[(1) - (2)].node); astnode_add_sibling((yyval.node), (yyvsp[(2) - (2)].node)); }
5408 d2535 1
5409 a2535 1
5410 #line 226 "parser.y"
5411 d2540 2
5412 a2541 2
5413 #line 227 "parser.y"
5414     { (yyval.node) = (yyvsp[(1) - (2)].node); }
5415 d2545 2
5416 a2546 2
5417 #line 231 "parser.y"
5418     { (yyval.node) = astnode_create_record_decl((yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
5419 d2551 1
5420 a2551 1
5421     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5422 d2555 2
5423 a2556 2
5424 #line 236 "parser.y"
5425     { (yyval.node) = (yyvsp[(1) - (3)].node); astnode_add_sibling((yyval.node), (yyvsp[(3) - (3)].node)); }
5426 d2560 2
5427 a2561 2
5428 #line 240 "parser.y"
5429     { (yyval.node) = astnode_create_bitfield_decl((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5430 d2566 1
5431 a2566 1
5432     { (yyval.node) = astnode_create_charmap((yyvsp[(2) - (3)].node), (yyloc)); }
5433 d2571 1
5434 a2571 1
5435     { (yyval.node) = astnode_create_dataseg(0, (yyloc)); }
5436 d2575 2
5437 a2576 2
5438 #line 249 "parser.y"
5439     { (yyval.node) = astnode_create_dataseg(ZEROPAGE_FLAG, (yyloc)); }
5440 d2580 2
5441 a2581 2
5442 #line 252 "parser.y"
5443     { (yyval.node) = astnode_create_codeseg((yyloc)); }
5444 d2585 2
5445 a2586 2
5446 #line 256 "parser.y"
5447     { (yyval.node) = NULL; }
5448 d2591 1
5449 a2591 1
5450     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5451 d2596 1
5452 a2596 1
5453     { ; }
5454 d2600 2
5455 a2601 2
5456 #line 265 "parser.y"
5457     { ; }
5458 d2605 1
5459 a2605 1
5460 #line 269 "parser.y"
5461 d2611 1
5462 a2611 1
5463     { (yyval.node) = (yyvsp[(1) - (2)].node); }
5464 d2616 1
5465 a2616 1
5466     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (1)].mnemonic), IMPLIED_MODE, NULL, (yyloc)); }
5467 d2620 2
5468 a2621 2
5469 #line 278 "parser.y"
5470     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (2)].mnemonic), ACCUMULATOR_MODE, NULL, (yyloc)); }
5471 d2625 2
5472 a2626 2
5473 #line 279 "parser.y"
5474     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (3)].mnemonic), IMMEDIATE_MODE, (yyvsp[(3) - (3)].node), (yyloc)); }
5475 d2630 2
5476 a2631 2
5477 #line 280 "parser.y"
5478     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (2)].mnemonic), ABSOLUTE_MODE, (yyvsp[(2) - (2)].node), (yyloc)); }
5479 d2635 2
5480 a2636 2
5481 #line 281 "parser.y"
5482     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (4)].mnemonic), ABSOLUTE_X_MODE, (yyvsp[(2) - (4)].node), (yyloc)); }
5483 d2640 2
5484 a2641 2
5485 #line 282 "parser.y"
5486     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (4)].mnemonic), ABSOLUTE_Y_MODE, (yyvsp[(2) - (4)].node), (yyloc)); }
5487 d2645 2
5488 a2646 2
5489 #line 283 "parser.y"
5490     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (6)].mnemonic), PREINDEXED_INDIRECT_MODE, (yyvsp[(3) - (6)].node), (yyloc)); }
5491 d2650 2
5492 a2651 2
5493 #line 284 "parser.y"
5494     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (6)].mnemonic), POSTINDEXED_INDIRECT_MODE, (yyvsp[(3) - (6)].node), (yyloc)); }
5495 d2655 2
5496 a2656 2
5497 #line 285 "parser.y"
5498     { (yyval.node) = astnode_create_instruction((yyvsp[(1) - (4)].mnemonic), INDIRECT_MODE, (yyvsp[(3) - (4)].node), (yyloc)); }
5499 d2660 2
5500 a2661 2
5501 #line 289 "parser.y"
5502     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5503 d2665 2
5504 a2666 2
5505 #line 290 "parser.y"
5506     { (yyval.node) = astnode_create_sizeof((yyvsp[(2) - (2)].node), (yyloc)); }
5507 d2670 1
5508 a2670 1
5509 #line 291 "parser.y"
5510 d2675 2
5511 a2676 2
5512 #line 292 "parser.y"
5513     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5514 d2680 1
5515 a2680 1
5516 #line 293 "parser.y"
5517 d2685 1
5518 a2685 1
5519 #line 294 "parser.y"
5520 d2690 2
5521 a2691 2
5522 #line 295 "parser.y"
5523     { (yyval.node) = astnode_create_pc((yyloc)); }
5524 d2695 1
5525 a2695 1
5526 #line 296 "parser.y"
5527 d2700 2
5528 a2701 2
5529 #line 297 "parser.y"
5530     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5531 d2705 2
5532 a2706 2
5533 #line 298 "parser.y"
5534     { (yyval.node) = (yyvsp[(2) - (3)].node); }
5535 d2710 2
5536 a2711 2
5537 #line 299 "parser.y"
5538     { (yyval.node) = astnode_create_forward_branch("+", (yyloc)); }
5539 d2715 2
5540 a2716 2
5541 #line 300 "parser.y"
5542     { (yyval.node) = astnode_create_backward_branch("-", (yyloc)); }
5543 d2720 2
5544 a2721 2
5545 #line 301 "parser.y"
5546     { (yyval.node) = astnode_create_forward_branch((yyvsp[(1) - (1)].ident), (yyloc)); }
5547 d2725 2
5548 a2726 2
5549 #line 302 "parser.y"
5550     { (yyval.node) = astnode_create_backward_branch((yyvsp[(1) - (1)].ident), (yyloc)); }
5551 d2730 2
5552 a2731 2
5553 #line 303 "parser.y"
5554     { (yyval.node) = astnode_create_mask((yyvsp[(2) - (2)].node), (yyloc)); }
5555 d2735 2
5556 a2736 2
5557 #line 307 "parser.y"
5558     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5559 d2740 2
5560 a2741 2
5561 #line 308 "parser.y"
5562     { (yyval.node) = astnode_create_index((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
5563 d2745 2
5564 a2746 2
5565 #line 309 "parser.y"
5566     { (yyval.node) = astnode_create_index((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
5567 d2750 2
5568 a2751 2
5569 #line 313 "parser.y"
5570     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5571 d2755 2
5572 a2756 2
5573 #line 314 "parser.y"
5574     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5575 d2760 1
5576 a2760 1
5577 #line 318 "parser.y"
5578 d2765 1
5579 a2765 1
5580 #line 319 "parser.y"
5581 d2770 1
5582 a2770 1
5583 #line 323 "parser.y"
5584 d2775 2
5585 a2776 2
5586 #line 324 "parser.y"
5587     { (yyval.node) = NULL; }
5588 d2780 2
5589 a2781 2
5590 #line 328 "parser.y"
5591     { (yyval.node) = astnode_create_scope((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5592 d2786 1
5593 a2786 1
5594     { (yyval.node) = astnode_create_dot((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5595 d2790 2
5596 a2791 2
5597 #line 333 "parser.y"
5598     { (yyval.node) = astnode_create_dot((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5599 d2795 2
5600 a2796 2
5601 #line 337 "parser.y"
5602     { (yyval.node) = astnode_create_struc((yyvsp[(2) - (3)].node), (yyloc)); }
5603 d2801 1
5604 a2801 1
5605     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5606 d2805 2
5607 a2806 2
5608 #line 342 "parser.y"
5609     { (yyval.node) = NULL; }
5610 d2810 1
5611 a2810 1
5612 #line 346 "parser.y"
5613 d2815 2
5614 a2816 2
5615 #line 347 "parser.y"
5616     { (yyval.node) = (yyvsp[(1) - (3)].node); astnode_add_sibling((yyval.node), (yyvsp[(3) - (3)].node)); }
5617 d2820 1
5618 a2820 1
5619 #line 351 "parser.y"
5620 d2825 2
5621 a2826 2
5622 #line 352 "parser.y"
5623     { (yyval.node) = astnode_create_null((yyloc)); }
5624 d2830 2
5625 a2831 2
5626 #line 356 "parser.y"
5627     { (yyval.node) = astnode_create_local_id((yyvsp[(1) - (1)].ident), (yyloc)); }
5628 d2836 1
5629 a2836 1
5630     { (yyval.node) = astnode_create_arithmetic(PLUS_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5631 d2840 2
5632 a2841 2
5633 #line 361 "parser.y"
5634     { (yyval.node) = astnode_create_arithmetic(MINUS_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5635 d2845 2
5636 a2846 2
5637 #line 362 "parser.y"
5638     { (yyval.node) = astnode_create_arithmetic(MUL_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5639 d2850 2
5640 a2851 2
5641 #line 363 "parser.y"
5642     { (yyval.node) = astnode_create_arithmetic(DIV_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5643 d2855 2
5644 a2856 2
5645 #line 364 "parser.y"
5646     { (yyval.node) = astnode_create_arithmetic(MOD_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5647 d2860 2
5648 a2861 2
5649 #line 365 "parser.y"
5650     { (yyval.node) = astnode_create_arithmetic(AND_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5651 d2865 2
5652 a2866 2
5653 #line 366 "parser.y"
5654     { (yyval.node) = astnode_create_arithmetic(OR_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5655 d2870 2
5656 a2871 2
5657 #line 367 "parser.y"
5658     { (yyval.node) = astnode_create_arithmetic(XOR_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5659 d2875 2
5660 a2876 2
5661 #line 368 "parser.y"
5662     { (yyval.node) = astnode_create_arithmetic(SHL_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5663 d2880 2
5664 a2881 2
5665 #line 369 "parser.y"
5666     { (yyval.node) = astnode_create_arithmetic(SHR_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5667 d2885 2
5668 a2886 2
5669 #line 370 "parser.y"
5670     { (yyval.node) = astnode_create_arithmetic(NEG_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
5671 d2890 2
5672 a2891 2
5673 #line 371 "parser.y"
5674     { (yyval.node) = astnode_create_arithmetic(NOT_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
5675 d2895 2
5676 a2896 2
5677 #line 372 "parser.y"
5678     { (yyval.node) = astnode_create_arithmetic(BANK_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
5679 d2900 2
5680 a2901 2
5681 #line 373 "parser.y"
5682     { (yyval.node) = astnode_create_arithmetic(LO_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
5683 d2905 2
5684 a2906 2
5685 #line 374 "parser.y"
5686     { (yyval.node) = astnode_create_arithmetic(HI_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
5687 d2910 2
5688 a2911 2
5689 #line 375 "parser.y"
5690     { (yyval.node) = astnode_create_arithmetic(UMINUS_OPERATOR, (yyvsp[(2) - (2)].node), NULL, (yyloc)); }
5691 d2915 2
5692 a2916 2
5693 #line 379 "parser.y"
5694     { (yyval.node) = astnode_create_arithmetic(EQ_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5695 d2920 2
5696 a2921 2
5697 #line 380 "parser.y"
5698     { (yyval.node) = astnode_create_arithmetic(NE_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5699 d2925 2
5700 a2926 2
5701 #line 381 "parser.y"
5702     { (yyval.node) = astnode_create_arithmetic(GT_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5703 d2930 2
5704 a2931 2
5705 #line 382 "parser.y"
5706     { (yyval.node) = astnode_create_arithmetic(LT_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5707 d2935 2
5708 a2936 2
5709 #line 383 "parser.y"
5710     { (yyval.node) = astnode_create_arithmetic(GE_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5711 d2940 2
5712 a2941 2
5713 #line 384 "parser.y"
5714     { (yyval.node) = astnode_create_arithmetic(LE_OPERATOR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5715 d2945 2
5716 a2946 2
5717 #line 388 "parser.y"
5718     { (yyval.node) = astnode_create_label((yyvsp[(1) - (1)].label), NULL, NULL, (yyloc)); }
5719 d2950 2
5720 a2951 2
5721 #line 389 "parser.y"
5722     { (yyval.node) = astnode_create_local_label((yyvsp[(1) - (1)].label), (yyloc)); }
5723 d2955 2
5724 a2956 2
5725 #line 390 "parser.y"
5726     { (yyval.node) = astnode_create_forward_branch_decl("+", (yyloc)); }
5727 d2960 2
5728 a2961 2
5729 #line 391 "parser.y"
5730     { (yyval.node) = astnode_create_backward_branch_decl("-", (yyloc)); }
5731 d2965 2
5732 a2966 2
5733 #line 392 "parser.y"
5734     { (yyval.node) = astnode_create_forward_branch_decl((yyvsp[(1) - (1)].ident), (yyloc)); }
5735 d2970 2
5736 a2971 2
5737 #line 393 "parser.y"
5738     { (yyval.node) = astnode_create_backward_branch_decl((yyvsp[(1) - (1)].ident), (yyloc)); }
5739 d2975 2
5740 a2976 2
5741 #line 397 "parser.y"
5742     { (yyval.node) = astnode_create_identifier((yyvsp[(1) - (1)].ident), (yyloc)); }
5743 d2981 1
5744 a2981 1
5745     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5746 d2985 2
5747 a2986 2
5748 #line 402 "parser.y"
5749     { (yyval.node) = astnode_create_null((yyloc)); }
5750 d2990 2
5751 a2991 2
5752 #line 406 "parser.y"
5753     { (yyval.node) = astnode_create_integer((yyvsp[(1) - (1)].integer), (yyloc)); }
5754 d2995 2
5755 a2996 2
5756 #line 407 "parser.y"
5757     { (yyval.node) = astnode_create_string((yyvsp[(1) - (1)].string), (yyloc)); }
5758 d3000 2
5759 a3001 2
5760 #line 411 "parser.y"
5761     { (yyval.node) = astnode_create_if((yyvsp[(2) - (8)].node), (yyvsp[(4) - (8)].node), (yyvsp[(5) - (8)].node), (yyvsp[(6) - (8)].node), (yyloc)); }
5762 d3006 1
5763 a3006 1
5764     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5765 d3010 2
5766 a3011 2
5767 #line 416 "parser.y"
5768     { (yyval.node) = NULL; }
5769 d3015 1
5770 a3015 1
5771 #line 420 "parser.y"
5772 d3020 2
5773 a3021 2
5774 #line 421 "parser.y"
5775     { (yyval.node) = (yyvsp[(1) - (2)].node); astnode_add_sibling((yyval.node), (yyvsp[(2) - (2)].node)); }
5776 d3025 2
5777 a3026 2
5778 #line 425 "parser.y"
5779     { (yyval.node) = astnode_create_case((yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
5780 d3031 1
5781 a3031 1
5782     { (yyval.node) = (yyvsp[(3) - (3)].node); }
5783 d3035 2
5784 a3036 2
5785 #line 430 "parser.y"
5786     { (yyval.node) = NULL; }
5787 d3040 2
5788 a3041 2
5789 #line 434 "parser.y"
5790     { (yyval.node) = astnode_create_ifdef((yyvsp[(2) - (7)].node), (yyvsp[(4) - (7)].node), (yyvsp[(5) - (7)].node), (yyloc)); }
5791 d3046 1
5792 a3046 1
5793     { (yyval.node) = astnode_create_ifndef((yyvsp[(2) - (7)].node), (yyvsp[(4) - (7)].node), (yyvsp[(5) - (7)].node), (yyloc)); }
5794 d3051 1
5795 a3051 1
5796     { (yyval.node) = (yyvsp[(1) - (2)].node); }
5797 d3055 2
5798 a3056 2
5799 #line 443 "parser.y"
5800     { (yyval.node) = (yyvsp[(1) - (2)].node); }
5801 d3060 2
5802 a3061 2
5803 #line 447 "parser.y"
5804     { (yyval.node) = astnode_create_var_decl(0, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), (yyloc)); }
5805 d3065 2
5806 a3066 2
5807 #line 448 "parser.y"
5808     { (yyval.node) = astnode_create_var_decl(ZEROPAGE_FLAG, (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5809 d3070 2
5810 a3071 2
5811 #line 449 "parser.y"
5812     { (yyval.node) = astnode_create_var_decl(PUBLIC_FLAG, (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5813 d3075 2
5814 a3076 2
5815 #line 450 "parser.y"
5816     { (yyval.node) = astnode_create_var_decl(ZEROPAGE_FLAG | PUBLIC_FLAG, (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
5817 d3080 2
5818 a3081 2
5819 #line 451 "parser.y"
5820     { (yyval.node) = astnode_create_var_decl(PUBLIC_FLAG | ZEROPAGE_FLAG, (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
5821 d3085 2
5822 a3086 2
5823 #line 455 "parser.y"
5824     { (yyval.node) = astnode_create_data((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), (yyloc)); }
5825 d3090 2
5826 a3091 2
5827 #line 456 "parser.y"
5828     { (yyval.node) = astnode_create_storage((yyvsp[(1) - (1)].node), NULL, (yyloc)); }
5829 d3095 2
5830 a3096 2
5831 #line 457 "parser.y"
5832     { (yyval.node) = astnode_create_storage((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
5833 d3100 2
5834 a3101 2
5835 #line 461 "parser.y"
5836     { (yyval.node) = astnode_create_datatype(BYTE_DATATYPE, NULL, (yyloc)); }
5837 d3105 2
5838 a3106 2
5839 #line 462 "parser.y"
5840     { (yyval.node) = astnode_create_datatype(CHAR_DATATYPE, NULL, (yyloc)); }
5841 d3110 2
5842 a3111 2
5843 #line 463 "parser.y"
5844     { (yyval.node) = astnode_create_datatype(WORD_DATATYPE, NULL, (yyloc)); }
5845 d3115 2
5846 a3116 2
5847 #line 464 "parser.y"
5848     { (yyval.node) = astnode_create_datatype(DWORD_DATATYPE, NULL, (yyloc)); }
5849 d3120 2
5850 a3121 2
5851 #line 465 "parser.y"
5852     { (yyval.node) = astnode_create_datatype(USER_DATATYPE, (yyvsp[(2) - (2)].node), (yyloc)); }
5853 d3125 2
5854 a3126 2
5855 #line 466 "parser.y"
5856     { (yyval.node) = astnode_create_datatype(USER_DATATYPE, (yyvsp[(2) - (2)].node), (yyloc)); }
5857 d3130 2
5858 a3131 2
5859 #line 470 "parser.y"
5860     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5861 d3135 2
5862 a3136 2
5863 #line 471 "parser.y"
5864     { (yyval.node) = (yyvsp[(1) - (3)].node); astnode_add_sibling((yyval.node), (yyvsp[(3) - (3)].node)); }
5865 d3140 2
5866 a3141 2
5867 #line 475 "parser.y"
5868     { (yyval.node) = astnode_create_incsrc((yyvsp[(2) - (3)].node), (yyloc)); handle_incsrc((yyval.node)); }
5869 d3146 1
5870 a3146 1
5871     { (yyval.node) = astnode_create_incbin((yyvsp[(2) - (3)].node), (yyloc)); handle_incbin((yyval.node)); }
5872 d3151 1
5873 a3151 1
5874     { (yyval.node) = astnode_create_string((yyvsp[(1) - (1)].string), (yyloc)); }
5875 d3155 2
5876 a3156 2
5877 #line 484 "parser.y"
5878     { (yyval.node) = astnode_create_file_path((yyvsp[(1) - (1)].string), (yyloc)); }
5879 d3160 2
5880 a3161 2
5881 #line 488 "parser.y"
5882     { (yyval.node) = astnode_create_macro_decl((yyvsp[(2) - (7)].node), (yyvsp[(3) - (7)].node), (yyvsp[(5) - (7)].node), (yyloc)); }
5883 d3166 1
5884 a3166 1
5885     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5886 d3170 2
5887 a3171 2
5888 #line 493 "parser.y"
5889     { (yyval.node) = NULL; }
5890 d3175 2
5891 a3176 2
5892 #line 497 "parser.y"
5893     { (yyval.node) = astnode_create_macro((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyloc)); }
5894 d3181 1
5895 a3181 1
5896     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5897 d3185 2
5898 a3186 2
5899 #line 502 "parser.y"
5900     { (yyval.node) = NULL; }
5901 d3190 1
5902 a3190 1
5903 #line 506 "parser.y"
5904 d3195 2
5905 a3196 2
5906 #line 507 "parser.y"
5907     { (yyval.node) = (yyvsp[(1) - (3)].node); astnode_add_sibling((yyval.node), (yyvsp[(3) - (3)].node)); }
5908 d3200 2
5909 a3201 2
5910 #line 511 "parser.y"
5911     { (yyval.node) = astnode_create_equ((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
5912 d3206 1
5913 a3206 1
5914     { (yyval.node) = astnode_create_assign((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
5915 d3211 1
5916 a3211 1
5917     { (yyval.node) = astnode_create_equ((yyvsp[(2) - (3)].node), astnode_create_integer(0, (yyloc)), (yyloc)); }
5918 d3215 2
5919 a3216 2
5920 #line 520 "parser.y"
5921     { (yyval.node) = astnode_create_equ((yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node), (yyloc)); }
5922 d3220 2
5923 a3221 2
5924 #line 524 "parser.y"
5925     { (yyval.node) = astnode_create_public((yyvsp[(2) - (3)].node), (yyloc)); }
5926 d3226 1
5927 a3226 1
5928     { (yyval.node) = astnode_create_extrn((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node), (yyvsp[(5) - (6)].node), (yyloc)); }
5929 d3231 1
5930 a3231 1
5931     { (yyval.node) = (yyvsp[(2) - (2)].node); }
5932 d3235 2
5933 a3236 2
5934 #line 533 "parser.y"
5935     { (yyval.node) = NULL; }
5936 d3240 2
5937 a3241 2
5938 #line 537 "parser.y"
5939     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5940 d3245 2
5941 a3246 2
5942 #line 538 "parser.y"
5943     { (yyval.node) = astnode_create_datatype(USER_DATATYPE, (yyvsp[(1) - (1)].node), (yyloc)); }
5944 d3250 2
5945 a3251 2
5946 #line 539 "parser.y"
5947     { (yyval.node) = astnode_create_integer(PROC_SYMBOL, (yyloc)); }
5948 d3255 2
5949 a3256 2
5950 #line 540 "parser.y"
5951     { (yyval.node) = astnode_create_integer(LABEL_SYMBOL, (yyloc)); }
5952 d3260 2
5953 a3261 2
5954 #line 544 "parser.y"
5955     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5956 d3265 2
5957 a3266 2
5958 #line 545 "parser.y"
5959     { (yyval.node) = (yyvsp[(1) - (1)].node); }
5960 d3270 2
5961 a3271 2
5962 #line 549 "parser.y"
5963     { (yyval.node) = astnode_create_var_decl(0, (yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node), (yyloc)); }
5964 d3275 2
5965 a3276 2
5966 #line 550 "parser.y"
5967     { (yyval.node) = astnode_create_var_decl(ZEROPAGE_FLAG, (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5968 d3280 2
5969 a3281 2
5970 #line 551 "parser.y"
5971     { (yyval.node) = astnode_create_var_decl(PUBLIC_FLAG, (yyvsp[(2) - (3)].node), (yyvsp[(3) - (3)].node), (yyloc)); }
5972 d3285 2
5973 a3286 2
5974 #line 552 "parser.y"
5975     { (yyval.node) = astnode_create_var_decl(ZEROPAGE_FLAG | PUBLIC_FLAG, (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
5976 d3290 2
5977 a3291 2
5978 #line 553 "parser.y"
5979     { (yyval.node) = astnode_create_var_decl(PUBLIC_FLAG | ZEROPAGE_FLAG, (yyvsp[(3) - (4)].node), (yyvsp[(4) - (4)].node), (yyloc)); }
5980 d3295 2
5981 a3296 2
5982 #line 557 "parser.y"
5983     { (yyval.node) = astnode_create_storage((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node), (yyloc)); }
5984 d3301 10
5985 d3314 2
5986 a3315 2
5987   case 212:
5988 #line 562 "parser.y"
5989 d3319 2
5990 a3320 2
5991   case 213:
5992 #line 563 "parser.y"
5993 d3326 1
5994 a3326 1
5995 #line 3303 "parser.c"
5996 d3546 1
5997 a3546 1
5998 #line 565 "parser.y"
6004 @convert tabs to whitespaces
6006 text
6007 @d208 1
6008 a208 1
6009  * $Id: parser.y,v 1.9 2005/01/05 02:28:40 kenth Exp khansen $
6010 d210 3
6011 d247 1
6012 d281 1
6013 a281 1
6014 #line 52 "parser.y"
6015 d291 1
6016 a291 1
6017 #line 288 "parser.c"
6018 d316 1
6019 a316 1
6020 #line 313 "parser.c"
6021 d692 22
6022 a713 22
6023        0,   106,   106,   110,   111,   115,   116,   123,   124,   128,
6024      129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
6025      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
6026      149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
6027      159,   163,   167,   171,   175,   179,   183,   184,   188,   189,
6028      193,   197,   201,   205,   209,   213,   217,   218,   222,   223,
6029      227,   231,   232,   236,   240,   244,   245,   248,   252,   256,
6030      260,   261,   265,   269,   273,   274,   275,   276,   277,   278,
6031      279,   280,   281,   285,   286,   287,   288,   289,   290,   291,
6032      292,   293,   294,   295,   296,   297,   298,   299,   303,   304,
6033      305,   309,   310,   314,   315,   319,   320,   324,   328,   329,
6034      333,   337,   338,   342,   343,   347,   348,   352,   356,   357,
6035      358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
6036      368,   369,   370,   371,   375,   376,   377,   378,   379,   380,
6037      384,   385,   386,   387,   388,   389,   393,   397,   398,   402,
6038      403,   407,   411,   412,   416,   417,   421,   425,   426,   430,
6039      434,   438,   439,   443,   444,   445,   446,   447,   451,   452,
6040      453,   457,   458,   459,   460,   461,   462,   466,   467,   471,
6041      475,   479,   480,   484,   488,   489,   493,   497,   498,   502,
6042      503,   507,   511,   515,   516,   520,   524,   528,   529,   533,
6043      534,   535,   536,   540,   541,   545,   546,   547,   548,   549,
6044      553,   557,   558,   559
6045 d2243 1
6046 a2243 1
6047 #line 106 "parser.y"
6048 d2248 1
6049 a2248 1
6050 #line 110 "parser.y"
6051 d2253 1
6052 a2253 1
6053 #line 115 "parser.y"
6054 d2258 1
6055 a2258 1
6056 #line 116 "parser.y"
6057 d2266 1
6058 a2266 1
6059 #line 123 "parser.y"
6060 d2271 1
6061 a2271 1
6062 #line 124 "parser.y"
6063 d2276 1
6064 a2276 1
6065 #line 128 "parser.y"
6066 d2281 1
6067 a2281 1
6068 #line 129 "parser.y"
6069 d2286 1
6070 a2286 1
6071 #line 130 "parser.y"
6072 d2291 1
6073 a2291 1
6074 #line 131 "parser.y"
6075 d2296 1
6076 a2296 1
6077 #line 132 "parser.y"
6078 d2301 1
6079 a2301 1
6080 #line 133 "parser.y"
6081 d2306 1
6082 a2306 1
6083 #line 134 "parser.y"
6084 d2311 1
6085 a2311 1
6086 #line 135 "parser.y"
6087 d2316 1
6088 a2316 1
6089 #line 136 "parser.y"
6090 d2321 1
6091 a2321 1
6092 #line 137 "parser.y"
6093 d2326 1
6094 a2326 1
6095 #line 138 "parser.y"
6096 d2331 1
6097 a2331 1
6098 #line 139 "parser.y"
6099 d2336 1
6100 a2336 1
6101 #line 140 "parser.y"
6102 d2341 1
6103 a2341 1
6104 #line 141 "parser.y"
6105 d2346 1
6106 a2346 1
6107 #line 142 "parser.y"
6108 d2351 1
6109 a2351 1
6110 #line 143 "parser.y"
6111 d2356 1
6112 a2356 1
6113 #line 144 "parser.y"
6114 d2361 1
6115 a2361 1
6116 #line 145 "parser.y"
6117 d2366 1
6118 a2366 1
6119 #line 146 "parser.y"
6120 d2371 1
6121 a2371 1
6122 #line 147 "parser.y"
6123 d2376 1
6124 a2376 1
6125 #line 148 "parser.y"
6126 d2381 1
6127 a2381 1
6128 #line 149 "parser.y"
6129 d2386 1
6130 a2386 1
6131 #line 150 "parser.y"
6132 d2391 1
6133 a2391 1
6134 #line 151 "parser.y"
6135 d2396 1
6136 a2396 1
6137 #line 152 "parser.y"
6138 d2401 1
6139 a2401 1
6140 #line 153 "parser.y"
6141 d2406 1
6142 a2406 1
6143 #line 154 "parser.y"
6144 d2411 1
6145 a2411 1
6146 #line 155 "parser.y"
6147 d2416 1
6148 a2416 1
6149 #line 156 "parser.y"
6150 d2421 1
6151 a2421 1
6152 #line 157 "parser.y"
6153 d2426 1
6154 a2426 1
6155 #line 158 "parser.y"
6156 d2431 1
6157 a2431 1
6158 #line 159 "parser.y"
6159 d2436 1
6160 a2436 1
6161 #line 163 "parser.y"
6162 d2441 1
6163 a2441 1
6164 #line 167 "parser.y"
6165 d2446 1
6166 a2446 1
6167 #line 171 "parser.y"
6168 d2451 1
6169 a2451 1
6170 #line 175 "parser.y"
6171 d2456 1
6172 a2456 1
6173 #line 179 "parser.y"
6174 d2461 1
6175 a2461 1
6176 #line 183 "parser.y"
6177 d2466 1
6178 a2466 1
6179 #line 184 "parser.y"
6180 d2471 1
6181 a2471 1
6182 #line 188 "parser.y"
6183 d2476 1
6184 a2476 1
6185 #line 189 "parser.y"
6186 d2481 1
6187 a2481 1
6188 #line 193 "parser.y"
6189 d2486 1
6190 a2486 1
6191 #line 197 "parser.y"
6192 d2491 1
6193 a2491 1
6194 #line 201 "parser.y"
6195 d2496 1
6196 a2496 1
6197 #line 205 "parser.y"
6198 d2501 1
6199 a2501 1
6200 #line 209 "parser.y"
6201 d2506 1
6202 a2506 1
6203 #line 213 "parser.y"
6204 d2511 1
6205 a2511 1
6206 #line 217 "parser.y"
6207 d2516 1
6208 a2516 1
6209 #line 218 "parser.y"
6210 d2521 1
6211 a2521 1
6212 #line 222 "parser.y"
6213 d2526 1
6214 a2526 1
6215 #line 223 "parser.y"
6216 d2531 1
6217 a2531 1
6218 #line 227 "parser.y"
6219 d2536 1
6220 a2536 1
6221 #line 231 "parser.y"
6222 d2541 1
6223 a2541 1
6224 #line 232 "parser.y"
6225 d2546 1
6226 a2546 1
6227 #line 236 "parser.y"
6228 d2551 1
6229 a2551 1
6230 #line 240 "parser.y"
6231 d2556 1
6232 a2556 1
6233 #line 244 "parser.y"
6234 d2561 1
6235 a2561 1
6236 #line 245 "parser.y"
6237 d2566 1
6238 a2566 1
6239 #line 248 "parser.y"
6240 d2571 1
6241 a2571 1
6242 #line 252 "parser.y"
6243 d2576 1
6244 a2576 1
6245 #line 256 "parser.y"
6246 d2581 1
6247 a2581 1
6248 #line 260 "parser.y"
6249 d2586 1
6250 a2586 1
6251 #line 261 "parser.y"
6252 d2591 1
6253 a2591 1
6254 #line 265 "parser.y"
6255 d2596 1
6256 a2596 1
6257 #line 269 "parser.y"
6258 d2601 1
6259 a2601 1
6260 #line 273 "parser.y"
6261 d2606 1
6262 a2606 1
6263 #line 274 "parser.y"
6264 d2611 1
6265 a2611 1
6266 #line 275 "parser.y"
6267 d2616 1
6268 a2616 1
6269 #line 276 "parser.y"
6270 d2621 1
6271 a2621 1
6272 #line 277 "parser.y"
6273 d2626 1
6274 a2626 1
6275 #line 278 "parser.y"
6276 d2631 1
6277 a2631 1
6278 #line 279 "parser.y"
6279 d2636 1
6280 a2636 1
6281 #line 280 "parser.y"
6282 d2641 1
6283 a2641 1
6284 #line 281 "parser.y"
6285 d2646 1
6286 a2646 1
6287 #line 285 "parser.y"
6288 d2651 1
6289 a2651 1
6290 #line 286 "parser.y"
6291 d2656 1
6292 a2656 1
6293 #line 287 "parser.y"
6294 d2661 1
6295 a2661 1
6296 #line 288 "parser.y"
6297 d2666 1
6298 a2666 1
6299 #line 289 "parser.y"
6300 d2671 1
6301 a2671 1
6302 #line 290 "parser.y"
6303 d2676 1
6304 a2676 1
6305 #line 291 "parser.y"
6306 d2681 1
6307 a2681 1
6308 #line 292 "parser.y"
6309 d2686 1
6310 a2686 1
6311 #line 293 "parser.y"
6312 d2691 1
6313 a2691 1
6314 #line 294 "parser.y"
6315 d2696 1
6316 a2696 1
6317 #line 295 "parser.y"
6318 d2701 1
6319 a2701 1
6320 #line 296 "parser.y"
6321 d2706 1
6322 a2706 1
6323 #line 297 "parser.y"
6324 d2711 1
6325 a2711 1
6326 #line 298 "parser.y"
6327 d2716 1
6328 a2716 1
6329 #line 299 "parser.y"
6330 d2721 1
6331 a2721 1
6332 #line 303 "parser.y"
6333 d2726 1
6334 a2726 1
6335 #line 304 "parser.y"
6336 d2731 1
6337 a2731 1
6338 #line 305 "parser.y"
6339 d2736 1
6340 a2736 1
6341 #line 309 "parser.y"
6342 d2741 1
6343 a2741 1
6344 #line 310 "parser.y"
6345 d2746 1
6346 a2746 1
6347 #line 314 "parser.y"
6348 d2751 1
6349 a2751 1
6350 #line 315 "parser.y"
6351 d2756 1
6352 a2756 1
6353 #line 319 "parser.y"
6354 d2761 1
6355 a2761 1
6356 #line 320 "parser.y"
6357 d2766 1
6358 a2766 1
6359 #line 324 "parser.y"
6360 d2771 1
6361 a2771 1
6362 #line 328 "parser.y"
6363 d2776 1
6364 a2776 1
6365 #line 329 "parser.y"
6366 d2781 1
6367 a2781 1
6368 #line 333 "parser.y"
6369 d2786 1
6370 a2786 1
6371 #line 337 "parser.y"
6372 d2791 1
6373 a2791 1
6374 #line 338 "parser.y"
6375 d2796 1
6376 a2796 1
6377 #line 342 "parser.y"
6378 d2801 1
6379 a2801 1
6380 #line 343 "parser.y"
6381 d2806 1
6382 a2806 1
6383 #line 347 "parser.y"
6384 d2811 1
6385 a2811 1
6386 #line 348 "parser.y"
6387 d2816 1
6388 a2816 1
6389 #line 352 "parser.y"
6390 d2821 1
6391 a2821 1
6392 #line 356 "parser.y"
6393 d2826 1
6394 a2826 1
6395 #line 357 "parser.y"
6396 d2831 1
6397 a2831 1
6398 #line 358 "parser.y"
6399 d2836 1
6400 a2836 1
6401 #line 359 "parser.y"
6402 d2841 1
6403 a2841 1
6404 #line 360 "parser.y"
6405 d2846 1
6406 a2846 1
6407 #line 361 "parser.y"
6408 d2851 1
6409 a2851 1
6410 #line 362 "parser.y"
6411 d2856 1
6412 a2856 1
6413 #line 363 "parser.y"
6414 d2861 1
6415 a2861 1
6416 #line 364 "parser.y"
6417 d2866 1
6418 a2866 1
6419 #line 365 "parser.y"
6420 d2871 1
6421 a2871 1
6422 #line 366 "parser.y"
6423 d2876 1
6424 a2876 1
6425 #line 367 "parser.y"
6426 d2881 1
6427 a2881 1
6428 #line 368 "parser.y"
6429 d2886 1
6430 a2886 1
6431 #line 369 "parser.y"
6432 d2891 1
6433 a2891 1
6434 #line 370 "parser.y"
6435 d2896 1
6436 a2896 1
6437 #line 371 "parser.y"
6438 d2901 1
6439 a2901 1
6440 #line 375 "parser.y"
6441 d2906 1
6442 a2906 1
6443 #line 376 "parser.y"
6444 d2911 1
6445 a2911 1
6446 #line 377 "parser.y"
6447 d2916 1
6448 a2916 1
6449 #line 378 "parser.y"
6450 d2921 1
6451 a2921 1
6452 #line 379 "parser.y"
6453 d2926 1
6454 a2926 1
6455 #line 380 "parser.y"
6456 d2931 1
6457 a2931 1
6458 #line 384 "parser.y"
6459 d2936 1
6460 a2936 1
6461 #line 385 "parser.y"
6462 d2941 1
6463 a2941 1
6464 #line 386 "parser.y"
6465 d2946 1
6466 a2946 1
6467 #line 387 "parser.y"
6468 d2951 1
6469 a2951 1
6470 #line 388 "parser.y"
6471 d2956 1
6472 a2956 1
6473 #line 389 "parser.y"
6474 d2961 1
6475 a2961 1
6476 #line 393 "parser.y"
6477 d2966 1
6478 a2966 1
6479 #line 397 "parser.y"
6480 d2971 1
6481 a2971 1
6482 #line 398 "parser.y"
6483 d2976 1
6484 a2976 1
6485 #line 402 "parser.y"
6486 d2981 1
6487 a2981 1
6488 #line 403 "parser.y"
6489 d2986 1
6490 a2986 1
6491 #line 407 "parser.y"
6492 d2991 1
6493 a2991 1
6494 #line 411 "parser.y"
6495 d2996 1
6496 a2996 1
6497 #line 412 "parser.y"
6498 d3001 1
6499 a3001 1
6500 #line 416 "parser.y"
6501 d3006 1
6502 a3006 1
6503 #line 417 "parser.y"
6504 d3011 1
6505 a3011 1
6506 #line 421 "parser.y"
6507 d3016 1
6508 a3016 1
6509 #line 425 "parser.y"
6510 d3021 1
6511 a3021 1
6512 #line 426 "parser.y"
6513 d3026 1
6514 a3026 1
6515 #line 430 "parser.y"
6516 d3031 1
6517 a3031 1
6518 #line 434 "parser.y"
6519 d3036 1
6520 a3036 1
6521 #line 438 "parser.y"
6522 d3041 1
6523 a3041 1
6524 #line 439 "parser.y"
6525 d3046 1
6526 a3046 1
6527 #line 443 "parser.y"
6528 d3051 1
6529 a3051 1
6530 #line 444 "parser.y"
6531 d3056 1
6532 a3056 1
6533 #line 445 "parser.y"
6534 d3061 1
6535 a3061 1
6536 #line 446 "parser.y"
6537 d3066 1
6538 a3066 1
6539 #line 447 "parser.y"
6540 d3071 1
6541 a3071 1
6542 #line 451 "parser.y"
6543 d3076 1
6544 a3076 1
6545 #line 452 "parser.y"
6546 d3081 1
6547 a3081 1
6548 #line 453 "parser.y"
6549 d3086 1
6550 a3086 1
6551 #line 457 "parser.y"
6552 d3091 1
6553 a3091 1
6554 #line 458 "parser.y"
6555 d3096 1
6556 a3096 1
6557 #line 459 "parser.y"
6558 d3101 1
6559 a3101 1
6560 #line 460 "parser.y"
6561 d3106 1
6562 a3106 1
6563 #line 461 "parser.y"
6564 d3111 1
6565 a3111 1
6566 #line 462 "parser.y"
6567 d3116 1
6568 a3116 1
6569 #line 466 "parser.y"
6570 d3121 1
6571 a3121 1
6572 #line 467 "parser.y"
6573 d3126 1
6574 a3126 1
6575 #line 471 "parser.y"
6576 d3131 1
6577 a3131 1
6578 #line 475 "parser.y"
6579 d3136 1
6580 a3136 1
6581 #line 479 "parser.y"
6582 d3141 1
6583 a3141 1
6584 #line 480 "parser.y"
6585 d3146 1
6586 a3146 1
6587 #line 484 "parser.y"
6588 d3151 1
6589 a3151 1
6590 #line 488 "parser.y"
6591 d3156 1
6592 a3156 1
6593 #line 489 "parser.y"
6594 d3161 1
6595 a3161 1
6596 #line 493 "parser.y"
6597 d3166 1
6598 a3166 1
6599 #line 497 "parser.y"
6600 d3171 1
6601 a3171 1
6602 #line 498 "parser.y"
6603 d3176 1
6604 a3176 1
6605 #line 502 "parser.y"
6606 d3181 1
6607 a3181 1
6608 #line 503 "parser.y"
6609 d3186 1
6610 a3186 1
6611 #line 507 "parser.y"
6612 d3191 1
6613 a3191 1
6614 #line 511 "parser.y"
6615 d3196 1
6616 a3196 1
6617 #line 515 "parser.y"
6618 d3201 1
6619 a3201 1
6620 #line 516 "parser.y"
6621 d3206 1
6622 a3206 1
6623 #line 520 "parser.y"
6624 d3211 1
6625 a3211 1
6626 #line 524 "parser.y"
6627 d3216 1
6628 a3216 1
6629 #line 528 "parser.y"
6630 d3221 1
6631 a3221 1
6632 #line 529 "parser.y"
6633 d3226 1
6634 a3226 1
6635 #line 533 "parser.y"
6636 d3231 1
6637 a3231 1
6638 #line 534 "parser.y"
6639 d3236 1
6640 a3236 1
6641 #line 535 "parser.y"
6642 d3241 1
6643 a3241 1
6644 #line 536 "parser.y"
6645 d3246 1
6646 a3246 1
6647 #line 540 "parser.y"
6648 d3251 1
6649 a3251 1
6650 #line 541 "parser.y"
6651 d3256 1
6652 a3256 1
6653 #line 545 "parser.y"
6654 d3261 1
6655 a3261 1
6656 #line 546 "parser.y"
6657 d3266 1
6658 a3266 1
6659 #line 547 "parser.y"
6660 d3271 1
6661 a3271 1
6662 #line 548 "parser.y"
6663 d3276 1
6664 a3276 1
6665 #line 549 "parser.y"
6666 d3281 1
6667 a3281 1
6668 #line 553 "parser.y"
6669 d3286 1
6670 a3286 1
6671 #line 557 "parser.y"
6672 d3291 1
6673 a3291 1
6674 #line 558 "parser.y"
6675 d3296 1
6676 a3296 1
6677 #line 559 "parser.y"
6678 d3302 1
6679 a3302 1
6680 #line 3299 "parser.c"
6681 d3522 1
6682 a3522 1
6683 #line 561 "parser.y"
6684 d3577 1
6685 d3584 18
6686 a3601 1
6687         fp = fopen(file->string, "rb");
6693 @Initial revision
6695 text
6696 @d208 1
6697 a208 1
6698  * $Id: parser.y,v 1.9 2005/01/05 02:28:40 kenth Exp $
6699 d246 3
6700 a248 3
6701 void yyerror(char *);   /* In lexer */
6702 int yylex(void);        /* In lexer */
6703 int yypushandrestart(char *);   /* In lexer */
6704 d250 5
6705 a254 5
6706 extern char *yytext;    /* In lexer */
6707 extern YYLTYPE yylloc;  /* In lexer */
6708 extern astnode *root_node;      /* Root of the generated parse tree */
6709 void handle_incsrc(astnode *);  /* See below */
6710 void handle_incbin(astnode *);  /* See below */
6711 d2256 3
6712 a2258 3
6713                  if ((yyvsp[(1) - (2)].node) != NULL) { (yyval.node) = (yyvsp[(1) - (2)].node); astnode_add_sibling((yyval.node), (yyvsp[(2) - (2)].node)); }
6714                  else { (yyval.node) = (yyvsp[(2) - (2)].node); }
6715                 }
6716 d3529 23
6717 a3551 23
6718         char errs[512];
6719         /* Get the node which describes the file to include */
6720         astnode *file = astnode_get_child(n, 0);
6722         switch (astnode_get_type(file)) {
6723                 case STRING_NODE:
6724                 /* TODO: add path searching */
6725                 case FILE_PATH_NODE:
6726                 switch (yypushandrestart(file->string)) {
6727                         case 0:
6728                         /* Success */
6729                         break;
6730                         case 1:
6731                         /* Failed to open file */
6732                         sprintf(errs, "could not open '%s' for reading", file->string);
6733                         yyerror(errs);
6734                         break;
6735                         case 2:
6736                         /* Stack overflow */
6737                         yyerror("Maximum include nesting level reached");
6738                         break;
6739                 }
6740                 break;
6741 d3553 2
6742 a3554 2
6743                 default: break;
6744         }
6745 d3567 35
6746 a3601 35
6747         FILE *fp;
6748         unsigned char *data;
6749         int size;
6750         char errs[512];
6751         /* Get the node which describes the file to include */
6752         astnode *file = astnode_get_child(n, 0);
6754         switch (astnode_get_type(file)) {
6755                 case STRING_NODE:
6756                 /* TODO: add path searching */
6757                 case FILE_PATH_NODE:
6758                 /* Attempt to open file */
6759                 fp = fopen(file->string, "rb");
6760                 if (fp) {
6761                         /* Get filesize */
6762                         fseek(fp, 0, SEEK_END);
6763                         size = ftell(fp);
6764                         rewind(fp);
6765                         if (size > 0) {
6766                                 /* Allocate buffer to hold file contents */
6767                                 data = (unsigned char *)malloc(size);
6768                                 /* Read file contents into buffer */
6769                                 fread(data, 1, size, fp);
6770                                 /* Insert binary node */
6771                                 astnode_add_sibling(n, astnode_create_binary(data, size, n->loc) );
6772                         }
6773                         /* Close file */
6774                         fclose(fp);
6775                 }
6776                 else {
6777                         /* Couldn't open file */
6778                         sprintf(errs, "could not open '%s' for reading", file->string);
6779                         yyerror(errs);
6780                 }
6781                 break;
6782 d3603 2
6783 a3604 2
6784                 default: break;
6785         }