/* A Bison parser, made by GNU Bison 1.875c. */ /* Skeleton parser for GLR parsing with Bison, Copyright (C) 2002, 2003 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This is the parser code for GLR (Generalized LR) parser. */ #include #include #include #include #include /* Identify Bison output. */ #define YYBISON 1 /* Skeleton name. */ #define YYSKELETON_NAME "glr.c" /* Pure parsers. */ #define YYPURE 0 /* Using locations. */ #define YYLSP_NEEDED 0 /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { ABSTRACT = 258, ASSERT = 259, BOOLEAN = 260, BREAK = 261, BROADCAST = 262, BYTE = 263, CASE = 264, CATCH = 265, CHAR = 266, CLASS = 267, CONTINUE = 268, DEFAULT = 269, DO = 270, DOUBLE = 271, ELSE = 272, EXTENDS = 273, FINAL = 274, FINALLY = 275, FLOAT = 276, FOR = 277, FOREACH = 278, IF = 279, IMPLEMENTS = 280, IMPORT = 281, INSTANCEOF = 282, INT = 283, INTERFACE = 284, IMMUTABLE = 285, INLINE = 286, LOCAL = 287, LONG = 288, NATIVE = 289, NEW = 290, NULL_VAL = 291, OPERATOR = 292, OVERLAP = 293, _PACKAGE = 294, PRIVATE = 295, PROTECTED = 296, PUBLIC = 297, POLYSHARED = 298, NONSHARED = 299, PARTITION = 300, RETURN = 301, SHORT = 302, STATIC = 303, SUPER = 304, SWITCH = 305, SYNCHRONIZED = 306, STRICTFP = 307, SINGLE = 308, SGLOBAL = 309, TEMPLATE = 310, THIS = 311, THROW = 312, THROWS = 313, TRANSIENT = 314, TRY = 315, VOID = 316, VOLATILE = 317, WHILE = 318, TRUE_LITERAL = 319, FALSE_LITERAL = 320, IDENTIFIER = 321, INT_LITERAL = 322, LONG_LITERAL = 323, FLOAT_LITERAL = 324, DOUBLE_LITERAL = 325, CHARACTER_LITERAL = 326, STRING_LITERAL = 327, CAND = 328, COR = 329, EQ = 330, NE = 331, LE = 332, GE = 333, LSHIFTL = 334, ASHIFTR = 335, LSHIFTR = 336, PLUS_ASG = 337, MINUS_ASG = 338, MULT_ASG = 339, DIV_ASG = 340, REM_ASG = 341, LSHIFTL_ASG = 342, ASHIFTR_ASG = 343, LSHIFTR_ASG = 344, AND_ASG = 345, XOR_ASG = 346, OR_ASG = 347, PLUSPLUS = 348, MINUSMINUS = 349, GUARDS = 350 }; #endif #define ABSTRACT 258 #define ASSERT 259 #define BOOLEAN 260 #define BREAK 261 #define BROADCAST 262 #define BYTE 263 #define CASE 264 #define CATCH 265 #define CHAR 266 #define CLASS 267 #define CONTINUE 268 #define DEFAULT 269 #define DO 270 #define DOUBLE 271 #define ELSE 272 #define EXTENDS 273 #define FINAL 274 #define FINALLY 275 #define FLOAT 276 #define FOR 277 #define FOREACH 278 #define IF 279 #define IMPLEMENTS 280 #define IMPORT 281 #define INSTANCEOF 282 #define INT 283 #define INTERFACE 284 #define IMMUTABLE 285 #define INLINE 286 #define LOCAL 287 #define LONG 288 #define NATIVE 289 #define NEW 290 #define NULL_VAL 291 #define OPERATOR 292 #define OVERLAP 293 #define _PACKAGE 294 #define PRIVATE 295 #define PROTECTED 296 #define PUBLIC 297 #define POLYSHARED 298 #define NONSHARED 299 #define PARTITION 300 #define RETURN 301 #define SHORT 302 #define STATIC 303 #define SUPER 304 #define SWITCH 305 #define SYNCHRONIZED 306 #define STRICTFP 307 #define SINGLE 308 #define SGLOBAL 309 #define TEMPLATE 310 #define THIS 311 #define THROW 312 #define THROWS 313 #define TRANSIENT 314 #define TRY 315 #define VOID 316 #define VOLATILE 317 #define WHILE 318 #define TRUE_LITERAL 319 #define FALSE_LITERAL 320 #define IDENTIFIER 321 #define INT_LITERAL 322 #define LONG_LITERAL 323 #define FLOAT_LITERAL 324 #define DOUBLE_LITERAL 325 #define CHARACTER_LITERAL 326 #define STRING_LITERAL 327 #define CAND 328 #define COR 329 #define EQ 330 #define NE 331 #define LE 332 #define GE 333 #define LSHIFTL 334 #define ASHIFTR 335 #define LSHIFTR 336 #define PLUS_ASG 337 #define MINUS_ASG 338 #define MULT_ASG 339 #define DIV_ASG 340 #define REM_ASG 341 #define LSHIFTL_ASG 342 #define ASHIFTR_ASG 343 #define LSHIFTR_ASG 344 #define AND_ASG 345 #define XOR_ASG 346 #define OR_ASG 347 #define PLUSPLUS 348 #define MINUSMINUS 349 #define GUARDS 350 /* Copy the first part of user declarations. */ #line 138 "parser.yy" #include #include #include "AST.h" #include "errors.h" #include "parse.h" #include "tokens.h" #include "code-util.h" #include "pseudocode.h" #include "lex-string.h" #define YYDEBUG 1 #ifdef HAVE_ALLOCA # define YYSTACK_USE_ALLOCA 1 # if HAVE_ALLOCA_H # include # else extern "C" void *alloca(size_t size); # endif // HAVE_ALLOCA_H #if defined(__GNUC__) && !defined(alloca) #define alloca __builtin_alloca #endif #endif // HAVE_ALLOCA static void yyerror(const char* msg); static TreeNode *newOperator(char *op, SourcePosn p); /* Routines to check the validity of modifier flags. Each routine */ /* takes a logical `or' of flag values and a source position to which */ /* to refer error messages. */ static void checkFieldModifiers (Common::Modifiers flags, SourcePosn posn); static void checkConstantFieldModifiers (Common::Modifiers flags, SourcePosn posn); static void checkMethodModifiers (Common::Modifiers flags, SourcePosn posn); static void checkConstructorModifiers (Common::Modifiers flags, SourcePosn posn); static void checkMethodSignatureModifiers (Common::Modifiers flags, SourcePosn posn); static void checkInterfaceModifiers(Common::Modifiers flags, SourcePosn posn); static void checkNestedTypeModifiers(Common::Modifiers flags, SourcePosn posn); static void checkLocalTypeModifiers(Common::Modifiers flags, SourcePosn posn); static const string *isTitaniumTypeName(TypeNode *t); static TypeNode *buildTemplateInstanceType(TreeNode *tn, llist *args); static TreeNode *buildTemplateQualifiedName(TypeNode *tmpl, TreeNode *name); static TreeNode *addSynchronized(Common::Modifiers modifiers, TreeNode *body); /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED) #line 190 "parser.yy" typedef union YYSTYPE { SimpTerminalInfo SimpTerminal; /* Terminal symbols with only position. */ TerminalInfo Terminal; /* Terminal symbols with ASCII string data. */ StrTerminalInfo StrTerminal; /* Terminal symbols with Unicode string data. */ CharTerminalInfo CharTerminal; /* Terminal symbols with Unicode char data. */ long Int; /* Simple integer values */ bool Bool; CompileUnitNode* CompileUnit; TreeNode* Tree; TypeNode* Type; CatchNode* Catch; llist* TreeList; llist* TypeList; llist* CatchList; Common::Modifiers Modifiers; llist* DeclaratorList; TryNode *Try; TypeDeclNode *TypeDecl; } YYSTYPE; /* Line 187 of glr.c. */ #line 328 "y.tab.c" # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 #endif #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED) typedef struct YYLTYPE { char yydummy; } YYLTYPE; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif /* Default (constant) values used for initialization for null right-hand sides. Unlike the standard yacc.c template, here we set the default values of $$ and $@ to zeroed-out values. Since the default value of these quantities is undefined, this behavior is technically correct. */ static YYSTYPE yyval_default; static YYLTYPE yyloc_default; /* Copy the second part of user declarations. */ /* Line 219 of glr.c. */ #line 356 "y.tab.c" #ifndef YYFREE # define YYFREE free #endif #ifndef YYMALLOC # define YYMALLOC malloc #endif #ifndef YYREALLOC # define YYREALLOC realloc #endif #ifdef __cplusplus typedef bool yybool; #else typedef unsigned char yybool; #endif #define yytrue 1 #define yyfalse 0 /*-----------------. | GCC extensions. | `-----------------*/ #ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ # if !defined (__GNUC__) || __GNUC__ < 2 || \ (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ # define __attribute__(Spec) /* empty */ # endif #endif #ifndef YYASSERT # define YYASSERT(condition) ((void) ((condition) || (abort (), 0))) #endif #ifndef ATTRIBUTE_UNUSED # define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 11 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 3681 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 121 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 178 /* YYNRULES -- Number of rules. */ #define YYNRULES 474 /* YYNRULES -- Number of states. */ #define YYNSTATES 826 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */ #define YYMAXRHS 10 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle accessed by $0, $-1, etc., in any rule. */ #define YYMAXLEFT 0 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 350 #define YYTRANSLATE(YYX) \ ((YYX <= 0) ? YYEOF : \ (unsigned)(YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const unsigned char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 86, 2, 2, 2, 97, 94, 2, 73, 74, 92, 90, 79, 91, 80, 93, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 89, 81, 85, 83, 84, 88, 82, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 77, 2, 78, 96, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 75, 95, 76, 87, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const unsigned short yyprhs[] = { 0, 0, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 30, 34, 37, 41, 44, 46, 48, 50, 52, 54, 57, 60, 62, 65, 69, 74, 80, 81, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 112, 116, 117, 118, 121, 122, 125, 128, 130, 132, 134, 136, 138, 140, 142, 146, 152, 158, 165, 167, 168, 170, 173, 175, 177, 179, 181, 183, 186, 187, 190, 191, 195, 197, 198, 200, 203, 205, 207, 209, 211, 213, 215, 217, 219, 221, 228, 234, 239, 241, 242, 244, 247, 249, 251, 253, 255, 257, 259, 261, 263, 265, 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 289, 292, 297, 299, 301, 312, 323, 325, 327, 329, 330, 333, 340, 342, 343, 345, 349, 354, 356, 357, 359, 360, 363, 365, 369, 371, 373, 384, 394, 396, 398, 404, 410, 416, 423, 426, 428, 434, 436, 437, 440, 444, 445, 448, 450, 452, 454, 456, 461, 471, 481, 483, 485, 491, 493, 497, 500, 503, 507, 512, 514, 518, 520, 524, 527, 531, 536, 538, 542, 545, 549, 554, 556, 560, 563, 565, 567, 569, 573, 578, 581, 583, 587, 589, 591, 595, 597, 598, 600, 603, 605, 607, 609, 616, 621, 625, 627, 629, 631, 633, 635, 637, 639, 641, 643, 645, 647, 651, 657, 661, 664, 666, 668, 670, 672, 674, 676, 678, 684, 692, 698, 702, 703, 707, 709, 711, 714, 718, 721, 727, 735, 744, 746, 749, 751, 753, 754, 756, 757, 759, 763, 770, 772, 773, 777, 782, 784, 788, 792, 796, 800, 802, 803, 809, 812, 815, 819, 822, 824, 827, 833, 836, 841, 847, 848, 853, 855, 857, 859, 861, 863, 865, 867, 870, 874, 878, 882, 886, 888, 890, 892, 896, 900, 903, 906, 908, 912, 916, 918, 920, 922, 925, 928, 931, 934, 937, 940, 943, 946, 949, 952, 955, 958, 961, 964, 967, 970, 973, 976, 979, 982, 985, 988, 991, 994, 997, 1000, 1003, 1006, 1009, 1012, 1015, 1018, 1021, 1024, 1028, 1033, 1038, 1040, 1043, 1046, 1050, 1053, 1057, 1061, 1067, 1071, 1074, 1076, 1081, 1086, 1088, 1089, 1091, 1095, 1098, 1101, 1105, 1110, 1116, 1123, 1131, 1138, 1146, 1150, 1151, 1153, 1156, 1158, 1161, 1163, 1164, 1167, 1171, 1175, 1180, 1182, 1184, 1186, 1188, 1190, 1192, 1195, 1198, 1200, 1202, 1204, 1206, 1208, 1210, 1213, 1216, 1218, 1220, 1222, 1225, 1228, 1230, 1232, 1234, 1236, 1239, 1242, 1244, 1249, 1254, 1258, 1262, 1266, 1268, 1272, 1276, 1278, 1282, 1288, 1290, 1291, 1293, 1297, 1301, 1305, 1309, 1313, 1317, 1321, 1325, 1329, 1333, 1337, 1341, 1347, 1351, 1355, 1359, 1361, 1363, 1365, 1367, 1369, 1373, 1377, 1381, 1385, 1389, 1393, 1397, 1401, 1405, 1409, 1413, 1417, 1421, 1425, 1429, 1433, 1437, 1439, 1444, 1446, 1450, 1454, 1457, 1461, 1465, 1468, 1471, 1474 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const short yyrhs[] = { 122, 0, -1, 137, -1, 67, -1, 68, -1, 69, -1, 70, -1, 64, -1, 65, -1, 71, -1, 72, -1, 248, -1, 126, -1, 126, -1, 136, 134, -1, 136, 134, 132, -1, 198, 134, -1, 198, 134, 132, -1, 128, 134, -1, 136, -1, 129, -1, 198, -1, 250, -1, 131, -1, 198, 80, -1, 130, 250, -1, 133, -1, 133, 132, -1, 77, 78, 134, -1, 77, 256, 78, 134, -1, 77, 291, 66, 78, 134, -1, -1, 134, 135, -1, 53, -1, 32, -1, 44, -1, 43, -1, 5, -1, 11, -1, 8, -1, 47, -1, 28, -1, 21, -1, 33, -1, 16, -1, 138, 139, 140, -1, 39, 250, 81, -1, -1, -1, 139, 143, -1, -1, 141, 140, -1, 81, 140, -1, 142, -1, 195, -1, 147, -1, 186, -1, 144, -1, 145, -1, 146, -1, 26, 250, 81, -1, 26, 250, 80, 92, 81, -1, 26, 250, 83, 250, 81, -1, 148, 12, 251, 151, 152, 153, -1, 149, -1, -1, 150, -1, 149, 150, -1, 3, -1, 19, -1, 42, -1, 30, -1, 52, -1, 18, 124, -1, -1, 25, 178, -1, -1, 75, 154, 76, -1, 155, -1, -1, 156, -1, 155, 156, -1, 160, -1, 167, -1, 180, -1, 184, -1, 185, -1, 157, -1, 81, -1, 158, -1, 159, -1, 161, 12, 251, 151, 152, 153, -1, 161, 29, 251, 187, 189, -1, 161, 124, 164, 81, -1, 162, -1, -1, 163, -1, 162, 163, -1, 42, -1, 41, -1, 40, -1, 48, -1, 19, -1, 53, -1, 54, -1, 3, -1, 34, -1, 51, -1, 59, -1, 52, -1, 62, -1, 32, -1, 44, -1, 43, -1, 31, -1, 30, -1, 165, -1, 164, 79, 165, -1, 251, 268, -1, 251, 268, 83, 166, -1, 291, -1, 207, -1, 161, 124, 168, 73, 172, 74, 268, 176, 170, 179, -1, 161, 169, 168, 73, 172, 74, 268, 176, 170, 179, -1, 251, -1, 254, -1, 61, -1, -1, 171, 170, -1, 38, 73, 251, 79, 251, 74, -1, 173, -1, -1, 174, -1, 174, 79, 173, -1, 175, 124, 251, 268, -1, 19, -1, -1, 177, -1, -1, 58, 178, -1, 124, -1, 124, 79, 178, -1, 210, -1, 81, -1, 161, 251, 73, 172, 74, 176, 75, 181, 211, 76, -1, 161, 251, 73, 172, 74, 176, 75, 211, 76, -1, 182, -1, 183, -1, 56, 73, 261, 74, 81, -1, 49, 73, 261, 74, 81, -1, 258, 73, 261, 74, 81, -1, 257, 49, 73, 261, 74, 81, -1, 48, 210, -1, 210, -1, 148, 29, 251, 187, 189, -1, 188, -1, -1, 18, 178, -1, 75, 190, 76, -1, -1, 191, 190, -1, 192, -1, 193, -1, 157, -1, 81, -1, 161, 124, 164, 81, -1, 161, 124, 168, 73, 172, 74, 268, 176, 81, -1, 161, 169, 168, 73, 172, 74, 268, 176, 81, -1, 55, -1, 82, -1, 194, 85, 196, 84, 142, -1, 197, -1, 197, 79, 196, -1, 12, 251, -1, 124, 251, -1, 250, 85, 200, -1, 194, 250, 85, 200, -1, 206, -1, 199, 79, 206, -1, 201, -1, 199, 79, 201, -1, 206, 84, -1, 250, 85, 202, -1, 194, 250, 85, 202, -1, 203, -1, 199, 79, 203, -1, 206, 105, -1, 250, 85, 204, -1, 194, 250, 85, 204, -1, 205, -1, 199, 79, 205, -1, 206, 106, -1, 125, -1, 293, -1, 248, -1, 75, 208, 76, -1, 75, 208, 79, 76, -1, 75, 76, -1, 209, -1, 208, 79, 209, -1, 291, -1, 207, -1, 75, 211, 76, -1, 212, -1, -1, 213, -1, 212, 213, -1, 215, -1, 216, -1, 214, -1, 148, 12, 251, 151, 152, 153, -1, 19, 124, 164, 81, -1, 124, 164, 81, -1, 217, -1, 218, -1, 219, -1, 220, -1, 222, -1, 227, -1, 236, -1, 238, -1, 210, -1, 243, -1, 81, -1, 4, 291, 81, -1, 4, 291, 89, 291, 81, -1, 251, 89, 216, -1, 221, 81, -1, 295, -1, 278, -1, 279, -1, 273, -1, 274, -1, 260, -1, 264, -1, 24, 73, 291, 74, 216, -1, 24, 73, 291, 74, 216, 17, 216, -1, 50, 73, 291, 74, 223, -1, 75, 224, 76, -1, -1, 225, 212, 224, -1, 225, -1, 226, -1, 226, 225, -1, 9, 296, 89, -1, 14, 89, -1, 63, 73, 291, 74, 216, -1, 15, 216, 63, 73, 291, 74, 81, -1, 22, 73, 228, 290, 81, 229, 74, 216, -1, 232, -1, 230, 81, -1, 215, -1, 231, -1, -1, 231, -1, -1, 221, -1, 221, 79, 231, -1, 23, 73, 234, 74, 233, 216, -1, 31, -1, -1, 251, 235, 291, -1, 198, 251, 235, 291, -1, 66, -1, 6, 237, 81, -1, 13, 237, 81, -1, 46, 290, 81, -1, 57, 291, 81, -1, 251, -1, -1, 51, 73, 291, 74, 216, -1, 239, 242, -1, 239, 240, -1, 239, 240, 242, -1, 60, 210, -1, 241, -1, 241, 240, -1, 10, 73, 174, 74, 210, -1, 20, 210, -1, 45, 75, 244, 76, -1, 45, 251, 75, 244, 76, -1, -1, 291, 120, 216, 244, -1, 248, -1, 246, -1, 264, -1, 247, -1, 123, -1, 36, -1, 56, -1, 252, 56, -1, 131, 80, 56, -1, 198, 80, 56, -1, 73, 291, 74, -1, 73, 248, 74, -1, 255, -1, 259, -1, 260, -1, 136, 80, 12, -1, 61, 80, 12, -1, 250, 134, -1, 131, 134, -1, 249, -1, 250, 134, 132, -1, 131, 134, 132, -1, 251, -1, 253, -1, 66, -1, 250, 80, -1, 252, 66, -1, 252, 12, -1, 252, 254, -1, 37, 86, -1, 37, 87, -1, 37, 85, -1, 37, 84, -1, 37, 102, -1, 37, 103, -1, 37, 100, -1, 37, 101, -1, 37, 90, -1, 37, 91, -1, 37, 92, -1, 37, 93, -1, 37, 94, -1, 37, 95, -1, 37, 96, -1, 37, 97, -1, 37, 104, -1, 37, 105, -1, 37, 106, -1, 37, 107, -1, 37, 108, -1, 37, 109, -1, 37, 110, -1, 37, 111, -1, 37, 112, -1, 37, 113, -1, 37, 114, -1, 37, 115, -1, 37, 116, -1, 37, 117, -1, 37, 77, 78, -1, 37, 77, 78, 83, -1, 247, 77, 256, 78, -1, 262, -1, 246, 80, -1, 252, 49, -1, 131, 80, 49, -1, 257, 168, -1, 49, 80, 168, -1, 258, 80, 168, -1, 198, 80, 49, 80, 168, -1, 249, 80, 168, -1, 130, 12, -1, 254, -1, 259, 73, 261, 74, -1, 248, 73, 261, 74, -1, 262, -1, -1, 291, -1, 291, 79, 262, -1, 257, 35, -1, 252, 35, -1, 131, 80, 35, -1, 35, 265, 127, 266, -1, 35, 265, 127, 266, 207, -1, 35, 265, 127, 73, 261, 74, -1, 35, 265, 127, 73, 261, 74, 153, -1, 263, 265, 127, 73, 261, 74, -1, 263, 265, 127, 73, 261, 74, 153, -1, 73, 291, 74, -1, -1, 267, -1, 267, 266, -1, 133, -1, 285, 134, -1, 269, -1, -1, 77, 78, -1, 77, 78, 32, -1, 269, 77, 78, -1, 269, 77, 78, 32, -1, 245, -1, 272, -1, 246, -1, 272, -1, 273, -1, 274, -1, 270, 118, -1, 270, 119, -1, 280, -1, 277, -1, 281, -1, 277, -1, 278, -1, 279, -1, 90, 275, -1, 91, 275, -1, 284, -1, 285, -1, 297, -1, 118, 275, -1, 119, 275, -1, 270, -1, 282, -1, 271, -1, 282, -1, 87, 275, -1, 86, 275, -1, 283, -1, 73, 124, 74, 275, -1, 73, 248, 74, 280, -1, 77, 262, 78, -1, 77, 286, 78, -1, 77, 288, 78, -1, 287, -1, 287, 79, 286, -1, 291, 89, 291, -1, 289, -1, 289, 79, 288, -1, 291, 89, 291, 89, 291, -1, 291, -1, -1, 292, -1, 291, 85, 291, -1, 291, 84, 291, -1, 291, 102, 291, -1, 291, 103, 291, -1, 291, 27, 124, -1, 291, 100, 291, -1, 291, 101, 291, -1, 291, 94, 291, -1, 291, 95, 291, -1, 291, 96, 291, -1, 291, 98, 291, -1, 291, 99, 291, -1, 291, 88, 291, 89, 291, -1, 291, 104, 291, -1, 291, 106, 291, -1, 291, 105, 291, -1, 295, -1, 275, -1, 294, -1, 276, -1, 294, -1, 292, 92, 292, -1, 292, 93, 292, -1, 292, 97, 292, -1, 292, 90, 292, -1, 292, 91, 292, -1, 275, 83, 291, -1, 275, 109, 291, -1, 275, 110, 291, -1, 275, 111, 291, -1, 275, 107, 291, -1, 275, 108, 291, -1, 275, 112, 291, -1, 275, 114, 291, -1, 275, 113, 291, -1, 275, 115, 291, -1, 275, 116, 291, -1, 275, 117, 291, -1, 291, -1, 7, 291, 298, 275, -1, 66, -1, 26, 1, 81, -1, 39, 1, 81, -1, 1, 153, -1, 75, 1, 76, -1, 75, 1, 76, -1, 1, 81, -1, 1, 210, -1, 1, 81, -1, 1, 153, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short yyrline[] = { 0, 325, 325, 331, 333, 335, 337, 339, 341, 343, 345, 353, 354, 358, 362, 363, 366, 367, 373, 377, 378, 379, 383, 385, 390, 395, 400, 401, 405, 406, 408, 421, 422, 431, 432, 433, 434, 438, 440, 442, 444, 446, 448, 450, 452, 461, 472, 475, 480, 481, 488, 489, 496, 501, 503, 508, 510, 518, 519, 520, 524, 533, 538, 550, 558, 560, 564, 565, 574, 576, 578, 580, 582, 591, 594, 601, 604, 612, 617, 619, 623, 624, 632, 633, 635, 637, 639, 641, 643, 651, 653, 658, 664, 674, 697, 699, 703, 704, 713, 715, 717, 720, 722, 724, 726, 729, 731, 733, 736, 738, 741, 743, 745, 747, 749, 752, 761, 762, 767, 769, 777, 778, 784, 790, 800, 801, 805, 810, 811, 815, 825, 827, 831, 833, 838, 843, 844, 851, 853, 857, 862, 864, 872, 873, 881, 888, 904, 905, 909, 914, 916, 918, 926, 931, 939, 949, 951, 955, 962, 968, 969, 974, 975, 977, 979, 984, 1000, 1007, 1020, 1021, 1025, 1030, 1032, 1037, 1039, 1044, 1047, 1052, 1054, 1059, 1061, 1066, 1068, 1071, 1076, 1078, 1083, 1085, 1088, 1093, 1095, 1100, 1105, 1107, 1109, 1118, 1120, 1122, 1129, 1131, 1136, 1137, 1146, 1151, 1153, 1157, 1159, 1164, 1166, 1168, 1176, 1186, 1188, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1210, 1216, 1225, 1232, 1240, 1245, 1247, 1249, 1251, 1253, 1255, 1257, 1265, 1267, 1269, 1274, 1279, 1280, 1282, 1287, 1289, 1294, 1296, 1304, 1306, 1308, 1310, 1314, 1316, 1321, 1323, 1327, 1329, 1333, 1335, 1342, 1347, 1348, 1352, 1354, 1369, 1380, 1382, 1384, 1386, 1392, 1394, 1401, 1404, 1406, 1408, 1413, 1418, 1420, 1425, 1430, 1437, 1439, 1444, 1445, 1457, 1459, 1463, 1464, 1468, 1469, 1471, 1473, 1475, 1477, 1479, 1481, 1483, 1484, 1486, 1487, 1505, 1519, 1520, 1521, 1525, 1526, 1530, 1531, 1535, 1542, 1547, 1550, 1552, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1594, 1599, 1608, 1613, 1615, 1621, 1623, 1625, 1627, 1629, 1632, 1634, 1642, 1644, 1649, 1651, 1655, 1657, 1665, 1667, 1669, 1674, 1676, 1679, 1681, 1684, 1686, 1692, 1695, 1699, 1701, 1706, 1708, 1713, 1715, 1719, 1721, 1723, 1725, 1733, 1734, 1738, 1739, 1743, 1744, 1748, 1753, 1761, 1762, 1766, 1767, 1771, 1772, 1773, 1775, 1777, 1778, 1779, 1783, 1788, 1793, 1794, 1798, 1799, 1803, 1805, 1807, 1811, 1813, 1824, 1828, 1829, 1833, 1834, 1838, 1844, 1845, 1849, 1857, 1859, 1863, 1864, 1866, 1868, 1870, 1872, 1874, 1876, 1878, 1880, 1882, 1884, 1886, 1888, 1890, 1892, 1894, 1896, 1900, 1901, 1905, 1906, 1910, 1912, 1914, 1916, 1918, 1926, 1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946, 1948, 1956, 1960, 1965, 1976, 1981, 1986, 1991, 1996, 2001, 2003, 2008, 2013 }; #endif #if (YYDEBUG) || YYERROR_VERBOSE /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "ABSTRACT", "ASSERT", "BOOLEAN", "BREAK", "BROADCAST", "BYTE", "CASE", "CATCH", "CHAR", "CLASS", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", "FOREACH", "IF", "IMPLEMENTS", "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "IMMUTABLE", "INLINE", "LOCAL", "LONG", "NATIVE", "NEW", "NULL_VAL", "OPERATOR", "OVERLAP", "_PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "POLYSHARED", "NONSHARED", "PARTITION", "RETURN", "SHORT", "STATIC", "SUPER", "SWITCH", "SYNCHRONIZED", "STRICTFP", "SINGLE", "SGLOBAL", "TEMPLATE", "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE", "WHILE", "TRUE_LITERAL", "FALSE_LITERAL", "IDENTIFIER", "INT_LITERAL", "LONG_LITERAL", "FLOAT_LITERAL", "DOUBLE_LITERAL", "CHARACTER_LITERAL", "STRING_LITERAL", "'('", "')'", "'{'", "'}'", "'['", "']'", "','", "'.'", "';'", "'@'", "'='", "'>'", "'<'", "'!'", "'~'", "'?'", "':'", "'+'", "'-'", "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "CAND", "COR", "EQ", "NE", "LE", "GE", "LSHIFTL", "ASHIFTR", "LSHIFTR", "PLUS_ASG", "MINUS_ASG", "MULT_ASG", "DIV_ASG", "REM_ASG", "LSHIFTL_ASG", "ASHIFTR_ASG", "LSHIFTR_ASG", "AND_ASG", "XOR_ASG", "OR_ASG", "PLUSPLUS", "MINUSMINUS", "GUARDS", "$accept", "Start", "Literal", "Type", "NoNameType", "OtherType", "QualifiedBaseType", "BaseType", "TypeName", "TemplateQualifierStart", "TemplateQualifiedName", "ArraySpecifiers", "ArraySpecifier", "QualifiersOpt", "Qualifier", "PrimitiveType", "CompilationUnit", "PackageDeclarationOpt", "ImportStatementsOpt", "TypeDeclarationsOpt", "TypeDeclaration", "BasicTypeDeclaration", "ImportStatement", "TypeImportStatement", "TypeImportOnDemandStatement", "TypeDefStatement", "ClassDeclaration", "ClassModifiersOpt", "ClassModifiers", "ClassModifier", "SuperOpt", "InterfacesOpt", "ClassBody", "FieldDeclarationsOpt", "FieldDeclarations", "FieldDeclaration", "NestedTypeDeclaration", "NestedClassDeclaration", "NestedInterfaceDeclaration", "FieldVariableDeclaration", "FieldModifiersOpt", "FieldModifiers", "FieldModifier", "VariableDeclarators", "VariableDeclarator", "VariableInitializer", "MethodDeclaration", "MethodName", "Void", "OverlapsOpt", "OverlapDecl", "ParameterListOpt", "ParameterList", "Parameter", "OptionalFinal", "ThrowsOpt", "Throws", "TypeNameList", "MethodBody", "ConstructorDeclaration", "ConstructorCallStatement", "ExplicitThisConstructorCallStatement", "ExplicitSuperConstructorCallStatement", "StaticInitializer", "InstanceInitializer", "InterfaceDeclaration", "ExtendsInterfacesOpt", "ExtendsInterfaces", "InterfaceBody", "InterfaceMemberDeclarationsOpt", "InterfaceMemberDeclaration", "ConstantFieldDeclaration", "MethodSignatureDeclaration", "TemplateIntro", "TemplateDeclaration", "TemplateFormalList", "TemplateFormal", "TemplateInstance", "TemplateActualList", "TemplateActualList1", "TemplateActual1", "TemplateActualList2", "TemplateActual2", "TemplateActualList3", "TemplateActual3", "TemplateActual", "ArrayInitializer", "ElementInitializers", "Element", "Block", "BlockStatementsOpt", "BlockStatements", "BlockStatement", "LocalClassDeclarationStatement", "LocalVariableDeclarationStatement", "Statement", "EmptyStatement", "AssertStatement", "LabeledStatement", "ExpressionStatement", "StatementExpression", "SelectionStatement", "SwitchBlock", "SwitchBlockStatementsOpt", "SwitchLabels", "SwitchLabel", "IterationStatement", "ForInit", "ForUpdateOpt", "StatementExpressionsOpt", "StatementExpressions", "ForEachStatement", "OptionalInline", "ForEachClauses", "SpecialIn", "JumpStatement", "LabelOpt", "GuardingStatement", "TryBlock", "Catches", "Catch", "Finally", "PartitionStatement", "PartitionClauses", "PrimaryExpression", "NotJustName", "ComplexPrimary", "ArrayName", "FullArrayName", "Name", "SimpleName", "QualifiedNameStart", "QualifiedName", "OperatorName", "ArrayAccess", "IndexExpression", "FieldAccessStart", "QualifiedSuperStart", "FieldAccess", "MethodCall", "ArgumentListOpt", "ArgumentList", "QualifiedAllocationStart", "AllocationExpression", "RegionOpt", "DimExprs", "DimExpr", "DimsOpt", "Dims", "PostfixExpression", "NoNamePostfixExpression", "OtherPostfixExpression", "PostIncrement", "PostDecrement", "UnaryExpression", "NoNameUnaryExpression", "OtherUnaryExpression", "PreIncrement", "PreDecrement", "RestrictedUnaryExpression", "NoNameRestrictedUnaryExpression", "OtherRestrictedPostfixExpression", "CastExpression", "PointLiteral", "DomainLiteral", "DomainPairs", "DomainPair", "DomainTriples", "DomainTriple", "ExpressionOpt", "Expression", "Expression1", "NoNameExpression1", "BinaryExpression1", "Assignment", "ConstantExpression", "BroadcastExpression", "SpecialFrom", 0 }; #endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned short yyr1[] = { 0, 121, 122, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 125, 126, 126, 126, 126, 127, 128, 128, 128, 129, 129, 130, 131, 132, 132, 133, 133, 133, 134, 134, 135, 135, 135, 135, 136, 136, 136, 136, 136, 136, 136, 136, 137, 138, 138, 139, 139, 140, 140, 140, 141, 141, 142, 142, 143, 143, 143, 144, 145, 146, 147, 148, 148, 149, 149, 150, 150, 150, 150, 150, 151, 151, 152, 152, 153, 154, 154, 155, 155, 156, 156, 156, 156, 156, 156, 156, 157, 157, 158, 159, 160, 161, 161, 162, 162, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 164, 164, 165, 165, 166, 166, 167, 167, 168, 168, 169, 170, 170, 171, 172, 172, 173, 173, 174, 175, 175, 176, 176, 177, 178, 178, 179, 179, 180, 180, 181, 181, 182, 183, 183, 183, 184, 185, 186, 187, 187, 188, 189, 190, 190, 191, 191, 191, 191, 192, 193, 193, 194, 194, 195, 196, 196, 197, 197, 198, 198, 199, 199, 200, 200, 201, 201, 201, 202, 202, 203, 203, 203, 204, 204, 205, 206, 206, 206, 207, 207, 207, 208, 208, 209, 209, 210, 211, 211, 212, 212, 213, 213, 213, 214, 215, 215, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 217, 218, 218, 219, 220, 221, 221, 221, 221, 221, 221, 221, 222, 222, 222, 223, 224, 224, 224, 225, 225, 226, 226, 227, 227, 227, 227, 228, 228, 229, 229, 230, 230, 231, 231, 232, 233, 233, 234, 234, 235, 236, 236, 236, 236, 237, 237, 238, 238, 238, 238, 239, 240, 240, 241, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 248, 248, 248, 249, 249, 250, 250, 251, 252, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 255, 256, 257, 258, 258, 259, 259, 259, 259, 259, 259, 259, 260, 260, 261, 261, 262, 262, 263, 263, 263, 264, 264, 264, 264, 264, 264, 265, 265, 266, 266, 267, 267, 268, 268, 269, 269, 269, 269, 270, 270, 271, 271, 272, 272, 273, 274, 275, 275, 276, 276, 277, 277, 277, 277, 277, 277, 277, 278, 279, 280, 280, 281, 281, 282, 282, 282, 283, 283, 284, 285, 285, 286, 286, 287, 288, 288, 289, 290, 290, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 292, 292, 293, 293, 294, 294, 294, 294, 294, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, 296, 297, 298, 143, 138, 157, 153, 210, 216, 216, 156, 141 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const unsigned char yyr2[] = { 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 2, 3, 2, 1, 1, 1, 1, 1, 2, 2, 1, 2, 3, 4, 5, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 0, 0, 2, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 5, 5, 6, 1, 0, 1, 2, 1, 1, 1, 1, 1, 2, 0, 2, 0, 3, 1, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 5, 4, 1, 0, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 4, 1, 1, 10, 10, 1, 1, 1, 0, 2, 6, 1, 0, 1, 3, 4, 1, 0, 1, 0, 2, 1, 3, 1, 1, 10, 9, 1, 1, 5, 5, 5, 6, 2, 1, 5, 1, 0, 2, 3, 0, 2, 1, 1, 1, 1, 4, 9, 9, 1, 1, 5, 1, 3, 2, 2, 3, 4, 1, 3, 1, 3, 2, 3, 4, 1, 3, 2, 3, 4, 1, 3, 2, 1, 1, 1, 3, 4, 2, 1, 3, 1, 1, 3, 1, 0, 1, 2, 1, 1, 1, 6, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 3, 2, 1, 1, 1, 1, 1, 1, 1, 5, 7, 5, 3, 0, 3, 1, 1, 2, 3, 2, 5, 7, 8, 1, 2, 1, 1, 0, 1, 0, 1, 3, 6, 1, 0, 3, 4, 1, 3, 3, 3, 3, 1, 0, 5, 2, 2, 3, 2, 1, 2, 5, 2, 4, 5, 0, 4, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, 1, 1, 1, 3, 3, 2, 2, 1, 3, 3, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 1, 2, 2, 3, 2, 3, 3, 5, 3, 2, 1, 4, 4, 1, 0, 1, 3, 2, 2, 3, 4, 5, 6, 7, 6, 7, 3, 0, 1, 2, 1, 2, 1, 0, 2, 3, 3, 4, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 4, 4, 3, 3, 3, 1, 3, 3, 1, 3, 5, 1, 0, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 4, 1, 3, 3, 2, 3, 3, 2, 2, 2, 2 }; /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */ static const unsigned char yydprec[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */ static const unsigned char yymerger[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const unsigned short yydefact[] = { 47, 0, 0, 2, 48, 0, 307, 0, 305, 0, 306, 1, 0, 467, 308, 46, 310, 0, 309, 311, 0, 68, 69, 0, 71, 70, 72, 168, 0, 169, 45, 0, 53, 49, 57, 58, 59, 55, 0, 64, 66, 56, 0, 54, 0, 315, 314, 312, 313, 320, 321, 322, 323, 324, 325, 326, 327, 318, 319, 316, 317, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 0, 474, 0, 0, 52, 51, 0, 0, 67, 0, 342, 0, 105, 102, 115, 114, 111, 106, 100, 99, 98, 113, 112, 101, 107, 109, 103, 104, 108, 110, 0, 88, 0, 0, 80, 87, 89, 90, 82, 0, 94, 96, 83, 84, 85, 86, 153, 466, 308, 60, 0, 74, 156, 37, 39, 38, 0, 44, 42, 41, 43, 40, 0, 12, 0, 31, 31, 0, 0, 171, 31, 11, 302, 31, 343, 469, 473, 468, 152, 0, 0, 269, 0, 269, 0, 69, 0, 0, 0, 372, 288, 0, 423, 0, 0, 0, 289, 0, 0, 0, 0, 7, 8, 3, 4, 5, 6, 9, 10, 0, 0, 223, 0, 0, 0, 0, 0, 0, 287, 0, 0, 31, 31, 0, 31, 221, 0, 0, 205, 209, 207, 208, 213, 214, 215, 216, 0, 217, 218, 249, 219, 220, 0, 222, 383, 284, 286, 283, 302, 305, 0, 355, 295, 0, 0, 296, 297, 372, 285, 404, 384, 387, 388, 0, 392, 395, 396, 391, 405, 410, 399, 400, 228, 401, 77, 0, 81, 0, 0, 126, 0, 0, 305, 101, 97, 0, 0, 0, 76, 0, 0, 155, 173, 174, 25, 301, 14, 0, 65, 0, 24, 16, 0, 300, 470, 471, 472, 0, 0, 283, 297, 285, 387, 388, 442, 395, 396, 0, 424, 443, 441, 0, 268, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 281, 0, 0, 422, 0, 0, 0, 0, 274, 0, 0, 0, 283, 0, 0, 0, 416, 0, 419, 360, 409, 408, 397, 398, 402, 403, 0, 116, 378, 354, 0, 0, 0, 24, 202, 206, 227, 0, 0, 272, 275, 271, 346, 0, 359, 0, 0, 363, 347, 290, 362, 349, 124, 125, 0, 359, 0, 389, 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 156, 0, 0, 378, 0, 136, 61, 62, 73, 0, 0, 140, 157, 0, 154, 34, 36, 35, 33, 0, 304, 26, 32, 15, 0, 170, 172, 17, 192, 13, 0, 0, 175, 179, 177, 284, 283, 31, 406, 384, 442, 444, 392, 393, 405, 0, 193, 443, 303, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 264, 465, 0, 265, 0, 0, 0, 251, 256, 423, 0, 254, 0, 0, 0, 305, 0, 0, 0, 31, 20, 23, 19, 21, 22, 0, 0, 281, 266, 350, 0, 0, 267, 299, 0, 0, 294, 293, 413, 414, 0, 415, 0, 0, 0, 0, 212, 0, 118, 377, 364, 348, 291, 298, 74, 0, 292, 136, 278, 273, 276, 0, 345, 360, 0, 358, 353, 226, 351, 0, 0, 451, 455, 456, 452, 453, 454, 457, 459, 458, 460, 461, 462, 76, 0, 93, 136, 136, 135, 0, 130, 132, 0, 75, 63, 0, 0, 164, 163, 0, 0, 0, 161, 162, 31, 0, 360, 27, 176, 0, 0, 181, 0, 429, 426, 425, 0, 0, 432, 433, 434, 435, 436, 430, 431, 427, 428, 438, 440, 439, 449, 450, 446, 447, 448, 464, 0, 211, 0, 0, 250, 0, 260, 263, 0, 0, 371, 359, 0, 375, 365, 373, 31, 18, 279, 0, 0, 0, 0, 0, 411, 412, 417, 0, 420, 0, 361, 418, 117, 379, 0, 0, 76, 0, 0, 344, 357, 356, 359, 0, 92, 0, 0, 138, 136, 0, 141, 0, 0, 158, 160, 28, 31, 0, 0, 180, 178, 0, 0, 182, 184, 177, 31, 0, 225, 0, 257, 253, 0, 259, 0, 261, 235, 0, 360, 0, 366, 374, 376, 281, 280, 239, 237, 270, 246, 0, 0, 0, 380, 119, 121, 120, 381, 0, 352, 0, 0, 91, 378, 378, 0, 0, 137, 133, 378, 0, 0, 0, 29, 31, 183, 0, 0, 186, 0, 437, 0, 0, 252, 262, 258, 0, 367, 197, 201, 0, 198, 200, 282, 0, 0, 0, 0, 242, 418, 0, 421, 382, 210, 277, 369, 138, 138, 139, 0, 134, 165, 136, 136, 30, 0, 185, 178, 0, 187, 189, 177, 247, 0, 236, 368, 195, 0, 463, 0, 245, 238, 0, 243, 370, 127, 127, 0, 289, 0, 146, 147, 0, 0, 0, 0, 0, 188, 0, 191, 248, 196, 199, 244, 240, 0, 0, 127, 0, 359, 359, 0, 145, 0, 359, 378, 378, 190, 178, 0, 143, 122, 142, 128, 123, 0, 0, 144, 359, 0, 138, 138, 0, 0, 0, 0, 0, 0, 0, 0, 149, 148, 0, 150, 166, 167, 0, 151, 129 }; /* YYPDEFGOTO[NTERM-NUM]. */ static const short yydefgoto[] = { -1, 2, 193, 194, 408, 138, 470, 471, 472, 195, 196, 400, 401, 278, 402, 282, 3, 4, 12, 30, 31, 32, 33, 34, 35, 36, 37, 198, 39, 40, 263, 390, 152, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 334, 335, 681, 117, 359, 256, 783, 784, 541, 542, 543, 544, 693, 694, 392, 798, 118, 766, 767, 768, 119, 120, 41, 265, 266, 394, 552, 553, 554, 555, 142, 43, 143, 144, 283, 411, 412, 413, 651, 652, 746, 747, 414, 716, 717, 718, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 674, 723, 724, 725, 213, 461, 709, 462, 463, 214, 662, 465, 596, 215, 296, 216, 217, 347, 348, 349, 218, 477, 219, 220, 221, 284, 223, 148, 8, 225, 10, 226, 227, 557, 228, 229, 230, 285, 516, 517, 232, 286, 307, 602, 603, 500, 501, 234, 418, 235, 287, 288, 289, 421, 239, 290, 291, 242, 423, 243, 244, 245, 246, 323, 324, 325, 326, 310, 515, 293, 426, 294, 295, 756, 248, 454 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -692 static const short yypact[] = { 24, 53, 153, -692, -692, 30, -692, 56, -692, 46, -692, -692, 1052, -692, -692, -692, -692, 3549, -692, -692, 103, -692, -692, 55, -692, -692, -692, -692, 1076, -692, -692, 1076, -692, -692, -692, -692, -692, -692, 110, 124, -692, -692, 106, -692, 133, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, 2852, -692, 147, 292, -692, -692, 206, 206, -692, 3556, 227, 155, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, -692, 244, -692, -692, -692, -692, -692, -692, 1784, -692, 214, 2934, -692, -692, -692, -692, -692, 1341, 3566, -692, -692, -692, -692, -692, -692, -692, 234, -692, 206, 318, 326, -692, -692, -692, 206, -692, -692, -692, -692, -692, 206, -692, 206, -692, -692, 206, 302, 311, 327, -692, -692, 129, -692, -692, -692, -692, -692, 193, 2706, 206, 2706, 206, 2240, 1001, 346, 360, 362, 366, -692, 86, 2706, 363, 367, 372, -692, 2706, 244, 369, 377, -692, -692, -692, -692, -692, -692, -692, -692, 2706, 2706, -692, 2706, 2706, 2706, 2706, 2706, 2706, -692, 206, 48, 373, 376, 445, 382, -692, 387, 1876, -692, -692, -692, -692, -692, -692, -692, -692, 384, -692, -692, -692, -692, -692, 160, -692, -692, 389, 391, 116, 390, 386, 47, -692, -692, 32, 392, 398, 118, 366, 136, 313, -692, 254, 269, 3564, -692, 297, 306, -692, -692, -692, -692, -692, -692, -692, -692, 226, -692, 206, 206, -692, 42, 42, 404, -692, -692, 397, 344, 1001, 454, 1001, 405, -692, -692, -692, 401, 102, 102, 166, 124, 3556, -692, 102, 2706, 102, -692, -692, -692, 376, 382, 410, -692, -692, -692, -692, 3564, -692, -692, 1358, 148, -692, -692, 403, -692, 3006, 406, 236, 422, 206, 2473, 85, 2706, 2706, 1001, 2706, 414, 413, 3431, 42, 2706, 2706, 3034, -692, 479, 2706, 421, 364, 3057, 425, 427, 429, 432, 434, 1472, -692, -692, -692, -692, -692, -692, -4, -692, 423, -692, 45, 504, 206, 144, -692, -692, -692, 446, 244, 500, 508, -692, -692, 2706, 2706, 42, 2240, -692, -692, -692, -692, -692, -692, -692, 42, 2706, 1001, -692, -692, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 318, 326, 221, 450, 152, 452, 18, -692, -692, -692, 1001, 103, 447, -692, 3016, -692, -692, -692, -692, -692, 2546, -692, 453, -692, -692, 2706, -692, -692, -692, -692, -692, 206, 455, -692, -692, 449, 176, 215, 190, -692, 207, -692, -692, 225, -692, 263, 148, -692, 277, -692, 1001, -692, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, 2706, -692, -692, 2706, -692, 458, 279, 1001, -692, 457, 2706, 456, -692, 206, 466, 212, 477, 3090, 3123, 210, -692, -692, -692, -692, 327, 212, 470, 1331, 2706, -692, -692, 3146, 3179, -692, -692, 3212, 2706, 2779, -692, -692, -692, 2706, -692, 2706, 2706, 2706, 206, -692, 469, 465, 472, -692, -692, -692, -692, 318, 475, -692, 531, -692, -692, -692, 474, -692, 3241, 484, -692, -692, -692, -692, 493, 491, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 3431, 454, 405, -692, 18, 18, -692, 495, -692, 499, 1001, -692, -692, 1001, 103, -692, -692, 1341, 503, 3016, -692, -692, -692, 502, 1645, -692, -692, 274, 2706, -692, 2706, -692, 317, 317, 3264, 3292, 1162, 1214, 756, 3454, 1069, 797, 797, 317, 317, -692, -692, -692, 299, 299, -692, -692, -692, -692, 2706, -692, 2706, 507, -692, 477, 552, -692, 2706, 2240, -692, 2706, 2546, -692, 510, 512, -692, 163, -692, 2240, 514, 516, 2240, 2240, -692, -692, -692, 3323, -692, 3347, -692, 3372, -692, 560, 2633, 519, 454, 42, 524, -692, -692, -692, 2706, 103, -692, 525, 526, 543, 531, 206, -692, 42, 42, -692, -692, 163, -692, 527, 2706, -692, 449, 206, 523, -692, -692, 44, 282, 2706, -692, 3406, -692, 2706, 2706, -692, 2240, 3431, 587, 534, 1417, 2327, -692, -692, 163, 2706, -692, 388, -692, -692, -692, 2706, 2706, 2706, -692, -692, -692, 3431, 577, 103, -692, 244, 542, -692, 423, 423, 1001, 545, -692, -692, 423, 320, 544, 548, 163, -692, -692, 330, 2706, -692, 2706, 3431, 541, 549, -692, 3431, -692, 2240, 103, -692, -692, 182, -692, 3431, -692, 2706, 535, 554, 1968, 388, 3431, 3372, 3431, -692, -692, -692, 103, 543, 543, -692, 2060, -692, -692, 18, 18, 163, 2706, -692, 44, 555, -692, -692, 26, -692, 2240, -692, -692, -692, 2400, 3431, 551, -692, -692, 1598, -692, -692, 593, 593, 8, 564, 2152, -692, -692, 562, 29, 140, 568, 569, -692, 2706, -692, -692, -692, -692, -692, -692, 573, 276, 593, 276, 2706, 2706, 574, -692, 578, 2706, 423, 423, -692, 26, 206, -692, -692, -692, -692, -692, 582, 585, -692, 2706, 586, 543, 543, 584, 566, 580, 591, 590, 597, 598, 206, -692, -692, 602, -692, -692, -692, 594, -692, -692 }; /* YYPGOTO[NTERM-NUM]. */ static const short yypgoto[] = { -692, -692, -692, 644, -692, -230, 308, -692, -692, -12, 15, -237, -446, -90, -692, 63, -692, -692, -692, 383, -692, 412, -692, -692, -692, -692, -692, 7, -692, 631, -356, -509, -16, -692, -692, 581, -372, -692, -692, -692, -368, -692, 559, -245, 194, -692, -692, -227, 149, -621, -692, -486, 68, 197, -692, -691, -692, -378, -86, -692, -692, -692, -692, -692, -692, -692, 328, -692, 177, 159, -692, -692, -692, -11, -692, 440, -692, -40, -546, -389, -548, -619, -671, -24, -55, -516, -529, -692, -33, -68, -675, -2, -194, -692, 430, -156, -692, -692, -692, -692, -294, -692, -692, -35, 0, -692, -692, -692, -692, -692, -541, -692, -692, -692, 141, -692, 579, -692, -692, 394, -692, 393, -692, -463, -692, -65, -692, 224, 498, -1, -69, 322, -692, -7, -692, 402, 2, 9, -692, 139, -357, -180, -692, 300, 511, 151, -692, -620, -692, -692, -692, 111, 490, 571, 385, -692, 232, 589, 618, 256, -692, 283, -692, -692, -438, 264, -692, 265, -692, 304, 1104, -246, -692, 380, 647, -692, -692, -692 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -446 static const short yytable[] = { 7, 42, 19, 301, 76, 322, 521, 121, 343, 460, 381, 545, 126, 127, 647, 560, 608, 42, 650, 38, 42, 550, 78, 535, 601, 551, 631, 702, 382, 384, 153, 425, 604, 743, 403, 38, 224, 540, 38, 407, 121, 428, 762, 763, 145, 257, 648, 409, 653, 658, 270, 271, 633, 634, 5, 276, 77, 457, 16, 16, 337, 769, 267, 1, 358, 199, 17, 358, 268, 17, 733, 734, 139, 668, 145, 497, 737, 498, 790, 17, 502, 786, 355, 17, 17, 481, 281, 297, 312, 297, 224, 788, -131, 682, 503, 6, 356, 309, 6, 140, 650, 504, 139, 357, 743, 316, 270, 271, 6, 276, 563, 13, 18, 18, 6, 685, 814, 815, 710, 6, 145, 6, 81, 702, 261, 336, 518, 21, 563, 140, 653, 705, 776, 224, 395, 520, 14, 15, 269, 82, 27, 272, 785, 22, 199, 396, 397, 141, 139, 705, 624, 6, 6, 11, 24, 398, 647, 601, 425, 360, 745, 308, 199, 800, 559, 604, 25, 29, 197, 638, 345, 514, 807, 808, 409, 140, 26, 141, 75, 399, 346, 550, -11, 379, 380, 551, 383, 360, 744, 352, 748, 84, -233, 507, 269, 395, 745, -233, 519, -233, 508, 582, 583, 584, 585, 586, 396, 397, 720, 14, -234, 85, 415, 791, 277, -234, 398, -234, 19, 514, 362, 361, 145, 141, 145, -124, 748, 647, 122, 499, 75, 150, 281, 336, 145, 467, 151, 199, 447, 448, 449, 450, 665, 360, 231, 451, 14, 197, 361, 361, 139, 404, 139, 772, 773, -385, 350, 560, 753, 795, -385, 754, 139, 199, 464, 197, 410, 475, 105, 279, 14, 506, 6, 688, 280, 564, 417, 140, 510, 140, 38, -385, -385, 599, 360, 224, -386, 600, 352, 140, 249, -386, 14, 360, -194, 139, 460, 277, 231, -194, 497, 75, 537, 466, -394, 361, 476, 151, 146, -394, 149, 105, -386, -386, 735, 618, 425, 280, 425, 105, -194, -194, 473, 9, 475, 141, 260, 141, -231, 222, -394, -394, 409, -231, 409, -231, 262, 141, 146, 415, 197, 231, -407, -232, 264, 9, 361, -407, -232, 145, -232, 105, 139, 560, 14, 361, -445, 797, 497, 646, 589, -445, 14, 476, 199, 460, 197, 706, -407, -407, 474, -229, 123, 124, 546, 125, -229, 139, -229, 473, -230, 605, -445, -445, 146, -230, 273, -230, 419, 145, 274, 449, 450, 410, 697, 593, 451, 721, 686, 497, 425, 738, 722, 417, 140, 233, 9, 275, 320, 561, 14, 79, 698, 699, 80, 742, 409, 139, 145, 303, 514, 444, 445, 446, 14, 387, 222, 474, 336, 802, 803, 365, 366, 304, 806, 305, 9, 352, 488, 306, 313, 664, 231, 312, 140, 314, 139, 9, 812, 317, 318, 671, 141, 338, 675, 676, 339, 340, 425, 233, 425, 9, 341, 342, 9, 344, 643, 197, 351, 350, 353, 363, 362, 140, 409, 354, 409, 385, 386, 389, 393, 14, 9, 352, 452, 456, 146, 455, 146, 479, 238, 485, 141, 231, 480, 487, 425, 415, 146, 415, 499, 416, 233, 490, 145, 491, 712, 145, 492, 422, 493, 145, 409, 494, 670, 419, 505, 9, 345, 509, 346, 141, 199, 538, 199, 539, 547, 222, 224, 425, 399, 588, 139, 563, 562, 139, 590, 592, 224, 139, 594, 224, 224, 595, 238, 409, 606, 621, 622, 623, 540, 410, 627, 649, 700, 625, 360, 751, 628, 140, 424, 417, 140, 654, 630, 343, 140, 629, 696, 635, 383, 360, 328, 329, 330, 331, 332, 333, 636, 641, 644, 415, 147, 661, 9, 667, 9, 238, 659, 600, 672, 673, 680, 224, 777, 236, 9, 684, 687, 690, 691, 692, 704, 233, 713, 701, 199, 141, 714, 729, 141, 741, 147, 146, 141, 689, 732, 739, 361, 731, 736, 740, 749, 750, 757, 197, 9, 197, 416, 9, 758, 782, 361, 361, 775, 649, 422, 787, 789, 415, 780, 415, 792, 793, 224, 654, 796, 817, 703, 236, 804, 805, 145, 146, 233, 224, 810, 427, 147, 811, 813, 818, 420, 816, 199, 819, 199, 224, 825, 730, 83, 820, 522, 419, 259, 419, 237, 415, 821, 822, 139, 224, 146, 824, 199, 405, 9, 424, 238, 251, 224, 620, 236, 649, 240, 649, 199, 224, 752, 801, 640, 360, 199, 654, 695, 654, 626, 140, 536, 197, 415, 9, 642, 632, 406, 799, 761, 799, 774, 199, 794, 779, 759, 241, 781, 760, 199, 809, 137, 231, 237, 649, 9, 459, 660, 199, 231, 299, 770, 238, 511, 654, 512, 364, 613, 771, 231, 823, 240, 231, 231, 9, 247, 513, 669, 141, 614, 419, 255, 616, 147, 0, 147, 361, 649, 591, 0, 197, 146, 197, 0, 146, 147, 237, 654, 146, 0, 241, 0, 0, 9, 0, 0, 429, 427, 0, 416, 197, 416, 420, 0, 240, 0, 236, 422, 0, 422, 0, 231, 197, 0, 231, 0, 0, 302, 197, 247, 0, 0, 0, 0, 0, 0, 0, 0, 419, 0, 419, 0, 0, 241, 0, 197, 0, 429, 0, 0, 0, 319, 197, 0, 0, 420, 420, 420, 420, 420, 0, 197, 587, 431, 432, 0, 0, 236, 424, 0, 424, 0, 247, 435, 0, 231, 419, 0, 0, 440, 441, 442, 443, 444, 445, 446, 231, 0, 0, 9, 0, 0, 9, 416, 0, 612, 9, 237, 231, 0, 0, 422, 0, 0, 431, 432, 0, 0, 0, 419, 147, 0, 231, 233, 0, 240, 0, 0, 0, 0, 233, 231, 442, 443, 444, 445, 446, 0, 231, 388, 233, 391, 0, 233, 233, 0, 0, 0, 0, 146, 0, 137, 0, 0, 241, 0, 0, 0, 237, 0, 147, 416, 424, 416, 0, 0, 0, 0, 0, 422, 0, 422, 0, 0, 0, 427, 240, 427, 0, 0, 420, 222, 420, 247, 0, 0, 0, 0, 0, 147, 0, 0, 233, 222, 0, 233, 0, 0, 0, 416, 0, 0, 0, 0, 9, 241, 0, 422, 238, 0, 0, 0, 0, 0, 0, 238, 222, 0, 0, 0, 424, 0, 424, 222, 0, 238, 0, 0, 238, 238, 0, 0, 416, 0, 247, 0, 0, 0, 0, 128, 422, 0, 129, 0, 0, 130, 233, 9, 0, 0, 132, 0, 0, 0, 0, 133, 0, 233, 424, 427, 0, 0, 134, 0, 420, 0, 391, 135, 0, 233, 0, 0, 0, 0, 0, 147, 0, 238, 147, 0, 238, 136, 147, 233, 0, -50, 20, 0, 21, 27, 0, 424, 233, 0, 0, 0, 0, -65, 0, 233, 6, 0, 0, 0, 22, 0, 565, 0, 0, -50, 20, 23, 21, 236, -65, 24, 29, 427, 0, 427, 236, -65, 420, 0, 420, 0, 0, 25, 22, 429, 236, 238, 0, 236, 236, 302, 0, 26, -65, 24, 27, 0, 238, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 238, 427, 0, 0, 0, 0, 420, 26, 0, 0, 27, 0, 28, 29, 238, 0, 0, 0, 0, 0, 0, 0, 0, 238, 0, 0, 0, 0, 236, 0, 238, 236, 431, 432, 427, 0, 28, 29, 0, 420, 237, 0, 435, 436, 437, 0, 438, 237, 440, 441, 442, 443, 444, 445, 446, 0, 0, 237, 240, 0, 237, 237, 0, 0, 0, 240, 0, 637, 429, 147, 391, 0, 0, 0, 639, 240, 0, 0, 240, 240, 0, 0, 236, 0, 0, 0, 0, 241, 0, 0, 0, 0, 0, 236, 241, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 236, 0, 241, 241, 237, 0, 0, 237, 0, 0, 0, 247, 0, 0, 236, 429, 0, 0, 247, 0, 431, 432, 240, 236, 0, 240, 0, 0, 247, 0, 236, 247, 247, 292, 0, 298, 440, 441, 442, 443, 444, 445, 446, 0, 0, 311, 0, 0, 0, 0, 315, 241, 0, 0, 241, 0, 0, 0, 237, 0, 0, 0, 321, 327, 0, 0, 0, 0, 0, 237, 0, 0, 431, 432, 0, 0, 240, 0, 0, 0, 247, 237, 435, 247, 437, 0, 0, 240, 440, 441, 442, 443, 444, 445, 446, 237, 0, 0, 0, 240, 0, 0, 0, 0, 237, 241, 0, 0, 0, 0, 391, 237, 0, 240, 0, 0, 241, 0, 0, 0, 128, 0, 240, 129, 0, 0, 130, 252, 241, 240, 0, 132, 429, 0, 247, 0, 133, 0, 0, 0, 0, 0, 241, 134, 253, 247, 0, 0, 135, 0, 0, 241, 0, 0, 0, 0, 0, 247, 241, 429, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 27, 247, 0, 0, 0, 0, 254, 0, 0, 0, 247, 6, 0, 468, 469, 0, 478, 247, 0, 431, 432, 482, 483, 433, 0, 0, 486, 29, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 430, 0, 0, 431, 432, 429, 0, 433, 434, 0, 0, 0, 607, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 0, 0, 0, 0, 0, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 495, 0, 0, 429, 0, 431, 432, 558, 0, 433, 496, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 495, 0, 0, 0, 0, 431, 432, 0, 0, 433, 496, 0, 0, 0, 311, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 0, 0, 0, 478, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 615, 0, 617, 300, 619, 21, 155, 128, 156, 157, 129, 721, 0, 130, -65, 158, 722, 159, 132, 0, 0, 160, 0, 133, 161, 162, 163, 0, 0, 0, 134, 0, 24, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 25, 0, 0, 166, 167, 136, 0, 168, 169, 170, 26, 0, 0, 27, 171, 172, 0, 0, 173, 174, 0, 175, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 429, 105, -239, 185, 0, 0, 0, 186, 29, 0, 0, 0, 187, 188, 0, 0, 189, 190, 0, 0, 657, 0, 0, 0, 0, 0, 0, 0, 663, 0, 0, 0, 666, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 191, 192, 0, 0, 0, 0, 0, 0, 495, 0, 683, 0, 0, 431, 432, 0, 0, 433, 0, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 0, 0, 0, 0, 0, 0, 707, 0, 0, 0, 0, 711, 0, 0, 0, 0, 0, 0, 719, 0, 0, 0, 478, 0, 0, 0, 0, 0, 726, 727, 728, 0, 154, 0, 21, 155, 128, 156, 157, 129, 0, 0, 130, -65, 158, 0, 159, 132, 0, 0, 160, 0, 133, 161, 162, 163, 0, 0, 0, 134, 0, 24, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 755, 25, 0, 0, 166, 167, 136, 0, 168, 169, 170, 26, 0, 0, 27, 171, 172, 0, 0, 173, 174, 0, 175, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 719, 105, -204, 185, 0, 0, 0, 186, 29, 0, 0, 0, 187, 188, 0, 0, 189, 190, 0, 300, 0, 21, 155, 128, 156, 157, 129, 0, 0, 130, -65, 158, 0, 159, 132, 0, 0, 160, 0, 133, 161, 162, 163, 0, 191, 192, 134, 0, 24, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 25, 0, 0, 166, 167, 136, 0, 168, 169, 170, 26, 0, 0, 27, 171, 172, 0, 0, 173, 174, 0, 175, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 105, -203, 185, 0, 0, 0, 186, 29, 0, 0, 0, 187, 188, 0, 0, 189, 190, 0, 300, 0, 21, 155, 128, 156, 157, 129, 0, 0, 130, -65, 158, 0, 159, 132, 0, 0, 160, 0, 133, 161, 162, 163, 0, 191, 192, 134, 0, 24, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 25, 0, 0, 166, 167, 136, 0, 168, 169, 170, 26, 0, 0, 27, 171, 172, 0, 0, 173, 174, 0, 175, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 105, -241, 185, 0, 0, 0, 186, 29, 0, 0, 0, 187, 188, 0, 0, 189, 190, 0, 300, 0, 21, 155, 128, 156, 157, 129, 0, 0, 130, -65, 158, 0, 159, 132, 0, 0, 160, 0, 133, 161, 162, 163, 0, 191, 192, 134, 0, 24, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 25, 0, 0, 166, 167, 136, 0, 764, 169, 170, 26, 0, 0, 27, 765, 172, 0, 0, 173, 174, 0, 175, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 105, -204, 185, 0, 0, 0, 186, 29, 0, 0, 0, 187, 188, 0, 0, 189, 190, 0, 300, 0, 21, 155, 128, 156, 157, 129, 0, 0, 130, -65, 158, 0, 159, 132, 0, 0, 160, 0, 133, 161, 162, 163, 0, 191, 192, 134, 0, 24, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 25, 0, 0, 166, 167, 136, 0, 168, 169, 170, 26, 0, 0, 27, 171, 172, 0, 0, 173, 174, 0, 175, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 105, -204, 185, 0, 0, 0, 186, 29, 0, 0, 0, 187, 188, 0, 300, 189, 190, 155, 128, 156, 157, 129, 0, 0, 130, 0, 158, 0, 159, 132, 0, 0, 0, 0, 133, 161, 162, 163, 0, 0, 0, 134, 0, 191, 192, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 0, 0, 0, 166, 167, 136, 0, 168, 169, 170, 0, 0, 0, 27, 171, 172, 0, 0, 173, 174, 0, 175, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 105, 0, 185, 0, 0, 0, 186, 29, 0, 0, 0, 187, 188, 0, 0, 189, 190, 128, 0, 157, 129, 0, 0, 130, 0, 0, 0, 0, 132, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 134, 0, 0, 191, 192, 135, 0, 164, 165, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 0, 168, 0, 0, 0, 0, 0, 27, 171, 0, 0, 0, 0, 174, 0, 0, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 667, 715, 185, 128, 0, 157, 129, 29, 0, 130, 0, 187, 188, 0, 132, 189, 190, 0, 0, 133, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 0, 0, 0, 191, 192, 136, 0, 168, 0, 0, 0, 0, 0, 27, 171, 0, 0, 0, 0, 174, 0, 0, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 667, 778, 185, 128, 0, 157, 129, 29, 0, 130, 0, 187, 188, 0, 132, 189, 190, 458, 0, 133, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 0, 0, 0, 191, 192, 136, 0, 168, 0, 0, 0, 0, 0, 27, 171, 0, 0, 0, 0, 174, 0, 0, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 0, 0, 185, 128, 0, 157, 129, 29, 0, 130, 0, 187, 188, 0, 132, 189, 190, 0, 0, 133, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 0, 0, 0, 191, 192, 136, 0, 168, 0, 0, 0, 0, 0, 27, 171, 0, 0, 0, 0, 174, 0, 0, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 0, 0, 185, 556, 0, 0, 0, 29, 0, 0, 0, 187, 188, 0, 0, 189, 190, 128, 0, 157, 129, 0, 0, 130, 0, 0, 0, 0, 132, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 134, 0, 0, 191, 192, 135, 0, 164, 165, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 0, 168, 0, 0, 0, 0, 0, 27, 171, 0, 0, 0, 0, 174, 0, 0, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 667, 0, 185, 128, 0, 157, 129, 29, 0, 130, 0, 187, 188, 0, 132, 189, 190, 0, 0, 133, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 0, 0, 0, 191, 192, 136, 0, 168, 0, 0, 0, 0, 0, 27, 171, 0, 0, 0, 0, 174, 0, 0, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 0, 0, 0, 185, 128, 0, 0, 129, 29, 0, 130, 0, 187, 188, 0, 132, 189, 190, 0, 0, 133, 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 135, 0, 164, 165, 17, 0, 0, 0, 0, 0, 0, 0, 191, 192, 136, 0, 168, 0, 0, 0, 0, 0, 27, 171, 0, 0, 0, 0, 174, 0, 0, 176, 177, 6, 178, 179, 180, 181, 182, 183, 184, 86, 0, 87, 0, -95, 0, 0, -95, 29, 0, -95, -95, 187, 188, 0, -95, 0, 0, 88, 0, -95, 0, 0, 0, 0, 0, 0, -95, -95, 89, 90, 91, -95, 92, 0, 0, 0, 0, 0, 93, 94, 95, 96, 97, 0, 0, -95, 98, 0, 0, 99, 100, 101, 102, -95, 0, 0, 0, 103, 0, -95, 104, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 105, -79, 0, 0, 0, 0, 106, -95, 250, 0, 87, 0, -95, 0, 0, -95, 0, 0, -95, -95, 0, 0, 0, -95, 0, 0, 88, 0, -95, 0, 0, 0, 0, 0, 0, -95, -95, 89, 90, 91, -95, 92, 0, 0, 0, 0, 0, 93, 94, 95, 96, 97, 0, 0, -95, 98, 0, 0, 99, 100, 101, 102, -95, 0, 0, 0, 103, 0, -95, 104, 0, 0, 0, -95, 0, 0, 0, 0, 0, 0, 0, 0, 105, -78, 0, 0, 0, 0, 106, -95, 548, 0, 87, 0, -95, 0, 0, -95, 0, 0, -95, -95, 0, 0, 0, -95, 429, 0, 88, 0, -95, 0, 0, 0, 0, 0, 0, -95, -95, 89, 90, 91, -95, 92, 0, 0, 0, 0, 0, 93, 94, 95, 96, 97, 429, 0, -95, 258, 0, 0, 99, 100, 101, 102, -95, 453, 0, 0, 103, 0, -95, 104, 0, 0, 0, -95, 0, 429, 0, 0, 0, 0, 0, 431, 432, -159, 0, 433, 0, 0, 549, -95, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 0, 484, 0, 429, 431, 432, 0, 0, 433, 0, 0, 0, 0, 0, 435, 436, 437, 489, 438, 439, 440, 441, 442, 443, 444, 445, 446, 431, 432, 0, 0, 433, 0, 0, 0, 0, 429, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 597, 0, 0, 0, 0, 0, 0, 0, 0, 429, 431, 432, 0, 0, 433, 0, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 598, 0, 0, 0, 0, 0, 0, 0, 0, 429, 431, 432, 0, 0, 433, 0, 0, 0, 0, 0, 435, 436, 437, 609, 438, 439, 440, 441, 442, 443, 444, 445, 446, 431, 432, 0, 0, 433, 0, 0, 0, 0, 429, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 431, 432, 0, 0, 433, 429, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 611, 0, 0, 0, 0, 429, 0, 0, 0, 0, 431, 432, 0, 0, 433, 0, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 429, 495, 0, 0, 0, 0, 431, 432, 0, 0, 433, 0, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 431, 432, 429, 0, 433, 655, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 0, 656, 429, 0, 431, 432, 0, 0, 433, 0, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 429, 0, 0, 0, 0, 0, 0, 0, 431, 432, 0, 0, 433, 677, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 431, 432, 429, 0, 433, 678, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 0, 431, 432, 429, 0, 433, 679, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 708, 429, 0, 0, 0, 0, 0, 0, 0, 0, 431, 432, 0, 0, 433, 0, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 0, 0, 431, 432, 0, 0, 433, 0, 0, 0, 0, 0, 435, 436, 437, 0, 438, 439, 440, 441, 442, 443, 444, 445, 446, 431, 432, 0, 0, 0, 0, 0, 0, 0, 0, 435, 436, 437, 0, 0, 0, 440, 441, 442, 443, 444, 445, 446, 128, 0, 0, 129, 0, 0, 130, 131, 87, 0, 0, 132, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 134, 88, 0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 89, 90, 91, 0, 92, 0, 0, 136, 0, 0, 93, 94, 95, 96, 97, 27, 0, 0, 258, 0, 0, 99, 100, 101, 102, 0, 6, 0, 0, 103, 44, 0, 104, 0, 0, 0, 0, 45, 46, 47, 48, 0, 29, 49, 50, 51, 52, 53, 54, 55, 56, 367, 0, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 0, 0, 0, 0, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378 }; /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of list of conflicting reductions corresponding to action entry for state STATE-NUM in yytable. 0 means no conflicts. The list in yyconfl is terminated by a rule number of 0. */ static const unsigned char yyconflp[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by 0, pointed into by YYCONFLP. */ static const short yyconfl[] = { 0, 31, 0, 25, 0 }; static const short yycheck[] = { 1, 12, 9, 159, 20, 185, 363, 75, 202, 303, 255, 389, 81, 82, 562, 404, 479, 28, 564, 12, 31, 393, 23, 379, 470, 393, 535, 646, 255, 256, 98, 277, 470, 704, 271, 28, 105, 19, 31, 276, 108, 278, 733, 734, 84, 114, 562, 277, 564, 590, 140, 141, 538, 539, 1, 145, 1, 302, 12, 12, 12, 736, 131, 39, 35, 105, 37, 35, 137, 37, 690, 691, 84, 602, 114, 79, 696, 81, 49, 37, 35, 73, 35, 37, 37, 312, 154, 156, 80, 158, 159, 766, 74, 622, 49, 66, 49, 166, 66, 84, 646, 56, 114, 56, 775, 173, 196, 197, 66, 199, 84, 81, 66, 66, 66, 624, 807, 808, 659, 66, 160, 66, 12, 742, 125, 194, 353, 3, 84, 114, 646, 105, 106, 202, 32, 362, 80, 81, 139, 29, 55, 142, 763, 19, 184, 43, 44, 84, 160, 105, 506, 66, 66, 0, 30, 53, 704, 603, 404, 228, 706, 75, 202, 784, 401, 603, 42, 82, 105, 547, 10, 351, 792, 793, 404, 160, 52, 114, 75, 77, 20, 553, 66, 252, 253, 553, 255, 256, 704, 73, 706, 85, 74, 49, 195, 32, 742, 79, 354, 81, 56, 447, 448, 449, 450, 451, 43, 44, 671, 80, 74, 78, 277, 73, 85, 79, 53, 81, 225, 399, 80, 228, 262, 160, 264, 73, 742, 775, 81, 77, 75, 76, 300, 302, 274, 304, 81, 277, 90, 91, 92, 93, 599, 312, 105, 97, 80, 184, 255, 256, 262, 85, 264, 739, 740, 79, 80, 646, 76, 775, 84, 79, 274, 303, 304, 202, 277, 307, 75, 76, 80, 340, 66, 630, 81, 85, 277, 262, 346, 264, 273, 105, 106, 73, 353, 354, 79, 77, 73, 274, 76, 84, 80, 362, 79, 307, 590, 85, 159, 84, 79, 75, 81, 304, 79, 312, 307, 81, 84, 84, 83, 75, 105, 106, 692, 495, 562, 81, 564, 75, 105, 106, 307, 1, 364, 262, 92, 264, 74, 105, 105, 106, 562, 79, 564, 81, 18, 274, 114, 404, 277, 202, 79, 74, 18, 23, 353, 84, 79, 389, 81, 75, 364, 742, 80, 362, 79, 81, 79, 85, 81, 84, 80, 364, 404, 659, 303, 85, 105, 106, 307, 74, 80, 81, 390, 83, 79, 389, 81, 364, 74, 471, 105, 106, 160, 79, 84, 81, 277, 429, 79, 92, 93, 404, 639, 464, 97, 9, 625, 79, 646, 81, 14, 404, 389, 105, 84, 80, 184, 410, 80, 28, 639, 640, 31, 85, 646, 429, 458, 73, 600, 104, 105, 106, 80, 81, 202, 364, 497, 786, 787, 118, 119, 73, 791, 73, 114, 73, 74, 73, 73, 597, 303, 80, 429, 73, 458, 125, 805, 80, 73, 607, 389, 80, 610, 611, 80, 12, 704, 159, 706, 139, 80, 76, 142, 81, 556, 404, 77, 80, 80, 73, 80, 458, 704, 89, 706, 73, 81, 25, 75, 80, 160, 73, 81, 63, 262, 81, 264, 75, 105, 12, 429, 354, 81, 74, 742, 562, 274, 564, 77, 277, 202, 78, 544, 78, 662, 547, 79, 277, 78, 551, 742, 79, 604, 404, 12, 195, 10, 73, 20, 458, 562, 73, 564, 73, 79, 303, 597, 775, 77, 73, 544, 84, 79, 547, 79, 81, 607, 551, 74, 610, 611, 66, 159, 775, 76, 78, 83, 77, 19, 562, 78, 564, 644, 80, 625, 713, 74, 544, 277, 562, 547, 564, 73, 759, 551, 74, 637, 74, 639, 640, 187, 188, 189, 190, 191, 192, 79, 76, 78, 646, 84, 31, 262, 75, 264, 202, 81, 77, 76, 75, 32, 662, 750, 105, 274, 78, 74, 74, 74, 58, 79, 303, 17, 78, 646, 544, 74, 32, 547, 701, 114, 389, 551, 631, 74, 73, 625, 687, 75, 73, 81, 74, 89, 562, 304, 564, 404, 307, 76, 38, 639, 640, 79, 646, 404, 73, 76, 704, 89, 706, 74, 74, 713, 646, 73, 81, 649, 159, 76, 73, 692, 429, 354, 724, 74, 277, 160, 74, 74, 81, 277, 79, 704, 74, 706, 736, 74, 685, 39, 81, 364, 562, 115, 564, 105, 742, 81, 81, 692, 750, 458, 81, 724, 273, 364, 404, 303, 108, 759, 497, 202, 704, 105, 706, 736, 766, 714, 785, 551, 770, 742, 704, 636, 706, 509, 692, 380, 646, 775, 389, 553, 536, 274, 783, 732, 785, 742, 759, 775, 754, 724, 105, 759, 725, 766, 796, 84, 590, 159, 742, 410, 303, 593, 775, 597, 158, 736, 354, 347, 742, 348, 232, 488, 736, 607, 816, 159, 610, 611, 429, 105, 351, 603, 692, 492, 646, 114, 494, 262, -1, 264, 770, 775, 461, -1, 704, 544, 706, -1, 547, 274, 202, 775, 551, -1, 159, -1, -1, 458, -1, -1, 27, 404, -1, 562, 724, 564, 404, -1, 202, -1, 303, 562, -1, 564, -1, 659, 736, -1, 662, -1, -1, 160, 742, 159, -1, -1, -1, -1, -1, -1, -1, -1, 704, -1, 706, -1, -1, 202, -1, 759, -1, 27, -1, -1, -1, 184, 766, -1, -1, 447, 448, 449, 450, 451, -1, 775, 454, 84, 85, -1, -1, 354, 562, -1, 564, -1, 202, 94, -1, 713, 742, -1, -1, 100, 101, 102, 103, 104, 105, 106, 724, -1, -1, 544, -1, -1, 547, 646, -1, 487, 551, 303, 736, -1, -1, 646, -1, -1, 84, 85, -1, -1, -1, 775, 389, -1, 750, 590, -1, 303, -1, -1, -1, -1, 597, 759, 102, 103, 104, 105, 106, -1, 766, 262, 607, 264, -1, 610, 611, -1, -1, -1, -1, 692, -1, 274, -1, -1, 303, -1, -1, -1, 354, -1, 429, 704, 646, 706, -1, -1, -1, -1, -1, 704, -1, 706, -1, -1, -1, 562, 354, 564, -1, -1, 562, 724, 564, 303, -1, -1, -1, -1, -1, 458, -1, -1, 659, 736, -1, 662, -1, -1, -1, 742, -1, -1, -1, -1, 649, 354, -1, 742, 590, -1, -1, -1, -1, -1, -1, 597, 759, -1, -1, -1, 704, -1, 706, 766, -1, 607, -1, -1, 610, 611, -1, -1, 775, -1, 354, -1, -1, -1, -1, 5, 775, -1, 8, -1, -1, 11, 713, 692, -1, -1, 16, -1, -1, -1, -1, 21, -1, 724, 742, 646, -1, -1, 28, -1, 646, -1, 389, 33, -1, 736, -1, -1, -1, -1, -1, 544, -1, 659, 547, -1, 662, 47, 551, 750, -1, 0, 1, -1, 3, 55, -1, 775, 759, -1, -1, -1, -1, 12, -1, 766, 66, -1, -1, -1, 19, -1, 429, -1, -1, 0, 1, 26, 3, 590, 29, 30, 82, 704, -1, 706, 597, 12, 704, -1, 706, -1, -1, 42, 19, 27, 607, 713, -1, 610, 611, 458, -1, 52, 29, 30, 55, -1, 724, -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, 736, 742, -1, -1, -1, -1, 742, 52, -1, -1, 55, -1, 81, 82, 750, -1, -1, -1, -1, -1, -1, -1, -1, 759, -1, -1, -1, -1, 659, -1, 766, 662, 84, 85, 775, -1, 81, 82, -1, 775, 590, -1, 94, 95, 96, -1, 98, 597, 100, 101, 102, 103, 104, 105, 106, -1, -1, 607, 590, -1, 610, 611, -1, -1, -1, 597, -1, 544, 27, 692, 547, -1, -1, -1, 551, 607, -1, -1, 610, 611, -1, -1, 713, -1, -1, -1, -1, 590, -1, -1, -1, -1, -1, 724, 597, -1, -1, -1, -1, -1, -1, -1, -1, -1, 607, 736, -1, 610, 611, 659, -1, -1, 662, -1, -1, -1, 590, -1, -1, 750, 27, -1, -1, 597, -1, 84, 85, 659, 759, -1, 662, -1, -1, 607, -1, 766, 610, 611, 155, -1, 157, 100, 101, 102, 103, 104, 105, 106, -1, -1, 167, -1, -1, -1, -1, 172, 659, -1, -1, 662, -1, -1, -1, 713, -1, -1, -1, 184, 185, -1, -1, -1, -1, -1, 724, -1, -1, 84, 85, -1, -1, 713, -1, -1, -1, 659, 736, 94, 662, 96, -1, -1, 724, 100, 101, 102, 103, 104, 105, 106, 750, -1, -1, -1, 736, -1, -1, -1, -1, 759, 713, -1, -1, -1, -1, 692, 766, -1, 750, -1, -1, 724, -1, -1, -1, 5, -1, 759, 8, -1, -1, 11, 12, 736, 766, -1, 16, 27, -1, 713, -1, 21, -1, -1, -1, -1, -1, 750, 28, 29, 724, -1, -1, 33, -1, -1, 759, -1, -1, -1, -1, -1, 736, 766, 27, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, 55, 750, -1, -1, -1, -1, 61, -1, -1, -1, 759, 66, -1, 305, 306, -1, 308, 766, -1, 84, 85, 313, 314, 88, -1, -1, 318, 82, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, 81, -1, -1, 84, 85, 27, -1, 88, 89, -1, -1, -1, 120, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, -1, -1, -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, 27, -1, 84, 85, 399, -1, 88, 89, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 79, -1, -1, -1, -1, 84, 85, -1, -1, 88, 89, -1, -1, -1, 461, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, -1, -1, -1, 479, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 492, -1, 494, 1, 496, 3, 4, 5, 6, 7, 8, 9, -1, 11, 12, 13, 14, 15, 16, -1, -1, 19, -1, 21, 22, 23, 24, -1, -1, -1, 28, -1, 30, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, 50, 51, 52, -1, -1, 55, 56, 57, -1, -1, 60, 61, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 27, 75, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, 86, 87, -1, -1, 90, 91, -1, -1, 588, -1, -1, -1, -1, -1, -1, -1, 596, -1, -1, -1, 600, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, 118, 119, -1, -1, -1, -1, -1, -1, 79, -1, 622, -1, -1, 84, 85, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, -1, -1, -1, -1, -1, -1, 655, -1, -1, -1, -1, 660, -1, -1, -1, -1, -1, -1, 667, -1, -1, -1, 671, -1, -1, -1, -1, -1, 677, 678, 679, -1, 1, -1, 3, 4, 5, 6, 7, 8, -1, -1, 11, 12, 13, -1, 15, 16, -1, -1, 19, -1, 21, 22, 23, 24, -1, -1, -1, 28, -1, 30, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, 721, 42, -1, -1, 45, 46, 47, -1, 49, 50, 51, 52, -1, -1, 55, 56, 57, -1, -1, 60, 61, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 754, 75, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, 86, 87, -1, -1, 90, 91, -1, 1, -1, 3, 4, 5, 6, 7, 8, -1, -1, 11, 12, 13, -1, 15, 16, -1, -1, 19, -1, 21, 22, 23, 24, -1, 118, 119, 28, -1, 30, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, 50, 51, 52, -1, -1, 55, 56, 57, -1, -1, 60, 61, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, 86, 87, -1, -1, 90, 91, -1, 1, -1, 3, 4, 5, 6, 7, 8, -1, -1, 11, 12, 13, -1, 15, 16, -1, -1, 19, -1, 21, 22, 23, 24, -1, 118, 119, 28, -1, 30, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, 50, 51, 52, -1, -1, 55, 56, 57, -1, -1, 60, 61, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, 86, 87, -1, -1, 90, 91, -1, 1, -1, 3, 4, 5, 6, 7, 8, -1, -1, 11, 12, 13, -1, 15, 16, -1, -1, 19, -1, 21, 22, 23, 24, -1, 118, 119, 28, -1, 30, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, 50, 51, 52, -1, -1, 55, 56, 57, -1, -1, 60, 61, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, 86, 87, -1, -1, 90, 91, -1, 1, -1, 3, 4, 5, 6, 7, 8, -1, -1, 11, 12, 13, -1, 15, 16, -1, -1, 19, -1, 21, 22, 23, 24, -1, 118, 119, 28, -1, 30, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, -1, 49, 50, 51, 52, -1, -1, 55, 56, 57, -1, -1, 60, 61, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, 86, 87, -1, 1, 90, 91, 4, 5, 6, 7, 8, -1, -1, 11, -1, 13, -1, 15, 16, -1, -1, -1, -1, 21, 22, 23, 24, -1, -1, -1, 28, -1, 118, 119, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, -1, 49, 50, 51, -1, -1, -1, 55, 56, 57, -1, -1, 60, 61, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, -1, 77, -1, -1, -1, 81, 82, -1, -1, -1, 86, 87, -1, -1, 90, 91, 5, -1, 7, 8, -1, -1, 11, -1, -1, -1, -1, 16, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, 28, -1, -1, 118, 119, 33, -1, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, 61, -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 5, -1, 7, 8, 82, -1, 11, -1, 86, 87, -1, 16, 90, 91, -1, -1, 21, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, 118, 119, 47, -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, 61, -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, 76, 77, 5, -1, 7, 8, 82, -1, 11, -1, 86, 87, -1, 16, 90, 91, 19, -1, 21, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, 118, 119, 47, -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, 61, -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, -1, -1, 77, 5, -1, 7, 8, 82, -1, 11, -1, 86, 87, -1, 16, 90, 91, -1, -1, 21, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, 118, 119, 47, -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, 61, -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, -1, -1, 77, 78, -1, -1, -1, 82, -1, -1, -1, 86, 87, -1, -1, 90, 91, 5, -1, 7, 8, -1, -1, 11, -1, -1, -1, -1, 16, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, 28, -1, -1, 118, 119, 33, -1, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, 61, -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, 75, -1, 77, 5, -1, 7, 8, 82, -1, 11, -1, 86, 87, -1, 16, 90, 91, -1, -1, 21, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, 118, 119, 47, -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, 61, -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, -1, -1, -1, 77, 5, -1, -1, 8, 82, -1, 11, -1, 86, 87, -1, 16, 90, 91, -1, -1, 21, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, 118, 119, 47, -1, 49, -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, -1, 61, -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 1, -1, 3, -1, 5, -1, -1, 8, 82, -1, 11, 12, 86, 87, -1, 16, -1, -1, 19, -1, 21, -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, -1, -1, -1, 59, -1, 61, 62, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, 75, 76, -1, -1, -1, -1, 81, 82, 1, -1, 3, -1, 5, -1, -1, 8, -1, -1, 11, 12, -1, -1, -1, 16, -1, -1, 19, -1, 21, -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, -1, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, -1, -1, -1, 59, -1, 61, 62, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, 75, 76, -1, -1, -1, -1, 81, 82, 1, -1, 3, -1, 5, -1, -1, 8, -1, -1, 11, 12, -1, -1, -1, 16, 27, -1, 19, -1, 21, -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, -1, -1, -1, -1, -1, 40, 41, 42, 43, 44, 27, -1, 47, 48, -1, -1, 51, 52, 53, 54, 55, 66, -1, -1, 59, -1, 61, 62, -1, -1, -1, 66, -1, 27, -1, -1, -1, -1, -1, 84, 85, 76, -1, 88, -1, -1, 81, 82, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, -1, 81, -1, 27, 84, 85, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, 74, 98, 99, 100, 101, 102, 103, 104, 105, 106, 84, 85, -1, -1, 88, -1, -1, -1, -1, 27, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 74, -1, -1, -1, -1, -1, -1, -1, -1, 27, 84, 85, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 74, -1, -1, -1, -1, -1, -1, -1, -1, 27, 84, 85, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, 74, 98, 99, 100, 101, 102, 103, 104, 105, 106, 84, 85, -1, -1, 88, -1, -1, -1, -1, 27, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, 88, 27, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 74, -1, -1, -1, -1, 27, -1, -1, -1, -1, 84, 85, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 27, 79, -1, -1, -1, -1, 84, 85, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 84, 85, 27, -1, 88, 89, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, -1, 81, 27, -1, 84, 85, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 27, -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, 88, 89, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, 84, 85, 27, -1, 88, 89, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, -1, 84, 85, 27, -1, 88, 89, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, 74, 27, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, -1, 84, 85, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 84, 85, -1, -1, -1, -1, -1, -1, -1, -1, 94, 95, 96, -1, -1, -1, 100, 101, 102, 103, 104, 105, 106, 5, -1, -1, 8, -1, -1, 11, 12, 3, -1, -1, 16, -1, -1, -1, -1, 21, -1, -1, -1, -1, -1, -1, 28, 19, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, 30, 31, 32, -1, 34, -1, -1, 47, -1, -1, 40, 41, 42, 43, 44, 55, -1, -1, 48, -1, -1, 51, 52, 53, 54, -1, 66, -1, -1, 59, 77, -1, 62, -1, -1, -1, -1, 84, 85, 86, 87, -1, 82, 90, 91, 92, 93, 94, 95, 96, 97, 83, -1, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, -1, -1, -1, -1, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned short yystos[] = { 0, 39, 122, 137, 138, 1, 66, 250, 251, 252, 253, 0, 139, 81, 80, 81, 12, 37, 66, 254, 1, 3, 19, 26, 30, 42, 52, 55, 81, 82, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 186, 194, 195, 77, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 75, 153, 1, 250, 140, 140, 12, 29, 150, 85, 78, 1, 3, 19, 30, 31, 32, 34, 40, 41, 42, 43, 44, 48, 51, 52, 53, 54, 59, 62, 75, 81, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 167, 180, 184, 185, 210, 81, 80, 81, 83, 251, 251, 5, 8, 11, 12, 16, 21, 28, 33, 47, 124, 126, 130, 131, 136, 194, 196, 197, 198, 248, 249, 250, 83, 76, 81, 153, 210, 1, 4, 6, 7, 13, 15, 19, 22, 23, 24, 35, 36, 45, 46, 49, 50, 51, 56, 57, 60, 61, 63, 64, 65, 67, 68, 69, 70, 71, 72, 73, 77, 81, 86, 87, 90, 91, 118, 119, 123, 124, 130, 131, 136, 148, 198, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 227, 232, 236, 238, 239, 243, 245, 246, 247, 248, 249, 251, 252, 254, 255, 257, 258, 259, 260, 263, 264, 270, 272, 273, 274, 275, 277, 278, 279, 280, 282, 283, 284, 285, 295, 297, 76, 1, 156, 12, 29, 61, 124, 169, 251, 48, 163, 92, 250, 18, 151, 18, 187, 188, 251, 251, 250, 134, 134, 250, 84, 79, 80, 134, 85, 134, 76, 81, 210, 136, 198, 248, 260, 264, 273, 274, 275, 278, 279, 291, 292, 294, 295, 237, 251, 291, 237, 1, 216, 124, 73, 73, 73, 73, 265, 75, 251, 290, 291, 80, 73, 73, 291, 210, 80, 73, 124, 248, 291, 262, 286, 287, 288, 289, 291, 275, 275, 275, 275, 275, 275, 164, 165, 251, 12, 80, 80, 12, 80, 76, 213, 81, 10, 20, 240, 241, 242, 80, 77, 73, 80, 89, 35, 49, 56, 35, 168, 251, 254, 80, 73, 265, 118, 119, 83, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 251, 251, 164, 168, 251, 168, 73, 81, 81, 124, 25, 152, 124, 178, 75, 189, 32, 43, 44, 53, 77, 132, 133, 135, 132, 85, 142, 196, 132, 125, 126, 194, 199, 200, 201, 206, 246, 248, 250, 271, 272, 275, 276, 277, 281, 282, 292, 293, 294, 132, 27, 81, 84, 85, 88, 89, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 105, 106, 90, 91, 92, 93, 97, 81, 66, 298, 81, 63, 164, 19, 215, 221, 228, 230, 231, 198, 234, 250, 251, 291, 291, 127, 128, 129, 131, 136, 198, 250, 244, 291, 75, 81, 168, 291, 291, 81, 12, 291, 74, 74, 74, 78, 78, 79, 78, 79, 79, 89, 79, 81, 77, 268, 269, 35, 49, 56, 12, 251, 49, 56, 73, 210, 242, 240, 256, 262, 291, 261, 262, 168, 216, 168, 261, 127, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 151, 187, 81, 73, 73, 19, 172, 173, 174, 175, 178, 153, 79, 1, 81, 157, 161, 190, 191, 192, 193, 78, 256, 291, 132, 200, 250, 79, 84, 85, 124, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, 292, 292, 292, 292, 292, 275, 73, 81, 79, 290, 81, 251, 74, 66, 235, 74, 74, 73, 77, 133, 266, 267, 285, 134, 76, 120, 244, 74, 74, 74, 275, 280, 286, 291, 288, 291, 262, 291, 165, 78, 83, 77, 151, 80, 174, 78, 74, 74, 73, 152, 189, 172, 172, 74, 79, 124, 178, 124, 169, 76, 190, 134, 78, 66, 85, 201, 206, 194, 199, 202, 203, 206, 250, 89, 81, 291, 231, 81, 235, 31, 233, 291, 216, 261, 291, 75, 207, 266, 134, 216, 76, 75, 223, 216, 216, 89, 89, 89, 32, 166, 207, 291, 78, 152, 168, 74, 261, 153, 74, 74, 58, 176, 177, 173, 251, 164, 168, 168, 134, 78, 202, 250, 79, 105, 85, 291, 74, 229, 231, 291, 216, 17, 74, 76, 207, 208, 209, 291, 244, 9, 14, 224, 225, 226, 291, 291, 291, 32, 153, 210, 74, 268, 268, 178, 75, 268, 81, 73, 73, 134, 85, 203, 206, 199, 204, 205, 206, 81, 74, 216, 153, 76, 79, 291, 296, 89, 76, 212, 225, 153, 176, 176, 49, 56, 181, 182, 183, 211, 257, 258, 172, 172, 204, 79, 106, 216, 76, 209, 89, 224, 38, 170, 171, 170, 73, 73, 211, 76, 49, 73, 74, 74, 205, 206, 73, 81, 179, 210, 170, 179, 261, 261, 76, 73, 261, 268, 268, 251, 74, 74, 261, 74, 176, 176, 79, 81, 81, 74, 81, 81, 81, 251, 81, 74 }; /* Prevent warning if -Wmissing-prototypes. */ int yyparse (void); /* Error token number */ #define YYTERROR 1 /* YYLLOC_DEFAULT -- Compute the default location (before the actions are run). */ #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(yyCurrent, yyRhs, YYN) ((void) 0) #endif /* YYLEX -- calling `yylex' with the right arguments. */ #define YYLEX yylex () YYSTYPE yylval; YYLTYPE yylloc; int yynerrs; int yychar; static const int YYEOF = 0; static const int YYEMPTY = -2; typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG; #define YYCHK(YYE) \ do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; } \ while (0) #if YYDEBUG #if ! defined (YYFPRINTF) # define YYFPRINTF fprintf #endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ static void yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep) { /* Pacify ``unused variable'' warnings. */ (void) yyvaluep; if (yytype < YYNTOKENS) { YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); # ifdef YYPRINT YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif } else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); switch (yytype) { default: break; } YYFPRINTF (yyoutput, ")"); } # define YYDSYMPRINT(Args) \ do { \ if (yydebug) \ yysymprint Args; \ } while (0) # define YYDSYMPRINTF(Title, Token, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yysymprint (stderr, \ Token, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ /* Avoid empty `if' bodies. */ # define YYDPRINTF(Args) # define YYDSYMPRINT(Args) # define YYDSYMPRINTF(Title, Token, Value, Location) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) evaluated with infinite-precision integer arithmetic. */ #if YYMAXDEPTH == 0 # undef YYMAXDEPTH #endif #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif /* Minimum number of free items on the stack allowed after an allocation. This is to allow allocation and initialization to be completed by functions that call expandGLRStack before the stack is expanded, thus insuring that all necessary pointers get properly redirected to new data. */ #define YYHEADROOM 2 #if (! defined (YYSTACKEXPANDABLE) \ && (! defined (__cplusplus) \ || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))) #define YYSTACKEXPANDABLE 1 #else #define YYSTACKEXPANDABLE 0 #endif /** State numbers, as in LALR(1) machine */ typedef int yyStateNum; /** Rule numbers, as in LALR(1) machine */ typedef int yyRuleNum; /** Grammar symbol */ typedef short yySymbol; /** Item references, as in LALR(1) machine */ typedef short yyItemNum; typedef struct yyGLRState yyGLRState; typedef struct yySemanticOption yySemanticOption; typedef union yyGLRStackItem yyGLRStackItem; typedef struct yyGLRStack yyGLRStack; typedef struct yyGLRStateSet yyGLRStateSet; struct yyGLRState { yybool yyisState; yybool yyresolved; yyStateNum yylrState; yyGLRState* yypred; size_t yyposn; union { yySemanticOption* yyfirstVal; YYSTYPE yysval; } yysemantics; YYLTYPE yyloc; }; struct yyGLRStateSet { yyGLRState** yystates; size_t yysize, yycapacity; }; struct yySemanticOption { yybool yyisState; yyRuleNum yyrule; yyGLRState* yystate; yySemanticOption* yynext; }; union yyGLRStackItem { yyGLRState yystate; yySemanticOption yyoption; }; struct yyGLRStack { int yyerrflag; int yyerrState; yySymbol* yytokenp; jmp_buf yyexception_buffer; yyGLRStackItem* yyitems; yyGLRStackItem* yynextFree; int yyspaceLeft; yyGLRState* yysplitPoint; yyGLRState* yylastDeleted; yyGLRStateSet yytops; }; static void yyinitGLRStack (yyGLRStack* yystack, size_t yysize); static void yyexpandGLRStack (yyGLRStack* yystack); static void yyfreeGLRStack (yyGLRStack* yystack); static void yyFail (yyGLRStack* yystack, const char* yyformat, ...) { yystack->yyerrflag = 1; if (yyformat != NULL) { char yymsg[256]; va_list yyap; va_start (yyap, yyformat); vsprintf (yymsg, yyformat, yyap); yyerror (yymsg); } longjmp (yystack->yyexception_buffer, 1); } #if YYDEBUG || YYERROR_VERBOSE /** A printable representation of TOKEN. Valid until next call to * tokenName. */ static inline const char* yytokenName (yySymbol yytoken) { if (yytoken == YYEMPTY) return ""; return yytname[yytoken]; } #endif /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred * containing the pointer to the next state in the chain. Assumes * YYLOW1 < YYLOW0. */ static void yyfillin (yyGLRStackItem *, int, int) ATTRIBUTE_UNUSED; static void yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1) { yyGLRState* s; int i; s = yyvsp[yylow0].yystate.yypred; for (i = yylow0-1; i >= yylow1; i -= 1) { YYASSERT (s->yyresolved); yyvsp[i].yystate.yyresolved = yytrue; yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval; yyvsp[i].yystate.yyloc = s->yyloc; s = yyvsp[i].yystate.yypred = s->yypred; } } /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1. For convenience, always return YYLOW1. */ static inline int yyfill (yyGLRStackItem *, int *, int, yybool) ATTRIBUTE_UNUSED; static inline int yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal) { if (!yynormal && yylow1 < *yylow) { yyfillin (yyvsp, *yylow, yylow1); *yylow = yylow1; } return yylow1; } /** Perform user action for rule number YYN, with RHS length YYRHSLEN, * and top stack item YYVSP. YYLVALP points to place to put semantic * value ($$), and yylocp points to place for location information * (@$). Returns yyok for normal return, yyaccept for YYACCEPT, * yyerr for YYERROR, yyabort for YYABORT. */ static YYRESULTTAG yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp, YYSTYPE* yyvalp, YYLTYPE* yylocp, yyGLRStack* yystack ) { yybool yynormal ATTRIBUTE_UNUSED = (yystack->yysplitPoint == NULL); int yylow; # undef yyerrok # define yyerrok (yystack->yyerrState = 0) # undef YYACCEPT # define YYACCEPT return yyaccept # undef YYABORT # define YYABORT return yyabort # undef YYERROR # define YYERROR return yyerrok, yyerr # undef YYRECOVERING # define YYRECOVERING (yystack->yyerrState != 0) # undef yyclearin # define yyclearin (yychar = *(yystack->yytokenp) = YYEMPTY) # undef YYFILL # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal) # undef YYBACKUP # define YYBACKUP(Token, Value) \ return yyerror ("syntax error: cannot back up"), \ yyerrok, yyerr yylow = 1; if (yyrhslen == 0) { *yyvalp = yyval_default; *yylocp = yyloc_default; } else { *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval; YYLLOC_DEFAULT (*yylocp, yyvsp - yyrhslen, yyrhslen); } switch (yyn) { case 2: #line 325 "parser.yy" { compileAST (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.CompileUnit); } break; case 3: #line 332 "parser.yy" { (*yyvalp).Tree = new PrimitiveLitNode (intLiteral(*((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.val), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.posn); } break; case 4: #line 334 "parser.yy" { (*yyvalp).Tree = new PrimitiveLitNode (longLiteral(*((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.val), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.posn); } break; case 5: #line 336 "parser.yy" { (*yyvalp).Tree = new PrimitiveLitNode (floatLiteral(*((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.val), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.posn); } break; case 6: #line 338 "parser.yy" { (*yyvalp).Tree = new PrimitiveLitNode (doubleLiteral(*((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.val), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.posn); } break; case 7: #line 340 "parser.yy" { (*yyvalp).Tree = new PrimitiveLitNode (Literal(true), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 8: #line 342 "parser.yy" { (*yyvalp).Tree = new PrimitiveLitNode (Literal(false), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 9: #line 344 "parser.yy" { (*yyvalp).Tree = new PrimitiveLitNode (Literal(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.CharTerminal.val), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.CharTerminal.posn); } break; case 10: #line 346 "parser.yy" { (*yyvalp).Tree = new StringLitNode (*((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.StrTerminal.val, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.StrTerminal.posn); } break; case 11: #line 353 "parser.yy" { (*yyvalp).Type = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree->asType(); } break; case 14: #line 362 "parser.yy" { (*yyvalp).Type = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type; ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type->modifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); } break; case 15: #line 364 "parser.yy" { ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type->modifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers); (*yyvalp).Type = arraySpecifiers2Type(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type); } break; case 16: #line 366 "parser.yy" { (*yyvalp).Type = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type; ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type->modifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); } break; case 17: #line 368 "parser.yy" { ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type->modifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers); (*yyvalp).Type = arraySpecifiers2Type(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type); } break; case 18: #line 373 "parser.yy" { (*yyvalp).Type = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type; (*yyvalp).Type->modifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); } break; case 22: #line 384 "parser.yy" { (*yyvalp).Type = new TypeNameNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 23: #line 386 "parser.yy" { (*yyvalp).Type = new TypeNameNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 24: #line 391 "parser.yy" { (*yyvalp).Type = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type; } break; case 25: #line 396 "parser.yy" { (*yyvalp).Tree = buildTemplateQualifiedName(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 26: #line 400 "parser.yy" { (*yyvalp).TreeList = cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 27: #line 401 "parser.yy" { (*yyvalp).TreeList = cons(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 28: #line 405 "parser.yy" { (*yyvalp).Tree = new EmptyArrayNode(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 29: #line 407 "parser.yy" { (*yyvalp).Tree = new ExpressionArrayNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); } break; case 30: #line 409 "parser.yy" { if (*((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Terminal.val != "d") { Error(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Terminal.posn) << "Unexpected identifier '" << *((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Terminal.val << "'" << endl; (*yyvalp).Tree = new ExpressionArrayNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); } else (*yyvalp).Tree = new TitaniumArrayNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); } break; case 31: #line 421 "parser.yy" { (*yyvalp).Modifiers = (Common::Modifiers)0; } break; case 32: #line 423 "parser.yy" { (*yyvalp).Modifiers = (Common::Modifiers) (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers | ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); if ((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers & ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers) != 0) Error (lexerPosition()) << "repeated modifier" << endl; } break; case 33: #line 431 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Single; } break; case 34: #line 432 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Local; } break; case 35: #line 433 "parser.yy" { (*yyvalp).Modifiers = TreeNode::NonsharedQ; } break; case 36: #line 434 "parser.yy" { (*yyvalp).Modifiers = TreeNode::PolysharedQ; } break; case 37: #line 439 "parser.yy" { (*yyvalp).Type = new BoolTypeNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 38: #line 441 "parser.yy" { (*yyvalp).Type = new CharTypeNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 39: #line 443 "parser.yy" { (*yyvalp).Type = new ByteTypeNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 40: #line 445 "parser.yy" { (*yyvalp).Type = new ShortTypeNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 41: #line 447 "parser.yy" { (*yyvalp).Type = new IntTypeNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 42: #line 449 "parser.yy" { (*yyvalp).Type = new FloatTypeNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 43: #line 451 "parser.yy" { (*yyvalp).Type = new LongTypeNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 44: #line 453 "parser.yy" { (*yyvalp).Type = new DoubleTypeNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 45: #line 462 "parser.yy" { llist *types = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList; SourcePosn pos = lexerPosition(); pos.posn = 0; (*yyvalp).CompileUnit = new CompileUnitNode (NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, new TreeListNode (types), NULL, pos); } break; case 46: #line 473 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 47: #line 475 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 48: #line 480 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 49: #line 482 "parser.yy" { (*yyvalp).TreeList = extend (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree)); } break; case 50: #line 488 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 51: #line 490 "parser.yy" { if (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree->absent()) (*yyvalp).TreeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList; else (*yyvalp).TreeList = cons (static_cast(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 52: #line 497 "parser.yy" { (*yyvalp).TreeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList; } break; case 53: #line 502 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TypeDecl; } break; case 54: #line 504 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 55: #line 509 "parser.yy" { (*yyvalp).TypeDecl = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TypeDecl; } break; case 56: #line 511 "parser.yy" { (*yyvalp).TypeDecl = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TypeDecl; } break; case 60: #line 525 "parser.yy" { (*yyvalp).Tree = new ImportNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree); } break; case 61: #line 534 "parser.yy" { (*yyvalp).Tree = new ImportOnDemandNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree); } break; case 62: #line 539 "parser.yy" { Error (lexerPosition()) << "typedefs unimplemented, use macro instead" << endl; (*yyvalp).Tree = new ImportNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree); } break; case 63: #line 551 "parser.yy" { (*yyvalp).TypeDecl = new ClassDeclNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TypeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, NULL, TreeNode::omitted, (NameNode *) ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, false, TreeNode::omitted, NULL, 0, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 65: #line 560 "parser.yy" { (*yyvalp).Modifiers = (Common::Modifiers) 0; } break; case 67: #line 566 "parser.yy" { (*yyvalp).Modifiers = (Common::Modifiers) (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers | ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); if ((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers & ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers) != 0) Error (lexerPosition()) << "repeated modifier" << endl; } break; case 68: #line 575 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Abstract; } break; case 69: #line 577 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Final; } break; case 70: #line 579 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Public; } break; case 71: #line 581 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Immutable; } break; case 72: #line 583 "parser.yy" { Warning (lexerPosition(),"strictfp") << "strictfp modifier is currently ignored." << endl; (*yyvalp).Modifiers = TreeNode::Strictfp; } break; case 73: #line 592 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Type; } break; case 74: #line 594 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 75: #line 602 "parser.yy" { (*yyvalp).TypeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TypeList; } break; case 76: #line 604 "parser.yy" { (*yyvalp).TypeList = NULL; } break; case 77: #line 613 "parser.yy" { (*yyvalp).TreeList = cons (TreeNode::omitted, cons (TreeNode::omitted, cons(TreeNode::omitted, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList))); } break; case 79: #line 619 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 81: #line 625 "parser.yy" { (*yyvalp).TreeList = extend (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 83: #line 634 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 84: #line 636 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 85: #line 638 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 86: #line 640 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 87: #line 642 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 88: #line 644 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 89: #line 652 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 90: #line 654 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 91: #line 659 "parser.yy" { checkNestedTypeModifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); (*yyvalp).Tree = static_cast(new ClassDeclNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TypeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, NULL, TreeNode::omitted, (NameNode *) ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, false, TreeNode::omitted, NULL, 0, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn)); } break; case 92: #line 666 "parser.yy" { checkNestedTypeModifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.SimpTerminal.posn); (*yyvalp).Tree = static_cast(new InterfaceDeclNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TypeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, NULL, (NameNode *) ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, false, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.SimpTerminal.posn)); } break; case 93: #line 675 "parser.yy" { checkFieldModifiers (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type->position()); (*yyvalp).TreeList = NULL; foreach (decl, llist, *((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.DeclaratorList) { (*yyvalp).TreeList = cons (static_cast(new FieldDeclNode(makeArrayType(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type, (*decl).dims), (*decl).name, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Modifiers, (*decl).initExpr)), (*yyvalp).TreeList); } free_all (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.DeclaratorList); } break; case 95: #line 699 "parser.yy" { (*yyvalp).Modifiers = (Common::Modifiers) 0; } break; case 97: #line 705 "parser.yy" { (*yyvalp).Modifiers = (Common::Modifiers) (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers | ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); if ((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers & ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers) != 0) Error (lexerPosition()) << "repeated modifier" << endl; } break; case 98: #line 714 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Public; } break; case 99: #line 716 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Protected; } break; case 100: #line 718 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Private; } break; case 101: #line 721 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Static; } break; case 102: #line 723 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Final; } break; case 103: #line 725 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Sglobal; } break; case 104: #line 727 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Sglobal; } break; case 105: #line 730 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Abstract; } break; case 106: #line 732 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Native; } break; case 107: #line 734 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Synchronized; } break; case 108: #line 737 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Transient; } break; case 109: #line 739 "parser.yy" { Warning (lexerPosition(),"strictfp") << "strictfp modifier is currently ignored." << endl; (*yyvalp).Modifiers = TreeNode::Strictfp; } break; case 110: #line 742 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Volatile; } break; case 111: #line 744 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Local; } break; case 112: #line 746 "parser.yy" { (*yyvalp).Modifiers = TreeNode::NonsharedQ; } break; case 113: #line 748 "parser.yy" { (*yyvalp).Modifiers = TreeNode::PolysharedQ; } break; case 114: #line 750 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Inline; } break; case 115: #line 753 "parser.yy" { (*yyvalp).Modifiers = TreeNode::Immutable; } break; case 117: #line 763 "parser.yy" { (*yyvalp).DeclaratorList = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.DeclaratorList; ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.DeclaratorList->tail() = ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.DeclaratorList; } break; case 118: #line 768 "parser.yy" { (*yyvalp).DeclaratorList = cons(DeclaratorTuple(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Int, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, TreeNode::omitted)); } break; case 119: #line 770 "parser.yy" { (*yyvalp).DeclaratorList = cons(DeclaratorTuple(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Int, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree)); } break; case 122: #line 786 "parser.yy" { checkMethodModifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Tree->position()); TreeNode *body = addSynchronized(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); (*yyvalp).Tree = new MethodDeclNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.TreeList, makeArrayType(((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Int), makeArrayType(((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Int), ((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TypeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, body); } break; case 123: #line 792 "parser.yy" { checkMethodModifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Tree->position()); TreeNode *body = addSynchronized(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); (*yyvalp).Tree = new MethodDeclNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.TreeList, makeArrayType(((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Int), makeArrayType(((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Int), ((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TypeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, body); if (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Int) Error(((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Tree->position()) << "cannot return array of void" << endl; } break; case 126: #line 806 "parser.yy" { (*yyvalp).Type = new VoidTypeNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 127: #line 810 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 128: #line 811 "parser.yy" { (*yyvalp).TreeList = cons(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 129: #line 816 "parser.yy" { (*yyvalp).Tree = new OverlapNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 131: #line 827 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 132: #line 832 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 133: #line 834 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 134: #line 839 "parser.yy" { (*yyvalp).Tree = new ParameterNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Bool, makeArrayType (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Int), ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree); } break; case 135: #line 843 "parser.yy" { (*yyvalp).Bool = true; } break; case 136: #line 844 "parser.yy" { (*yyvalp).Bool = false; } break; case 138: #line 853 "parser.yy" { (*yyvalp).TypeList = NULL; } break; case 139: #line 858 "parser.yy" { (*yyvalp).TypeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TypeList; } break; case 140: #line 863 "parser.yy" { (*yyvalp).TypeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Type); } break; case 141: #line 865 "parser.yy" { (*yyvalp).TypeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TypeList); } break; case 143: #line 874 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 144: #line 883 "parser.yy" { checkConstructorModifiers (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Tree->position()); (*yyvalp).Tree = new ConstructorDeclNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.TypeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, new BlockNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn), TreeNode::omitted); } break; case 145: #line 890 "parser.yy" { checkConstructorModifiers (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Tree->position ()); (*yyvalp).Tree = new ConstructorDeclNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.TypeList, new SuperConstructorCallNode (Common::CompilerGenerated, TreeNode::omitted, NULL, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Tree->position()), new BlockNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn), TreeNode::omitted); } break; case 148: #line 910 "parser.yy" { (*yyvalp).Tree = new ThisConstructorCallNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, NULL, false, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 149: #line 915 "parser.yy" { (*yyvalp).Tree = new SuperConstructorCallNode (Common::None, TreeNode::omitted, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 150: #line 917 "parser.yy" { (*yyvalp).Tree = new SuperConstructorCallNode (Common::None, new ObjectNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Tree->position()), ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 151: #line 919 "parser.yy" { (*yyvalp).Tree = new SuperConstructorCallNode (Common::None, ((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 152: #line 927 "parser.yy" { (*yyvalp).Tree = new StaticInitNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 153: #line 932 "parser.yy" { (*yyvalp).Tree = new InstanceInitNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 154: #line 941 "parser.yy" { checkInterfaceModifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.SimpTerminal.posn); (*yyvalp).TypeDecl = new InterfaceDeclNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TypeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, NULL, (NameNode *) ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, false); } break; case 156: #line 951 "parser.yy" { (*yyvalp).TypeList = NULL; } break; case 157: #line 956 "parser.yy" { (*yyvalp).TypeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TypeList; } break; case 158: #line 963 "parser.yy" { (*yyvalp).TreeList = cons(TreeNode::omitted, cons(TreeNode::omitted, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList)); } break; case 159: #line 968 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 160: #line 970 "parser.yy" { (*yyvalp).TreeList = extend (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 162: #line 976 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 163: #line 978 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 164: #line 980 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 165: #line 985 "parser.yy" { checkConstantFieldModifiers (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type->position()); (*yyvalp).TreeList = NULL; foreach (decl, llist, *((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.DeclaratorList) { (*yyvalp).TreeList = cons (static_cast(new FieldDeclNode (makeArrayType (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type, (*decl).dims), (*decl).name, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Modifiers, (*decl).initExpr)), (*yyvalp).TreeList); } free_all (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.DeclaratorList); } break; case 166: #line 1002 "parser.yy" { checkMethodSignatureModifiers (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Type->position()); (*yyvalp).Tree = new MethodSignatureNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.TreeList, makeArrayType (((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Int), makeArrayType (((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Int), ((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TypeList); } break; case 167: #line 1009 "parser.yy" { checkMethodSignatureModifiers (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Type->position()); (*yyvalp).Tree = new MethodSignatureNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.TreeList, makeArrayType (((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Int), makeArrayType (((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Int), ((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TypeList); } break; case 170: #line 1026 "parser.yy" { (*yyvalp).Tree = new TemplateDeclNode( ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TypeDecl, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, 0 ); } break; case 171: #line 1031 "parser.yy" { (*yyvalp).TreeList = cons( ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree ); } break; case 172: #line 1033 "parser.yy" { (*yyvalp).TreeList = cons( ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList ); } break; case 173: #line 1038 "parser.yy" { (*yyvalp).Tree = new TemplateTypeParamNode( ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree ); } break; case 174: #line 1040 "parser.yy" { (*yyvalp).Tree = new TemplateConstParamNode( ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree ); } break; case 175: #line 1045 "parser.yy" { (*yyvalp).Type = buildTemplateInstanceType(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 176: #line 1048 "parser.yy" { (*yyvalp).Type = buildTemplateInstanceType(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 177: #line 1053 "parser.yy" { (*yyvalp).TreeList = cons( ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree ); } break; case 178: #line 1055 "parser.yy" { (*yyvalp).TreeList = extend( ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree) ); } break; case 179: #line 1060 "parser.yy" { (*yyvalp).TreeList = cons( ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree ); } break; case 180: #line 1062 "parser.yy" { (*yyvalp).TreeList = extend( ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree) ); } break; case 181: #line 1067 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 182: #line 1069 "parser.yy" { (*yyvalp).Tree = buildTemplateInstanceType(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 183: #line 1072 "parser.yy" { (*yyvalp).Tree = buildTemplateInstanceType(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 184: #line 1077 "parser.yy" { (*yyvalp).TreeList = cons( ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree ); } break; case 185: #line 1079 "parser.yy" { (*yyvalp).TreeList = extend( ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree) ); } break; case 186: #line 1084 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 187: #line 1086 "parser.yy" { (*yyvalp).Tree = buildTemplateInstanceType(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 188: #line 1089 "parser.yy" { (*yyvalp).Tree = buildTemplateInstanceType(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 189: #line 1094 "parser.yy" { (*yyvalp).TreeList = cons( ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree ); } break; case 190: #line 1096 "parser.yy" { (*yyvalp).TreeList = extend( ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree) ); } break; case 191: #line 1101 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 192: #line 1106 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Type; } break; case 193: #line 1108 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 194: #line 1110 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 195: #line 1119 "parser.yy" { (*yyvalp).Tree = new ArrayInitNode (dreverse (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList), ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 196: #line 1121 "parser.yy" { (*yyvalp).Tree = new ArrayInitNode (dreverse (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList), ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 197: #line 1123 "parser.yy" { (*yyvalp).Tree = new ArrayInitNode (NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 198: #line 1130 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 199: #line 1132 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList); } break; case 202: #line 1147 "parser.yy" { (*yyvalp).Tree = new BlockNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 204: #line 1153 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 205: #line 1158 "parser.yy" { (*yyvalp).TreeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList; } break; case 206: #line 1160 "parser.yy" { (*yyvalp).TreeList = extend (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 207: #line 1165 "parser.yy" { (*yyvalp).TreeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList; } break; case 208: #line 1167 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 209: #line 1169 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 210: #line 1177 "parser.yy" { checkLocalTypeModifiers(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); (*yyvalp).Tree = new ClassDeclNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TypeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, NULL, TreeNode::omitted, (NameNode *) ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, false, TreeNode::omitted, NULL, 0, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 211: #line 1187 "parser.yy" { (*yyvalp).TreeList = makeVarDeclNodes(true, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.DeclaratorList); } break; case 212: #line 1189 "parser.yy" { (*yyvalp).TreeList = makeVarDeclNodes(false, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.DeclaratorList); } break; case 223: #line 1211 "parser.yy" { (*yyvalp).Tree = new EmptyStmtNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 224: #line 1217 "parser.yy" { /* Java spec says a missing Expr2 produces an empty message, but that sucks - so add a default message that's actually useful */ string msg = string(" at ") + ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn.asString() + ": " + pseudocode(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree); (*yyvalp).Tree = new AssertNode ( ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, new StringLitNode ( string16( convertString((char*)msg.c_str(), msg.length(), ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn) ), ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn) ); } break; case 225: #line 1226 "parser.yy" { (*yyvalp).Tree = new AssertNode ( ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree ); } break; case 226: #line 1233 "parser.yy" { (*yyvalp).Tree = new LabeledStmtNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 227: #line 1241 "parser.yy" { (*yyvalp).Tree = new ExpressionStmtNode( ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree ); } break; case 228: #line 1246 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 229: #line 1248 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 230: #line 1250 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 231: #line 1252 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 232: #line 1254 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 233: #line 1256 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 234: #line 1258 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 235: #line 1266 "parser.yy" { (*yyvalp).Tree = new IfStmtNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, TreeNode::omitted); } break; case 236: #line 1268 "parser.yy" { (*yyvalp).Tree = new IfStmtNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 237: #line 1270 "parser.yy" { (*yyvalp).Tree = new SwitchNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 238: #line 1275 "parser.yy" { (*yyvalp).TreeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList; } break; case 239: #line 1279 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 240: #line 1281 "parser.yy" { (*yyvalp).TreeList = cons (static_cast(new SwitchBranchNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList)), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 241: #line 1283 "parser.yy" { (*yyvalp).TreeList = cons (static_cast(new SwitchBranchNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, cons (static_cast(new EmptyStmtNode ()))))); } break; case 242: #line 1288 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 243: #line 1290 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 244: #line 1295 "parser.yy" { (*yyvalp).Tree = new CaseNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 245: #line 1297 "parser.yy" { (*yyvalp).Tree = new CaseNode (TreeNode::omitted, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 246: #line 1305 "parser.yy" { (*yyvalp).Tree = new WhileNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 247: #line 1307 "parser.yy" { (*yyvalp).Tree = new DoNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree); } break; case 248: #line 1309 "parser.yy" { (*yyvalp).Tree = new ForNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 250: #line 1315 "parser.yy" { (*yyvalp).TreeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList; } break; case 251: #line 1317 "parser.yy" { (*yyvalp).TreeList = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList; } break; case 253: #line 1323 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 255: #line 1329 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 256: #line 1334 "parser.yy" { (*yyvalp).TreeList = cons (static_cast(new ExpressionStmtNode(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree))); } break; case 257: #line 1336 "parser.yy" { (*yyvalp).TreeList = cons (static_cast(new ExpressionStmtNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree)), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 258: #line 1343 "parser.yy" { (*yyvalp).Tree = new ForEachStmtNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Bool, ((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 259: #line 1347 "parser.yy" { (*yyvalp).Bool = true; } break; case 260: #line 1348 "parser.yy" { (*yyvalp).Bool = false; } break; case 261: #line 1353 "parser.yy" { (*yyvalp).TreeList = cons(static_cast(new ForEachPairNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, TreeNode::omitted, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree->position()))); } break; case 262: #line 1355 "parser.yy" { TreeNode *pttype = ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Type; if (!((TypeNode*)pttype)->isPointType()) { Error(pttype->position()) << "optional point type declaration in a foreach must be Point" << endl; pttype = TreeNode::omitted; } (*yyvalp).TreeList = cons(static_cast(new ForEachPairNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, pttype, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Type->position()))); } break; case 263: #line 1370 "parser.yy" { if (*((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.val == "within") Warning(lexerPosition(),"deprecated-foreach-within") << "deprecated use of 'within' in foreach - expected 'in'" << endl; else if (*((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.val != "in") Error(lexerPosition()) << "bad keyword in foreach - expected 'in'" << endl; } break; case 264: #line 1381 "parser.yy" { (*yyvalp).Tree = new BreakNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, NULL, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 265: #line 1383 "parser.yy" { (*yyvalp).Tree = new ContinueNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, NULL, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 266: #line 1385 "parser.yy" { (*yyvalp).Tree = new ReturnNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 267: #line 1387 "parser.yy" { (*yyvalp).Tree = new ThrowNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 269: #line 1394 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 270: #line 1402 "parser.yy" { (*yyvalp).Tree = new SynchronizedNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 271: #line 1405 "parser.yy" { (*yyvalp).Tree = new TryStmtNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Try, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 272: #line 1407 "parser.yy" { (*yyvalp).Tree = new TryStmtNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Try, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.CatchList, TreeNode::omitted); } break; case 273: #line 1409 "parser.yy" { (*yyvalp).Tree = new TryStmtNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Try, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.CatchList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 274: #line 1414 "parser.yy" { (*yyvalp).Try = new TryNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 275: #line 1419 "parser.yy" { (*yyvalp).CatchList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Catch); } break; case 276: #line 1421 "parser.yy" { (*yyvalp).CatchList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Catch, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.CatchList); } break; case 277: #line 1426 "parser.yy" { (*yyvalp).Catch = new CatchNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 278: #line 1431 "parser.yy" { (*yyvalp).Tree = new FinallyNode( ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree ); } break; case 279: #line 1438 "parser.yy" { (*yyvalp).Tree = new PartitionStmtNode(TreeNode::omitted, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 280: #line 1440 "parser.yy" { (*yyvalp).Tree = new PartitionStmtNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 281: #line 1444 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 282: #line 1446 "parser.yy" { (*yyvalp).TreeList = cons(static_cast(new PartitionClauseNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree)), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 283: #line 1458 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree->asExpr(); } break; case 288: #line 1470 "parser.yy" { (*yyvalp).Tree = new NullPntrNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 289: #line 1472 "parser.yy" { (*yyvalp).Tree = new ThisNode (TreeNode::omitted, NULL, Common::None, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 290: #line 1474 "parser.yy" { (*yyvalp).Tree = new ThisNode (new TypeNameNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree), NULL, Common::None, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 291: #line 1476 "parser.yy" { (*yyvalp).Tree = new ThisNode (new TypeNameNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree), NULL, Common::None, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 292: #line 1478 "parser.yy" { (*yyvalp).Tree = new ThisNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type, NULL, Common::None, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 293: #line 1480 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 294: #line 1482 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree->asExpr(); } break; case 296: #line 1485 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 298: #line 1488 "parser.yy" { string s = "java.lang."; switch (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type->signature()[0]) { case 'Z': s += "Boolean"; break; case 'C': s += "Character"; break; case 'B': s += "Byte"; break; case 'S': s += "Short"; break; case 'I': s += "Integer"; break; case 'J': s += "Long"; break; case 'F': s += "Float"; break; case 'D': s += "Double"; break; default: abort(); } (*yyvalp).Tree = new TypeFieldAccessNode ( new TypeNameNode(buildName(s.c_str(), ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn)), buildName("TYPE", ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn), ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 299: #line 1506 "parser.yy" { (*yyvalp).Tree = new TypeFieldAccessNode ( new TypeNameNode(buildName("java.lang.Void", ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn)), buildName("TYPE", ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn), ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 300: #line 1519 "parser.yy" { (*yyvalp).Tree = new ArrayNameNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers, NULL); } break; case 301: #line 1520 "parser.yy" { (*yyvalp).Tree = new ArrayNameNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers, NULL); } break; case 303: #line 1525 "parser.yy" { (*yyvalp).Tree = new ArrayNameNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 304: #line 1526 "parser.yy" { (*yyvalp).Tree = new ArrayNameNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Modifiers, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 307: #line 1536 "parser.yy" { (*yyvalp).Tree = new NameNode (TreeNode::omitted, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.val, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.posn); } break; case 308: #line 1543 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 309: #line 1548 "parser.yy" { (*yyvalp).Tree = new NameNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.val, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.posn); } break; case 310: #line 1551 "parser.yy" { (*yyvalp).Tree = new NameNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, intern("class"), NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 311: #line 1553 "parser.yy" { (*yyvalp).Tree = new NameNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree->ident(), NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree->position()); } break; case 312: #line 1557 "parser.yy" { (*yyvalp).Tree = newOperator("!", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 313: #line 1558 "parser.yy" { (*yyvalp).Tree = newOperator("~", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 314: #line 1559 "parser.yy" { (*yyvalp).Tree = newOperator("<", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 315: #line 1560 "parser.yy" { (*yyvalp).Tree = newOperator(">", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 316: #line 1561 "parser.yy" { (*yyvalp).Tree = newOperator("<=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 317: #line 1562 "parser.yy" { (*yyvalp).Tree = newOperator(">=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 318: #line 1563 "parser.yy" { (*yyvalp).Tree = newOperator("==", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 319: #line 1564 "parser.yy" { (*yyvalp).Tree = newOperator("!=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 320: #line 1565 "parser.yy" { (*yyvalp).Tree = newOperator("+", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 321: #line 1566 "parser.yy" { (*yyvalp).Tree = newOperator("-", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 322: #line 1567 "parser.yy" { (*yyvalp).Tree = newOperator("*", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 323: #line 1568 "parser.yy" { (*yyvalp).Tree = newOperator("/", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 324: #line 1569 "parser.yy" { (*yyvalp).Tree = newOperator("&", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 325: #line 1570 "parser.yy" { (*yyvalp).Tree = newOperator("|", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 326: #line 1571 "parser.yy" { (*yyvalp).Tree = newOperator("^", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 327: #line 1572 "parser.yy" { (*yyvalp).Tree = newOperator("%", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 328: #line 1573 "parser.yy" { (*yyvalp).Tree = newOperator("<<", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 329: #line 1574 "parser.yy" { (*yyvalp).Tree = newOperator(">>", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 330: #line 1575 "parser.yy" { (*yyvalp).Tree = newOperator(">>>", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 331: #line 1576 "parser.yy" { (*yyvalp).Tree = newOperator("+=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 332: #line 1577 "parser.yy" { (*yyvalp).Tree = newOperator("-=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 333: #line 1578 "parser.yy" { (*yyvalp).Tree = newOperator("*=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 334: #line 1579 "parser.yy" { (*yyvalp).Tree = newOperator("/=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 335: #line 1580 "parser.yy" { (*yyvalp).Tree = newOperator("%=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 336: #line 1581 "parser.yy" { (*yyvalp).Tree = newOperator("<<=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 337: #line 1582 "parser.yy" { (*yyvalp).Tree = newOperator(">>=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 338: #line 1583 "parser.yy" { (*yyvalp).Tree = newOperator(">>>=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 339: #line 1584 "parser.yy" { (*yyvalp).Tree = newOperator("&=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 340: #line 1585 "parser.yy" { (*yyvalp).Tree = newOperator("^=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 341: #line 1586 "parser.yy" { (*yyvalp).Tree = newOperator("|=", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 342: #line 1587 "parser.yy" { (*yyvalp).Tree = newOperator("[]", ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 343: #line 1588 "parser.yy" { (*yyvalp).Tree = newOperator("[]=", ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 344: #line 1595 "parser.yy" { (*yyvalp).Tree = new ArrayAccessNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree); } break; case 345: #line 1599 "parser.yy" { (*yyvalp).Tree = new PointNode(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 346: #line 1609 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 347: #line 1614 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 348: #line 1616 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree; } break; case 349: #line 1622 "parser.yy" { (*yyvalp).Tree = new ObjectFieldAccessNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 350: #line 1624 "parser.yy" { (*yyvalp).Tree = new SuperFieldAccessNode (TreeNode::omitted, NULL, Common::None, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 351: #line 1626 "parser.yy" { (*yyvalp).Tree = new SuperFieldAccessNode (new TypeNameNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree), NULL, Common::None, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 352: #line 1628 "parser.yy" { (*yyvalp).Tree = new SuperFieldAccessNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Type, NULL, Common::None, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 353: #line 1630 "parser.yy" { (*yyvalp).Tree = new ObjectFieldAccessNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree->asExpr(), ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 354: #line 1633 "parser.yy" { (*yyvalp).Tree = new TypeFieldAccessNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type, buildName("class", ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.SimpTerminal.posn)); } break; case 355: #line 1635 "parser.yy" { (*yyvalp).Tree = new ThisFieldAccessNode (NULL, Common::None, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 356: #line 1643 "parser.yy" { (*yyvalp).Tree = new MethodCallNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList); } break; case 357: #line 1645 "parser.yy" { (*yyvalp).Tree = new MethodCallNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree->asExpr(), ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList); } break; case 359: #line 1651 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 360: #line 1656 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 361: #line 1658 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 362: #line 1666 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 363: #line 1668 "parser.yy" { (*yyvalp).Tree = new ObjectNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree->position()); } break; case 364: #line 1670 "parser.yy" { (*yyvalp).Tree = new ObjectNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree->position()); } break; case 365: #line 1675 "parser.yy" { (*yyvalp).Tree = new AllocateArrayNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList, TreeNode::omitted); } break; case 366: #line 1678 "parser.yy" { (*yyvalp).Tree = new AllocateArrayNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 367: #line 1680 "parser.yy" { (*yyvalp).Tree = new AllocateNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, NULL, TreeNode::omitted, TreeNode::omitted); } break; case 368: #line 1682 "parser.yy" { llist* body = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList; (*yyvalp).Tree = new AllocateNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, NULL, TreeNode::omitted, new TreeListNode(body, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Type->position())); } break; case 369: #line 1685 "parser.yy" { (*yyvalp).Tree = new AllocateNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Tree, TreeNode::omitted); } break; case 370: #line 1687 "parser.yy" { llist* body = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList; (*yyvalp).Tree = new AllocateNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Type, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.TreeList, NULL, ((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval.Tree, new TreeListNode(body, ((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Type->position())); } break; case 371: #line 1693 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree; } break; case 372: #line 1695 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 373: #line 1700 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 374: #line 1702 "parser.yy" { (*yyvalp).TreeList = cons (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 375: #line 1707 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 376: #line 1709 "parser.yy" { (*yyvalp).Tree = new AllocateArrayDimensionNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Modifiers); } break; case 378: #line 1715 "parser.yy" { (*yyvalp).Int = 0; } break; case 379: #line 1720 "parser.yy" { (*yyvalp).Int = 1; } break; case 380: #line 1722 "parser.yy" { (*yyvalp).Int = 1; } break; case 381: #line 1724 "parser.yy" { (*yyvalp).Int = ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Int + 1; } break; case 382: #line 1726 "parser.yy" { (*yyvalp).Int = ((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.Int + 1; } break; case 389: #line 1749 "parser.yy" { (*yyvalp).Tree = new PostIncrNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree); } break; case 390: #line 1754 "parser.yy" { (*yyvalp).Tree = new PostDecrNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.Tree); } break; case 397: #line 1774 "parser.yy" { (*yyvalp).Tree = new UnaryPlusNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 398: #line 1776 "parser.yy" { (*yyvalp).Tree = new UnaryMinusNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.SimpTerminal.posn); } break; case 402: #line 1784 "parser.yy" { (*yyvalp).Tree = new PreIncrNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 403: #line 1789 "parser.yy" { (*yyvalp).Tree = new PreDecrNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 408: #line 1804 "parser.yy" { (*yyvalp).Tree = new ComplementNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 409: #line 1806 "parser.yy" { (*yyvalp).Tree = new NotNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 411: #line 1812 "parser.yy" { (*yyvalp).Tree = new CastNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Type); } break; case 412: #line 1814 "parser.yy" { (*yyvalp).Tree = new CastNode (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree->asType()); } break; case 413: #line 1824 "parser.yy" { (*yyvalp).Tree = new PointNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList); } break; case 414: #line 1828 "parser.yy" { (*yyvalp).Tree = new DomainNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList); } break; case 415: #line 1829 "parser.yy" { (*yyvalp).Tree = new DomainNode(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.TreeList); } break; case 416: #line 1833 "parser.yy" { (*yyvalp).TreeList = cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 417: #line 1834 "parser.yy" { (*yyvalp).TreeList = cons(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 418: #line 1839 "parser.yy" { llist* children = cons(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree)); (*yyvalp).Tree = new TreeListNode(children); } break; case 419: #line 1844 "parser.yy" { (*yyvalp).TreeList = cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 420: #line 1845 "parser.yy" { (*yyvalp).TreeList = cons(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.TreeList); } break; case 421: #line 1850 "parser.yy" { llist* children = cons(((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Tree, cons(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, cons(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree))); (*yyvalp).Tree = new TreeListNode(children); } break; case 423: #line 1859 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 425: #line 1865 "parser.yy" { (*yyvalp).Tree = new LTNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 426: #line 1867 "parser.yy" { (*yyvalp).Tree = new GTNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 427: #line 1869 "parser.yy" { (*yyvalp).Tree = new LENode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 428: #line 1871 "parser.yy" { (*yyvalp).Tree = new GENode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 429: #line 1873 "parser.yy" { (*yyvalp).Tree = new InstanceOfNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Type); } break; case 430: #line 1875 "parser.yy" { (*yyvalp).Tree = new EQNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 431: #line 1877 "parser.yy" { (*yyvalp).Tree = new NENode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 432: #line 1879 "parser.yy" { (*yyvalp).Tree = new BitAndNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 433: #line 1881 "parser.yy" { (*yyvalp).Tree = new BitOrNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 434: #line 1883 "parser.yy" { (*yyvalp).Tree = new BitXorNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 435: #line 1885 "parser.yy" { (*yyvalp).Tree = new CandNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 436: #line 1887 "parser.yy" { (*yyvalp).Tree = new CorNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 437: #line 1889 "parser.yy" { (*yyvalp).Tree = new IfExprNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 438: #line 1891 "parser.yy" { (*yyvalp).Tree = new LeftShiftLogNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 439: #line 1893 "parser.yy" { (*yyvalp).Tree = new RightShiftLogNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 440: #line 1895 "parser.yy" { (*yyvalp).Tree = new RightShiftArithNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 446: #line 1911 "parser.yy" { (*yyvalp).Tree = new MultNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 447: #line 1913 "parser.yy" { (*yyvalp).Tree = new DivNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 448: #line 1915 "parser.yy" { (*yyvalp).Tree = new RemNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 449: #line 1917 "parser.yy" { (*yyvalp).Tree = new PlusNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 450: #line 1919 "parser.yy" { (*yyvalp).Tree = new MinusNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 451: #line 1927 "parser.yy" { (*yyvalp).Tree = new AssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 452: #line 1929 "parser.yy" { (*yyvalp).Tree = new MultAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 453: #line 1931 "parser.yy" { (*yyvalp).Tree = new DivAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 454: #line 1933 "parser.yy" { (*yyvalp).Tree = new RemAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 455: #line 1935 "parser.yy" { (*yyvalp).Tree = new PlusAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 456: #line 1937 "parser.yy" { (*yyvalp).Tree = new MinusAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 457: #line 1939 "parser.yy" { (*yyvalp).Tree = new LeftShiftLogAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 458: #line 1941 "parser.yy" { (*yyvalp).Tree = new RightShiftLogAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 459: #line 1943 "parser.yy" { (*yyvalp).Tree = new RightShiftArithAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 460: #line 1945 "parser.yy" { (*yyvalp).Tree = new BitAndAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 461: #line 1947 "parser.yy" { (*yyvalp).Tree = new BitXorAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 462: #line 1949 "parser.yy" { (*yyvalp).Tree = new BitOrAssignNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 464: #line 1961 "parser.yy" { (*yyvalp).Tree = new BroadcastNode (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.Tree, ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree); } break; case 465: #line 1966 "parser.yy" { if (*((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Terminal.val != "from") Error(lexerPosition()) << "bad keyword in broadcast - expected 'from'" << endl; } break; case 466: #line 1977 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 467: #line 1982 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 468: #line 1987 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 469: #line 1992 "parser.yy" { (*yyvalp).TreeList = cons ( TreeNode::omitted ); } break; case 470: #line 1997 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; case 471: #line 2002 "parser.yy" { (*yyvalp).Tree = new EmptyStmtNode; } break; case 472: #line 2004 "parser.yy" { (*yyvalp).Tree = ((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.Tree; } break; case 473: #line 2009 "parser.yy" { (*yyvalp).TreeList = NULL; } break; case 474: #line 2014 "parser.yy" { (*yyvalp).Tree = TreeNode::omitted; } break; } return yyok; # undef yyerrok # undef YYABORT # undef YYACCEPT # undef YYERROR # undef YYBACKUP # undef yyclearin # undef YYRECOVERING /* Line 741 of glr.c. */ #line 4870 "y.tab.c" } static void yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1) { /* `Use' the arguments. */ (void) yy0; (void) yy1; switch (yyn) { } } /* Bison grammar-table manipulation. */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (int yytype, YYSTYPE *yyvaluep) { /* Pacify ``unused variable'' warnings. */ (void) yyvaluep; switch (yytype) { default: break; } } /** Number of symbols composing the right hand side of rule #RULE. */ static inline int yyrhsLength (yyRuleNum yyrule) { return yyr2[yyrule]; } /** Left-hand-side symbol for rule #RULE. */ static inline yySymbol yylhsNonterm (yyRuleNum yyrule) { return yyr1[yyrule]; } #define yyis_pact_ninf(yystate) \ ((yystate) == YYPACT_NINF) /** True iff LR state STATE has only a default reduction (regardless * of token). */ static inline yybool yyisDefaultedState (yyStateNum yystate) { return yyis_pact_ninf (yypact[yystate]); } /** The default reduction for STATE, assuming it has one. */ static inline yyRuleNum yydefaultAction (yyStateNum yystate) { return yydefact[yystate]; } #define yyis_table_ninf(yytable_value) \ 0 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN. * Result R means * R < 0: Reduce on rule -R. * R = 0: Error. * R > 0: Shift to state R. * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of * conflicting reductions. */ static inline void yygetLRActions (yyStateNum yystate, int yytoken, int* yyaction, const short** yyconflicts) { int yyindex = yypact[yystate] + yytoken; if (yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken) { *yyaction = -yydefact[yystate]; *yyconflicts = yyconfl; } else if (! yyis_table_ninf (yytable[yyindex])) { *yyaction = yytable[yyindex]; *yyconflicts = yyconfl + yyconflp[yyindex]; } else { *yyaction = 0; *yyconflicts = yyconfl + yyconflp[yyindex]; } } static inline yyStateNum yyLRgotoState (yyStateNum yystate, yySymbol yylhs) { int yyr; yyr = yypgoto[yylhs - YYNTOKENS] + yystate; if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate) return yytable[yyr]; else return yydefgoto[yylhs - YYNTOKENS]; } static inline yybool yyisShiftAction (int yyaction) { return 0 < yyaction; } static inline yybool yyisErrorAction (int yyaction) { return yyaction == 0; } /* GLRStates */ static void yyaddDeferredAction (yyGLRStack* yystack, yyGLRState* yystate, yyGLRState* rhs, yyRuleNum yyrule) { yySemanticOption* yynewItem; yynewItem = &yystack->yynextFree->yyoption; yystack->yyspaceLeft -= 1; yystack->yynextFree += 1; yynewItem->yyisState = yyfalse; yynewItem->yystate = rhs; yynewItem->yyrule = yyrule; yynewItem->yynext = yystate->yysemantics.yyfirstVal; yystate->yysemantics.yyfirstVal = yynewItem; if (yystack->yyspaceLeft < YYHEADROOM) yyexpandGLRStack (yystack); } /* GLRStacks */ /** Initialize SET to a singleton set containing an empty stack. */ static void yyinitStateSet (yyGLRStateSet* yyset) { yyset->yysize = 1; yyset->yycapacity = 16; yyset->yystates = (yyGLRState**) YYMALLOC (16 * sizeof yyset->yystates[0]); yyset->yystates[0] = NULL; } static void yyfreeStateSet (yyGLRStateSet* yyset) { YYFREE (yyset->yystates); } /** Initialize STACK to a single empty stack, with total maximum * capacity for all stacks of SIZE. */ static void yyinitGLRStack (yyGLRStack* yystack, size_t yysize) { yystack->yyerrflag = 0; yystack->yyerrState = 0; yynerrs = 0; yystack->yyspaceLeft = yysize; yystack->yynextFree = yystack->yyitems = (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystack->yynextFree[0]); yystack->yysplitPoint = NULL; yystack->yylastDeleted = NULL; yyinitStateSet (&yystack->yytops); } #define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \ &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE /** If STACK is expandable, extend it. WARNING: Pointers into the stack from outside should be considered invalid after this call. We always expand when there are 1 or fewer items left AFTER an allocation, so that we can avoid having external pointers exist across an allocation. */ static void yyexpandGLRStack (yyGLRStack* yystack) { #if YYSTACKEXPANDABLE yyGLRStack yynewStack; yyGLRStackItem* yyp0, *yyp1; size_t yysize, yynewSize; size_t yyn; yysize = yystack->yynextFree - yystack->yyitems; if (YYMAXDEPTH <= yysize) yyFail (yystack, "parser stack overflow"); yynewSize = 2*yysize; if (YYMAXDEPTH < yynewSize) yynewSize = YYMAXDEPTH; yyinitGLRStack (&yynewStack, yynewSize); for (yyp0 = yystack->yyitems, yyp1 = yynewStack.yyitems, yyn = yysize; 0 < yyn; yyn -= 1, yyp0 += 1, yyp1 += 1) { *yyp1 = *yyp0; if (*(yybool *) yyp0) { yyGLRState* yys0 = &yyp0->yystate; yyGLRState* yys1 = &yyp1->yystate; if (yys0->yypred != NULL) yys1->yypred = YYRELOC (yyp0, yyp1, yys0->yypred, yystate); if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != NULL) yys1->yysemantics.yyfirstVal = YYRELOC(yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption); } else { yySemanticOption* yyv0 = &yyp0->yyoption; yySemanticOption* yyv1 = &yyp1->yyoption; if (yyv0->yystate != NULL) yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate); if (yyv0->yynext != NULL) yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption); } } if (yystack->yysplitPoint != NULL) yystack->yysplitPoint = YYRELOC (yystack->yyitems, yynewStack.yyitems, yystack->yysplitPoint, yystate); for (yyn = 0; yyn < yystack->yytops.yysize; yyn += 1) if (yystack->yytops.yystates[yyn] != NULL) yystack->yytops.yystates[yyn] = YYRELOC (yystack->yyitems, yynewStack.yyitems, yystack->yytops.yystates[yyn], yystate); YYFREE (yystack->yyitems); yystack->yyitems = yynewStack.yyitems; yystack->yynextFree = yynewStack.yynextFree + yysize; yystack->yyspaceLeft = yynewStack.yyspaceLeft - yysize; #else yyFail (yystack, "parser stack overflow"); #endif } static void yyfreeGLRStack (yyGLRStack* yystack) { YYFREE (yystack->yyitems); yyfreeStateSet (&yystack->yytops); } /** Assuming that S is a GLRState somewhere on STACK, update the * splitpoint of STACK, if needed, so that it is at least as deep as * S. */ static inline void yyupdateSplit (yyGLRStack* yystack, yyGLRState* yys) { if (yystack->yysplitPoint != NULL && yystack->yysplitPoint > yys) yystack->yysplitPoint = yys; } /** Invalidate stack #K in STACK. */ static inline void yymarkStackDeleted (yyGLRStack* yystack, int yyk) { if (yystack->yytops.yystates[yyk] != NULL) yystack->yylastDeleted = yystack->yytops.yystates[yyk]; yystack->yytops.yystates[yyk] = NULL; } /** Undelete the last stack that was marked as deleted. Can only be done once after a deletion, and only when all other stacks have been deleted. */ static void yyundeleteLastStack (yyGLRStack* yystack) { if (yystack->yylastDeleted == NULL || yystack->yytops.yysize != 0) return; yystack->yytops.yystates[0] = yystack->yylastDeleted; yystack->yytops.yysize = 1; YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n")); yystack->yylastDeleted = NULL; } static inline void yyremoveDeletes (yyGLRStack* yystack) { size_t yyi, yyj; yyi = yyj = 0; while (yyj < yystack->yytops.yysize) { if (yystack->yytops.yystates[yyi] == NULL) { if (yyi == yyj) { YYDPRINTF ((stderr, "Removing dead stacks.\n")); } yystack->yytops.yysize -= 1; } else { yystack->yytops.yystates[yyj] = yystack->yytops.yystates[yyi]; if (yyj != yyi) { YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n", (unsigned long int) yyi, (unsigned long int) yyj)); } yyj += 1; } yyi += 1; } } /** Shift to a new state on stack #K of STACK, corresponding to LR state * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */ static inline void yyglrShift (yyGLRStack* yystack, int yyk, yyStateNum yylrState, size_t yyposn, YYSTYPE yysval, YYLTYPE* yylocp) { yyGLRStackItem* yynewItem; yynewItem = yystack->yynextFree; yystack->yynextFree += 1; yystack->yyspaceLeft -= 1; yynewItem->yystate.yyisState = yytrue; yynewItem->yystate.yylrState = yylrState; yynewItem->yystate.yyposn = yyposn; yynewItem->yystate.yyresolved = yytrue; yynewItem->yystate.yypred = yystack->yytops.yystates[yyk]; yystack->yytops.yystates[yyk] = &yynewItem->yystate; yynewItem->yystate.yysemantics.yysval = yysval; yynewItem->yystate.yyloc = *yylocp; if (yystack->yyspaceLeft < YYHEADROOM) yyexpandGLRStack (yystack); } /** Shift stack #K of YYSTACK, to a new state corresponding to LR * state YYLRSTATE, at input position YYPOSN, with the (unresolved) * semantic value of YYRHS under the action for YYRULE. */ static inline void yyglrShiftDefer (yyGLRStack* yystack, int yyk, yyStateNum yylrState, size_t yyposn, yyGLRState* rhs, yyRuleNum yyrule) { yyGLRStackItem* yynewItem; yynewItem = yystack->yynextFree; yynewItem->yystate.yyisState = yytrue; yynewItem->yystate.yylrState = yylrState; yynewItem->yystate.yyposn = yyposn; yynewItem->yystate.yyresolved = yyfalse; yynewItem->yystate.yypred = yystack->yytops.yystates[yyk]; yynewItem->yystate.yysemantics.yyfirstVal = NULL; yystack->yytops.yystates[yyk] = &yynewItem->yystate; yystack->yynextFree += 1; yystack->yyspaceLeft -= 1; yyaddDeferredAction (yystack, &yynewItem->yystate, rhs, yyrule); } /** Pop the symbols consumed by reduction #RULE from the top of stack * #K of STACK, and perform the appropriate semantic action on their * semantic values. Assumes that all ambiguities in semantic values * have been previously resolved. Set *VALP to the resulting value, * and *LOCP to the computed location (if any). Return value is as * for userAction. */ static inline YYRESULTTAG yydoAction (yyGLRStack* yystack, int yyk, yyRuleNum yyrule, YYSTYPE* yyvalp, YYLTYPE* yylocp) { int yynrhs = yyrhsLength (yyrule); if (yystack->yysplitPoint == NULL) { /* Standard special case: single stack. */ yyGLRStackItem* rhs = (yyGLRStackItem*) yystack->yytops.yystates[yyk]; YYASSERT (yyk == 0); yystack->yynextFree -= yynrhs; yystack->yyspaceLeft += yynrhs; yystack->yytops.yystates[0] = & yystack->yynextFree[-1].yystate; return yyuserAction (yyrule, yynrhs, rhs, yyvalp, yylocp, yystack); } else { int yyi; yyGLRState* yys; yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yystack->yytops.yystates[yyk]; for (yyi = 0; yyi < yynrhs; yyi += 1) { yys = yys->yypred; YYASSERT (yys); } yyupdateSplit (yystack, yys); yystack->yytops.yystates[yyk] = yys; return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, yyvalp, yylocp, yystack); } } #if !YYDEBUG # define YY_REDUCE_PRINT(K, Rule) #else # define YY_REDUCE_PRINT(K, Rule) \ do { \ if (yydebug) \ yy_reduce_print (K, Rule); \ } while (0) /*----------------------------------------------------------. | Report that the RULE is going to be reduced on stack #K. | `----------------------------------------------------------*/ static inline void yy_reduce_print (size_t yyk, yyRuleNum yyrule) { int yyi; YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu), ", (unsigned long int) yyk, yyrule - 1, (unsigned long int) yyrline[yyrule]); /* Print the symbols being reduced, and their result. */ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) YYFPRINTF (stderr, "%s ", yytokenName (yyrhs[yyi])); YYFPRINTF (stderr, "-> %s\n", yytokenName (yyr1[yyrule])); } #endif /** Pop items off stack #K of STACK according to grammar rule RULE, * and push back on the resulting nonterminal symbol. Perform the * semantic action associated with RULE and store its value with the * newly pushed state, if FORCEEVAL or if STACK is currently * unambiguous. Otherwise, store the deferred semantic action with * the new state. If the new state would have an identical input * position, LR state, and predecessor to an existing state on the stack, * it is identified with that existing state, eliminating stack #K from * the STACK. In this case, the (necessarily deferred) semantic value is * added to the options for the existing state's semantic value. */ static inline YYRESULTTAG yyglrReduce (yyGLRStack* yystack, size_t yyk, yyRuleNum yyrule, yybool yyforceEval) { size_t yyposn = yystack->yytops.yystates[yyk]->yyposn; if (yyforceEval || yystack->yysplitPoint == NULL) { YYSTYPE yysval; YYLTYPE yyloc; YY_REDUCE_PRINT (yyk, yyrule); YYCHK (yydoAction (yystack, yyk, yyrule, &yysval, &yyloc)); yyglrShift (yystack, yyk, yyLRgotoState (yystack->yytops.yystates[yyk]->yylrState, yylhsNonterm (yyrule)), yyposn, yysval, &yyloc); } else { size_t yyi; int yyn; yyGLRState* yys, *yys0 = yystack->yytops.yystates[yyk]; yyStateNum yynewLRState; for (yys = yystack->yytops.yystates[yyk], yyn = yyrhsLength (yyrule); 0 < yyn; yyn -= 1) { yys = yys->yypred; YYASSERT (yys); } yyupdateSplit (yystack, yys); yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule)); YYDPRINTF ((stderr, "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n", (unsigned long int) yyk, yyrule - 1, yynewLRState)); for (yyi = 0; yyi < yystack->yytops.yysize; yyi += 1) if (yyi != yyk && yystack->yytops.yystates[yyi] != NULL) { yyGLRState* yyp, *yysplit = yystack->yysplitPoint; yyp = yystack->yytops.yystates[yyi]; while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn) { if (yyp->yylrState == yynewLRState && yyp->yypred == yys) { yyaddDeferredAction (yystack, yyp, yys0, yyrule); yymarkStackDeleted (yystack, yyk); YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n", (unsigned long int) yyk, (unsigned long int) yyi)); return yyok; } yyp = yyp->yypred; } } yystack->yytops.yystates[yyk] = yys; yyglrShiftDefer (yystack, yyk, yynewLRState, yyposn, yys0, yyrule); } return yyok; } static int yysplitStack (yyGLRStack* yystack, int yyk) { if (yystack->yysplitPoint == NULL) { YYASSERT (yyk == 0); yystack->yysplitPoint = yystack->yytops.yystates[yyk]; } if (yystack->yytops.yysize >= yystack->yytops.yycapacity) { yystack->yytops.yycapacity *= 2; yystack->yytops.yystates = (yyGLRState**) YYREALLOC (yystack->yytops.yystates, (yystack->yytops.yycapacity * sizeof yystack->yytops.yystates[0])); } yystack->yytops.yystates[yystack->yytops.yysize] = yystack->yytops.yystates[yyk]; yystack->yytops.yysize += 1; return yystack->yytops.yysize-1; } /** True iff Y0 and Y1 represent identical options at the top level. * That is, they represent the same rule applied to RHS symbols * that produce the same terminal symbols. */ static yybool yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1) { if (yyy0->yyrule == yyy1->yyrule) { yyGLRState *yys0, *yys1; int yyn; for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, yyn = yyrhsLength (yyy0->yyrule); yyn > 0; yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) if (yys0->yyposn != yys1->yyposn) return yyfalse; return yytrue; } else return yyfalse; } /** Assuming identicalOptions (Y0,Y1), (destructively) merge the * alternative semantic values for the RHS-symbols of Y1 into the * corresponding semantic value sets of the symbols of Y0. */ static void yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1) { yyGLRState *yys0, *yys1; int yyn; for (yys0 = yyy0->yystate, yys1 = yyy1->yystate, yyn = yyrhsLength (yyy0->yyrule); yyn > 0; yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1) if (yys0 == yys1) break; else if (! yys0->yyresolved && ! yys1->yyresolved) { yySemanticOption* yyz; for (yyz = yys0->yysemantics.yyfirstVal; yyz->yynext != NULL; yyz = yyz->yynext) continue; yyz->yynext = yys1->yysemantics.yyfirstVal; } } /** Y0 and Y1 represent two possible actions to take in a given * parsing state; return 0 if no combination is possible, * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */ static int yypreference (yySemanticOption* y0, yySemanticOption* y1) { yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule; int p0 = yydprec[r0], p1 = yydprec[r1]; if (p0 == p1) { if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1]) return 0; else return 1; } if (p0 == 0 || p1 == 0) return 0; if (p0 < p1) return 3; if (p1 < p0) return 2; return 0; } static YYRESULTTAG yyresolveValue (yySemanticOption* yyoptionList, yyGLRStack* yystack, YYSTYPE* yyvalp, YYLTYPE* yylocp); static YYRESULTTAG yyresolveStates (yyGLRState* yys, int yyn, yyGLRStack* yystack) { YYRESULTTAG yyflag; if (0 < yyn) { YYASSERT (yys->yypred); yyflag = yyresolveStates (yys->yypred, yyn-1, yystack); if (yyflag != yyok) return yyflag; if (! yys->yyresolved) { yyflag = yyresolveValue (yys->yysemantics.yyfirstVal, yystack, &yys->yysemantics.yysval, &yys->yyloc ); if (yyflag != yyok) return yyflag; yys->yyresolved = yytrue; } } return yyok; } static YYRESULTTAG yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystack, YYSTYPE* yyvalp, YYLTYPE* yylocp) { yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1]; int yynrhs; yynrhs = yyrhsLength (yyopt->yyrule); YYCHK (yyresolveStates (yyopt->yystate, yynrhs, yystack)); yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate; return yyuserAction (yyopt->yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, yyvalp, yylocp, yystack); } #if YYDEBUG static void yyreportTree (yySemanticOption* yyx, int yyindent) { int yynrhs = yyrhsLength (yyx->yyrule); int yyi; yyGLRState* yys; yyGLRState* yystates[YYMAXRHS]; yyGLRState yyleftmost_state; for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred) yystates[yyi] = yys; if (yys == NULL) { yyleftmost_state.yyposn = 0; yystates[0] = &yyleftmost_state; } else yystates[0] = yys; if (yyx->yystate->yyposn < yys->yyposn + 1) YYFPRINTF (stderr, "%*s%s -> \n", yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), yyx->yyrule); else YYFPRINTF (stderr, "%*s%s -> \n", yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)), yyx->yyrule, (unsigned long int) (yys->yyposn + 1), (unsigned long int) yyx->yystate->yyposn); for (yyi = 1; yyi <= yynrhs; yyi += 1) { if (yystates[yyi]->yyresolved) { if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn) YYFPRINTF (stderr, "%*s%s \n", yyindent+2, "", yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1])); else YYFPRINTF (stderr, "%*s%s \n", yyindent+2, "", yytokenName (yyrhs[yyprhs[yyx->yyrule]+yyi-1]), (unsigned long int) (yystates[yyi - 1]->yyposn + 1), (unsigned long int) yystates[yyi]->yyposn); } else yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2); } } #endif static void yyreportAmbiguity (yySemanticOption* yyx0, yySemanticOption* yyx1, yyGLRStack* yystack) { /* `Unused' warnings. */ (void) yyx0; (void) yyx1; #if YYDEBUG YYFPRINTF (stderr, "Ambiguity detected.\n"); YYFPRINTF (stderr, "Option 1,\n"); yyreportTree (yyx0, 2); YYFPRINTF (stderr, "\nOption 2,\n"); yyreportTree (yyx1, 2); YYFPRINTF (stderr, "\n"); #endif yyFail (yystack, "ambiguity detected"); } /** Resolve the ambiguity represented by OPTIONLIST, perform the indicated * actions, and return the result. */ static YYRESULTTAG yyresolveValue (yySemanticOption* yyoptionList, yyGLRStack* yystack, YYSTYPE* yyvalp, YYLTYPE* yylocp) { yySemanticOption* yybest; yySemanticOption* yyp; int yymerge; yybest = yyoptionList; yymerge = 0; for (yyp = yyoptionList->yynext; yyp != NULL; yyp = yyp->yynext) { if (yyidenticalOptions (yybest, yyp)) yymergeOptionSets (yybest, yyp); else switch (yypreference (yybest, yyp)) { case 0: yyreportAmbiguity (yybest, yyp, yystack); break; case 1: yymerge = 1; break; case 2: break; case 3: yybest = yyp; yymerge = 0; break; } } if (yymerge) { int yyprec = yydprec[yybest->yyrule]; YYCHK (yyresolveAction (yybest, yystack, yyvalp, yylocp)); for (yyp = yybest->yynext; yyp != NULL; yyp = yyp->yynext) { if (yyprec == yydprec[yyp->yyrule]) { YYSTYPE yyval1; YYLTYPE yydummy; YYCHK (yyresolveAction (yyp, yystack, &yyval1, &yydummy)); yyuserMerge (yymerger[yyp->yyrule], yyvalp, &yyval1); } } return yyok; } else return yyresolveAction (yybest, yystack, yyvalp, yylocp); } static YYRESULTTAG yyresolveStack (yyGLRStack* yystack) { if (yystack->yysplitPoint != NULL) { yyGLRState* yys; int yyn; for (yyn = 0, yys = yystack->yytops.yystates[0]; yys != yystack->yysplitPoint; yys = yys->yypred, yyn += 1) continue; YYCHK (yyresolveStates (yystack->yytops.yystates[0], yyn, yystack )); } return yyok; } static void yycompressStack (yyGLRStack* yystack) { yyGLRState* yyp, *yyq, *yyr; if (yystack->yytops.yysize != 1 || yystack->yysplitPoint == NULL) return; for (yyp = yystack->yytops.yystates[0], yyq = yyp->yypred, yyr = NULL; yyp != yystack->yysplitPoint; yyr = yyp, yyp = yyq, yyq = yyp->yypred) yyp->yypred = yyr; yystack->yyspaceLeft += yystack->yynextFree - yystack->yyitems; yystack->yynextFree = ((yyGLRStackItem*) yystack->yysplitPoint) + 1; yystack->yyspaceLeft -= yystack->yynextFree - yystack->yyitems; yystack->yysplitPoint = NULL; yystack->yylastDeleted = NULL; while (yyr != NULL) { yystack->yynextFree->yystate = *yyr; yyr = yyr->yypred; yystack->yynextFree->yystate.yypred = & yystack->yynextFree[-1].yystate; yystack->yytops.yystates[0] = &yystack->yynextFree->yystate; yystack->yynextFree += 1; yystack->yyspaceLeft -= 1; } } static YYRESULTTAG yyprocessOneStack (yyGLRStack* yystack, int yyk, size_t yyposn, YYSTYPE* yylvalp, YYLTYPE* yyllocp ) { int yyaction; const short* yyconflicts; yyRuleNum yyrule; yySymbol* const yytokenp = yystack->yytokenp; while (yystack->yytops.yystates[yyk] != NULL) { yyStateNum yystate = yystack->yytops.yystates[yyk]->yylrState; YYDPRINTF ((stderr, "Stack %d Entering state %d\n", yyk, yystate)); YYASSERT (yystate != YYFINAL); if (yyisDefaultedState (yystate)) { yyrule = yydefaultAction (yystate); if (yyrule == 0) { YYDPRINTF ((stderr, "Stack %d dies.\n", yyk)); yymarkStackDeleted (yystack, yyk); return yyok; } YYCHK (yyglrReduce (yystack, yyk, yyrule, yyfalse)); } else { if (*yytokenp == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; *yytokenp = YYTRANSLATE (yychar); YYDSYMPRINTF ("Next token is", *yytokenp, yylvalp, yyllocp); } yygetLRActions (yystate, *yytokenp, &yyaction, &yyconflicts); while (*yyconflicts != 0) { int yynewStack = yysplitStack (yystack, yyk); YYDPRINTF ((stderr, "Splitting off stack %d from %d.\n", yynewStack, yyk)); YYCHK (yyglrReduce (yystack, yynewStack, *yyconflicts, yyfalse)); YYCHK (yyprocessOneStack (yystack, yynewStack, yyposn, yylvalp, yyllocp)); yyconflicts += 1; } if (yyisShiftAction (yyaction)) { YYDPRINTF ((stderr, "Shifting token %s on stack %d, ", yytokenName (*yytokenp), yyk)); yyglrShift (yystack, yyk, yyaction, yyposn+1, *yylvalp, yyllocp); YYDPRINTF ((stderr, "which is now in state #%d\n", yystack->yytops.yystates[yyk]->yylrState)); break; } else if (yyisErrorAction (yyaction)) { YYDPRINTF ((stderr, "Stack %d dies.\n", yyk)); yymarkStackDeleted (yystack, yyk); break; } else YYCHK (yyglrReduce (yystack, yyk, -yyaction, yyfalse)); } } return yyok; } static void yyreportSyntaxError (yyGLRStack* yystack, YYSTYPE* yylvalp, YYLTYPE* yyllocp) { /* `Unused' warnings. */ (void) yylvalp; (void) yyllocp; if (yystack->yyerrState == 0) { #if YYERROR_VERBOSE yySymbol* const yytokenp = yystack->yytokenp; int yyn; yyn = yypact[yystack->yytops.yystates[0]->yylrState]; if (YYPACT_NINF < yyn && yyn < YYLAST) { size_t yysize = 0; const char* yyprefix; char* yymsg; int yyx; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 0; yyprefix = ", expecting "; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { yysize += strlen (yyprefix) + strlen (yytokenName (yyx)); yycount += 1; if (yycount == 5) { yysize = 0; break; } yyprefix = " or "; } yysize += (sizeof ("syntax error, unexpected ") + strlen (yytokenName (*yytokenp))); yymsg = (char*) YYMALLOC (yysize); if (yymsg != 0) { char* yyp = yymsg; sprintf (yyp, "syntax error%s%s", (*yytokenp == YYEMPTY ? "" : ", unexpected "), yytokenName (*yytokenp)); yyp += strlen (yyp); if (yycount < 5) { yyprefix = ", expecting "; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { sprintf (yyp, "%s%s", yyprefix, yytokenName (yyx)); yyp += strlen (yyp); yyprefix = " or "; } } yyerror (yymsg); YYFREE (yymsg); } else yyerror ("syntax error; also virtual memory exhausted"); } else #endif /* YYERROR_VERBOSE */ yyerror ("syntax error"); yynerrs += 1; } } /* Recover from a syntax error on YYSTACK, assuming that YYTOKENP, YYLVALP, and YYLLOCP point to the syntactic category, semantic value, and location of the lookahead. */ static void yyrecoverSyntaxError (yyGLRStack* yystack, YYSTYPE* yylvalp, YYLTYPE* yyllocp) { yySymbol* const yytokenp = yystack->yytokenp; size_t yyk; int yyj; if (yystack->yyerrState == 3) /* We just shifted the error token and (perhaps) took some reductions. Skip tokens until we can proceed. */ while (yytrue) { if (*yytokenp == YYEOF) { /* Now pop stack until empty and fail. */ while (yystack->yytops.yystates[0] != NULL) { yyGLRState *yys = yystack->yytops.yystates[0]; YYDSYMPRINTF ("Error: popping", yystos[yys->yylrState], &yys->yysemantics.yysval, &yys->yyloc); yydestruct (yystos[yys->yylrState], &yys->yysemantics.yysval); yystack->yytops.yystates[0] = yys->yypred; yystack->yynextFree -= 1; yystack->yyspaceLeft += 1; } yyFail (yystack, NULL); } if (*yytokenp != YYEMPTY) { YYDSYMPRINTF ("Error: discarding", *yytokenp, yylvalp, yyllocp); yydestruct (*yytokenp, yylvalp); } YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; *yytokenp = YYTRANSLATE (yychar); YYDSYMPRINTF ("Next token is", *yytokenp, yylvalp, yyllocp); yyj = yypact[yystack->yytops.yystates[0]->yylrState]; if (yyis_pact_ninf (yyj)) return; yyj += *yytokenp; if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != *yytokenp) { if (yydefact[yystack->yytops.yystates[0]->yylrState] != 0) return; } else if (yytable[yyj] != 0 && ! yyis_table_ninf (yytable[yyj])) return; } /* Reduce to one stack. */ for (yyk = 0; yyk < yystack->yytops.yysize; yyk += 1) if (yystack->yytops.yystates[yyk] != NULL) break; if (yyk >= yystack->yytops.yysize) yyFail (yystack, NULL); for (yyk += 1; yyk < yystack->yytops.yysize; yyk += 1) yymarkStackDeleted (yystack, yyk); yyremoveDeletes (yystack); yycompressStack (yystack); /* Now pop stack until we find a state that shifts the error token. */ yystack->yyerrState = 3; while (yystack->yytops.yystates[0] != NULL) { yyGLRState *yys = yystack->yytops.yystates[0]; yyj = yypact[yys->yylrState]; if (! yyis_pact_ninf (yyj)) { yyj += YYTERROR; if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR && yyisShiftAction (yytable[yyj])) { YYDPRINTF ((stderr, "Shifting error token, ")); yyglrShift (yystack, 0, yytable[yyj], yys->yyposn, *yylvalp, yyllocp); break; } } YYDSYMPRINTF ("Error: popping", yystos[yys->yylrState], &yys->yysemantics.yysval, &yys->yyloc); yydestruct (yystos[yys->yylrState], &yys->yysemantics.yysval); yystack->yytops.yystates[0] = yys->yypred; yystack->yynextFree -= 1; yystack->yyspaceLeft += 1; } if (yystack->yytops.yystates[0] == NULL) yyFail (yystack, NULL); } #define YYCHK1(YYE) \ do { \ switch (YYE) { \ default: \ break; \ case yyabort: \ yystack.yyerrflag = 1; \ goto yyDone; \ case yyaccept: \ yystack.yyerrflag = 0; \ goto yyDone; \ case yyerr: \ goto yyuser_error; \ } \ } while (0) /*----------. | yyparse. | `----------*/ int yyparse (void) { yySymbol yytoken; yyGLRStack yystack; size_t yyposn; YYSTYPE* const yylvalp = &yylval; YYLTYPE* const yyllocp = &yylloc; yyinitGLRStack (&yystack, YYINITDEPTH); yystack.yytokenp = &yytoken; YYDPRINTF ((stderr, "Starting parse\n")); if (setjmp (yystack.yyexception_buffer) != 0) goto yyDone; yyglrShift (&yystack, 0, 0, 0, yyval_default, &yyloc_default); yytoken = YYEMPTY; yyposn = 0; while (yytrue) { /* For efficiency, we have two loops, the first of which is specialized to deterministic operation (single stack, no potential ambiguity). */ /* Standard mode */ while (yytrue) { yyRuleNum yyrule; int yyaction; const short* yyconflicts; yyStateNum yystate = yystack.yytops.yystates[0]->yylrState; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) goto yyDone; if (yyisDefaultedState (yystate)) { yyrule = yydefaultAction (yystate); if (yyrule == 0) { yyreportSyntaxError (&yystack, yylvalp, yyllocp); goto yyuser_error; } YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue)); } else { if (yytoken == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; yytoken = YYTRANSLATE (yychar); YYDSYMPRINTF ("Next token is", yytoken, yylvalp, yyllocp); } yygetLRActions (yystate, yytoken, &yyaction, &yyconflicts); if (*yyconflicts != 0) break; if (yyisShiftAction (yyaction)) { YYDPRINTF ((stderr, "Shifting token %s, ", yytokenName (yytoken))); if (yytoken != YYEOF) yytoken = YYEMPTY; yyposn += 1; yyglrShift (&yystack, 0, yyaction, yyposn, yylval, yyllocp); if (0 < yystack.yyerrState) yystack.yyerrState -= 1; } else if (yyisErrorAction (yyaction)) { yyreportSyntaxError (&yystack, yylvalp, yyllocp); goto yyuser_error; } else YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue)); } } while (yytrue) { int yys; int yyn = yystack.yytops.yysize; for (yys = 0; yys < yyn; yys += 1) YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn, yylvalp, yyllocp)); yytoken = YYEMPTY; yyposn += 1; yyremoveDeletes (&yystack); if (yystack.yytops.yysize == 0) { yyundeleteLastStack (&yystack); if (yystack.yytops.yysize == 0) yyFail (&yystack, "syntax error"); YYCHK1 (yyresolveStack (&yystack)); YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); yyreportSyntaxError (&yystack, yylvalp, yyllocp); goto yyuser_error; } else if (yystack.yytops.yysize == 1) { YYCHK1 (yyresolveStack (&yystack)); YYDPRINTF ((stderr, "Returning to deterministic operation.\n")); yycompressStack (&yystack); break; } } continue; yyuser_error: yyrecoverSyntaxError (&yystack, yylvalp, yyllocp); yyposn = yystack.yytops.yystates[0]->yyposn; } yyDone: ; yyfreeGLRStack (&yystack); return yystack.yyerrflag; } /* DEBUGGING ONLY */ static void yypstack (yyGLRStack* yystack, int yyk) ATTRIBUTE_UNUSED; static void yypdumpstack (yyGLRStack* yystack) ATTRIBUTE_UNUSED; static void yy_yypstack (yyGLRState* yys) { if (yys->yypred) { yy_yypstack (yys->yypred); fprintf (stderr, " -> "); } fprintf (stderr, "%d@%lu", yys->yylrState, (unsigned long) yys->yyposn); } static void yypstates (yyGLRState* yyst) { if (yyst == NULL) fprintf (stderr, ""); else yy_yypstack (yyst); fprintf (stderr, "\n"); } static void yypstack (yyGLRStack* yystack, int yyk) { yypstates (yystack->yytops.yystates[yyk]); } #define YYINDEX(YYX) \ ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystack->yyitems) static void yypdumpstack (yyGLRStack* yystack) { yyGLRStackItem* yyp; size_t yyi; for (yyp = yystack->yyitems; yyp < yystack->yynextFree; yyp += 1) { fprintf (stderr, "%3lu. ", (unsigned long) (yyp - yystack->yyitems)); if (*(yybool *) yyp) { fprintf (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld", yyp->yystate.yyresolved, yyp->yystate.yylrState, (unsigned long) yyp->yystate.yyposn, (long) YYINDEX (yyp->yystate.yypred)); if (! yyp->yystate.yyresolved) fprintf (stderr, ", firstVal: %ld", (long) YYINDEX (yyp->yystate.yysemantics.yyfirstVal)); } else { fprintf (stderr, "Option. rule: %d, state: %ld, next: %ld", yyp->yyoption.yyrule, (long) YYINDEX (yyp->yyoption.yystate), (long) YYINDEX (yyp->yyoption.yynext)); } fprintf (stderr, "\n"); } fprintf (stderr, "Tops:"); for (yyi = 0; yyi < yystack->yytops.yysize; yyi += 1) fprintf (stderr, "%lu: %ld; ", (unsigned long) yyi, (long) YYINDEX (yystack->yytops.yystates[yyi])); fprintf (stderr, "\n"); } #line 2018 "parser.yy" static void yyerror(const char* msg) { Error(yylval.SimpTerminal.posn) << msg << endl; } static TreeNode *newOperator(char *op, SourcePosn p) { return new NameNode(TreeNode::omitted, intern(op), NULL, p); } /* Check that only the modifiers in ... are in FLAGS, reporting an */ /* error at POSN if not. */ static void checkModifiers(SourcePosn posn, Common::Modifiers flags, ...) { unsigned long flag; va_list ap; va_start (ap, flags); while (true) { flag = va_arg (ap, unsigned long); if (flag == 0) break; flags = (Common::Modifiers)((unsigned long)flags & ~flag); } va_end (ap); if ((unsigned long) flags != 0) Error(posn) << "illegal modifiers: " << stringifyModifiers(flags) << endl; } static void checkFieldModifiers(Common::Modifiers flags, SourcePosn posn) { checkModifiers(posn, flags, TreeNode::Public, TreeNode::Protected, TreeNode::Private, TreeNode::Static, TreeNode::Final, TreeNode::Transient, TreeNode::Volatile, (Common::Modifiers) 0); } static void checkConstantFieldModifiers(Common::Modifiers flags, SourcePosn posn) { checkModifiers(posn, flags, TreeNode::Public, TreeNode::Static, TreeNode::Final, (Common::Modifiers) 0); } static void checkMethodModifiers(Common::Modifiers flags, SourcePosn posn) { checkModifiers(posn, flags, TreeNode::Public, TreeNode::Protected, TreeNode::Private, TreeNode::Static, TreeNode::Final, TreeNode::Abstract, TreeNode::Native, TreeNode::Sglobal, TreeNode::Local, TreeNode::NonsharedQ, TreeNode::PolysharedQ, TreeNode::Synchronized, TreeNode::Inline, TreeNode::Strictfp, (Common::Modifiers) 0); } static void checkConstructorModifiers(Common::Modifiers flags, SourcePosn posn) { checkModifiers(posn, flags, TreeNode::Public, TreeNode::Protected, TreeNode::Private, TreeNode::NonsharedQ, TreeNode::PolysharedQ, TreeNode::Sglobal, TreeNode::Inline, (Common::Modifiers) 0); } static void checkMethodSignatureModifiers(Common::Modifiers flags, SourcePosn posn) { checkModifiers(posn, flags, TreeNode::Public, TreeNode::Abstract, TreeNode::Sglobal, TreeNode::Local, TreeNode::NonsharedQ, TreeNode::PolysharedQ, (Common::Modifiers) 0); } static void checkInterfaceModifiers(Common::Modifiers flags, SourcePosn posn) { checkModifiers(posn, flags, TreeNode::Public, TreeNode::Abstract, TreeNode::Strictfp, (Common::Modifiers) 0); } static void checkNestedTypeModifiers(Common::Modifiers flags, SourcePosn posn) { checkModifiers(posn, flags, TreeNode::Public, TreeNode::Protected, TreeNode::Private, TreeNode::Static, TreeNode::Final, TreeNode::Abstract, TreeNode::Immutable, TreeNode::Strictfp, (Common::Modifiers) 0); } static void checkLocalTypeModifiers(Common::Modifiers flags, SourcePosn posn) { checkModifiers(posn, flags, TreeNode::Final, TreeNode::Abstract, TreeNode::Strictfp, (Common::Modifiers) 0); } static const string *isTitaniumTypeName(TypeNode *t) { if (isTypeNameNode(t) && isNameNode(t->name()) && t->name()->qualifier()->absent()) { const string *id = t->name()->ident(); if (*id == "Point" || *id == "RectDomain" || *id == "Domain") return id; } return NULL; } static TypeNode *buildTemplateInstanceType(TreeNode *tn, llist *args) { TypeNode *t = new TypeNameNode(tn); const string *tname = isTitaniumTypeName(t); if (tname) { TreeNode *arg = TreeNode::omitted; if (args->size() != 1) { Error(t->position()) << *tname << " requires exactly one argument" << endl; } else if (args->front()->isTypeNode()) { Error(t->position()) << "Bad argument to " << *tname << endl; } else arg = args->front(); if (isArrayNameNode(arg)) arg = arg->asExpr(); if (*tname == "Point") return new PointTypeNode(arg, t->position()); else if (*tname == "RectDomain") return new RectDomainTypeNode(arg, t->position()); else { assert(*tname == "Domain"); return new DomainTypeNode(arg, t->position()); } } else /* not a Titanium type - a regular template */ return new TemplateInstanceTypeNode( t, args, 0 ); } static TreeNode *buildTemplateQualifiedName(TypeNode *tmpl, TreeNode *name) { if (name->qualifier()->absent()) return new NameNode(new TemplateNameNode(TreeNode::omitted, tmpl, tmpl->position()), name->ident(), NULL, name->position()); else return new NameNode(buildTemplateQualifiedName(tmpl, name->qualifier()), name->ident(), NULL, name->position()); } static TreeNode *addSynchronized(Common::Modifiers modifiers, TreeNode *body) { if ((modifiers & TreeNode::Synchronized) != 0 && !body->absent()) { TreeNode *syncObject; if ((modifiers & TreeNode::Static) != 0) { syncObject = TreeNode::omitted; } else { syncObject = new ThisNode(TreeNode::omitted, NULL, Common::None, body->position()); } body = new SynchronizedNode(syncObject, body); } return body; }