/* A Bison parser, made from alpha.y by GNU Bison version 1.25 */ #define YYBISON 1 /* Identify Bison output. */ #define ERROR 258 #define ABSTRACT 259 #define BOOLEAN 260 #define BREAK 261 #define BYTE 262 #define CASE 263 #define CATCH 264 #define CHAR 265 #define CLASS 266 #define CONTINUE 267 #define DEFAULT 268 #define DO 269 #define DOUBLE 270 #define EXTENDS 271 #define FALSE_TOKEN 272 #define FINAL 273 #define FINALLY 274 #define FLOAT 275 #define FOR 276 #define IF 277 #define IMPLEMENTS 278 #define NSLIMPORT 279 #define INSTANCEOF 280 #define INT 281 #define INTERFACE 282 #define LONG 283 #define NATIVE 284 #define NULL_TOKEN 285 #define PACKAGE 286 #define PRIVATE 287 #define PROTECTED 288 #define PUBLIC 289 #define RETURN 290 #define SHORT 291 #define STATIC 292 #define SUPER 293 #define SWITCH 294 #define SYNCHRONIZED 295 #define THIS 296 #define THROW 297 #define THROWS 298 #define TRANSIENT 299 #define VOLATILE 300 #define TRUE_TOKEN 301 #define TRY 302 #define VOID 303 #define WHILE 304 #define VERBATIM_OFF 305 #define VERBATIM_NSLJ 306 #define VERBATIM_NSLC 307 #define NSLJ 308 #define NSLMULTI 309 #define CONNECT 310 #define SPECIAL 311 #define NSLMODULE 312 #define NSLMODEL 313 #define NSLCLASS 314 #define ARRAY 315 #define INT_LITERAL 316 #define CHARACTER_LITERAL 317 #define LONG_LITERAL 318 #define FLOAT_LITERAL 319 #define DOUBLE_LITERAL 320 #define SYMBOL 321 #define STRING_LITERAL 322 #define BIT_MUL 323 #define STRING 324 #define NOT_AN_OPERATOR 325 #define SHIFT_RIGHT_EQUALS 326 #define FILL_SHIFT_RIGHT_EQUALS 327 #define SHIFT_LEFT_EQUALS 328 #define ADD_EQUALS 329 #define SUB_EQUALS 330 #define MUL_EQUALS 331 #define DIV_EQUALS 332 #define MOD_EQUALS 333 #define AND_EQUALS 334 #define XOR_EQUALS 335 #define OR_EQUALS 336 #define OR 337 #define AND 338 #define EQUAL_COMPARE 339 #define NOT_EQUAL 340 #define LTEQ 341 #define GTEQ 342 #define BITSHIFT_RIGHT 343 #define FILL_SHIFT_RIGHT 344 #define SHIFT_LEFT 345 #define CAST 346 #define INCR 347 #define DECR 348 #define UMINUS 349 #define UPLUS 350 #define POST_INCR 351 #define POST_DECR 352 #define NEW 353 #define LOWER_THAN_ELSE 354 #define ELSE 355 /********************* header ********************************/ package npp.src; import java.util.*; import java.io.*; import npp.src.util.*; import pp.src.jbf.*; /*****************************************************/ #ifndef YYSTYPE #define YYSTYPE int #endif #include #ifndef __cplusplus #ifndef __STDC__ #define const #endif #endif #define YYFINAL 602 #define YYFLAG -32768 #define YYNTBASE 126 #define YYTRANSLATE(x) ((unsigned)(x) <= 355 ? yytranslate[x] : 215) static const 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, 108, 2, 2, 2, 103, 88, 2, 115, 116, 101, 99, 125, 100, 119, 102, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 84, 122, 94, 82, 95, 83, 104, 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, 117, 2, 118, 89, 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, 123, 87, 124, 109, 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, 73, 74, 75, 76, 77, 78, 79, 80, 81, 85, 86, 90, 91, 92, 93, 96, 97, 98, 105, 106, 107, 110, 111, 112, 113, 114, 120, 121 }; #if YYDEBUG != 0 static const short yyprhs[] = { 0, 0, 4, 5, 9, 11, 12, 15, 20, 24, 29, 31, 32, 35, 37, 39, 41, 43, 46, 49, 57, 65, 73, 85, 97, 109, 111, 113, 116, 118, 121, 123, 129, 131, 134, 139, 141, 142, 145, 148, 151, 154, 155, 158, 162, 163, 166, 170, 171, 174, 177, 181, 185, 190, 192, 194, 197, 199, 201, 205, 210, 212, 214, 217, 219, 221, 227, 233, 236, 241, 243, 247, 250, 253, 256, 261, 265, 269, 272, 275, 285, 287, 290, 295, 302, 303, 306, 307, 310, 317, 324, 326, 328, 329, 331, 333, 337, 341, 344, 347, 350, 355, 361, 362, 365, 367, 371, 372, 375, 377, 381, 382, 384, 387, 389, 392, 393, 396, 399, 401, 404, 407, 409, 412, 414, 420, 428, 434, 442, 444, 456, 466, 476, 484, 489, 492, 496, 499, 503, 506, 510, 518, 522, 528, 532, 537, 541, 547, 552, 556, 558, 561, 563, 566, 568, 572, 574, 576, 578, 579, 581, 583, 587, 588, 590, 593, 595, 598, 605, 607, 609, 613, 615, 621, 625, 629, 633, 637, 641, 645, 649, 653, 657, 661, 665, 669, 673, 677, 681, 685, 689, 693, 697, 701, 705, 708, 711, 714, 717, 721, 723, 725, 727, 729, 731, 733, 737, 741, 746, 751, 755, 757, 761, 765, 769, 773, 777, 781, 785, 789, 793, 797, 801, 805, 808, 811, 814, 817, 819, 821, 823, 828, 835, 840, 845, 851, 856, 863, 868, 873, 876, 882, 888, 895, 901, 904, 909, 915, 916, 920, 922, 924, 926, 928, 930, 932, 934, 936, 937, 939, 941, 945, 949, 951, 954, 957, 959, 962, 964, 966, 968, 970, 972, 974, 976, 978, 980, 982, 985, 988, 991, 994, 997, 1000, 1003, 1006, 1009, 1011, 1013, 1015, 1017, 1019, 1021, 1023, 1025, 1027, 1028, 1031, 1034, 1037, 1040, 1043, 1046, 1049, 1052, 1055, 1057, 1060, 1062, 1066, 1068, 1072, 1076, 1078, 1082, 1084, 1088 }; static const short yyrhs[] = { 127, 128, 130, 0, 0, 31, 210, 122, 0, 184, 0, 0, 128, 129, 0, 24, 210, 68, 122, 0, 24, 210, 122, 0, 56, 24, 210, 122, 0, 184, 0, 0, 130, 131, 0, 122, 0, 132, 0, 140, 0, 184, 0, 138, 139, 0, 133, 134, 0, 53, 143, 57, 214, 115, 166, 116, 0, 53, 143, 58, 214, 115, 166, 116, 0, 53, 143, 59, 214, 115, 166, 116, 0, 143, 57, 214, 115, 166, 116, 135, 214, 115, 202, 116, 0, 143, 58, 214, 115, 166, 116, 135, 214, 115, 202, 116, 0, 143, 59, 214, 115, 166, 116, 135, 214, 115, 202, 116, 0, 137, 0, 16, 0, 53, 16, 0, 35, 0, 56, 35, 0, 147, 0, 143, 11, 214, 144, 146, 0, 147, 0, 141, 142, 0, 143, 27, 214, 145, 0, 147, 0, 0, 143, 18, 0, 143, 40, 0, 143, 34, 0, 143, 4, 0, 0, 16, 210, 0, 53, 16, 210, 0, 0, 16, 213, 0, 53, 16, 213, 0, 0, 23, 213, 0, 123, 124, 0, 123, 148, 124, 0, 123, 124, 122, 0, 123, 148, 124, 122, 0, 184, 0, 149, 0, 148, 149, 0, 122, 0, 54, 0, 209, 152, 122, 0, 4, 208, 152, 122, 0, 157, 0, 160, 0, 209, 169, 0, 156, 0, 184, 0, 60, 214, 214, 117, 151, 0, 60, 206, 214, 117, 151, 0, 191, 118, 0, 191, 118, 117, 151, 0, 118, 0, 118, 117, 151, 0, 153, 154, 0, 153, 155, 0, 66, 66, 0, 210, 119, 66, 66, 0, 115, 202, 116, 0, 115, 166, 116, 0, 209, 177, 0, 158, 159, 0, 209, 53, 204, 214, 115, 166, 116, 200, 163, 0, 165, 0, 161, 162, 0, 53, 209, 214, 115, 0, 166, 116, 163, 123, 164, 124, 0, 0, 43, 213, 0, 0, 181, 180, 0, 38, 115, 202, 116, 122, 180, 0, 41, 115, 202, 116, 122, 180, 0, 122, 0, 177, 0, 0, 167, 0, 168, 0, 167, 125, 168, 0, 204, 214, 200, 0, 56, 170, 0, 150, 122, 0, 171, 122, 0, 204, 214, 200, 172, 0, 171, 125, 214, 200, 172, 0, 0, 82, 173, 0, 191, 0, 123, 174, 124, 0, 0, 175, 176, 0, 173, 0, 175, 125, 173, 0, 0, 125, 0, 178, 179, 0, 123, 0, 180, 124, 0, 0, 180, 181, 0, 152, 122, 0, 122, 0, 1, 122, 0, 1, 124, 0, 177, 0, 195, 122, 0, 169, 0, 22, 115, 191, 116, 181, 0, 22, 115, 191, 116, 181, 121, 181, 0, 49, 115, 191, 116, 181, 0, 14, 181, 49, 115, 191, 116, 122, 0, 184, 0, 55, 115, 123, 212, 124, 125, 123, 212, 124, 116, 122, 0, 55, 115, 123, 212, 124, 125, 211, 116, 122, 0, 55, 115, 211, 125, 123, 212, 124, 116, 122, 0, 55, 115, 211, 125, 211, 116, 122, 0, 54, 115, 116, 122, 0, 6, 122, 0, 6, 214, 122, 0, 12, 122, 0, 12, 214, 122, 0, 136, 122, 0, 136, 191, 122, 0, 21, 115, 183, 182, 185, 116, 181, 0, 42, 191, 122, 0, 40, 115, 191, 116, 181, 0, 214, 84, 181, 0, 47, 177, 189, 187, 0, 47, 177, 188, 0, 39, 115, 191, 116, 177, 0, 8, 191, 84, 181, 0, 13, 84, 181, 0, 122, 0, 191, 122, 0, 122, 0, 186, 122, 0, 169, 0, 123, 203, 124, 0, 51, 0, 52, 0, 50, 0, 0, 186, 0, 195, 0, 186, 125, 195, 0, 0, 188, 0, 19, 177, 0, 190, 0, 189, 190, 0, 9, 115, 210, 214, 116, 177, 0, 210, 0, 193, 0, 205, 191, 118, 0, 195, 0, 191, 83, 191, 84, 191, 0, 191, 68, 191, 0, 191, 85, 191, 0, 191, 86, 191, 0, 191, 87, 191, 0, 191, 88, 191, 0, 191, 89, 191, 0, 191, 90, 191, 0, 191, 91, 191, 0, 191, 92, 191, 0, 191, 93, 191, 0, 191, 94, 191, 0, 191, 95, 191, 0, 191, 96, 191, 0, 191, 97, 191, 0, 191, 98, 191, 0, 191, 99, 191, 0, 191, 100, 191, 0, 191, 101, 191, 0, 191, 104, 191, 0, 191, 102, 191, 0, 191, 103, 191, 0, 100, 191, 0, 99, 191, 0, 108, 191, 0, 109, 191, 0, 191, 25, 204, 0, 197, 0, 194, 0, 38, 0, 41, 0, 30, 0, 201, 0, 115, 193, 116, 0, 115, 210, 116, 0, 194, 117, 191, 118, 0, 196, 117, 191, 118, 0, 193, 119, 214, 0, 192, 0, 191, 82, 191, 0, 191, 71, 191, 0, 191, 72, 191, 0, 191, 73, 191, 0, 191, 74, 191, 0, 191, 75, 191, 0, 191, 76, 191, 0, 191, 77, 191, 0, 191, 78, 191, 0, 191, 79, 191, 0, 191, 80, 191, 0, 191, 81, 191, 0, 106, 191, 0, 107, 191, 0, 191, 106, 0, 191, 107, 0, 196, 0, 198, 0, 152, 0, 210, 115, 202, 116, 0, 193, 119, 214, 115, 202, 116, 0, 54, 115, 202, 116, 0, 54, 115, 191, 116, 0, 115, 206, 200, 116, 191, 0, 115, 210, 116, 191, 0, 115, 205, 118, 200, 116, 191, 0, 114, 206, 117, 199, 0, 114, 210, 117, 199, 0, 114, 210, 0, 57, 210, 115, 202, 116, 0, 114, 210, 115, 202, 116, 0, 210, 57, 210, 115, 202, 116, 0, 210, 115, 202, 116, 210, 0, 191, 118, 0, 191, 118, 117, 199, 0, 191, 118, 117, 118, 200, 0, 0, 200, 117, 118, 0, 61, 0, 67, 0, 62, 0, 63, 0, 64, 0, 65, 0, 46, 0, 17, 0, 0, 203, 0, 191, 0, 203, 125, 191, 0, 205, 118, 200, 0, 210, 0, 206, 200, 0, 210, 117, 0, 207, 0, 56, 207, 0, 5, 0, 7, 0, 10, 0, 36, 0, 26, 0, 20, 0, 28, 0, 15, 0, 69, 0, 48, 0, 0, 32, 0, 0, 34, 0, 0, 33, 0, 0, 37, 0, 0, 44, 0, 0, 45, 0, 0, 18, 0, 0, 29, 0, 0, 40, 0, 32, 0, 34, 0, 33, 0, 37, 0, 44, 0, 45, 0, 18, 0, 29, 0, 40, 0, 0, 208, 32, 0, 208, 34, 0, 208, 33, 0, 208, 37, 0, 208, 44, 0, 208, 45, 0, 208, 18, 0, 208, 29, 0, 208, 40, 0, 208, 0, 209, 4, 0, 214, 0, 210, 119, 214, 0, 214, 0, 214, 119, 214, 0, 41, 119, 214, 0, 211, 0, 211, 125, 212, 0, 210, 0, 213, 125, 210, 0, 66, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, 104, 107, 108, 110, 113, 115, 118, 130, 135, 153, 156, 157, 160, 161, 162, 163, 167, 168, 172, 193, 204, 215, 237, 261, 283, 289, 290, 294, 295, 299, 303, 308, 311, 315, 319, 324, 329, 330, 331, 333, 336, 337, 338, 342, 343, 344, 349, 350, 353, 355, 357, 359, 361, 365, 366, 369, 370, 375, 391, 394, 395, 396, 399, 400, 403, 413, 429, 436, 444, 445, 454, 461, 470, 482, 495, 507, 526, 530, 533, 569, 583, 586, 596, 609, 610, 613, 614, 615, 616, 619, 621, 625, 627, 633, 637, 644, 659, 662, 665, 675, 693, 702, 703, 706, 707, 710, 711, 714, 715, 718, 719, 722, 725, 728, 732, 733, 736, 747, 748, 749, 750, 751, 760, 761, 770, 777, 784, 791, 792, 799, 807, 815, 828, 832, 833, 834, 835, 836, 837, 844, 845, 852, 859, 860, 861, 862, 869, 876, 887, 888, 896, 897, 904, 908, 914, 918, 923, 932, 934, 938, 944, 953, 955, 959, 963, 965, 969, 972, 986, 990, 1002, 1004, 1008, 1012, 1015, 1019, 1023, 1027, 1031, 1035, 1039, 1043, 1047, 1051, 1055, 1059, 1063, 1067, 1071, 1075, 1079, 1083, 1087, 1171, 1177, 1184, 1191, 1198, 1200, 1202, 1204, 1206, 1208, 1212, 1214, 1218, 1231, 1240, 1249, 1253, 1257, 1263, 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1287, 1290, 1293, 1296, 1302, 1309, 1314, 1319, 1321, 1323, 1334, 1360, 1364, 1374, 1383, 1394, 1401, 1415, 1422, 1429, 1433, 1443, 1447, 1473, 1531, 1535, 1540, 1551, 1553, 1565, 1567, 1569, 1571, 1573, 1575, 1577, 1579, 1583, 1587, 1594, 1599, 1607, 1615, 1619, 1631, 1646, 1647, 1651, 1655, 1659, 1663, 1667, 1671, 1675, 1679, 1683, 1690, 1696, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1709, 1709, 1709, 1710, 1710, 1710, 1711, 1711, 1719, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1735, 1736, 1740, 1742, 1748, 1750, 1754, 1760, 1763, 1776, 1777, 1780 }; #endif #if YYDEBUG != 0 || defined (YYERROR_VERBOSE) static const char * const yytname[] = { "$","error","$undefined.","ERROR", "ABSTRACT","BOOLEAN","BREAK","BYTE","CASE","CATCH","CHAR","CLASS","CONTINUE", "DEFAULT","DO","DOUBLE","EXTENDS","FALSE_TOKEN","FINAL","FINALLY","FLOAT","FOR", "IF","IMPLEMENTS","NSLIMPORT","INSTANCEOF","INT","INTERFACE","LONG","NATIVE", "NULL_TOKEN","PACKAGE","PRIVATE","PROTECTED","PUBLIC","RETURN","SHORT","STATIC", "SUPER","SWITCH","SYNCHRONIZED","THIS","THROW","THROWS","TRANSIENT","VOLATILE", "TRUE_TOKEN","TRY","VOID","WHILE","VERBATIM_OFF","VERBATIM_NSLJ","VERBATIM_NSLC", "NSLJ","NSLMULTI","CONNECT","SPECIAL","NSLMODULE","NSLMODEL","NSLCLASS","ARRAY", "INT_LITERAL","CHARACTER_LITERAL","LONG_LITERAL","FLOAT_LITERAL","DOUBLE_LITERAL", "SYMBOL","STRING_LITERAL","BIT_MUL","STRING","NOT_AN_OPERATOR","SHIFT_RIGHT_EQUALS", "FILL_SHIFT_RIGHT_EQUALS","SHIFT_LEFT_EQUALS","ADD_EQUALS","SUB_EQUALS","MUL_EQUALS", "DIV_EQUALS","MOD_EQUALS","AND_EQUALS","XOR_EQUALS","OR_EQUALS","'='","'?'", "':'","OR","AND","'|'","'&'","'^'","EQUAL_COMPARE","NOT_EQUAL","LTEQ","GTEQ", "'<'","'>'","BITSHIFT_RIGHT","FILL_SHIFT_RIGHT","SHIFT_LEFT","'+'","'-'","'*'", "'/'","'%'","'@'","CAST","INCR","DECR","'!'","'~'","UMINUS","UPLUS","POST_INCR", "POST_DECR","NEW","'('","')'","'['","']'","'.'","LOWER_THAN_ELSE","ELSE","';'", "'{'","'}'","','","compilationUnit","optPackage","importList","nslImport","typeDeclarationList", "typeDeclaration","classDeclaration","nslclassDecl1","nslclassDecl2","nslextends", "nslreturn","nslclassBlock","classDecl1","classDecl2","interfaceDeclaration", "interfaceDecl1","interfaceDecl2","classModifierList","extends","interfaceExtends", "interfaces","classBlock","fieldList","field","CARRAYDECL","Carray","nslInstantiation", "nslCouple","nslArgs","nslPars","staticInitializer","methodDeclaration","methodDecl1", "methodDecl3","constructorDeclaration","constructorDecl1","constructorDecl2", "optThrows","optConstructorStatements","methodBlock","optParameterList","parameterList", "parameter","variableDeclaration","subvariableDeclaration","partialVariable", "optInitializer","initializer","optVariableInitializerList","variableInitializerList", "optComma","compoundStatement","compoundStatement1","compoundStatement2","statementList", "statement","optExpression","forInit","verbatim_line","forIncr","expressionStatements", "optFinally","finally","catchList","catchItem","expression","symbolArrayExpression", "nonSymbolExpression","nonSymbolComplexPrimary","expressionStatement","methodCall", "cast","newExpression","allocationBounds","optArrayBounds","literal","optArgumentList", "argumentList","type","qualifiedSymbolWithLBracket","simpleType","Erh_simpleType", "XmodifierList","modifierList","qualifiedSymbol","portrefSymbol","portrefList", "qualifiedSymbolList","simpleSymbol", NULL }; #endif static const short yyr1[] = { 0, 126, 127, 127, 127, 128, 128, 129, 129, 129, 129, 130, 130, 131, 131, 131, 131, 132, 132, 133, 133, 133, 133, 133, 133, 134, 135, 135, 136, 136, 137, 138, 139, 140, 141, 142, 143, 143, 143, 143, 143, 144, 144, 144, 145, 145, 145, 146, 146, 147, 147, 147, 147, 147, 148, 148, 149, 149, 149, 149, 149, 149, 149, 149, 149, 150, 150, 151, 151, 151, 151, 152, 152, 153, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 163, 164, 164, 164, 164, 165, 165, 166, 166, 167, 167, 168, 169, 169, 170, 171, 171, 172, 172, 173, 173, 174, 174, 175, 175, 176, 176, 177, 178, 179, 180, 180, -1, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 182, 182, 183, 183, 183, -1, 184, 184, 184, 185, 185, 186, 186, 187, 187, 188, 189, 189, 190, 191, 191, 192, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 194, 194, 194, 194, 194, 194, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 196, 196, 196, 196, 197, 197, 197, 198, 198, 198, 198, 198, 198, 198, 199, 199, 199, 200, 200, 201, 201, 201, 201, 201, 201, 201, 201, 202, 202, 203, 203, 204, 204, 204, 205, 206, 206, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, 209, 210, 210, 211, 211, 211, 212, 212, 213, 213, 214 }; static const short yyr2[] = { 0, 3, 0, 3, 1, 0, 2, 4, 3, 4, 1, 0, 2, 1, 1, 1, 1, 2, 2, 7, 7, 7, 11, 11, 11, 1, 1, 2, 1, 2, 1, 5, 1, 2, 4, 1, 0, 2, 2, 2, 2, 0, 2, 3, 0, 2, 3, 0, 2, 2, 3, 3, 4, 1, 1, 2, 1, 1, 3, 4, 1, 1, 2, 1, 1, 5, 5, 2, 4, 1, 3, 2, 2, 2, 4, 3, 3, 2, 2, 9, 1, 2, 4, 6, 0, 2, 0, 2, 6, 6, 1, 1, 0, 1, 1, 3, 3, 2, 2, 2, 4, 5, 0, 2, 1, 3, 0, 2, 1, 3, 0, 1, 2, 1, 2, 0, 2, 2, 1, 2, 2, 1, 2, 1, 5, 7, 5, 7, 1, 11, 9, 9, 7, 4, 2, 3, 2, 3, 2, 3, 7, 3, 5, 3, 4, 3, 5, 4, 3, 1, 2, 1, 2, 1, 3, 1, 1, 1, 0, 1, 1, 3, 0, 1, 2, 1, 2, 6, 1, 1, 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 4, 6, 4, 4, 5, 4, 6, 4, 4, 2, 5, 5, 6, 5, 2, 4, 5, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 3, 3, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 3, 1, 3, 3, 1, 3, 1, 3, 1 }; static const short yydefact[] = { 2, 0, 157, 155, 156, 5, 4, 316, 0, 307, 11, 0, 3, 0, 0, 6, 36, 10, 308, 0, 0, 36, 13, 12, 14, 0, 0, 15, 0, 0, 16, 0, 8, 0, 0, 295, 18, 25, 30, 53, 17, 32, 33, 35, 40, 0, 37, 0, 39, 38, 0, 0, 0, 7, 9, 0, 0, 0, 295, 295, 57, 56, 49, 295, 54, 63, 60, 0, 61, 92, 64, 305, 0, 41, 44, 0, 0, 0, 0, 0, 0, 0, 0, 51, 50, 55, 90, 113, 78, 80, 91, 115, 267, 268, 269, 274, 272, 271, 273, 270, 276, 0, 275, 81, 0, 93, 94, 0, 0, 247, 265, 262, 302, 303, 296, 298, 297, 299, 304, 300, 301, 306, 0, 0, 0, 316, 0, 0, 0, 62, 77, 0, 0, 0, 47, 0, 0, 34, 92, 92, 92, 92, 92, 92, 0, 0, 52, 112, 0, 266, 84, 0, 247, 247, 263, 264, 0, 97, 0, 0, 0, 0, 73, 98, 58, 92, 71, 72, 0, 42, 0, 0, 31, 314, 45, 0, 0, 0, 0, 0, 0, 0, 59, 82, 0, 0, 0, 0, 0, 0, 256, 0, 0, 203, 28, 201, 0, 0, 202, 0, 255, 0, 0, 0, 0, 0, 0, 249, 251, 252, 253, 254, 250, 0, 0, 0, 0, 0, 0, 0, 0, 118, 114, 0, 229, 123, 121, 116, 128, 0, 210, 169, 200, 171, 227, 199, 228, 204, 0, 168, 307, 0, 0, 95, 96, 261, 0, 0, 99, 0, 247, 0, 0, 0, 0, 259, 171, 0, 258, 0, 168, 316, 43, 48, 0, 46, 0, 0, 0, 19, 20, 21, 119, 120, 134, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 195, 194, 223, 224, 196, 197, 0, 239, 169, 0, 247, 168, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 226, 0, 0, 122, 0, 0, 0, 257, 0, 85, 0, 248, 92, 247, 102, 0, 0, 257, 76, 75, 0, 74, 315, 26, 0, 0, 0, 0, 135, 0, 137, 148, 0, 151, 153, 0, 0, 171, 0, 0, 0, 141, 0, 0, 145, 162, 165, 0, 0, 259, 0, 0, 0, 0, 309, 257, 0, 257, 0, 205, 247, 0, 206, 139, 198, 173, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 211, 0, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, 193, 191, 209, 0, 0, 170, 0, 0, 143, 201, 202, 0, 115, 0, 102, 0, 100, 69, 66, 0, 65, 260, 27, 0, 0, 0, 147, 0, 149, 158, 0, 152, 0, 0, 0, 0, 0, 164, 144, 163, 166, 0, 133, 233, 232, 0, 312, 0, 0, 0, 0, 0, 237, 0, 238, 0, 0, 235, 0, 257, 207, 208, 257, 230, 257, 257, 83, 0, 247, 101, 106, 103, 104, 0, 67, 257, 257, 257, 0, 0, 159, 150, 171, 124, 146, 142, 0, 126, 311, 0, 0, 0, 0, 310, 240, 244, 241, 0, 234, 172, 0, 0, 243, 0, 0, 84, 108, 0, 110, 70, 0, 0, 0, 0, 0, 0, 0, 0, 313, 0, 0, 0, 0, 236, 231, 242, 0, 0, 79, 105, 111, 107, 68, 22, 23, 24, 127, 140, 125, 0, 0, 0, 0, 132, 247, 245, 115, 115, 109, 167, 0, 0, 0, 246, 0, 0, 0, 130, 131, 0, 129, 0, 0, 0 }; static const short yydefgoto[] = { 600, 5, 10, 15, 16, 23, 24, 25, 36, 367, 223, 37, 26, 40, 27, 28, 42, 29, 134, 137, 172, 38, 63, 64, 126, 457, 224, 128, 166, 167, 65, 66, 67, 88, 68, 69, 103, 242, 450, 89, 104, 105, 106, 225, 157, 158, 455, 510, 546, 547, 570, 226, 91, 147, 148, 227, 468, 377, 228, 518, 378, 477, 386, 387, 388, 229, 230, 231, 232, 256, 234, 235, 236, 491, 154, 237, 392, 258, 107, 238, 109, 110, 71, 72, 239, 485, 486, 174, 9 }; static const short yypact[] = { 236, -12,-32768,-32768,-32768,-32768,-32768,-32768, -39,-32768, 174, -12,-32768, -12, 95,-32768, 10,-32768,-32768, 2, -12, -32768,-32768,-32768,-32768, -3, -3,-32768, -3, 530,-32768, 11,-32768, 44, 288, 64,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768, -12,-32768, -12,-32768,-32768, -12, -12, -12,-32768,-32768, -12, -12, -12,-32768,-32768,-32768, -32768, 39, 75,-32768,-32768,-32768, 129,-32768, 2892,-32768, 522, 28, 48, 106, 52, 68, 79, 89, 99, 144, 408, 26,-32768, 110,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 275,-32768,-32768, 27, 54,-32768, -12, 157,-32768,-32768, 104,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768, 2892, 2892, 2892, 124, 147, 178, 187,-32768,-32768, 185, -12, 296, 295, -12, 310,-32768, 2892, 2892, 2892, 2892, 2892, 2892, 207, 215,-32768,-32768, 711,-32768, 290, 2892,-32768,-32768, 221,-32768, -12,-32768, 121, -12, -12, -12,-32768,-32768,-32768, 1358,-32768,-32768, 274, 223, -12, -12,-32768, 223, 227, -12, 239, 243, 245, 246, 248, 249,-32768,-32768, 169, -31, 1801, -10, 282, 1247,-32768, 252, 253,-32768,-32768,-32768, 257, 258,-32768, 1801,-32768, 259, 260, 266, 271, 633, -12,-32768,-32768,-32768,-32768, -32768,-32768, 1801, 1801, 1801, 1801, 1801, 1801, 2892, 1358, -32768,-32768, 1516,-32768,-32768,-32768,-32768,-32768, 2789,-32768, 291, 268, 289, 297,-32768,-32768,-32768, 1801, -30, 328, -12, 292,-32768, 221, 221, 298, 304,-32768, -12,-32768, 303, 305, 306, 307, 2789,-32768, 308, 300, 421, 162, 347, 223, 227, -12, 227, 107, 107, 107,-32768,-32768, -32768,-32768,-32768,-32768, 309, 2672,-32768, 311, 1247, 378, 1452, 1801, 1801, 1801, 1846, 122, 1801, 1745, -13,-32768, -60, 177, 177, 177, 177, 177, 177, 312, 72, 128, 1610,-32768, -50,-32768, 1905, 2892, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, 1801, -32768,-32768, -12, 1801,-32768, 1801, 2023, -12, 1801, 1247, 227, 831,-32768, 2892,-32768, 21, 1640, 1640, 1801,-32768, -32768, 1801,-32768, 223,-32768, 412, -12, -12, -12,-32768, 1247,-32768,-32768, 315,-32768,-32768, 1546, 151, 117, 2318, 2377, 2436,-32768, 317, 259,-32768, 122,-32768, 2495, 313, 2554, 318, 324, -15, 319, 327, 1801, 1801, 1801, 1801, -32768,-32768, 193, 199,-32768,-32768, 103, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2789, 2709, 925, 1029, 302, 1133, 1237, 1780, 1780, 576, 576, 576, 576, 397, 397, 397, 247, 247, 103, 103, 103, 210, 321, 2082, 2141,-32768, 65, 331,-32768, 334, 335, 330, -32768, 339, 21, 1388,-32768, 343,-32768, 2200,-32768, 2789, -32768, 349, 351, 353,-32768, 1801,-32768, 1801, 1964,-32768, 1801, 1247, 259, 1247, -12,-32768,-32768,-32768,-32768, 1247, -32768,-32768,-32768, -12, 345, 348, 31, -12, 355, 2259, -32768, 364,-32768, 204, 1801, 210, 1801, 1801,-32768,-32768, 1801, -12, 1801, 1801,-32768, 935,-32768,-32768, 1388,-32768, 2789, 1640, 372, 1801, 1801, 1801, 2613, 365, 366,-32768, 132, 369,-32768,-32768, -29,-32768,-32768, -15, 368, -15, 386,-32768,-32768, 377,-32768, 1801, 210, 816, 399, 402, 223, 406, 407, -19,-32768, 389, 400,-32768, 1640, 410, 417, 422, 415, 1247, 1247, 426,-32768, 41, 425, 423, 1715, 210,-32768,-32768, 424, 428,-32768,-32768, 1388,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768, 259, -15, 437, 442,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 436, 439, 441, 221, 1039, 1143, 449,-32768,-32768, 447,-32768, 524, 571,-32768 }; static const short yypgoto[] = {-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 57,-32768, -32768,-32768,-32768,-32768,-32768,-32768, 551,-32768,-32768,-32768, 270,-32768, 510,-32768, -356, 58,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768, 34,-32768,-32768, -123, -32768, 433, -69,-32768,-32768, 126, -476,-32768,-32768,-32768, -66,-32768,-32768, -439, -175,-32768,-32768, 192,-32768, 118, -32768, 198,-32768, 203, 293,-32768, 354,-32768, -137,-32768, -32768,-32768, -379, -144,-32768, -127,-32768, -100, -65, -111, 490, 534, 536, 30, -284, -394, -146, -11 }; #define YYLAST 2961 static const short yytable[] = { 18, 90, 459, 129, 108, 395, 130, 348, 244, 245, -1, 233, 506, 160, 280, 176, 177, 178, 179, 180, 181, 493, 156, 159, 241, 263, 393, 348, 393, 265, 121, 8, 121, 545, 73, 7, 74, 7, 257, 75, 76, 77, 254, 19, 78, 79, 80, 2, 3, 4, 33, 7, 233, 7, 7, 397, 7, 108, 108, 11, 2, 3, 4, 21, 132, 349, 404, 155, 58, 168, 31, 145, 393, 108, 108, 108, 108, 108, 108, 58, 11, 122, 393, 12, 123, 349, 108, 155, 124, 168, 11, 274, 7, 587, 125, 351, 152, 7, 246, 111, 259, 133, 131, 454, 373, 159, 356, 7, 298, 302, 394, 131, 277, 161, 2, 3, 4, 59, 60, 20, 35, 11, 135, 365, 32, 2, 3, 4, 59, 60, 127, 384, 22, 53, 557, 286, 559, 240, 246, 144, 108, 385, 233, 150, 379, 247, 593, 594, 250, 251, 252, 87, 111, 111, 530, 301, 548, 18, 403, 136, 366, 83, 169, 11, 579, 173, 54, 138, 111, 111, 111, 111, 111, 111, 275, 447, 278, 451, 240, 151, 501, 111, 584, 139, 11, 589, 61, 399, 62, 400, 162, 11, 6, 571, 140, 260, 465, 61, 13, 84, 262, 173, 17, 531, 141, 173, 406, 340, 30, 341, 342, 453, 376, 233, 142, 233, 190, 39, 39, 348, 39, 155, 446, 11, 2, 3, 4, 70, -262, 193, 14, 452, 146, -160, 233, 111, 291, 195, 355, -160, 198, 108, -160, 248, 401, 200, 249, 343, -161, 299, 303, 86, 87, 253, -161, 70, 206, -161, 494, 143, 207, 208, 209, 210, 211, 125, 212, 1, 240, 163, 489, 173, 492, 470, 580, 153, 471, 349, 396, 155, 92, 168, 93,-32768,-32768, 94, 2, 3, 4, 108, 95, 272, 44, 273, 364, 96, 41, 522, 43, 524, 164, 97, 165, 98, 168, 526, 46, 217, 218, 495, 246, 99, 170, 219, 220, 307, 341, 342, 171, 476, 536, 246, 48, 100, 368, 369, 175, 306, 49, 182, 183, 379, 441, 241, 521, 233, 111, 233, 246, 240, 261, 240, 11, 233, 102, 55, 56, 57, 337, 338, 339, 340, 264, 341, 342, 266, 462, 463, 464, 267, 240, 268, 269, 544, 270, 271, 279, 281, 282, 233, 307, 539, 283, 284, 540, 287, 542, 543, 445, 576, 577, 288, 87, 396, 111, 344, 289, 550, 551, 552, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 523, 341, 342, 343, 345, 350, 363, 346, 352, 353, 233, 233, 354, 357, 359, 358, 360, 361, 362, 112, 374, 461, 398, 466, 370, 475, 372, 483, 481, 498, 113, 190, 592, 114, 115, 116, 484, 487, 117, 488, 502, 118, 503, 504, 193, 119, 120, 505, 507, 233, 233, 255, 195, 512, 240, 198, 240, 514, 307, 515, 200, 516, 240, 528, 533, 529, 527, 125, 253, 396, 532, 206, 276, 535, 554, 207, 208, 209, 210, 211, 125, 212, 549, 555, 471, 285, 558, 561, 240, 335, 336, 337, 338, 339, 340, 560, 341, 342, 525, 292, 293, 294, 295, 296, 297, 588, 568, 556, 563, 305, 396, 564, 396, 213, 214, 565, 566, 601, 569, 572, 215, 216, 217, 218, 347, 541, 573, 44, 219, 220, 575, 574, 153, 112, 45, 578, 240, 240, 582, 585, 396, 46, 581, 586, 113, 347, 590, 114, 115, 116, 47, 591, 117, 595, 596, 118, 597, 48, 598, 119, 120, 396, 599, 49, 602, 34, 85, 300, 380, 381, 382, 567, 508, 389, 391, 240, 240, 243, 478, 519, 50, 51, 52, 479, 149, 81, 0, 347, 82, 0, 0, 0, 0, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 0, 0, 0, 442, 92, 443, 93, 0, 255, 94, 307, 0, 0, 0, 95, 0, 458, 458, 391, 96, 0, 460, 0, 0, 0, 97, 0, 98, 0, 0, 0, 0, 0, 0, 290, 99, 469, 0, 332, 333, 334, 335, 336, 337, 338, 339, 340, 100, 341, 342, 0, 0, 0, 0, 0, 101, 255, 490, 255, 490, 0, 0, 0, 496, 0, 7, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 187, 188, 189, 0, 0, 190, 0, 0, 0, 191, 192, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 194, 511, 0, 195, 196, 197, 198, 199, 0, 0, 0, 200, 201, 517, 202, 2, 3, 4, 0, 203, 204, 205, 206, 0, 0, 124, 207, 208, 209, 210, 211, 125, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 537, 0, 538, 255, 0, 0, 255, 0, 255, 255, 0, 0, 0, 0, 511, 0, 0, 458, 0, 255, 255, 255, 213, 214, 0, 0, 0, 0, 0, 215, 216, 217, 218, 0, 0, 0, 0, 219, 220, 0, 0, 562, 0, 0, 184, 221, 87, 222, 0, 185, 0, 186, 0, 306, 458, 187, 188, 189, 0, 0, 190, 0, 0, 0, 191, 192, 490, 0, 0, 0, 0, 0, 0, 193, 511, 0, 0, 0, 194, 0, 0, 448, 196, 197, 449, 199, 0, 0, 0, 200, 201, 0, 202, 2, 3, 4, 307, 203, 204, 205, 206, 0, 0, 124, 207, 208, 209, 210, 211, 125, 212, 320, 0, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 213, 214, 0, 0, 0, 0, 184, 215, 216, 217, 218, 185, 0, 186, 0, 219, 220, 187, 188, 189, 306, 0, 190, 221, 87, -86, 191, 192, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 194, 0, 0, 195, 196, 197, 198, 199, 0, 0, 0, 200, 201, 0, 202, 2, 3, 4, 0, 203, 204, 205, 206, 307, 0, 124, 207, 208, 209, 210, 211, 125, 212, 0, 0, 0, 0, 0, 0, 0, 0, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 213, 214, 0, 0, 0, 0, 184, 215, 216, 217, 218, 185, 0, 186, 0, 219, 220, 187, 188, 189, 306, 0, 190, 221, 87, -87, 191, 192, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 194, 0, 0, 195, 196, 197, 198, 199, 0, 0, 0, 200, 201, 0, 202, 2, 3, 4, 0, 203, 204, 205, 206, 307, 0, 124, 207, 208, 209, 210, 211, 125, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 213, 214, 0, 0, 0, 0, 184, 215, 216, 217, 218, 185, 0, 186, 0, 219, 220, 187, 188, 189, 306, 0, 190, 221, 87, -88, 191, 192, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 194, 0, 0, 195, 196, 197, 198, 199, 0, 0, 0, 200, 201, 0, 202, 2, 3, 4, 0, 203, 204, 205, 206, 307, 0, 124, 207, 208, 209, 210, 211, 125, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 213, 214, 0, 0, 0, 0, 184, 215, 216, 217, 218, 185, 0, 186, 0, 219, 220, 187, 188, 189, 306, 0, 190, 221, 87, -89, 191, 192, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 194, 0, 0, 195, 196, 197, 198, 199, 0, 0, 0, 200, 201, 0, 202, 2, 3, 4, 0, 203, 204, 205, 206, 307, 0, 124, 207, 208, 209, 210, 211, 125, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 213, 214, 0, 0, 0, 0, 0, 215, 216, 217, 218, 0, 0, 0, 0, 219, 220, 92, 0, 93, 0, 0, 94, 221, 87, 0, 0, 95, 0, 190, 0, 0, 96, 0, 0, 0, 0, 0, 97, 0, 98, 0, 193, 0, 0, 0, 0, 0, 99, 0, 195, 0, 0, 198, 0, 0, 0, 0, 200, 190, 100, 0, 0, 0, 0, 0, 253, 0, 101, 206, 0, 0, 193, 207, 208, 209, 210, 211, 125, 212, 195, 102, 0, 198, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, 206, 0, 0, 0, 207, 208, 209, 210, 211, 125, 212, 0, 213, 214, 0, 0, 0, 0, 0, 215, 216, 217, 218, 0, 190, 0, 0, 219, 220, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 213, 214, 0, 195, 0, 0, 198, 215, 216, 217, 218, 200, 0, 0, 0, 219, 220, 0, 0, 253, 0, 123, 206, 0, 509, 124, 207, 208, 209, 210, 211, 125, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 213, 214, 0, 195, 0, 0, 198, 215, 216, 217, 218, 200, 190, 0, 0, 219, 220, 0, 0, 253, 0, 0, 206, 375, 0, 193, 207, 208, 209, 210, 211, 125, 212, 195, 0, 0, 198, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, 206, 0, 0, 0, 207, 208, 209, 210, 211, 125, 212, 0, 213, 214, 0, 0, 0, 0, 0, 215, 216, 217, 218, 0, 190, 0, 0, 219, 220, 0, 0, 0, 0, 0, 0, 304, 0, 193, 0, 0, 0, 0, 213, 214, 0, 195, 0, 0, 198, 215, 216, 217, 218, 200, 190, 0, 0, 219, 220, 0, 0, 253, 0, 0, 206, 467, 0, 193, 207, 208, 209, 210, 211, 125, 212, 195, 0, 0, 198, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, 206, 0, 0, 0, 207, 208, 209, 210, 211, 125, 212, 0, 213, 214, 0, 0, 0, 0, 0, 215, 216, 217, 218, 0, 0, 0, 0, 219, 220, 0, 0, 402, 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, 213, 214, 0, 0, 0, 0, 193, 215, 216, 217, 218, 0, 0, 0, 195, 219, 220, 198, 0, 456, 0, 0, 200, 190, 0, 0, 0, 0, 0, 0, 253, 0, 0, 206, 0, 0, 193, 207, 208, 209, 210, 211, 125, 212, 195, 0, 0, 198, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, 206, 0, 0, 306, 207, 208, 209, 210, 211, 125, 212, 0, 213, 214, 0, 0, 190, 0, 0, 215, 216, 217, 218, 0, 0, 0, 0, 219, 220, 193, 0, 583, 0, 0, 0, 0, 0, 195, 0, 0, 198, 0, 213, 214, 0, 200, 307, 0, 0, 215, 216, 217, 218, 253, 0, 0, 206, 219, 220, 390, 207, 208, 209, 210, 211, 125, 212, 0, 0, 306, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 214, 0, 0, 0, 0, 0, 215, 216, 217, 218, 0, 0, 0, 307, 219, 220, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 405, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 520, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 444, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 499, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 500, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 472, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 306, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 553, 0, 0, 0, 0, 306, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 371, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 307, 341, 342, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 497, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 306, 341, 342, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, 0, 0, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 0, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 0, 341, 342, 92, 0, 93, 0, 0, 94, 0, 0, 0, 0, 95, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 97, 0, 98, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 102 }; static const short yycheck[] = { 11, 67, 358, 72, 69, 289, 72, 57, 152, 153, 0, 148, 451, 124, 189, 138, 139, 140, 141, 142, 143, 400, 122, 123, 43, 171, 41, 57, 41, 175, 4, 1, 4, 509, 45, 66, 47, 66, 165, 50, 51, 52, 165, 13, 55, 56, 57, 50, 51, 52, 20, 66, 189, 66, 66, 115, 66, 122, 123, 119, 50, 51, 52, 53, 16, 115, 116, 117, 4, 119, 68, 82, 41, 138, 139, 140, 141, 142, 143, 4, 119, 53, 41, 122, 56, 115, 151, 117, 60, 119, 119, 122, 66, 569, 66, 241, 107, 66, 117, 69, 165, 53, 72, 82, 279, 205, 250, 66, 219, 220, 123, 81, 122, 124, 50, 51, 52, 53, 54, 24, 123, 119, 16, 16, 122, 50, 51, 52, 53, 54, 72, 9, 122, 122, 528, 201, 530, 148, 117, 81, 205, 19, 279, 116, 281, 156, 585, 586, 159, 160, 161, 123, 122, 123, 123, 220, 512, 168, 302, 53, 53, 122, 132, 119, 123, 135, 122, 115, 138, 139, 140, 141, 142, 143, 185, 350, 187, 352, 189, 125, 115, 151, 561, 115, 119, 579, 122, 115, 124, 117, 66, 119, 0, 549, 115, 165, 371, 122, 24, 124, 170, 171, 10, 487, 115, 175, 306, 104, 16, 106, 107, 355, 281, 350, 115, 352, 17, 25, 26, 57, 28, 117, 349, 119, 50, 51, 52, 35, 66, 30, 56, 354, 122, 116, 371, 205, 206, 38, 249, 122, 41, 306, 125, 122, 116, 46, 125, 119, 116, 219, 220, 122, 123, 54, 122, 63, 57, 125, 402, 115, 61, 62, 63, 64, 65, 66, 67, 31, 279, 122, 397, 241, 399, 122, 558, 118, 125, 115, 289, 117, 5, 119, 7, 106, 107, 10, 50, 51, 52, 354, 15, 122, 4, 124, 264, 20, 26, 472, 28, 474, 122, 26, 115, 28, 119, 480, 18, 108, 109, 116, 117, 36, 16, 114, 115, 68, 106, 107, 23, 385, 116, 117, 34, 48, 267, 268, 16, 25, 40, 122, 115, 468, 343, 43, 471, 472, 306, 474, 117, 350, 66, 352, 119, 480, 69, 57, 58, 59, 101, 102, 103, 104, 125, 106, 107, 116, 367, 368, 369, 116, 371, 116, 116, 507, 116, 116, 84, 115, 115, 506, 68, 498, 115, 115, 501, 115, 503, 504, 348, 554, 555, 115, 123, 394, 354, 117, 115, 514, 515, 516, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 473, 106, 107, 119, 122, 84, 66, 117, 123, 118, 554, 555, 115, 117, 115, 117, 116, 116, 125, 18, 49, 16, 117, 115, 122, 115, 122, 116, 122, 115, 29, 17, 583, 32, 33, 34, 119, 125, 37, 119, 116, 40, 115, 115, 30, 44, 45, 124, 116, 593, 594, 165, 38, 117, 472, 41, 474, 115, 68, 115, 46, 115, 480, 125, 116, 124, 484, 66, 54, 487, 488, 57, 186, 116, 116, 61, 62, 63, 64, 65, 66, 67, 117, 121, 125, 199, 125, 117, 506, 99, 100, 101, 102, 103, 104, 116, 106, 107, 475, 213, 214, 215, 216, 217, 218, 578, 124, 525, 116, 223, 528, 116, 530, 99, 100, 116, 116, 0, 125, 116, 106, 107, 108, 109, 238, 502, 116, 4, 114, 115, 122, 116, 118, 18, 11, 116, 554, 555, 122, 122, 558, 18, 124, 122, 29, 259, 116, 32, 33, 34, 27, 116, 37, 124, 122, 40, 122, 34, 116, 44, 45, 579, 122, 40, 0, 21, 63, 220, 282, 283, 284, 544, 453, 287, 288, 593, 594, 151, 387, 468, 57, 58, 59, 387, 101, 58, -1, 301, 59, -1, -1, -1, -1, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, -1, -1, -1, 344, 5, 346, 7, -1, 349, 10, 68, -1, -1, -1, 15, -1, 357, 358, 359, 20, -1, 362, -1, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, 35, 36, 377, -1, 96, 97, 98, 99, 100, 101, 102, 103, 104, 48, 106, 107, -1, -1, -1, -1, -1, 56, 397, 398, 399, 400, -1, -1, -1, 404, -1, 66, -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, 6, -1, 8, -1, -1, -1, 12, 13, 14, -1, -1, 17, -1, -1, -1, 21, 22, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, 35, 454, -1, 38, 39, 40, 41, 42, -1, -1, -1, 46, 47, 466, 49, 50, 51, 52, -1, 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, 495, -1, 497, 498, -1, -1, 501, -1, 503, 504, -1, -1, -1, -1, 509, -1, -1, 512, -1, 514, 515, 516, 99, 100, -1, -1, -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, 114, 115, -1, -1, 536, -1, -1, 1, 122, 123, 124, -1, 6, -1, 8, -1, 25, 549, 12, 13, 14, -1, -1, 17, -1, -1, -1, 21, 22, 561, -1, -1, -1, -1, -1, -1, 30, 569, -1, -1, -1, 35, -1, -1, 38, 39, 40, 41, 42, -1, -1, -1, 46, 47, -1, 49, 50, 51, 52, 68, 54, 55, 56, 57, -1, -1, 60, 61, 62, 63, 64, 65, 66, 67, 83, -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, 1, 106, 107, 108, 109, 6, -1, 8, -1, 114, 115, 12, 13, 14, 25, -1, 17, 122, 123, 124, 21, 22, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, 40, 41, 42, -1, -1, -1, 46, 47, -1, 49, 50, 51, 52, -1, 54, 55, 56, 57, 68, -1, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, 99, 100, -1, -1, -1, -1, 1, 106, 107, 108, 109, 6, -1, 8, -1, 114, 115, 12, 13, 14, 25, -1, 17, 122, 123, 124, 21, 22, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, 40, 41, 42, -1, -1, -1, 46, 47, -1, 49, 50, 51, 52, -1, 54, 55, 56, 57, 68, -1, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, 99, 100, -1, -1, -1, -1, 1, 106, 107, 108, 109, 6, -1, 8, -1, 114, 115, 12, 13, 14, 25, -1, 17, 122, 123, 124, 21, 22, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, 40, 41, 42, -1, -1, -1, 46, 47, -1, 49, 50, 51, 52, -1, 54, 55, 56, 57, 68, -1, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, 99, 100, -1, -1, -1, -1, 1, 106, 107, 108, 109, 6, -1, 8, -1, 114, 115, 12, 13, 14, 25, -1, 17, 122, 123, 124, 21, 22, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, 35, -1, -1, 38, 39, 40, 41, 42, -1, -1, -1, 46, 47, -1, 49, 50, 51, 52, -1, 54, 55, 56, 57, 68, -1, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, 99, 100, -1, -1, -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, 114, 115, 5, -1, 7, -1, -1, 10, 122, 123, -1, -1, 15, -1, 17, -1, -1, 20, -1, -1, -1, -1, -1, 26, -1, 28, -1, 30, -1, -1, -1, -1, -1, 36, -1, 38, -1, -1, 41, -1, -1, -1, -1, 46, 17, 48, -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, 30, 61, 62, 63, 64, 65, 66, 67, 38, 69, -1, 41, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, 57, -1, -1, -1, 61, 62, 63, 64, 65, 66, 67, -1, 99, 100, -1, -1, -1, -1, -1, 106, 107, 108, 109, -1, 17, -1, -1, 114, 115, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, 99, 100, -1, 38, -1, -1, 41, 106, 107, 108, 109, 46, -1, -1, -1, 114, 115, -1, -1, 54, -1, 56, 57, -1, 123, 60, 61, 62, 63, 64, 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, -1, -1, -1, -1, 99, 100, -1, 38, -1, -1, 41, 106, 107, 108, 109, 46, 17, -1, -1, 114, 115, -1, -1, 54, -1, -1, 57, 122, -1, 30, 61, 62, 63, 64, 65, 66, 67, 38, -1, -1, 41, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, 57, -1, -1, -1, 61, 62, 63, 64, 65, 66, 67, -1, 99, 100, -1, -1, -1, -1, -1, 106, 107, 108, 109, -1, 17, -1, -1, 114, 115, -1, -1, -1, -1, -1, -1, 122, -1, 30, -1, -1, -1, -1, 99, 100, -1, 38, -1, -1, 41, 106, 107, 108, 109, 46, 17, -1, -1, 114, 115, -1, -1, 54, -1, -1, 57, 122, -1, 30, 61, 62, 63, 64, 65, 66, 67, 38, -1, -1, 41, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, 57, -1, -1, -1, 61, 62, 63, 64, 65, 66, 67, -1, 99, 100, -1, -1, -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, 114, 115, -1, -1, 118, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, 30, 106, 107, 108, 109, -1, -1, -1, 38, 114, 115, 41, -1, 118, -1, -1, 46, 17, -1, -1, -1, -1, -1, -1, 54, -1, -1, 57, -1, -1, 30, 61, 62, 63, 64, 65, 66, 67, 38, -1, -1, 41, -1, -1, -1, -1, 46, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, 57, -1, -1, 25, 61, 62, 63, 64, 65, 66, 67, -1, 99, 100, -1, -1, 17, -1, -1, 106, 107, 108, 109, -1, -1, -1, -1, 114, 115, 30, -1, 118, -1, -1, -1, -1, -1, 38, -1, -1, 41, -1, 99, 100, -1, 46, 68, -1, -1, 106, 107, 108, 109, 54, -1, -1, 57, 114, 115, 116, 61, 62, 63, 64, 65, 66, 67, -1, -1, 25, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, 100, -1, -1, -1, -1, -1, 106, 107, 108, 109, -1, -1, -1, 68, 114, 115, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 118, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 25, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, 25, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 68, 106, 107, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 25, 106, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, 106, 107, 5, -1, 7, -1, -1, 10, -1, -1, -1, -1, 15, -1, -1, -1, -1, 20, -1, -1, -1, -1, -1, 26, -1, 28, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, 69 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ #ifndef alloca #ifdef __GNUC__ #define alloca __builtin_alloca #else /* not GNU C. */ #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) #include #else /* not sparc */ #if defined (MSDOS) && !defined (__TURBOC__) #include #else /* not MSDOS, or __TURBOC__ */ #if defined(_AIX) #include #pragma alloca #else /* not MSDOS, __TURBOC__, or _AIX */ #ifdef __hpux #ifdef __cplusplus extern "C" { void *alloca (unsigned int); }; #else /* not __cplusplus */ void *alloca (); #endif /* not __cplusplus */ #endif /* __hpux */ #endif /* not _AIX */ #endif /* not MSDOS, or __TURBOC__ */ #endif /* not sparc. */ #endif /* not GNU C. */ #endif /* alloca not defined. */ /* This is the parser code that is written into each bison parser when the %semantic_parser declaration is not specified in the grammar. It was written by Richard Stallman by simplifying the hairy parser used when %semantic_parser is specified. */ /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action as one case of the switch. */ #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 #define YYACCEPT return(0) #define YYABORT return(1) #define YYERROR goto yyerrlab1 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(token, value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { yychar = (token), yylval = (value); \ yychar1 = YYTRANSLATE (yychar); \ YYPOPSTACK; \ goto yybackup; \ } \ else \ { yyerror ("syntax error: cannot back up"); YYERROR; } \ while (0) #define YYTERROR 1 #define YYERRCODE 256 #ifndef YYPURE #define YYLEX yylex() #endif #ifdef YYPURE #ifdef YYLSP_NEEDED #ifdef YYLEX_PARAM #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) #else #define YYLEX yylex(&yylval, &yylloc) #endif #else /* not YYLSP_NEEDED */ #ifdef YYLEX_PARAM #define YYLEX yylex(&yylval, YYLEX_PARAM) #else #define YYLEX yylex(&yylval) #endif #endif /* not YYLSP_NEEDED */ #endif /* If nonreentrant, generate the variables here */ #ifndef YYPURE int yychar; /* the lookahead symbol */ YYSTYPE yylval; /* the semantic value of the */ /* lookahead symbol */ #ifdef YYLSP_NEEDED YYLTYPE yylloc; /* location data for the lookahead */ /* symbol */ #endif int yynerrs; /* number of parse errors so far */ #endif /* not YYPURE */ #if YYDEBUG != 0 int yydebug; /* nonzero means print parse trace */ /* Since this is uninitialized, it does not stop multiple parsers from coexisting. */ #endif /* YYINITDEPTH indicates the initial size of the parser's stacks */ #ifndef YYINITDEPTH #define YYINITDEPTH 200 #endif /* YYMAXDEPTH is the maximum size the stacks can grow to (effective only if the built-in stack extension method is used). */ #if YYMAXDEPTH == 0 #undef YYMAXDEPTH #endif #ifndef YYMAXDEPTH #define YYMAXDEPTH 10000 #endif /* Prevent warning if -Wstrict-prototypes. */ #ifdef __GNUC__ int yyparse (void); #endif #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ #ifndef __cplusplus /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void __yy_memcpy (to, from, count) char *to; char *from; int count; { register char *f = from; register char *t = to; register int i = count; while (i-- > 0) *t++ = *f++; } #else /* __cplusplus */ /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void __yy_memcpy (char *to, char *from, int count) { register char *f = from; register char *t = to; register int i = count; while (i-- > 0) *t++ = *f++; } #endif #endif /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. It should actually point to an object. Grammar actions can access the variable by casting it to the proper pointer type. */ #ifdef YYPARSE_PARAM #ifdef __cplusplus #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM #define YYPARSE_PARAM_DECL #else /* not __cplusplus */ #define YYPARSE_PARAM_ARG YYPARSE_PARAM #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; #endif /* not __cplusplus */ #else /* not YYPARSE_PARAM */ #define YYPARSE_PARAM_ARG #define YYPARSE_PARAM_DECL #endif /* not YYPARSE_PARAM */ int yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL { register int yystate; register int yyn; register short *yyssp; register YYSTYPE *yyvsp; int yyerrstatus; /* number of tokens to shift before error messages enabled */ int yychar1 = 0; /* lookahead token as an internal (translated) token number */ short yyssa[YYINITDEPTH]; /* the state stack */ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ short *yyss = yyssa; /* refer to the stacks thru separate pointers */ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ #ifdef YYLSP_NEEDED YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ YYLTYPE *yyls = yylsa; YYLTYPE *yylsp; #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) #else #define YYPOPSTACK (yyvsp--, yyssp--) #endif int yystacksize = YYINITDEPTH; #ifdef YYPURE int yychar; YYSTYPE yylval; int yynerrs; #ifdef YYLSP_NEEDED YYLTYPE yylloc; #endif #endif YYSTYPE yyval; /* the variable used to return */ /* semantic values from the action */ /* routines */ int yylen; #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Starting parse\n"); #endif yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss - 1; yyvsp = yyvs; #ifdef YYLSP_NEEDED yylsp = yyls; #endif /* Push a new state, which is found in yystate . */ /* In all cases, when you get here, the value and location stacks have just been pushed. so pushing a state here evens the stacks. */ yynewstate: *++yyssp = yystate; if (yyssp >= yyss + yystacksize - 1) { /* Give user a chance to reallocate the stack */ /* Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; short *yyss1 = yyss; #ifdef YYLSP_NEEDED YYLTYPE *yyls1 = yyls; #endif /* Get the current used size of the three stacks, in elements. */ int size = yyssp - yyss + 1; #ifdef yyoverflow /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. */ #ifdef YYLSP_NEEDED /* This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow("parser stack overflow", &yyss1, size * sizeof (*yyssp), &yyvs1, size * sizeof (*yyvsp), &yyls1, size * sizeof (*yylsp), &yystacksize); #else yyoverflow("parser stack overflow", &yyss1, size * sizeof (*yyssp), &yyvs1, size * sizeof (*yyvsp), &yystacksize); #endif yyss = yyss1; yyvs = yyvs1; #ifdef YYLSP_NEEDED yyls = yyls1; #endif #else /* no yyoverflow */ /* Extend the stack our own way. */ if (yystacksize >= YYMAXDEPTH) { yyerror("parser stack overflow"); return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); #ifdef YYLSP_NEEDED yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); #endif #endif /* no yyoverflow */ yyssp = yyss + size - 1; yyvsp = yyvs + size - 1; #ifdef YYLSP_NEEDED yylsp = yyls + size - 1; #endif #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Stack size increased to %d\n", yystacksize); #endif if (yyssp >= yyss + yystacksize - 1) YYABORT; } #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Entering state %d\n", yystate); #endif goto yybackup; yybackup: /* Do appropriate processing given the current state. */ /* Read a lookahead token if we need one and don't already have one. */ /* yyresume: */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYFLAG) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* yychar is either YYEMPTY or YYEOF or a valid token in external form. */ if (yychar == YYEMPTY) { #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Reading a token: "); #endif yychar = YYLEX; } /* Convert token to internal form (in yychar1) for indexing tables with */ if (yychar <= 0) /* This means end of input. */ { yychar1 = 0; yychar = YYEOF; /* Don't call YYLEX any more */ #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Now at end of input.\n"); #endif } else { yychar1 = YYTRANSLATE(yychar); #if YYDEBUG != 0 if (yydebug) { fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); /* Give the individual parser a way to print the precise meaning of a token, for further debugging info. */ #ifdef YYPRINT YYPRINT (stderr, yychar, yylval); #endif fprintf (stderr, ")\n"); } #endif } yyn += yychar1; if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) goto yydefault; yyn = yytable[yyn]; /* yyn is what to do for this token type in this state. Negative => reduce, -yyn is rule number. Positive => shift, yyn is new state. New state is final state => don't bother to shift, just return success. 0, or most negative number => error. */ if (yyn < 0) { if (yyn == YYFLAG) goto yyerrlab; yyn = -yyn; goto yyreduce; } else if (yyn == 0) goto yyerrlab; if (yyn == YYFINAL) YYACCEPT; /* Shift the lookahead token. */ #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); #endif /* Discard the token being shifted unless it is eof. */ if (yychar != YYEOF) yychar = YYEMPTY; *++yyvsp = yylval; #ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif /* count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; yystate = yyn; goto yynewstate; /* Do the default action for the current state. */ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; /* Do a reduction. yyn is the number of a rule to reduce with. */ yyreduce: yylen = yyr2[yyn]; if (yylen > 0) yyval = yyvsp[1-yylen]; /* implement default value of the action */ #if YYDEBUG != 0 if (yydebug) { int i; fprintf (stderr, "Reducing via rule %d (line %d), ", yyn, yyrline[yyn]); /* Print the symbols being reduced, and their result. */ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) fprintf (stderr, "%s ", yytname[yyrhs[i]]); fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); } #endif switch (yyn) { case 3: { npp.setPackage(yyvsp[-1]); ; break;} case 7: { //System.err.println("Adding 1: "+$1.text+" "+$2.text+" "+$3.text+" "); // Have to solve globing npp.addGenCode("import",yyvsp[-3]); npp.addModList(yyvsp[-2].text+yyvsp[-1].text); ; break;} case 8: {// System.err.println("Adding 3: "+$1.text+" "+$2.text+" "+$3.text+" "); npp.addGenCode("import",yyvsp[-2]); npp.addModList(yyvsp[-1].text); ; break;} case 9: { //System.err.println("Adding 4: "+$1.text+" "+$2.text+" "+$3.text+" "); if (yyvsp[-1].text.equals("nslAllImports")) { npp.addGenCode("",yyvsp[-3]); npp.addGenCode("import nslj.src.system.*; \n import nslj.src.cmd.*; \n import nslj.src.lang.*; \n import nslj.src.math.*; \n import nslj.src.display.*;", yyvsp[-2]); npp.addGenCode("",yyvsp[-1]); npp.addGenCode("",yyvsp[0]); // System.err.println("nslAllImports added!"); } else { //System.err.println("could not find nslAllImports"); npp.addGenCode("",yyvsp[-3]); npp.addGenCode("import",yyvsp[-2]); npp.addModList(yyvsp[-1].text); npp.parseClass(yyvsp[-1].text, true); } ; break;} case 19: { //System.err.println("I'm here!"); //System.err.println("open NSLMODULE:"+$4.text+" pars:"+$6.text); npp.startClass(new ClassNode(yyvsp[-3],(ParamsNode)yyvsp[-1],"NslModule", null)); // thr if (yyvsp[-1] != null) npp.addLocalVar((ParamsNode)(yyvsp[-1])); npp.addGenCode("",yyvsp[-6]); npp.addGenCode("public class",yyvsp[-4]); if ((yyvsp[-4].text).equals("nslOutModule")) npp.addGenCode(yyvsp[-3].text+" extends NslOutModule",yyvsp[-3]); else if ((yyvsp[-4].text).equals("nslInModule")) npp.addGenCode(yyvsp[-3].text+" extends NslInModule",yyvsp[-3]); else if ((yyvsp[-4].text).equals("nslModule")) npp.addGenCode(yyvsp[-3].text+" extends NslModule",yyvsp[-3]); npp.addGenCode("/*"+yyvsp[-2].text,yyvsp[-2]); npp.addGenCode(yyvsp[0].text+"*/",yyvsp[0]); // if ($5==null) npp.getCurClass().set_constructor_pars(""); // else npp.getCurClass().set_constructor_pars(((ParamsNode)$5).code0); ; break;} case 20: {npp.startClass(new ClassNode(yyvsp[-3],(ParamsNode)yyvsp[-1],"NslModel", null)); // thr if (yyvsp[-1] != null) npp.addLocalVar((ParamsNode)(yyvsp[-1])); npp.addGenCode("",yyvsp[-6]); npp.addGenCode("public class",yyvsp[-4]); //just puts public class npp.addGenCode(yyvsp[-3].text+" extends NslModel",yyvsp[-3]); npp.addGenCode("/*"+yyvsp[-2].text,yyvsp[-2]); npp.addGenCode(yyvsp[0].text+"*/",yyvsp[0]); ; break;} case 21: {npp.startClass(new ClassNode(yyvsp[-3],(ParamsNode)yyvsp[-1],"NslClass", null)); // thr if (yyvsp[-1] != null) npp.addLocalVar((ParamsNode)(yyvsp[-1])); npp.addGenCode("",yyvsp[-6]); npp.addGenCode("public class",yyvsp[-4]); //just puts public class npp.addGenCode(yyvsp[-3].text+" extends NslClass",yyvsp[-3]); npp.addGenCode("/*"+yyvsp[-2].text,yyvsp[-2]); npp.addGenCode(yyvsp[0].text+"*/",yyvsp[0]); ; break;} case 22: {//System.err.println("GOT EXTEND.."); // thr // add_var_to_relvant_scope(npp, $8.text); // System.err.println("parse BASECLASS:"+$8.text+" for "+$3.text); boolean addVar = true; // Add public variables of parent class to its scope //npp.parseClass($8.text, addVar); // thr npp.startClass(new ClassNode(yyvsp[-8],(ParamsNode)yyvsp[-6],"NslModule", null)); // thr if (yyvsp[-6] != null) npp.addLocalVar((ParamsNode)(yyvsp[-6])); npp.addGenCode("public class",yyvsp[-9]); npp.addGenCode("/*"+yyvsp[-7].text,yyvsp[-7]); npp.addGenCode(yyvsp[-5].text+"*/",yyvsp[-5]); npp.addGenCode("/*"+yyvsp[-2].text,yyvsp[-2]); npp.addGenCode(yyvsp[0].text+"*/",yyvsp[0]); if (yyvsp[-1]==null) npp.getCurClass().set_superargs(""); else npp.getCurClass().set_superargs(((ExprsNode)yyvsp[-1]).code0); ; break;} case 23: {//System.err.println("GOT EXTEND.."); // System.err.println("model line: "+$1.text+":"+ $2.text+":"+ $3.text+":"+ $4.text+":"+ $5.text+":"+ $6.text+":"+ $7.text+":"+ $8.text+":"+ $9.text); // thr // add_var_to_relvant_scope(npp, $8.text); // System.err.println("parse BASECLASS:"+$8.text+" for "+$3.text); boolean addVar = true; // Add public variables of parent class to its scope //npp.parseClass($8.text, addVar); // thr npp.startClass(new ClassNode(yyvsp[-8],(ParamsNode)yyvsp[-6], "NslModel", null)); // thr if (yyvsp[-6] != null) npp.addLocalVar((ParamsNode)(yyvsp[-6])); npp.addGenCode("public class",yyvsp[-9]); //just puts public class //npp.addGenCode($3.text+" extends NslModel",$3); npp.addGenCode("/*"+yyvsp[-7].text,yyvsp[-7]); npp.addGenCode(yyvsp[-5].text+"*/",yyvsp[-5]); npp.addGenCode("/*"+yyvsp[-2].text,yyvsp[-2]); npp.addGenCode(yyvsp[0].text+"*/",yyvsp[0]); if (yyvsp[-1]==null) npp.getCurClass().set_superargs(""); else npp.getCurClass().set_superargs(((ExprsNode)yyvsp[-1]).code0); ; break;} case 24: { // thr // add_var_to_relvant_scope(npp, $8.text); // System.err.println("parse BASECLASS:"+$8.text+" for "+$3.text); boolean addVar = true; // Add public variables of parent class to its scope //npp.parseClass($8.text, addVar); // thr npp.startClass(new ClassNode(yyvsp[-8],(ParamsNode)yyvsp[-6],"NslClass", null)); // thr if (yyvsp[-6] != null) npp.addLocalVar((ParamsNode)(yyvsp[-6])); npp.addGenCode("public class",yyvsp[-9]); //just puts public class npp.addGenCode("/*"+yyvsp[-7].text,yyvsp[-7]); npp.addGenCode(yyvsp[-5].text+"*/",yyvsp[-5]); npp.addGenCode("/*"+yyvsp[-2].text,yyvsp[-2]); npp.addGenCode(yyvsp[0].text+"*/",yyvsp[0]); if (yyvsp[-1]==null) npp.getCurClass().set_superargs(""); else npp.getCurClass().set_superargs(((ExprsNode)yyvsp[-1]).code0); ; break;} case 25: { npp.endClass(yyvsp[0]); //System.err.println("nslModule closed"); ; break;} case 27: {npp.addGenCode("",yyvsp[-1]);; break;} case 29: {npp.addGenCode("",yyvsp[-1]);; break;} case 31: {npp.startClass(new ClassNode(yyvsp[-2], yyvsp[-1], yyvsp[0]));; break;} case 32: {npp.endClass(yyvsp[0]);; break;} case 34: {npp.startClass(new ClassNode(yyvsp[-1],null,yyvsp[0]));; break;} case 35: { npp.endClass(yyvsp[0]);; break;} case 39: { npp.addGenCode("external",yyvsp[0]);; break;} case 43: {npp.addGenCode("",yyvsp[-2]);; break;} case 46: {npp.addGenCode("",yyvsp[-2]);; break;} case 49: { yyval = yyvsp[0]; ; break;} case 50: { yyval = yyvsp[0]; ; break;} case 51: { npp.addGenCode("",yyvsp[0]); yyval = yyvsp[-1]; ; break;} case 52: { npp.addGenCode("",yyvsp[0]); yyval = yyvsp[-1]; ; break;} case 57: { npp.getCurClass().add_nsldecl((yyvsp[0].text).substring(2)); npp.addGenCode("",yyvsp[0]); ; break;} case 58: { /*if ($1!=null) System.err.println("----------------"+$1.text+"-------------"); */ //npp.addGenCode(((NslInstNode)$2).typestring+" "+ npp.addGenCode( /* no need for type string*/ ((NslInstNode)yyvsp[-1]).variablename+" ; /*",yyvsp[-1]); npp.getCurClass().add_nsldecl(((NslInstNode)yyvsp[-1]).variablename+"=new "+ ((NslInstNode)yyvsp[-1]).typestring+" "+ Expand(((NslInstNode)yyvsp[-1]).variablename, ((NslInstNode)yyvsp[-1]).arguments) ); npp.addGenCode("*/",yyvsp[0]); ; break;} case 59: { npp.addGenCode("; /*NO WORK*/ ",yyvsp[0]); ; break;} case 62: {/* creates class level variable if not exists, check compatibility if created */ ; break;} case 65: { String s=remArrDims(yyvsp[0].text); if (s!=null) { npp.addGenCode(yyvsp[-3].text+s+" "+yyvsp[-2].text+" = new ",yyvsp[-4]); npp.addGenCode("",yyvsp[-2]); //System.err.println("debug:C ARRAY ARGS: ["+$2.text+$3.text+$5.text); } else npp.addGenCode("",yyvsp[-4]); ; break;} case 66: { String s=remArrDims(yyvsp[0].text); if (s!=null) { npp.addGenCode(yyvsp[-3].text+s+" "+yyvsp[-2].text+" = new ", yyvsp[-4]); npp.addGenCode("",yyvsp[-2]); //System.err.println("debug:C ARRAY ARGS: ["+$2.text+$3.text+$5.text); FormalNode fn = (new FormalNode(yyvsp[-3], yyvsp[-2])); fn.type.addDim(s.length()/2); npp.addLocalVar(fn); } else npp.addGenCode("",yyvsp[-4]); ; break;} case 67: { /* ERH: if we wished we could have expressions instead */ //System.err.println("debug:Carray1:["+$1.text+"]"); yyval.text=yyvsp[-1].text+']'; yyval.charno = yyvsp[0].charno; yyval.lineno = yyvsp[0].lineno; ; break;} case 68: { //System.err.println("debug:Carray2:["+$1.text+"]"); yyval.text=yyvsp[-3].text+']'+'['+yyvsp[0].text; yyval.charno = yyvsp[0].charno; yyval.lineno = yyvsp[0].lineno; ; break;} case 70: { //System.err.println("debug:Carray3:["+$1.text+"]"); yyval.text="]"+"["+yyvsp[0].text; yyval.charno = yyvsp[0].charno; yyval.lineno = yyvsp[0].lineno; ; break;} case 71: {yyval=new NslInstNode((NslCoupleNode)yyvsp[-1],yyvsp[0].text); yyval.text=yyvsp[-1].text; yyval.charno = yyvsp[-1].charno; yyval.lineno = yyvsp[-1].lineno; npp.addLocalVar(((NslInstNode)yyval).formal); ; break;} case 72: {yyval=new NslInstNode((NslCoupleNode)yyvsp[-1],"(/* VOID */)"); yyval.text=yyvsp[-1].text; yyval.charno = yyvsp[-1].charno; yyval.lineno = yyvsp[-1].lineno; npp.addLocalVar(((NslInstNode)yyval).formal); ; break;} case 73: { //System.err.println("COUPLE FORMED:"+$1.text+" - "+$2.text); boolean addVar = false; // Don't add variables to current scope //npp.parseClass($1.text, addVar); yyval=new NslCoupleNode(yyvsp[-1],yyvsp[0]); //npp.addGenCode(" /*[ ",$2); yyval.text=yyvsp[0].text; yyval.charno = yyvsp[0].charno; //+($2.text).length(); yyval.lineno = yyvsp[0].lineno; ; break;} case 74: { // thr // System.err.println("COUPLE FORMED:"+$3.text+" - "+$4.text); yyval=new NslCoupleNode(yyvsp[-1],yyvsp[0]); //npp.addGenCode(" /*[ ",$2); yyval.text=yyvsp[0].text; yyval.charno = yyvsp[0].charno; //+($4.text).length(); yyval.lineno = yyvsp[0].lineno; ; break;} case 75: { //if ($2!=null) System.err.println("nslInst2: done "+$2.text); //else System.err.println("nslInst2: done: VOID ARGS"); if (yyvsp[-1]==null) { yyval=yyvsp[-2]; yyval.text="()"; } else { yyval=yyvsp[-2]; yyval.text="("+((ExprsNode)yyvsp[-1]).code0+")";} //npp.addGenCode($3.text+"]*/",$3); //if ($2!=null)System.err.println("I'm in nslArgs: "+$2.text); ; break;} case 76: { if (yyvsp[-1]!=null) System.err.println("Error: Module must be abstract! "+yyvsp[-1].text); else { //System.err.println("debug: nslInst2: done: VOID PARS"); } // thr if (yyvsp[-1] != null) npp.addLocalVar((ParamsNode)(yyvsp[-1])); yyval=yyvsp[-1]; //npp.addGenCode($3.text+"]*/",$3); //if ($2!=null)System.err.println("I'm in nslPars: "+$2.text); ; break;} case 79: { npp.addGenCode("",yyvsp[-7]); MethodNode mn = new MethodNode((new FormalNode(yyvsp[-6], yyvsp[-5]))); npp.startMethod(mn); // thr if (yyvsp[-3] != null) npp.addLocalVar((ParamsNode)(yyvsp[-3])); // 98/7/30 aa: changed CALLFROMCONST to CALLFROMCONSTRBOTTOM and // changed flag name to exists_callFromConstructor if (mn.method_type==MethodNode.CALLFROMCONSTR) (npp.getCurClass()).exists_callFromConstructor=true; // System.err.println("^^^^^^^^ GOT callfromConst"); if (mn.method_type==MethodNode.CALLFROMCONSTRBOTTOM) (npp.getCurClass()).exists_callFromConstructorBottom=true; // System.err.println("^^^^^^^^ GOT callfromConst"); if (mn.method_type==MethodNode.CALLFROMCONSTRTOP) (npp.getCurClass()).exists_callFromConstructorTop=true; //System.err.println("^^^^^^^^ GOT callfromConst"); // npp.setCurMethodParams((ParamsNode)$6); npp.getCurMethod().makeInstSpecialProcess(npp); /* ((TypeNode)$2).addDim($7);*/ ; break;} case 80: { /* check name: makeinst, makeconn, init, execute, finalprint. check access flag check return value check duplicates check parameter: any parameter set in the mentioned method? */ npp.endMethod(yyvsp[0]); yyval = yyvsp[0]; ; break;} case 82: { // 98/8/25 aa took out //System.err.println("debug: ============= CONSTRUCTOR ==========******"); npp.addGenCode("",yyvsp[-3]); ConstructorNode cn = new ConstructorNode(yyvsp[-1]); npp.startConstructor(cn); ; break;} case 83: { /* check name-match check parameter */ npp.setCurConstructorParams((ParamsNode)yyvsp[-5]); // thr if (yyvsp[-5] != null) npp.addLocalVar((ParamsNode)(yyvsp[-5])); npp.endConstructor(yyvsp[-5]); yyval = yyvsp[-5]; ; break;} case 88: { ; break;} case 89: { ; break;} case 90: { yyval = yyvsp[0]; ; break;} case 91: { yyval = yyvsp[0]; ; break;} case 92: { yyval = null; ; break;} case 93: { yyval = yyvsp[0]; //System.err.println(" >>>>>>>>> PARAMS:"+$$.text); ; break;} case 94: { yyval = new ParamsNode((FormalNode)yyvsp[0]); ; break;} case 95: { yyval = yyvsp[-2]; ((ParamsNode)yyval).addTail((FormalNode)yyvsp[0]); ; break;} case 96: { ((TypeNode)yyvsp[-2]).addDim(yyvsp[0]); yyval = (YYtoken) (new FormalNode(yyvsp[-2], yyvsp[-1])); // thr- addLocalVar done later // npp.addLocalVar((FormalNode)($$)); /* | JAVAREFDECL | CARRAYDECL ';' */ ; break;} case 97: {//System.out.println("GOT SPECIAL on :"+$2.text); npp.addGenCode("",yyvsp[-1]);; break;} case 100: { /* create local symbols */ yyval = yyvsp[-3]; FormalNode fn = (new FormalNode(yyvsp[-3], yyvsp[-2])); fn.type.addDim(yyvsp[-1]); npp.addLocalVar(fn); if ((yyvsp[-3].text).equals("NslFloat0") || (yyvsp[-3].text).equals("NslFloat1") || (yyvsp[-3].text).equals("NslFloat2") || (yyvsp[-3].text).equals("NslFloat3") || (yyvsp[-3].text).equals("NslFloat4") || (yyvsp[-3].text).equals("NslInt0") || (yyvsp[-3].text).equals("NslInt1") || (yyvsp[-3].text).equals("NslInt2") || (yyvsp[-3].text).equals("NslInt3") || (yyvsp[-3].text).equals("NslInt4") || (yyvsp[-3].text).equals("NslDouble0") || (yyvsp[-3].text).equals("NslDouble1") || (yyvsp[-3].text).equals("NslDouble2") || (yyvsp[-3].text).equals("NslDouble3") || (yyvsp[-3].text).equals("NslDouble4") || (yyvsp[-3].text).equals("NslString0") ) System.err.println("warning- Expected paranthesis after \""+yyvsp[-3].text+"\" in line "+(yyval.lineno+1)); ; break;} case 101: { yyval = yyvsp[-4]; FormalNode fn = (new FormalNode(new TypeNode((TypeNode)yyvsp[-4]), yyvsp[-2])); fn.type.addDim(yyvsp[-1]); npp.addLocalVar(fn); ; break;} case 112: { yyval = yyvsp[0];; break;} case 113: { yyval = yyvsp[0]; npp.pushScope();; break;} case 114: { yyval = yyvsp[0]; npp.popScope();; break;} case 117: { /* YmodifierList is non null */ NslInstNode ni=(NslInstNode)yyvsp[0]; npp.addGenCode( ni.typestring+" "+ni.variablename+" = new "+ ni.typestring+ni.arguments ,yyvsp[0]); // System.err.println("debug: nslInstantiation-"+ni.variablename+" = new "+ni.typestring); ; break;} case 122: { yyval = yyvsp[-1]; //System.err.println("-- Expression Statement"); if (!(yyvsp[-1] instanceof NslInstNode)) { ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[0]); } ; break;} case 124: { //System.out.print("if "+$1.charno+" 1st p "+$2.charno+" expr "+$3.charno+" 2nd p "+$4.charno); //System.err.println("-- if Statement"); yyval = yyvsp[-2]; ((ExprNode)yyval).genCode(npp); //System.out.println(" output "+$$.charno+" end "+$4.charno); npp.addGenCode((ExprNode)yyval, yyvsp[-1]); ; break;} case 125: { //System.err.println("-- if-else Statement"); yyval = yyvsp[-4]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[-3]); ; break;} case 126: { //System.err.println("-- while Statement"); yyval = yyvsp[-2]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[-1] ); ; break;} case 127: { //System.err.println("-- do-while Statement"); yyval = yyvsp[-2]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[-1]); ; break;} case 129: {// MULTIPLEX //System.err.println("-- multpiple to multiple connect Statement"); npp.addGenCode(" /* conn",yyvsp[-10]) ; npp.addGenCode("; */",yyvsp[0]) ; String expandedconn=((PortListNode)yyvsp[-7]).multiplex((PortListNode)yyvsp[-3]); npp.addGenCode(expandedconn,yyvsp[-10].lineno+1,0, 0,-1); ; break;} case 130: {// FAN-IN //System.err.println("-- multiple to one connect Statement"); npp.addGenCode(" /* conn",yyvsp[-8]) ; npp.addGenCode("; */",yyvsp[0]) ; String expandedconn=((PortListNode)yyvsp[-5]).fanin(yyvsp[-2].text); npp.addGenCode(expandedconn,yyvsp[-8].lineno+1,0, 0,-1); ; break;} case 131: {// FAN-OUT //System.err.println("-- one to multiple connect Statement"); npp.addGenCode(" /* conn",yyvsp[-8]) ; npp.addGenCode("; */",yyvsp[0]) ; npp.addGenCode(" /* conn",yyvsp[-8]) ; npp.addGenCode("; */",yyvsp[0]) ; String expandedconn=((PortListNode)yyvsp[-3]).fanout(yyvsp[-6].text); npp.addGenCode(expandedconn,yyvsp[-8].lineno+1,0, 0,-1); ; break;} case 132: { //System.err.println("-- one to one connect Statement"); npp.addGenCode("nslConnect",yyvsp[-6]); //npp.addGenCode(PortListNode.root(($3).text)+",\""+PortListNode.tail(($3).text)+"\"",$3); //npp.addGenCode(PortListNode.root(($5).text)+",\""+PortListNode.tail(($5).text)+"\"",$5); yyval=yyvsp[0]; ; break;} case 133: { //System.err.println("-- nsl operators Statement"); npp.addGenCode(NslConvert(yyvsp[-3].text),yyvsp[-3]);; break;} case 139: { //System.err.println("-- nsl return ? Statement"); yyval = yyvsp[-1]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[0]); ; break;} case 141: { //System.err.println("-- throw Statement"); yyval = yyvsp[-1]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[0]); ; break;} case 142: { //System.err.println("-- synchronized Statement"); yyval = yyvsp[-2]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[-1]); ; break;} case 146: { //System.err.println("-- switch Statement"); yyval = yyvsp[-2]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[-1]); ; break;} case 147: { //System.err.println("-- case Statement"); yyval = yyvsp[-2]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[-1]); ; break;} case 150: { //System.err.println("-- optExpression"); yyval = yyvsp[-1]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[0]); ; break;} case 152: { //System.err.println("-- forInit"); yyval = yyvsp[-1]; ((ExprNode)yyval).genCode(npp); npp.addGenCode((ExprNode)yyval, yyvsp[0]); ; break;} case 154: { yyval=yyvsp[-1]; ; break;} case 155: { npp.addGenCode("/* verbatim NSLJ */",yyvsp[0]); vlang='J'; ; break;} case 156: { npp.addGenCode("/* verbatim NSLC */",yyvsp[0]); vlang='C'; ; break;} case 157: { if (vlang=='J') { npp.addGenCode("/* verbatim off */",yyvsp[0]); } else { npp.addGenCode("off */",yyvsp[0]); } ; break;} case 160: { //System.err.println("-- expressionStatement"); yyval = yyvsp[0]; ((ExprNode)yyval).genCode(npp); ; break;} case 161: { // System.err.println("-- expressionStatement list"); ((ExprsNode)(yyvsp[-2])).addTail(yyvsp[0]); ((ExprNode)yyvsp[0]).genCode(npp); yyval = yyvsp[-2]; ; break;} case 166: { ; break;} case 168: { yyval = npp.resolveVar(yyvsp[0]); TypeNode t= ((ExprNode)(yyval)).type; if (t==null) ((ExprNode)yyval).nslSymbol=false; else if (t.nslNumeric || t.nslBool) ((ExprNode)yyval).nslSymbol=true; else ((ExprNode)yyval).nslSymbol=false; /* System.err.println("&&&&&& HEY HEY &&&&&& for "+$1.text); if (((ExprNode)($$)).type==null) System.err.println(" && Cannot resolve variable: "+($1).text); else System.err.println(" && Resolved Variable: "+($1).text+" with type:"+((ExprNode)($$)).type); */ ; break;} case 169: { yyval = yyvsp[0]; ; break;} case 170: { YYtoken n = npp.resolveVar(yyvsp[-2]); yyval = new ArrayIndexNode((ExprNode)n, ((ExprNode)(yyvsp[-1]))); // System.err.println("The begining of an array: "+$1.text+" ["+$2+"]"); if (((ArrayIndexNode)yyval).getDim()<0) { yyerror("Invalid Array - addressing Dim="+((ArrayIndexNode)yyval).getDim()); } // int errcode = ((ArrayIndexNode)$$).genCode(npp); // System.out.println("code#"+errcode+"\t"+((ArrayIndexNode)$$).code); ; break;} case 171: { yyval = yyvsp[0];; break;} case 172: { yyval = new TrinaryExprNode((ExprNode)yyvsp[-4], (ExprNode)yyvsp[-2], (ExprNode)yyvsp[0]); ; break;} case 173: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 174: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 175: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 176: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 177: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 178: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 179: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 180: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 181: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 182: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 183: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 184: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 185: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 186: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 187: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 188: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 189: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 190: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 191: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 192: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 193: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 194: { yyvsp[0].charno = yyvsp[-1].charno; yyvsp[0].lineno = yyvsp[-1].lineno; yyval = new UnaryExprNode((ExprNode)yyvsp[0], '-'); ; break;} case 195: { yyvsp[0].charno = yyvsp[-1].charno; yyvsp[0].lineno = yyvsp[-1].lineno; yyval = new UnaryExprNode((ExprNode)yyvsp[0], '+'); ; break;} case 196: { yyvsp[0].charno = yyvsp[-1].charno; yyvsp[0].lineno = yyvsp[-1].lineno; yyval = new UnaryExprNode((ExprNode)yyvsp[0], '!'); ; break;} case 197: { yyvsp[0].charno = yyvsp[-1].charno; yyvsp[0].lineno = yyvsp[-1].lineno; yyval = new UnaryExprNode((ExprNode)yyvsp[0], '~'); ; break;} case 198: { yyval = yyvsp[-2]; ; break;} case 199: {yyval=yyvsp[0];; break;} case 200: {yyval = yyvsp[0];; break;} case 201: {yyval = new SpecialExprNode(yyvsp[0], SpecialExprNode.SUPER);; break;} case 202: {yyval =new SpecialExprNode(yyvsp[0], SpecialExprNode.THIS);; break;} case 203: {yyval =new SpecialExprNode(yyvsp[0], SpecialExprNode.NULL);; break;} case 204: { yyval = yyvsp[0];; break;} case 205: { yyvsp[-1].charno = yyvsp[-2].charno; yyvsp[-1].lineno = yyvsp[-2].lineno; yyval = yyvsp[-1];; break;} case 206: { yyvsp[-1].charno = yyvsp[-2].charno; yyvsp[-1].lineno = yyvsp[-2].lineno; yyval = npp.resolveVar(yyvsp[-1]); /* if (((ExprNode)($$)).type==null) System.out.println("Cannot resolve variable: "+($2).text); else System.out.println("Resolved Variable: "+($2).text); */ ; break;} case 207: { yyval = new ArrayIndexNode((ExprNode)yyvsp[-3],(ExprNode)yyvsp[-1]); // System.err.println("Array continued: "+$1.text+" ["+$3+"]"); if (((ArrayIndexNode)yyval).getDim()<0) { yyerror("Invalid Array -- addressing.Dim="+((ArrayIndexNode)yyval).getDim()); } // ((ArrayIndexNode)$$).genCode(npp); ; break;} case 208: { yyval = new ArrayIndexNode((ExprNode)yyvsp[-3],(ExprNode)yyvsp[-1]); if (((ArrayIndexNode)yyval).getDim()<0) { yyerror("Invalid Array --- addressing.Dim="+((ArrayIndexNode)yyval).getDim()); } // ((ArrayIndexNode)$$).genCode(npp); ; break;} case 209: { yyval = yyvsp[-2]; ((ExprNode)yyval).code += ('.'+yyvsp[0].text); ; break;} case 210: { yyval = yyvsp[0];; break;} case 211: { //System.err.println("Asignment: "+$1.text+" = "+$3.text); yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); // ((BinaryExprNode)$$).genCode(npp); ; break;} case 212: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 213: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 214: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 215: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 216: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 217: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 218: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 219: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 220: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 221: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 222: { yyval = new BinaryExprNode((ExprNode)yyvsp[-2], yyvsp[-1], (ExprNode)yyvsp[0]); ; break;} case 223: { yyvsp[0].charno = yyvsp[-1].charno; yyvsp[0].lineno = yyvsp[-1].lineno; yyval = new UnaryExprNode((ExprNode)yyvsp[0], UnaryExprNode.PRE_INCR); ; break;} case 224: { yyvsp[0].charno = yyvsp[-1].charno; yyvsp[0].lineno = yyvsp[-1].lineno; yyval = new UnaryExprNode((ExprNode)yyvsp[0], UnaryExprNode.PRE_DECR); ; break;} case 225: { yyval = new UnaryExprNode((ExprNode)yyvsp[-1], UnaryExprNode.POST_INCR); ; break;} case 226: { yyval = new UnaryExprNode((ExprNode)yyvsp[-1], UnaryExprNode.POST_DECR); ; break;} case 227: { yyval = yyvsp[0];; break;} case 228: { yyval = yyvsp[0];; break;} case 229: { NslInstNode ni=(NslInstNode)yyvsp[0]; npp.addGenCode( ni.variablename+" = new "+ ni.typestring,yyvsp[0]); // Catch NslNumerics within methods and add new // System.err.println("debug: nslInstantiation-"+ni.variablename+" = new "+ni.typestring); ; break;} case 230: { int separator = yyvsp[-3].text.lastIndexOf('.'); if(separator != -1 && yyvsp[-3].text.indexOf('.')==separator) { // contains dot YYtoken tmptoken = new YYtoken(YYtokentypes.SYMBOL, yyvsp[-3].text.substring(0,separator), yyvsp[-3].lineno, yyvsp[-3].charno, yyvsp[-3].charno0); // token.text =method_sym.text.substring(0,separator); yyvsp[-3].text = yyvsp[-3].text.substring(separator+1); ExprNode expr = (ExprNode)npp.resolveVar(tmptoken); /* if (expr.type == null) { System.out.println("null type error!!!"); } */ yyval = new MethodCallNode((ExprNode)npp.resolveVar(tmptoken), yyvsp[-3], (ExprsNode)yyvsp[-1]); } else /* we do nothing to the methodCall at the current stage */ yyval = new MethodCallNode(yyvsp[-3], (ExprsNode)yyvsp[-1]); ; break;} case 231: { yyval = new MethodCallNode((ExprNode)yyvsp[-5], yyvsp[-3], (ExprsNode)yyvsp[-1]); ; break;} case 232: { //System.err.println("HERE!@!@@#!# for "+$1.text); // $1.charno = $2.charno; // $1.lineno = $2.lineno; // npp.addGenCode("[",$2); // npp.addGenCode(NslConvert($1.text),$1); yyval = new MethodCallNode((YYtoken)(yyvsp[-3]), (ExprsNode)yyvsp[-1]); ((MethodCallNode)yyval).expandedname=NslConvert(yyvsp[-3].text); ((MethodCallNode)yyval).processed=true; ; break;} case 233: { if (!(yyvsp[-1] instanceof ExprsNode)) yyval = new MethodCallNode((YYtoken)(yyvsp[-3]), (ExprsNode)(new ExprsNode(yyvsp[-1]))); else yyval = new MethodCallNode((YYtoken)(yyvsp[-3]), (ExprsNode)yyvsp[-1]); ((MethodCallNode)yyval).expandedname=NslConvert(yyvsp[-3].text); ((MethodCallNode)yyval).processed=true; ; break;} case 234: { yyvsp[-3].charno = yyvsp[-4].charno; yyvsp[-3].lineno = yyvsp[-4].lineno; /* check things like (NslDouble2d) x, where x is a NslInt2d */ ((TypeNode)yyvsp[-3]).addDim(yyvsp[-2]); /* check dimension */ /* do some process in expression creation */ yyval = new CastNode((TypeNode)(yyvsp[-3]), (ExprNode)(yyvsp[0])); // ((CastNode)$$).genCode(npp); ; break;} case 235: { yyvsp[-2].charno = yyvsp[-3].charno; yyvsp[-2].lineno = yyvsp[-3].lineno; yyval = new CastNode(new TypeNode(TypeNode.CLASS, (yyvsp[-2])), (ExprNode)(yyvsp[0])); // ((CastNode)$$).genCode(npp); ; break;} case 236: { yyvsp[-4].charno = yyvsp[-5].charno; yyvsp[-4].lineno = yyvsp[-5].lineno; TypeNode n = new TypeNode(TypeNode.CLASS, yyvsp[-4]); n.addDim(1); n.addDim(yyvsp[-2]); yyval = new CastNode(n, (ExprNode)(yyvsp[0])); // ((CastNode)$$).genCode(npp); ; break;} case 237: { //(new TypeNode($2)).addDim(((ExprsNode) ($4)).list.size()); TypeNode tn = new TypeNode(yyvsp[-2]); tn.addDim(((ExprsNode) (yyvsp[0])).list.size()); yyval = (YYtoken)(new NewNode(tn, (ExprsNode)(yyvsp[0]), null)); ; break;} case 238: { TypeNode tn = new TypeNode(yyvsp[-2]); tn.addDim(((ExprsNode) (yyvsp[0])).list.size()); yyval = (YYtoken)(new NewNode(tn, (ExprsNode)(yyvsp[0]), null)); ; break;} case 239: { yyval = (YYtoken)(new NewNode(new TypeNode(yyvsp[0]), null, null)); ; break;} case 240: { yyval = (YYtoken)(new NewNode(new TypeNode(yyvsp[-3]), null, (ExprsNode)(yyvsp[-1]))); //npp.addGenCode("new",$1); ; break;} case 241: { yyval = (YYtoken)(new NewNode(new TypeNode(yyvsp[-3]), null, (ExprsNode)(yyvsp[-1]))); ; break;} case 242: { npp.addGenCode("",yyvsp[-5]); /* remove the first word */ yyval = (YYtoken)(new NewNode(new TypeNode(yyvsp[-3]),null,(ExprsNode)(yyvsp[-1]))); ((NewNode)yyval).processed=true; //-ERH:not required ExprNode left = new ExprNode(yyvsp[-5]); left.charno = yyvsp[-5].charno; left.lineno = yyvsp[-5].lineno; YYtoken op = new YYtoken('=',"="); //ERH: check this ExprNode right = (ExprNode)yyval; yyval = new BinaryExprNode(left,op,right); ((BinaryExprNode)yyval).processed=true; ; break;} case 243: { /* This was once used to lexically convert new-less instantiations to reguler new statements //convert newless statement /// System.out.println("// CATCH:"+$1.text+" "+$2.text+" "+$4.text); //#1 npp.addGenCode($2.text+" = new "+$1.text,$1); //#1 npp.addGenCode("",$2); // remove variable name */ npp.addGenCode("",yyvsp[-4]); /* remove the first word */ yyval = (YYtoken)(new NewNode(new TypeNode(yyvsp[-4]),null,(ExprsNode)(yyvsp[-2]))); ((NewNode)yyval).processed=true; //-ERH:not required ExprNode left = new ExprNode(yyvsp[0]); left.charno = yyvsp[-4].charno; left.lineno = yyvsp[-4].lineno; YYtoken op = new YYtoken('=',"="); //ERH: check this ExprNode right = (ExprNode)yyval; yyval = new BinaryExprNode(left,op,right); ((BinaryExprNode)yyval).processed=true; ; break;} case 244: { yyval=new ExprsNode(yyvsp[-1]); ; break;} case 245: { yyval=yyvsp[0]; ((ExprsNode)(yyval)).addHead(yyvsp[-3]); ; break;} case 246: { yyval=yyvsp[-1]; { int count = ((Int_Token)(yyvsp[0])).int_val; while (count-- > 0) ((ExprsNode)(yyval)).addTail((YYtoken)null); } ; break;} case 247: { yyval = null; ; break;} case 248: { if (yyvsp[-2]==null) yyval = (YYtoken) (new Int_Token(YYtokentypes.nt_optArrayBounds, yyvsp[-1], 1)); else { ((Int_Token)(yyvsp[-2])).int_val ++; yyval = yyvsp[-2]; } ; break;} case 249: {yyval = new ExprNode(new TypeNode(TypeNode.INT, yyvsp[0]), yyvsp[0]);; break;} case 250: {yyval = new ExprNode(new TypeNode(TypeNode.STRING, yyvsp[0]), yyvsp[0]);; break;} case 251: {yyval = new ExprNode(new TypeNode(TypeNode.CHAR, yyvsp[0]), yyvsp[0]);; break;} case 252: {yyval = new ExprNode(new TypeNode(TypeNode.LONG, yyvsp[0]), yyvsp[0]);; break;} case 253: {yyval = new ExprNode(new TypeNode(TypeNode.FLOAT, yyvsp[0]), yyvsp[0]);; break;} case 254: {yyval = new ExprNode(new TypeNode(TypeNode.DOUBLE, yyvsp[0]), yyvsp[0]);; break;} case 255: {yyval = new ExprNode(new TypeNode(TypeNode.BOOL, yyvsp[0]), yyvsp[0]);; break;} case 256: {yyval = new ExprNode(new TypeNode(TypeNode.BOOL, yyvsp[0]), yyvsp[0]);; break;} case 257: { yyval = null; // System.err.println("optArgumentList: returning NULL"); ; break;} case 258: { yyval = yyvsp[0]; // System.err.println("optArgumentList: returning: "+$1.text); ; break;} case 259: { yyval = new ExprsNode(yyvsp[0]); // System.err.println("argumentList: evluating the last expression "+$1.text); ; break;} case 260: { if(yyvsp[0]!=null)((ExprsNode)yyvsp[-2]).addTail(yyvsp[0]); yyval = yyvsp[-2]; // System.err.println("argumentList: evluating an expression "+$3.text); ; break;} case 261: { yyval = (YYtoken) (new TypeNode(TypeNode.CLASS, yyvsp[-2])); ((TypeNode)yyval).addDim(1); // for the first pair of blanket ((TypeNode)yyval).addDim(yyvsp[-1]); ; break;} case 262: { yyval = (YYtoken) (new TypeNode(TypeNode.CLASS, yyvsp[0])); ; break;} case 263: { if((yyvsp[0])!=null) { ((TypeNode)yyvsp[-1]).addDim(yyvsp[0]); } yyval = yyvsp[-1]; ; break;} case 264: { yyval=yyvsp[-1]; /* = npp.resolveVar($1); if (((ExprNode)($$)).type==null) System.out.println("Cannot resolve variable: "+($1).text); else System.out.println("Resolved Variable: "+($1).text); */ ; break;} case 266: {yyval=yyvsp[0];; break;} case 267: { yyval = (YYtoken) (new TypeNode(TypeNode.BOOL, yyvsp[0])); ; break;} case 268: { yyval = (YYtoken) (new TypeNode(TypeNode.BYTE, yyvsp[0])); ; break;} case 269: { yyval = (YYtoken) (new TypeNode(TypeNode.CHAR, yyvsp[0])); ; break;} case 270: { yyval = (YYtoken) (new TypeNode(TypeNode.SHORT, yyvsp[0])); ; break;} case 271: { yyval = (YYtoken) (new TypeNode(TypeNode.INT, yyvsp[0])); ; break;} case 272: { yyval = (YYtoken) (new TypeNode(TypeNode.FLOAT, yyvsp[0])); ; break;} case 273: { yyval = (YYtoken) (new TypeNode(TypeNode.LONG, yyvsp[0])); ; break;} case 274: { yyval = (YYtoken) (new TypeNode(TypeNode.DOUBLE, yyvsp[0])); ; break;} case 275: { yyval = (YYtoken) (new TypeNode(TypeNode.STRING, yyvsp[0])); yyval.text = "String"; npp.addGenCode("String", yyvsp[0]); ; break;} case 276: { yyval = (YYtoken) (new TypeNode(TypeNode.VOID, yyvsp[0])); ; break;} case 307: { yyval = yyvsp[0]; ; break;} case 308: { (yyvsp[-2]).text += ("."+(yyvsp[0]).text); (yyvsp[-2]).tokentype = YYtokentypes.nt_qualifiedSymbol; yyval = yyvsp[-2];; break;} case 309: { yyval = yyvsp[0]; ; break;} case 310: { (yyvsp[0]).text = ((yyvsp[-2]).text+"."+(yyvsp[0]).text); (yyvsp[0]).tokentype = YYtokentypes.nt_qualifiedSymbol; yyval = yyvsp[0];; break;} case 311: { (yyvsp[0]).text = ((yyvsp[-2]).text+"."+(yyvsp[0]).text); (yyvsp[0]).tokentype = YYtokentypes.nt_qualifiedSymbol; yyval = yyvsp[0];; break;} case 312: { yyval = new PortListNode(yyvsp[0]); ; break;} case 313: { /* if($3!=null)((PortListNode)$1).addHead($3); $$=$1; */ if(yyvsp[-2]!=null)((PortListNode)yyvsp[0]).addHead(yyvsp[-2]); yyval=yyvsp[0]; yyval.text =yyvsp[-2].text+yyvsp[-1].text+yyval.text; ; break;} case 316: { yyval = yyvsp[0] ; ; break;} } /* the action file gets copied in in place of this dollarsign */ yyvsp -= yylen; yyssp -= yylen; #ifdef YYLSP_NEEDED yylsp -= yylen; #endif #if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; fprintf (stderr, "state stack now"); while (ssp1 != yyssp) fprintf (stderr, " %d", *++ssp1); fprintf (stderr, "\n"); } #endif *++yyvsp = yyval; #ifdef YYLSP_NEEDED yylsp++; if (yylen == 0) { yylsp->first_line = yylloc.first_line; yylsp->first_column = yylloc.first_column; yylsp->last_line = (yylsp-1)->last_line; yylsp->last_column = (yylsp-1)->last_column; yylsp->text = 0; } else { yylsp->last_line = (yylsp+yylen-1)->last_line; yylsp->last_column = (yylsp+yylen-1)->last_column; } #endif /* Now "shift" the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTBASE] + *yyssp; if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTBASE]; goto yynewstate; yyerrlab: /* here on detecting error */ if (! yyerrstatus) /* If not already recovering from an error, report this error. */ { ++yynerrs; #ifdef YYERROR_VERBOSE yyn = yypact[yystate]; if (yyn > YYFLAG && yyn < YYLAST) { int size = 0; char *msg; int x, count; count = 0; /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ for (x = (yyn < 0 ? -yyn : 0); x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) size += strlen(yytname[x]) + 15, count++; msg = (char *) malloc(size + 15); if (msg != 0) { strcpy(msg, "parse error"); if (count < 5) { count = 0; for (x = (yyn < 0 ? -yyn : 0); x < (sizeof(yytname) / sizeof(char *)); x++) if (yycheck[x + yyn] == x) { strcat(msg, count == 0 ? ", expecting `" : " or `"); strcat(msg, yytname[x]); strcat(msg, "'"); count++; } } yyerror(msg); free(msg); } else yyerror ("parse error; also virtual memory exceeded"); } else #endif /* YYERROR_VERBOSE */ yyerror("parse error"); } goto yyerrlab1; yyerrlab1: /* here on error raised explicitly by an action */ if (yyerrstatus == 3) { /* if just tried and failed to reuse lookahead token after an error, discard it. */ /* return failure if at end of input */ if (yychar == YYEOF) YYABORT; #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); #endif yychar = YYEMPTY; } /* Else will try to reuse lookahead token after shifting the error token. */ yyerrstatus = 3; /* Each real token shifted decrements this */ goto yyerrhandle; yyerrdefault: /* current state does not do anything special for the error token. */ #if 0 /* This is wrong; only states that explicitly want error tokens should shift them. */ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ if (yyn) goto yydefault; #endif yyerrpop: /* pop the current state because it cannot handle the error token */ if (yyssp == yyss) YYABORT; yyvsp--; yystate = *--yyssp; #ifdef YYLSP_NEEDED yylsp--; #endif #if YYDEBUG != 0 if (yydebug) { short *ssp1 = yyss - 1; fprintf (stderr, "Error: state stack now"); while (ssp1 != yyssp) fprintf (stderr, " %d", *++ssp1); fprintf (stderr, "\n"); } #endif yyerrhandle: yyn = yypact[yystate]; if (yyn == YYFLAG) goto yyerrdefault; yyn += YYTERROR; if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) goto yyerrdefault; yyn = yytable[yyn]; if (yyn < 0) { if (yyn == YYFLAG) goto yyerrpop; yyn = -yyn; goto yyreduce; } else if (yyn == 0) goto yyerrpop; if (yyn == YYFINAL) YYACCEPT; #if YYDEBUG != 0 if (yydebug) fprintf(stderr, "Shifting error token, "); #endif *++yyvsp = yylval; #ifdef YYLSP_NEEDED *++yylsp = yylloc; #endif yystate = yyn; goto yynewstate; } /* put suffix code here */ /* Override yyerror */ public void yyverror(String s) throws ParseException { /* String msg = yyerror_verbose(s); System.out.println("yyverror:" + msg); */ yyerror(s, true); //throw new ParseException(s); } protected NslPreProcessor npp; public void init(NslPreProcessor p) { npp = p; // YYtoken.npp = p; } String remArrDims(String s) { String res; char c,oldc; res="["; oldc='['; // 98/8/25 aa: too many print statements //System.err.println("debug: Entering:"+s); for (int i=0;i CONVERT: ["+s+"]"); if (s.equals("nslPrint")) return("System.out.print"); if (s.equals("nslPrintln")) return("System.out.println"); if (s.equals("nslprint")) return("System.out.print"); if (s.equals("nslprintln")) return("System.out.println"); if (s.equals("NslPrint")) return("System.out.print"); if (s.equals("NslPrintln")) return("System.out.println"); //if (s.equals("nslAdd")) return "system.nsladd.eval"; if (s.equals("nslAdd")) return "NslAdd.eval"; if (s.equals("nslConv")) return "NslConv.eval"; if (s.equals("nslConvzero")) return "NslConvZero.eval"; if (s.equals("nslConvW")) return "NslConvW.eval"; if (s.equals("nslConvC")) return "NslConvC.eval"; // cannot have NslDiff because we would need static // and abstract methods cannot also be static if (s.equals("nslDiff")) return "system.nsldiff.eval"; if (s.equals("nslFillColumns")) return "NslFillColumns.eval"; if (s.equals("nslFillRows")) return "NslFillRows.eval"; if (s.equals("nslMath")) return "system.nslmath.eval"; if (s.equals("nslMaxValue")) return "NslMaxValue.eval"; if (s.equals("nslMinValue")) return "NslMinValue.eval"; if (s.equals("nslProd")) return "NslProd.eval"; if (s.equals("nslProduct")) return "NslProd.eval"; if (s.equals("nslRamp")) return "NslRamp.eval"; if (s.equals("nslSaturation")) return "NslSaturation.eval"; if (s.equals("nslSigmoid")) return "NslSigmoid.eval"; if (s.equals("nslSigmoid2")) return "NslSigmoid2.eval"; if (s.equals("nslStep")) return "NslStep.eval"; if (s.equals("nslSub")) return "NslSub.eval"; if (s.equals("nslTrans")) return "NslTrans.eval"; if (s.equals("nslSum")) return "NslSum.eval"; if (s.equals("nslSumRows")) return "NslSumRows.eval"; if (s.equals("nslSumColumns")) return "NslSumColumns.eval"; if (s.equals("nslMaxElem")) return "NslMaxElem.eval"; if (s.equals("nslMinElem")) return "NslMinElem.eval"; if (s.equals("nslGetSector")) return "NslGetSector.eval"; if (s.equals("nslSetSector")) return "NslSetSector.eval"; if (s.equals("nslElemMult")) return "NslElemMult.eval"; if (s.equals("nslElemDiv")) return "NslElemDiv.eval"; if (s.equals("nslConcatenateRows")) return "NslConcatenateRows.eval"; if (s.equals("nslConcatenateColumns")) return "NslConcatenateColumns.eval"; if (s.equals("nslGetRow")) return "NslGetRow.eval"; if (s.equals("nslGetColumn")) return "NslGetColumn.eval"; if (s.equals("nslRandom")) return "NslRandom.eval"; if (s.equals("nslGuassian")) return "NslGuassian.eval"; if (s.equals("nslAll")) return "NslAll.eval"; if (s.equals("nslSome")) return "NslSome.eval"; if (s.equals("nslNone")) return "NslNone.eval"; if (s.equals("nslBound")) return "NslBound.eval"; if (s.equals("nslDotProd")) return "NslDotProd.eval"; // NslOperations if (s.equals("nslRint")) return "NslOperator.rint.eval"; if (s.equals("nslAbs")) return "NslOperator.abs.eval"; if (s.equals("nslPow")) return "NslOperator.pow.eval"; if (s.equals("nslExp")) return "NslOperator.exp.eval"; if (s.equals("nslLog")) return "NslOperator.log.eval"; if (s.equals("nslMaxMerge")) return "NslOperator.max.eval"; if (s.equals("nslMinMerge")) return "NslOperator.min.eval"; if (s.equals("nslCos")) return "NslOperator.cos.eval"; if (s.equals("nslSin")) return "NslOperator.sin.eval"; if (s.equals("nslTan")) return "NslOperator.tan.eval"; if (s.equals("nslArcCos")) return "NslOperator.acos.eval"; if (s.equals("nslArcSin")) return "NslOperator.asin.eval"; if (s.equals("nslArcTan")) return "NslOperator.atan.eval"; if (s.equals("nslSqrt")) return "NslOperator.sqrt.eval"; if (s.equals("nslDistance")) return "NslOperator.distance.eval"; return "UNRECOGNIZED"; } char vlang; /* used by verbatim stuff */ // thr // This method would recursively call itself // For now its assumed that the java profiler would have generated the // relevant tmp file. /* public Stack addBClassVar(NslPreProcessor p, String bClass){ // invoke new parser to parse bClass // return appropriate stack of variables static varStack = new Stack(); yybl = new YYBlex(bClass.tmp); yybl.init(patch); yybp = new YYBparse(yyl, System.err); yybp.init(patch); yybp.yyparse(); varStack = patch.getVarStack(); String bbClass = yyparse.init(bClass.tmp); varStack.push(addBClassVar(p, bbClass); } public Stack YYBparse::init(String tmpClass) { } */