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