# line 83 "Parse.yacc" #define lexbufsize 500 char lexbuf[2 * lexbufsize]; int lexptr = 0; int lexposition = 0; /* See BufferLexeme and AddLexLength in Parse.lex */ int comdepth = 0; /* depth of comments, used only by lexer. */ int depth = 0; /* depth of nesting in blocks, used by NPS for formatting comments */ int blanklinep; /* Set by NPS if the non-program-sequence that it parses ends with a blank line. */ int calledFromEmacs; /* set to one by main if called from Emacs, to zero otherwise */ int capSwitch; /* 1 if -cap switch was set, 0 otherwise. */ int formatter; /* the opaque Formatter.T object */ int offset = 2; typedef enum {SRC_STYLE, EM_STYLE} STYLE; STYLE style = SRC_STYLE; # define ENDOFFILE 0 # define AMPERSAND 258 # define ASSIGN 259 # define ASTERISK 260 # define BAR 261 # define COLON 262 # define COMMA 263 # define DOT 264 # define DOTDOT 265 # define EQUAL 266 # define GREATER 267 # define GREQUAL 268 # define LESS 269 # define LSEQUAL 270 # define MINUS 271 # define SHARP 272 # define PERIOD 273 # define PLUS 274 # define RARROW 275 # define RBRACE 276 # define RBRACKET 277 # define RPAREN 278 # define SEMICOLON 279 # define SLASH 280 # define SUBTYPE 281 # define UPARROW 282 # define LPAREN 283 # define LBRACKET 284 # define LBRACE 285 # define ENDPRAGMA 286 # define IDENT 287 # define CARD_CONST 288 # define REAL_CONST 289 # define CHAR_CONST 290 # define STR_CONST 291 # define AND 292 # define ARRAY 293 # define ASSERT 294 # define BGN 295 # define BITS 296 # define BRANDED 297 # define BY 298 # define CASE 299 # define CONST 300 # define DIV 301 # define DO 302 # define ELSE 303 # define ELSIF 304 # define END 305 # define EVAL 306 # define EXCEPT 307 # define EXCEPTION 308 # define EXIT 309 # define EXPORTS 310 # define EXTERNAL 311 # define FINALLY 312 # define FOR 313 # define FROM 314 # define IF 315 # define IMPORT 316 # define IN 317 # define INLINE 318 # define INTERFACE 319 # define LOCK 320 # define LOOP 321 # define METHODS 322 # define MOD 323 # define MODULE 324 # define NOT 325 # define OBJECT 326 # define OF 327 # define OR 328 # define PROCEDURE 329 # define RAISE 330 # define RAISES 331 # define READONLY 332 # define RECORD 333 # define REF 334 # define REPEAT 335 # define RETURN 336 # define REVEAL 337 # define SET 338 # define THEN 339 # define TO 340 # define TRY 341 # define TYPE 342 # define TYPECASE 343 # define UNSAFE 344 # define UNTIL 345 # define UNTRACED 346 # define VALUE 347 # define VAR 348 # define WHILE 349 # define WITH 350 # define BAD 351 # define BGNCOMMENT 352 # define NLBGNCOMMENT 353 # define ENDCOMMENT 354 # define WORD 355 # define BLANKLINE 356 # define SLC 357 # define NLSLC 358 # define NLSLCNL 359 # define TABLINE 360 # define MODUNIT 361 # define DEFUNIT 362 #define yyclearin yychar = -1 #define yyerrok yyerrflag = 0 extern int yychar; extern short yyerrflag; #ifndef YYMAXDEPTH #define YYMAXDEPTH 1500 #endif #ifndef YYSTYPE #define YYSTYPE int #endif YYSTYPE yylval, yyval; # define YYERRCODE 256 # line 934 "Parse.yacc" /*-------- additional C code to implement the semantic routines -----------*/ PR (s) char *s; { while (*s != 0) { P (*s); s++; } }; BE (n) int n; { _Formatter__Begin (formatter, n, 0x7fffffff); }; EN () { _Formatter__End (formatter); }; GR () { _Formatter__Group (formatter); }; BL () { _Formatter__NewLine (formatter, 0, 0); }; NL () { _Formatter__NewLine (formatter, -offset, 0); }; P (n) int n; { _Formatter__PutChar (formatter, n); }; Flush () { _Formatter__Flush (formatter); }; Reset () { }; DoSPNL () { if (style == EM_STYLE) { DoBreak (1, 0, 0); } else { DoBreak (1, 1, -offset); }; }; DoAlign (cols, oneline) int cols, oneline; { _Formatter__Align (formatter, cols, oneline || (depth > 0), 0, 0, 0); }; DoBreak (blank, breakpt, offs) int blank, breakpt, offs; { if (blanklinep==1) { blank=0; breakpt=1; blanklinep=0; }; if (blank==1) _Formatter__PutChar (formatter, ' '); if (breakpt==1) _Formatter__UnitedBreak (formatter, offs, 0); if (breakpt==2) _Formatter__Break (formatter, offs, 1, 1); if (breakpt==3) _Formatter__Break (formatter, offs, 0, 1); }; #include #include "hash.h" #include "lex.yy.c" initParser (infile, outfile, emacs, caps, offs, sty) char *infile; int outfile, emacs, caps, offs; STYLE sty; { yyin = stdin; if ((!emacs) && (infile != 0)) { yyin = fopen (infile, "r"); if (yyin == NULL) { fprintf (stderr, "m3pp: unable to open \"%s\".\n", infile); exit (1); }; }; formatter = outfile; calledFromEmacs = emacs; capSwitch = caps; offset = offs; style = sty; insertKeywords (); } /* initParser */ yyerror(s) char *s; { char temp; char temp2; Reset(); Flush(); if (calledFromEmacs == 0) { fprintf (stderr, "%s while pretty-printing; original position %d\n", s, lexposition); fprintf(stderr, "Error flagged in output\n"); } PR ("(* SYNTAX ERROR *) "); if (!calledFromEmacs && (yychar == 0)) return; /* end-of-file */ if ((lexbuf[lexptr] == '\001') && calledFromEmacs) return; /* i.e., return if formatting unit from Emacs was incomplete. */ PR (&lexbuf[lexptr]); /* Now print the rest of the input, but if the input is terminated by end-of-file (rather than the Emacs sentinel '001'), and if the last thing before the end-of-file is a newline, then don't print that final newline. This is because Flush() will be called by main when yyerror returns. */ temp2 = input(); /* input comes from the lex library. */ if ((calledFromEmacs && (temp2 == '\001')) || (temp2 == 0)) return; temp = input(); while ((temp != 0) && (!calledFromEmacs || (temp != '\001'))) {P (temp2); temp2 = temp; temp = input();} if ((temp2 != '\n') || (temp != 0)) P(temp2); } short yyexca[] ={ -1, 0, 361, 3, 362, 5, -2, 1, -1, 1, 0, -1, -2, 0, -1, 2, 352, 511, -2, 522, -1, 21, 295, 510, 352, 511, 353, 522, 356, 522, 358, 522, 359, 522, -2, 35, -1, 22, 352, 511, 353, 522, 356, 522, 358, 522, 359, 522, -2, 30, -1, 36, 352, 513, 353, 522, 356, 522, 357, 513, 358, 522, 359, 522, -2, 473, -1, 42, 0, 7, -2, 510, -1, 46, 0, 10, -2, 510, -1, 56, 352, 513, 353, 522, 356, 522, 357, 513, 358, 522, 359, 522, -2, 473, -1, 57, 310, 513, -2, 22, -1, 58, 352, 513, 353, 522, 356, 522, 357, 513, 358, 522, 359, 522, -2, 473, -1, 59, 352, 513, 353, 522, 356, 522, 357, 513, 358, 522, 359, 522, -2, 473, -1, 69, 352, 513, 354, 516, 355, 514, 357, 513, -2, 522, -1, 90, 352, 513, 353, 522, 356, 522, 357, 513, 358, 522, 359, 522, -2, 473, -1, 116, 305, 88, -2, 517, -1, 129, 352, 513, 353, 522, 356, 522, 357, 513, 358, 522, 359, 522, -2, 473, -1, 130, 352, 513, 353, 522, 356, 522, 357, 513, 358, 522, 359, 522, -2, 473, -1, 154, 279, 519, -2, 512, -1, 181, 287, 528, -2, 512, -1, 206, 287, 528, -2, 512, -1, 207, 287, 528, -2, 512, -1, 208, 287, 528, -2, 512, -1, 209, 287, 528, -2, 512, -1, 217, 295, 35, 300, 35, 308, 35, 311, 35, 318, 35, 329, 35, 337, 35, 342, 35, 348, 35, -2, 510, -1, 220, 305, 520, -2, 510, -1, 248, 283, 513, -2, 519, -1, 251, 261, 90, 303, 90, 304, 90, 305, 90, 307, 90, 312, 90, 345, 90, -2, 517, -1, 274, 259, 520, -2, 113, -1, 280, 305, 88, -2, 517, -1, 282, 345, 88, -2, 517, -1, 283, 261, 138, 279, 138, 303, 138, 304, 138, 305, 138, 307, 138, 312, 138, 345, 138, -2, 513, -1, 284, 307, 88, 312, 88, -2, 517, -1, 317, 287, 528, -2, 512, -1, 335, 328, 513, -2, 512, -1, 367, 263, 519, -2, 512, -1, 405, 292, 513, -2, 512, -1, 437, 278, 71, -2, 524, -1, 442, 264, 519, -2, 53, -1, 448, 352, 520, 353, 520, 356, 520, 357, 520, 358, 520, 359, 520, -2, 330, -1, 455, 305, 88, -2, 517, -1, 463, 302, 513, -2, 517, -1, 478, 266, 513, 267, 513, 268, 513, 269, 513, 270, 513, 272, 513, 317, 513, -2, 512, -1, 483, 305, 88, -2, 517, -1, 484, 287, 518, -2, 143, -1, 492, 305, 88, -2, 517, -1, 498, 352, 511, 353, 522, 356, 522, 358, 522, 359, 522, -2, 332, -1, 509, 297, 520, 326, 520, -2, 512, -1, 512, 327, 520, -2, 513, -1, 515, 305, 188, -2, 517, -1, 518, 297, 517, 326, 517, -2, 176, -1, 520, 287, 509, -2, 267, -1, 528, 291, 520, -2, 513, -1, 533, 352, 511, -2, 522, -1, 558, 258, 513, 271, 513, 274, 513, -2, 512, -1, 565, 305, 129, -2, 518, -1, 578, 279, 519, -2, 512, -1, 596, 327, 520, -2, 519, -1, 607, 287, 517, -2, 188, -1, 620, 352, 520, 353, 520, 356, 520, 357, 520, 358, 520, 359, 520, -2, 330, -1, 621, 352, 520, 353, 520, 356, 520, 357, 520, 358, 520, 359, 520, -2, 330, -1, 627, 261, 116, 303, 116, 305, 116, -2, 510, -1, 659, 260, 513, 280, 513, 301, 513, 323, 513, -2, 512, -1, 672, 326, 185, 334, 185, -2, 510, -1, 692, 262, 519, -2, 67, -1, 711, 297, 517, 326, 517, -2, 512, -1, 723, 297, 517, 326, 517, -2, 175, -1, 727, 322, 518, -2, 525, -1, 746, 303, 518, 305, 129, -2, 517, -1, 750, 303, 88, 304, 88, 305, 88, -2, 517, -1, 752, 305, 88, -2, 517, -1, 754, 261, 149, 303, 149, 305, 149, -2, 518, -1, 755, 305, 88, -2, 517, -1, 756, 305, 88, -2, 517, -1, 790, 305, 88, -2, 517, -1, 801, 278, 512, -2, 520, -1, 825, 279, 519, -2, 512, -1, 841, 303, 518, 305, 129, -2, 517, -1, 852, 305, 129, -2, 518, -1, 876, 264, 519, 282, 519, 283, 519, 284, 519, 285, 519, -2, 236, -1, 910, 279, 519, -2, 520, -1, 924, 305, 194, -2, 517, -1, 933, 275, 520, -2, 519, -1, 937, 305, 129, -2, 518, -1, 955, 305, 129, -2, 518, -1, 956, 275, 520, 283, 513, -2, 519, -1, 985, 287, 520, -2, 512, -1, 1000, 265, 520, -2, 512, -1, 1071, 278, 519, -2, 509, -1, 1072, 276, 519, -2, 509, -1, 1095, 305, 512, -2, 519, -1, 1100, 261, 88, 303, 88, 305, 88, -2, 517, -1, 1109, 305, 129, -2, 518, -1, 1110, 275, 520, -2, 519, -1, 1120, 261, 88, 303, 88, 305, 88, -2, 517, -1, 1124, 276, 158, -2, 519, -1, 1125, 259, 520, -2, 512, -1, 1149, 277, 512, -2, 519, -1, 1151, 278, 512, -2, 519, -1, 1154, 276, 265, -2, 519, -1, 1173, 305, 512, -2, 520, -1, 1191, 326, 185, 334, 185, -2, 510, -1, 1195, 259, 520, 265, 519, -2, 262, -1, 1218, 261, 88, 303, 88, 305, 88, -2, 517, -1, 1243, 305, 88, -2, 517, -1, 1268, 283, 510, -2, 512, -1, 1271, 303, 88, 304, 88, 305, 88, -2, 517, -1, 1280, 261, 88, 303, 88, 305, 88, -2, 517, -1, 1287, 259, 520, -2, 512, -1, 1308, 259, 520, -2, 237, }; # define YYNPROD 530 # define YYLAST 3282 short yyact[]={ 902, 837,1098, 370,1194,1096, 590, 510, 835, 632, 153, 826,1056,1190, 957,1065, 958, 411, 507, 630, 934, 956, 596, 249, 695, 852, 107, 386, 745, 200, 521, 520, 660, 493, 791, 886, 228, 565, 329, 430, 900, 559, 53, 479, 57, 176, 606, 672, 901, 230, 227, 746, 539, 406, 663, 662, 681, 532, 464, 342, 441, 671, 9, 601, 518, 116, 216, 519, 527, 93, 223, 22, 21, 101, 63, 302, 32, 13, 35, 33, 241, 20, 32, 15, 35, 137, 128, 682, 16, 133, 137, 32, 336, 133, 337, 61, 13, 13, 40, 338, 113, 379, 530, 529, 562, 54, 40, 61, 11,1002, 631, 522, 110, 966, 523, 531, 701, 174, 467, 175, 115, 20, 339, 114, 540, 73, 530, 529, 340, 341, 174, 700, 113, 609, 609, 522, 15, 336, 523, 531, 409, 16, 608, 925, 99, 15, 225, 174, 870, 112, 16, 524, 250, 103, 111, 189, 525, 119, 102,1108, 113, 11, 118, 224, 526, 225, 163, 792, 871, 486, 134, 174, 180, 633, 485, 524, 793,1180, 531, 285, 525, 117, 211, 553, 286, 180, 676, 54, 526, 872, 179, 288, 535, 529, 287, 201, 654, 655, 652, 653, 379, 651, 438, 65, 124, 591, 289, 236, 239, 242, 243, 873, 431, 24,1099, 290, 251, 201, 792, 232, 291, 292, 379, 530, 529, 836, 293,1057, 304, 771, 1022, 201, 812, 838, 431, 494, 502, 310, 793, 194, 312, 188, 666, 314, 315, 665, 656, 387, 195, 209, 71, 666, 303, 323, 665, 514, 246, 177, 139, 46, 207, 82, 213, 379, 248, 19, 98, 54, 673, 674, 675, 676, 108, 62, 42, 17, 136, 132, 8, 34, 88, 64, 6, 29, 18, 7, 89, 238, 96, 5, 245, 344, 68, 346, 30, 348, 95, 75, 94, 138, 31, 69, 49, 52, 36, 14, 48, 50, 59, 297, 51, 43, 47, 28, 58, 361, 90, 130, 376, 129, 56, 100, 368, 60, 39, 404, 372, 403, 150, 34, 80, 806, 83, 84, 617, 678, 397, 380, 26, 402, 148, 91, 357,1062, 751, 616, 360, 87, 149, 120, 92, 97, 356, 85, 355, 728, 122, 615, 807, 425, 121,1032, 135, 86, 131, 34, 354, 378, 433, 204, 551, 436, 628, 729, 477, 38, 951, 444, 157, 990, 353, 449, 401, 37, 427, 205, 766, 301, 400, 214, 440, 442, 300, 399, 566, 151, 172, 199, 245, 351, 170, 178, 152, 164, 165, 567, 474, 388, 458, 352, 169, 167, 166, 429, 321, 168,1146, 891, 753, 950, 147, 350,1215, 622, 614, 156, 443, 349, 613, 642, 784, 783, 782, 781, 413, 481, 415, 79, 620, 208, 621, 501, 503, 499, 506, 435, 226, 432, 580, 450, 498, 123, 319, 219, 455, 220, 448,1073, 541, 233, 909, 949, 160, 710, 442,1139, 538, 926,1101, 777, 275, 75, 761, 778, 763, 762, 765, 764, 231, 556, 327, 624, 549, 497, 928, 345, 491, 347, 568, 500, 575, 571, 505, 585, 563, 511, 317, 892, 492, 489, 582, 583, 948, 573, 454, 569, 588, 864, 509, 367, 592, 594,1192,1154,1151,1149,1020,1018, 670, 669, 668, 876, 664, 661, 869, 868, 867, 866, 865, 659, 554, 770, 390, 767, 558, 393, 394, 395, 650, 398, 649, 648, 647, 646, 587, 645, 643, 478, 408, 407, 552, 405, 466, 335,1095, 825, 635, 636, 528, 657, 988, 581, 924, 607, 610, 517, 516, 515, 513, 512, 629, 611, 564, 13, 463, 334, 333, 667, 161, 693, 332, 679, 484, 218, 692, 483, 284, 644, 283, 561, 282, 689, 281, 456, 280, 331, 623,1107, 634,1004, 790, 937, 330,1179, 719,1178, 698, 637, 13, 475, 639,1001, 278, 277, 933, 276, 272, 271, 270, 720, 269, 268, 267, 266, 265, 264, 743, 263, 262, 261, 260, 750, 259, 752, 258, 754, 755, 756, 257, 255, 253, 154, 215, 534, 273, 254, 252, 217, 721, 699, 716, 697, 696, 578,1123, 965, 722, 536, 711, 964, 772, 712, 542, 543, 544, 545, 546, 547, 757, 723, 294, 727, 724, 712, 725, 896, 744, 798, 738, 739, 780, 737, 557, 496, 437, 359, 173, 212, 244, 811, 240, 237, 797, 181, 800, 758, 109, 574, 106, 789, 105, 206, 104, 787, 809, 306, 70, 74, 377, 815, 256, 222, 818, 769, 768, 221, 598, 599, 600, 162, 819, 81, 12, 813, 10, 794, 45, 4, 41, 3, 2, 1, 618, 0, 0, 810, 0, 795, 796, 0, 0, 0, 0, 0, 824, 831, 0, 802, 820, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 847, 658, 849, 0, 677, 853, 854, 821, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 885, 0, 0, 0, 0, 667, 667, 0, 0, 446, 0, 841, 895, 0, 0, 889, 898, 842, 856, 0, 0, 874, 875, 0, 0, 426, 0, 888, 0, 832, 0, 0, 0, 0, 913, 0, 0, 0, 0, 0, 918, 741, 0, 445, 0, 0, 0, 0, 844, 0, 0, 0, 0, 827, 0, 0, 851, 0, 0, 0, 0, 0, 897, 0, 0, 0, 0, 0, 0, 923, 0, 0, 0, 0, 931, 0, 917, 773, 929, 0, 0, 938, 0, 0, 0, 942, 943, 0, 0, 0, 0, 0, 932, 0, 0, 0, 533, 0, 0, 576, 953, 954, 0, 0, 23, 0, 0, 25, 962, 27, 0, 0, 930, 968, 969, 0, 970, 0, 0, 945, 972, 0, 0, 940, 0, 0, 0, 0, 0, 0, 0, 0, 963, 984, 0, 0, 823, 0, 955, 0, 959, 0, 0, 844, 0, 980, 0, 0, 77, 0, 973, 0, 0, 979, 941, 839, 0, 0, 0,1012, 0, 0, 995, 0, 0, 0, 0, 0, 0, 996, 0, 0,1008, 0, 0, 855,1006, 0, 667,1030,1010,1011, 0, 0, 0, 986, 0, 0, 0, 0,1009, 0, 0,1042, 1013, 0, 0, 0, 0,1045,1046, 0, 0, 0, 0, 145,1019, 0,1003,1053, 0, 0,1027, 0, 0,1059, 0, 158, 0, 0,1049, 0, 0, 0, 0, 0,1023, 0,1195, 0, 0, 0, 0,1054, 0,1063, 171, 687, 914,1005,1055,1048, 691, 0, 0, 0,1067,1058, 0,1050,1069,1084,1076, 0, 0,1074, 0, 0,1078, 198,1079,1092,1093, 0, 936, 0,1070,1072, 0, 202, 203,1100, 0,1082, 1077, 698,1103,1080, 0, 0, 0,1085, 0,1071, 0, 0,1075,1094, 0, 0, 0,1120, 311, 0, 1122, 313, 0, 0,1111, 316, 0,1106, 0,1110, 1131,1109,1119,1134,1135, 0,1136, 385,1118, 816, 0, 0,1124, 296, 0, 298, 299,1112,1113,1115, 0,1140, 0, 0, 0, 308, 309, 0,1132, 44, 0,1153, 0,1142, 0,1156,1161, 0, 0, 0, 0,1158, 320, 0, 840, 0,1159,1172, 0, 0, 72,1176, 0, 0, 76, 0, 801,1171,1166,1167, 1185, 373,1188, 374,1163,1174, 375, 325, 0, 0, 1024,1184, 0,1199,1196,1183,1147,1203,1204,1197, 0, 0, 0,1208,1209,1211, 0, 358,1212, 0, 127, 0, 0, 0, 0,1218, 894,1205,1213, 0, 0, 0, 0,1226, 0, 0, 0, 941, 0,1224, 0, 140, 0, 0,1235,1236,1237,1217, 0, 0, 1240,1241, 391, 392,1243, 0, 0, 140, 0, 0, 1220,1234,1248,1222,1252,1253,1239,1227,1250,1247, 1257, 0, 274, 0, 0,1262,1246, 0,1263, 0, 1265,1266,1267,1259, 428, 0, 0,1271, 0, 0, 0, 0, 0, 191,1269, 439, 0,1258,1277,1260, 1280,1276,1102,1283,1275,1273,1285, 452, 912,1288, 598, 0,1287,1286, 0, 0, 0, 0, 0, 0, 1282,1121,1290,1296, 0, 0, 0,1289,1298, 0, 476,1294, 140, 0, 0, 0, 0,1303,1304, 0, 1306, 0, 0,1297, 0,1309, 0, 595,1144, 487, 488,1145, 0,1301, 0, 279, 0, 0, 76,1308, 1320,1321,1322,1323,1324,1325,1314, 0,1307, 0, 0,1318, 0, 0, 0, 0, 0, 579,1313, 384, 1315, 584, 389, 586, 0, 0, 589, 0, 0, 550, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 412, 0, 414, 0, 0, 0, 0,1041, 0, 0, 0, 985, 570, 326, 0, 0, 328, 343, 0, 0, 0, 0, 0, 0, 0,1216, 0, 0, 0, 0, 0, 0, 593, 0, 717, 597, 0, 362, 0, 603, 604, 366, 0, 0, 369, 457, 371, 459, 460, 461, 462, 619, 0, 0,1028, 0, 0, 0, 0, 0, 382, 626, 0, 702,1249, 0,1251, 0, 707,1087, 1088,1256, 638, 0, 0, 641, 0, 0, 0, 0, 0, 410, 0, 0, 0, 0, 0, 680, 0, 0, 0, 0, 0, 0, 0, 0, 688, 0, 0, 0, 0,1278,1279, 0, 0, 0, 0, 703, 0, 705, 0, 0, 708, 0, 0, 0, 447, 0, 0, 715, 0, 451, 0, 343, 453, 0, 140, 0, 0, 0, 0, 0, 0,1089, 465, 731, 0, 0, 808, 0, 0, 0, 0, 0, 0, 0, 0, 0, 480, 0, 0, 482, 749, 0, 0, 0, 0, 0,1165,1317, 0, 0, 830,1170, 0, 0, 760, 0, 0, 0, 140, 0, 0, 0, 0, 0, 612, 371, 0,1129, 1130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 410, 0, 0, 0, 560, 0, 803, 804, 805, 0, 0, 0, 0, 0, 0,1173, 814,1233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, 910, 0, 0, 0, 718, 0, 0,1202, 916, 0, 0, 0,1207, 0, 921, 0, 0, 0,1264, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 465, 0, 343, 906, 863, 0, 0, 0, 0, 911, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 920, 686, 0, 0, 0, 0, 0, 890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 899,1261, 0, 779, 0, 0, 0, 905, 785, 907, 908, 0, 447, 0, 371, 0, 0, 0, 0, 974, 975, 0, 0, 0, 0, 0, 981, 982, 0, 0, 0, 0,1284, 0, 987, 0, 0, 0, 0, 0, 0, 747, 0, 0, 0, 0, 0, 0, 0, 0, 939, 0, 0, 0, 0, 410, 0, 0, 971, 0, 0, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1033, 846, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1044, 967, 0, 0, 0, 0, 0, 0, 0, 0, 714, 0, 0, 0, 978, 0, 0, 0, 0, 0, 0, 447, 0, 0, 0, 0, 0, 0, 0, 0,1034, 1035, 0,1037, 0, 0, 997, 998, 0, 0, 0, 0, 0,1007, 0, 447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1021, 0, 0, 0,1025, 0, 0, 0, 78, 0, 845,1029, 0,1031, 0, 0, 0, 0, 0,1036, 0,1038, 0, 480, 0, 0, 0,1043, 0, 0, 0, 0, 0,1047, 0, 944, 126, 0, 0, 0, 0, 0, 0, 0,1125, 0, 0,1090,1060,1061, 0, 887, 0, 0, 0, 1097, 0,1068, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 447, 0, 0, 0, 0, 0,1083, 0, 447, 0, 0, 0,1126, 0, 447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1138, 0, 0, 0, 0, 992, 935, 190, 0, 0, 193, 0, 0, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 560, 0, 0, 0, 0, 0, 0,1127, 0, 0,1168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 887, 0, 0, 0,1191,1148, 0, 0, 0, 0, 0, 0, 0,1198, 0, 0, 0, 447, 447, 0,1162, 295, 0, 0, 447, 447, 0,1169, 0, 0, 305, 0, 447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 318,1231, 0, 0, 0, 0, 0, 0,1200, 0, 0, 0, 0,1242, 0,1086, 0, 0,1210, 0,1091, 0, 55, 0,1214, 0, 0, 447, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1104, 0,1229,1230, 0, 447, 0, 0, 0, 0, 0, 0, 0, 0, 0,1191, 365, 0, 0, 747, 0, 0, 66, 67, 0, 0, 0,1064, 0,1066, 0,1097, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1268, 0,1270,1300, 0, 0, 0, 0, 0, 0, 0, 0, 0,1305, 0, 125, 0,1164,1281, 0, 0,1310, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 434,1177, 0, 1181, 0, 0, 0, 0,1187,1066, 0, 0, 0, 1299, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 447, 0, 0,1206, 0, 0, 0, 0, 0, 1311,1312, 0, 0, 0, 0,1316, 0, 0, 0, 935, 0, 0, 0, 0, 0,1223, 0, 182, 183, 184, 185, 186, 187, 0,1232, 0, 192, 0, 490, 0, 196, 0, 0, 0, 495, 0, 0, 0,1244, 0, 0, 504, 0, 0, 0, 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0,1272, 234, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, 142, 143, 144, 577, 146, 0,1225, 0, 0, 307,1292,1293, 0,1295, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1254, 0, 0, 0, 0, 0, 0, 0, 0,1319, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1274, 0, 0, 0, 0, 0, 210, 685, 0, 363, 364, 0, 0, 0, 371, 0, 694, 0, 0, 0,1291, 0, 0, 0, 0, 706, 0, 0, 709, 0, 381, 0, 0, 713, 0, 0, 0,1302, 247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 730, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 418, 419, 420, 421, 422, 423, 424, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 324, 774, 775, 776, 0, 0, 0, 0, 0, 468, 469, 470, 471, 472, 473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 383, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 0, 0, 537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 555, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 572, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 893, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 640, 0, 0, 919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 683, 684, 0, 0, 0, 0, 0, 0, 0, 690, 0, 0, 0, 0, 548, 0, 0, 0, 0, 704, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 952, 0, 0, 0, 0, 0, 0, 0, 732, 733, 734, 735, 736, 0, 0, 0, 0, 740, 0, 742, 0, 0, 0, 748, 0, 0, 0, 602, 0, 0, 605, 0, 0, 0, 977, 0, 0, 759, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, 994, 0, 0, 0, 999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 786, 0, 0, 0, 0, 0, 0,1026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1039,1040, 0, 0, 0, 0, 0, 817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1052, 0, 726, 602, 0, 0, 0, 833, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 848, 0, 850, 0, 0, 0, 0, 0, 0, 0, 857, 858, 859, 860, 861, 862, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 877, 878, 0, 0, 881, 882, 883, 884, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1114,1116, 0, 0, 0, 0, 903, 904, 0, 0, 0, 0, 0, 0, 0,1128, 0, 0, 0, 0,1133, 0, 0, 0,1137, 0, 0, 0, 605, 0, 0, 0, 0, 822, 0, 0, 0, 0, 0, 828, 605,1150,1152, 0,1155, 0, 0, 0,1157, 0, 0, 0,1160,1026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 843, 946, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1186, 0,1189, 0, 0,1193, 0, 0, 0, 0, 0, 0, 0, 960, 961,1201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 976, 0, 0, 0, 0,1219, 0, 0,1221, 0, 0, 0, 0, 0, 0,1228, 0, 991, 0, 993, 0, 0, 0, 0, 0, 0,1238, 0, 0, 915, 0, 0, 0, 0, 0, 0, 0, 922, 0,1014, 1015,1016,1017, 0, 0, 927,1255, 0, 0, 843, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1081, 0, 983, 0, 0, 0, 0, 0, 0, 989, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1175, 0, 0, 0, 0, 0, 0,1182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1245, 0, 0, 0, 0,1143 }; short yypact[]={ -1000,-1000,-236,-289,-291,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-280,-1000,-1000,-1000,-1000,-1000,-254, -1000,-236,-236,-174,-183,-100,-1000,-100,-1000,-1000, -1000,-1000,-1000,-1000,-258,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-280,-1000,-276,-1000,-1000,-1000,-287, -1000,-1000,-188,-114,-1000,-1000,-188,-174, -75,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-261,-287,-270,-1000,-1000,-274, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000, -75,-144,-1000,-1000, -1000,-1000,-1000,-1000,-265,-1000,-1000,-1000,-1000,-1000, -199,-1000,-1000,-1000,-1000,-248,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-248,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -246, -35,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -75,-1000,-1000,-1000,-1000,-151,-1000,-1000,-1000,-1000, -1000,-1000,-100,-212,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-153,-1000,-1000,-115, -75,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-151,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-221, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-100,-1000, -1000,-1000,-1000,-1000,-1000,-100,-1000,-1000,-1000,-100, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -83, -100,-1000,-1000,-1000,-1000, -12,-188,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-185,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -75, -153,-1000,-1000,-1000,-1000, -30,-188,-1000,-1000,-1000, -1000, -81,-1000,-100,-100,-1000,-1000, -75,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-114,-1000, -1000,-100,-1000,-1000,-1000,-1000,-1000,-1000,-210,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-153,-1000,-1000,-1000,-138,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-170,-1000, -1000,-1000,-114,-1000, -28,-1000,-1000,-1000,-1000,-1000, -26,-1000,-1000, -26,-1000,-1000,-1000,-182,-1000,-1000, -1000,-1000, -94,-1000,-1000,-1000,-203,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-100,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-109,-185,-1000,-1000,-1000, -1000,-1000,-241,-1000,-1000,-1000,-1000,-1000,-100,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-276,-1000, -1000,-1000,-1000,-1000, -30,-1000,-1000,-1000, -73,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-192, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-276,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000, -12,-229,-129,-203,-129,-129,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000, -71,-1000,-1000, -20,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000, -75,-1000,-1000,-100,-1000, -75, -73,-1000,-216, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-119,-1000,-1000,-1000,-203,-1000,-1000, -1000,-1000,-1000,-203,-119,-119,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-105, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -35,-1000, -1000,-185,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -29,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-158,-1000,-1000,-1000,-1000,-1000,-1000,-153, -1000,-1000, -85,-1000,-1000, -30,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000, -75,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000, -49,-100,-1000,-1000,-1000, -1000,-1000,-193, -73, -28,-203,-1000,-1000,-1000,-1000, -153,-1000,-1000,-1000,-192,-1000,-1000,-1000,-1000,-1000, -51, -32,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-112, -20, -20,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-153, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -26, -1000,-1000, -26,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000, -75,-1000,-1000,-1000, -1000,-1000,-1000,-176,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-153,-179,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -153,-1000,-1000, -23,-136,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -73, -73,-1000,-1000,-1000,-1000,-1000,-1000,-100,-1000,-1000, -1000,-1000,-1000,-1000,-153,-1000,-218,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000, -35,-1000,-1000,-1000, -1000, -12,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -75, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-153,-1000,-1000,-1000,-1000,-231,-1000,-153,-1000, -1000, -85,-153,-153,-1000,-1000,-1000, -20,-1000,-1000, -1000,-1000, -52,-1000,-1000,-1000,-1000,-1000, -30,-1000, -1000,-1000, -75,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000, -26,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-153,-1000,-1000, -48, -28, -1000,-1000,-1000,-1000,-1000,-136,-1000,-1000,-153,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-100, -1000, -61,-1000,-1000, -83, -48, -28,-100,-1000,-100, -1000, -92,-1000,-1000,-216,-1000,-1000, -35,-1000,-1000, -1000, -75,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-153, -1000,-1000, -63,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -32,-1000,-1000,-153,-145,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-153,-100,-1000,-1000,-1000,-1000, -100,-1000,-1000,-1000,-1000,-1000,-1000, -75, -75,-1000, -12,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000, -73,-1000, -51,-1000,-1000,-1000, -1000,-100,-1000,-1000,-1000,-1000, -12,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000, -75,-100,-1000, -1000,-1000,-1000,-1000,-121,-1000,-1000,-1000, -48,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000, -73,-1000,-1000, -51,-1000,-1000,-1000,-1000, -75,-1000,-1000,-1000,-1000, -75,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-129,-1000, -1000,-1000,-1000,-153,-1000,-1000, -28,-1000,-1000, -28, -1000,-158,-1000, -28,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-229,-1000,-1000, -63, -1000, -73,-1000,-1000,-1000,-1000,-1000,-1000, -32, -12, -48, -12,-1000, -75,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-185, -51, -32,-1000,-1000,-1000, -1000,-1000,-1000,-1000, -75,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-153, -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -12,-1000, -20,-1000,-1000,-1000,-1000,-1000,-1000,-1000, -12,-100, -12,-1000,-1000,-1000,-100,-1000,-1000,-1000, -1000,-1000,-1000,-1000,-1000,-1000 }; short yypgo[]={ 0, 731, 730, 289, 729, 728, 727, 726, 252,1097, 80, 65, 10, 87, 389, 23, 882, 16, 0, 259, 282, 285, 278, 62, 203, 724,1789, 451,2177, 248, 49, 39, 722, 721, 75, 719, 50, 715, 711, 70, 710, 707, 250, 258, 272, 706, 29, 705, 702, 45, 701, 700, 257, 260, 698, 26, 249, 696, 693, 691, 839, 48, 795,1014, 18, 690, 60, 689, 688, 27, 687, 47, 6, 255, 3, 686, 684, 683, 677, 675, 659, 655, 31, 654, 8, 653, 24, 652, 40, 651, 649, 647, 646, 645, 644, 643, 641, 66, 640, 639, 638, 634, 632, 630, 629, 628, 627, 625, 624, 623, 622, 621, 620, 618, 617, 616, 615, 52, 28, 51, 56, 17, 34, 614, 12, 20, 33, 1, 613, 612, 38, 611, 605, 9, 603, 602, 19, 601, 600, 599, 597, 595, 594, 592, 590, 589, 588, 586, 585, 582, 35, 37, 21, 580, 15, 25, 22, 576, 575, 574, 58, 14, 64, 7, 569, 568, 567, 63, 566, 565, 67, 46, 564, 30, 2, 68, 563, 562, 560, 558, 61, 555, 11, 554, 5, 553, 59, 552, 551, 53, 550, 549, 548, 547, 43, 546, 545, 543, 542, 541, 540, 538, 534, 41, 533, 55, 54, 531, 529, 32, 528, 527, 526, 525, 524, 523, 522, 521, 520, 519, 518, 517, 516, 36, 515, 514, 513, 512, 13, 4, 509, 507,2060, 504, 502, 497, 493, 490, 486, 484, 481, 478, 477, 476, 475, 474, 473, 472, 469, 468, 467, 465, 463, 462, 461, 460, 457, 456, 57, 450, 448, 440, 438, 437, 433, 432, 431, 430, 429, 428, 427, 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, 414, 409, 405, 402, 399, 397, 395, 394, 393, 392, 388, 387, 386, 385, 383, 382, 380, 379, 376, 375, 374, 373, 372, 370, 369, 366, 361, 358, 357, 355, 354, 352, 348, 345, 344, 343, 342, 340, 339, 338, 335, 334, 331, 328, 327, 325, 324, 323, 277, 276, 286, 283, 284, 321, 299, 320, 273, 74, 319, 317, 281, 316, 314, 308, 305, 304, 280, 275, 265, 292, 301, 298, 296, 288, 266 }; short yyr1[]={ 0, 2, 1, 4, 1, 6, 1, 5, 5, 5, 7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 20, 22, 33, 33, 29, 29, 37, 37, 40, 34, 19, 19, 41, 41, 41, 8, 8, 45, 45, 42, 42, 42, 42, 42, 42, 50, 50, 59, 59, 53, 53, 65, 65, 66, 66, 56, 56, 68, 68, 68, 58, 58, 70, 70, 43, 43, 74, 78, 78, 80, 80, 77, 77, 77, 85, 85, 86, 87, 87, 87, 87, 88, 88, 88, 91, 91, 92, 93, 12, 12, 12, 96, 96, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 100, 101, 101, 119, 119, 118, 123, 123, 125, 125, 102, 103, 104, 132, 132, 105, 120, 120, 137, 137, 139, 106, 107, 108, 109, 110, 110, 111, 112, 112, 151, 151, 150, 150, 113, 113, 155, 155, 154, 114, 115, 159, 159, 160, 83, 83, 152, 152, 161, 161, 156, 156, 62, 62, 62, 62, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 162, 162, 175, 175, 170, 170, 170, 167, 167, 167, 181, 181, 182, 178, 178, 178, 183, 183, 184, 184, 184, 63, 185, 185, 186, 188, 188, 189, 189, 192, 193, 193, 195, 195, 195, 195, 195, 195, 195, 194, 202, 202, 204, 204, 204, 203, 208, 208, 210, 210, 210, 210, 209, 209, 209, 215, 216, 216, 216, 216, 216, 216, 216, 217, 217, 221, 221, 221, 221, 221, 221, 221, 224, 224, 225, 225, 228, 228, 228, 226, 226, 229, 229, 229, 227, 227, 172, 172, 36, 230, 230, 231, 207, 233, 69, 234, 211, 235, 122, 236, 61, 237, 126, 238, 31, 239, 127, 240, 95, 241, 46, 242, 199, 243, 200, 244, 197, 245, 198, 246, 206, 247, 196, 248, 205, 249, 124, 250, 84, 251, 174, 252, 72, 253, 27, 254, 212, 255, 67, 256, 222, 257, 71, 259, 76, 261, 173, 262, 82, 258, 258, 260, 260, 263, 17, 264, 218, 265, 219, 266, 220, 267, 180, 268, 190, 269, 164, 270, 94, 271, 11, 272, 165, 273, 179, 274, 134, 275, 116, 276, 48, 277, 213, 278, 133, 279, 138, 280, 140, 281, 15, 282, 129, 283, 149, 284, 57, 285, 128, 286, 35, 287, 44, 288, 148, 289, 130, 290, 38, 291, 135, 292, 39, 293, 201, 294, 75, 295, 25, 296, 141, 297, 142, 298, 177, 299, 214, 300, 32, 301, 191, 302, 176, 303, 117, 304, 187, 305, 73, 306, 143, 307, 81, 308, 90, 309, 166, 310, 171, 311, 144, 312, 146, 313, 54, 314, 168, 315, 136, 316, 131, 317, 147, 318, 51, 319, 153, 320, 21, 321, 145, 322, 169, 323, 89, 324, 55, 325, 157, 326, 158, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 232, 337, 339, 337, 340, 337, 342, 337, 343, 23, 344, 23, 346, 23, 345, 345, 345, 345, 341, 341, 341, 341, 347, 348, 350, 350, 351, 351, 351, 351, 351, 351, 353, 353, 355, 355, 60, 223, 9, 349, 18, 24, 354, 79, 352, 28, 13, 26, 16, 64, 338, 52, 49, 121, 30, 47, 10, 14 }; short yyr2[]={ 0, 0, 2, 0, 3, 0, 3, 1, 1, 10, 1, 1, 1, 3, 1, 3, 3, 5, 3, 5, 15, 11, 0, 6, 0, 3, 11, 7, 11, 12, 0, 3, 1, 8, 10, 0, 3, 1, 14, 7, 7, 7, 7, 9, 5, 0, 2, 20, 18, 0, 2, 16, 16, 1, 5, 0, 2, 17, 21, 18, 0, 3, 6, 11, 7, 9, 9, 0, 4, 0, 6, 0, 4, 6, 2, 7, 3, 0, 2, 2, 2, 7, 11, 8, 0, 5, 1, 5, 0, 2, 4, 3, 7, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 11, 10, 0, 5, 8, 1, 5, 3, 7, 1, 5, 19, 0, 4, 12, 0, 3, 0, 2, 9, 10, 4, 3, 8, 1, 3, 7, 12, 8, 0, 5, 11, 6, 15, 11, 0, 5, 6, 10, 10, 1, 3, 7, 0, 1, 1, 5, 1, 3, 2, 5, 3, 5, 3, 6, 6, 5, 7, 3, 4, 5, 3, 1, 6, 4, 4, 8, 1, 3, 5, 8, 0, 2, 4, 0, 6, 8, 1, 7, 4, 0, 6, 8, 1, 7, 9, 13, 11, 3, 1, 5, 3, 1, 5, 3, 1, 3, 1, 5, 1, 1, 1, 1, 1, 1, 1, 3, 1, 5, 1, 1, 1, 3, 1, 5, 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, 1, 4, 4, 0, 3, 2, 1, 7, 7, 4, 8, 4, 2, 5, 2, 5, 3, 3, 17, 2, 5, 1, 5, 5, 0, 4, 0, 1, 4, 1, 5, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 1, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 0, 0, 4, 0, 4, 0, 3, 0, 4, 0, 4, 0, 3, 2, 1, 2, 1, 2, 2, 2, 2, 4, 4, 3, 4, 0, 3, 2, 4, 4, 4, 1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; short yychk[]={ -1000, -1, -2, -4, -6, -3, -20, -21, -22, -23, -25, 344, -32,-338,-345, 319, 324,-348,-333,-349, 357, 361, 362, -16, -24, -16,-320, -16,-335,-332, -347,-331, 356, 359,-349, 358,-346,-295,-300,-327, 352, -5, -8, -3, -9, -7, -19, -3, -20, -22, -20, -21, -22, -17, 287,-232,-336, -17,-343,-344, -328, 353,-337,-338,-341, -24,-232,-232,-350,-351, -45, -42, -9, -10, -41, -42, -9, -16, -26,-263, -337, -33, -24,-337,-337,-350,-335,-332,-347,-331, -342,-348,-333, -18,-352,-353,-354,-341,-355,-338, -334, 360, -13, -10, -48, -51, -54, -55, -44, -57, 300, 342, 337, 348, 311, 308, -11, 295, -13, -10, -44, -20, -22, -27, 279,-232, -26, -9, -18,-339, -340,-337,-329, 354,-338,-355,-330, 355,-335, -43, -9, -28, -28, -28, -28, -16, -28,-276,-318,-313, -324,-287,-284, -12, -96, -28,-271, -43, -16, -28, -253, -27, -35, 310,-337,-337,-329,-330,-347,-348, -349, -16, -73, -75, 329, 318, -49, -52, -52, -49, -55, -58,-232,-232,-232,-232,-232,-232, -13, -18, -26, -9,-232, -26, -10, -29,-232, -28, -16,-286, -46, 266, -16, -16,-305,-294, -50, -53, -53, -56, -28, -18, -70, -10, -14, -27, -97, -91, -14, -43, -19, -37, -38, -39, 314, 316, -29, -36,-223,-232, -30,-241, -17, -73,-232,-232, -18, -59, -10, -18, -65, -10, -18, -18, -68, -10, -49, -28, -36, -15, 305, -18, -92, -98, -93, -99, -40,-100,-101,-102, -103,-104,-105,-106,-107,-108,-109,-110,-111,-112, -113,-114,-115, -94, -63, -8,-116,-128,-129, -9, -142,-143,-144,-146,-147, 294, 299, 309, 306, 321, 330, 335, 336, 341, -27, -26, -16, -13, -16, -16, -290,-292, -34, -8, -18, -26, -47,-232, -16, -16, -18, -60, -18, -60, -18, -18, -60, -56, -26, -24, -16,-281, -28, -18, -28, -16, -9, -24, -9,-130, -135,-141,-153,-157,-158,-185, 313, 315, 320, 343, 349, 350,-186, -9, -12, -24, -12, -24, -12,-270, -275,-285,-282,-297,-306,-311,-312,-317, -16, -14, -30, -17, -9,-232,-232, -26, -9,-230, -17, -9, -74, -9, -17, -60, -60, -60, -18, -14, -71, 283, -17,-232, -9, -28, -63, -9, -69, 259, -10, -63, -24, -16, -16, -24, -24, -24, -28, -18, -24,-289, -291,-296,-319,-325,-326,-188,-189,-191,-192, 325, -9,-121, -63, -13, -63, -13,-232,-232,-232,-232, -232,-232,-232,-232,-232, -18, -27, -15, -16, -36, -31, 264, -10, -18, -26, -34, -18, -76, 283, -16, -17, -66, -17, -36, -18, -27, -62, -9,-257, -18, -97, -9, -16, -9,-233, -11, -24, -63, -17, -63, -63, -63, -63,-159,-160, -9,-187, 328,-232,-232, -232,-232,-232,-232, -18, -24, -16,-301,-193,-194, -9, -15, -9,-148,-149, 312, 307, -16, -16, -39, -26,-238, -11,-126, 263, -26, -77, -49,-259, -74, -61, -18, 262, -18, -26, -61, -18, -64, -26, -66, -163, -71,-164,-165, -73,-166,-168,-169,-162,-170, -82,-173, 293, 296, 333, 338, 346,-175,-179, 285, 284, 297,-258, -16, -95, 286, -24,-232, -12,-117, 327, -18, -24, -24, -24, -24, -24, -24, -28, -17, -16,-304,-190, 292,-189,-232, -18, -24,-202,-203, -9,-145, 345, -12, -13,-151,-288,-283, -18, -17, -16, -18,-232, -12, -24,-237, -14, -26, -85, -60, -260, -23, -18, -18, -60,-236, -60, -31, -18, -60, -72, 278, -18, -16, -18, -62,-156, -16, -24, -24, -24,-167, -28, -16, -16, -28,-171,-176, 334, 326, -172, -36, -63,-269,-272,-309,-314,-322, -24, -16, -262,-261,-273, -23,-240, -63, -16, -28,-303, -69, -136, 339,-133, 302,-117,-133,-133,-160, -16,-186, -232, -16,-268,-195, -46,-196,-197,-198,-199,-200, -201, 272, 269, 270, 267, 268, 317, -18, -24,-208, -209,-215,-205,-206,-216, 274, 271, -17,-218,-219, -220,-180, -71, 288, 289, 290, 291, -24,-321,-121, -16,-120, -13,-232,-232, -26, -9, -27, -16, -17, -232, -27, -72, -18, -26, -86, -87, -89, -55, -90, 347, 332, -60, -16,-232, -16, -26, -60, -16, -26, -252,-162,-170, -26, -26, -16,-117, -62, -63, -74, -121, -49,-117,-162,-170,-175, -28,-167,-310,-302, -26, -16,-232,-232,-232,-232,-232,-180,-258,-258, -232, -24,-232, -18, -30,-118,-119, -9,-232, -16, -18,-315, -18,-278, -18, -18, -18, -46,-189,-232, -16,-247,-244,-245,-242,-243,-293,-204,-205,-206, -207, 258, -18, -24, -26, -26, -26,-248,-246, -63, -163,-264,-265,-266,-267, -63,-232, -15, -16,-121, -138,-122, 303, 261, -31, -36, -30, -18, -78, -26, -18, -27, -36, -16, -16, -16,-323,-308, -62, -18, -46, -67, 281, -17, -16, -18, -14,-232, -18, -72, -126,-117, -28, -24, -15,-181,-182, -60, -28,-171, -62,-121, -13,-232,-232, -84, 276,-127, 265, -24, -14,-119,-120, -28, -13, -9, -63, -12,-232, -12, -232, -13,-155, -12, -12, -24,-194,-232,-232,-232, -232,-232,-232, -16,-231,-210,-211,-212,-213,-214, 260, 280, 301, 323,-209,-209,-217,-232,-232, -26, -26,-232,-232,-232,-232, -18,-150, -9, -15, -12, -16,-279,-235, -26, -14, -18, -79, -61, -18, -16, -88, -61, -18,-232,-232, -16, -60, -16, -16,-255, -62, -60, -27, -18, -24, -28, -62,-130, -18, -26, -60, -62, -28, -15,-177, 322,-250, -28,-239, -15, -120,-121,-122,-123,-125, -9, -24,-137,-121, -16, -120, -13,-121,-121, -63,-203,-232, -16,-234,-254, -277,-299, -26, -72, -72,-151,-152,-161, -17,-150, -232,-232, -18, -15, -80, -81, 331, -16, -18, -18, -18, -60, -18, -46, -62, -62,-232, -26, -16, -69, -64, -62, -62, -28, -18, -27, -36, -62,-178, -28, -298,-232, -63,-232, -26,-121, -15, -16, -16, -26, -63,-131, 340,-120,-139, -13, -15, -16,-121,-122, -15, -15, -18,-209,-232,-232,-232,-232,-221, -31, -222, -16, 282,-120, -24, -16, -26, -31, -27, -16, -18, -16,-307, -62, -60, -60, -16, -60, -16, -26, -26, -14, -18, -16, -62, -18, -18, -16, -88,-121, -49,-232, -26, -18, -15,-118,-124, 275,-126, -18, -16, -16,-316,-121, -9,-154, -9, -15, -16, -17, -173, -71, -82,-256,-121, -71,-124,-126, -17, -17, -82,-232, -86, -16, -18, -46, -63, -14, -14, -27, -60, -63, -18, -18, -15,-183,-184, -60,-174, 277, -18,-249, -24,-127, -63,-232, -15,-140, 304,-155, -156,-154,-223,-223, -26,-223, -26,-232, -15, -17, -18, -24, -18, -83,-152, -62, -60, -16, -26, -27, -27, -18, -69, -26, -18, -18, -18, -26, -60,-251, -12,-232,-125, -28, -24, -24,-280,-120, -16,-224, -26,-225, -26, -72,-226, -26, -84, -26, -12,-161, -26, -18, -16, -69, -63, -14, -64, -64, -60, -16, -14,-182, -18, -27, -17,-232, -18, -63,-132,-134, 298, -63,-232,-121,-124, -18, -26, -63, -18, -26, -228, -60,-227, -26,-229, -63, -72, -84, -60, -18, -16, -26, -27, -18, -18, -64, -63, -27, -18, -18, -16, -18, -18,-133, -16,-274, -24, -15, -18, -26, -126, -26,-126, -63,-163, -9, -18,-126, -26, -16, -16, -60, -63, -14, -64, -18, -18, -18, -26, -64, -18, -18, -60, -18, -63,-232,-136, -12,-174, -24, -72, -24, -18, -18, -9, -26, -24,-127, -69,-124, -69, -27, -18, -18, -14, -18, -18, -18, -16, -12, -16, -18, -63,-228, -9, -84,-229,-127, -24, -24, -18, -16, -64, -18, -27, -18,-184, -74, -18,-121, -12, -9, -63, -63, -12, -63, -18, -64, -18, -16, -60, -15, -9, -18, -18, -60, -18, -69, -17, -18, -60, -16, -16, -69,-161, -69, -16, -24,-161, -63, -18, -18, -18, -18, -18, -18 }; short yydef[]={ -2, -2, -2, 0, 0, 2, 12, 520, 14, 513, 520, 448, 520, 511, 484, 398, 408, 487, 489, 0, 468, -2, -2, 0, 0, 0, 471, 0, 480, 482, 486, 488, 470, 467, 0, 466, -2, 471, 471, 498, 462, 4, -2, 8, 528, 6, -2, 11, 13, 15, 16, 520, 18, 519, 334, 449, -2, -2, -2, -2, 498, 463, 485, 511, 478, 511, 399, 409, 512, -2, 518, 37, 528, 0, 518, 32, 528, 0, 0, 471, 472, 519, 510, 481, 483, 512, 474, 476, 490, 492, -2, 491, 493, 495, 0, 522, 0, 500, 504, 511, 507, 469, 36, 510, 517, 517, 517, 517, 520, 517, 360, 444, 434, 456, 382, 376, -2, 350, 31, 510, 520, 17, 19, 517, 314, 335, 0, 0, 494, -2, -2, 479, 496, 464, 511, 505, 499, 465, 506, 520, 0, 524, 523, 523, 524, 0, 60, 471, 471, 471, 471, 471, 471, 518, -2, 510, 471, 519, 528, 24, 471, 517, 520, 380, 475, 477, 497, 501, 502, 503, 0, 0, 520, 520, 418, 396, 45, 49, 49, 55, 517, -2, 361, 445, 435, 457, 383, 377, 529, 89, 0, 84, 351, 529, 510, 30, 315, 24, 509, 471, 526, 290, 0, 0, 471, 471, -2, -2, -2, -2, 524, 44, 517, 509, 0, 512, 91, -2, 0, 519, -2, 518, 520, 520, 388, 392, 35, 512, 519, 381, 527, 471, 520, 520, 419, 397, 512, 46, 508, 512, 50, 508, 512, 512, 56, 508, 55, 61, -2, 520, 370, -2, 512, 93, 86, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 517, -2, 510, 513, 123, 510, 510, -2, 513, -2, -2, -2, 348, 358, 378, 372, 402, 420, 430, 432, 442, 520, 529, 526, 25, 0, 510, 471, 471, 519, 510, 23, 0, 510, 291, 510, 0, 39, 508, 40, 508, 41, 42, 508, -2, 529, 0, 0, 471, 510, 517, 510, 0, 528, 510, 513, 520, 520, 513, 513, 513, 517, -2, 386, 390, 400, 446, 458, 460, 203, 510, 525, 510, 518, 510, 518, 471, 471, 471, 471, 471, 471, 471, 471, 471, 512, 0, 0, 520, 509, 389, 393, 0, 528, -2, 270, 35, 512, 0, 520, 0, 0, 509, 512, 0, 510, 322, 512, 371, 84, 510, 520, 510, 510, 274, 510, 513, 510, 0, 510, 510, 510, 510, 510, 202, 0, 471, 471, 471, 471, 471, 471, -2, 206, 520, 209, 410, 510, 0, 136, 510, 139, 0, 349, 359, 379, 373, 403, 421, 431, 433, 443, 33, 520, 520, 0, 519, 21, 284, 510, 269, 0, 519, 64, -2, 324, 510, 512, 512, -2, 512, 43, 521, 519, 185, -2, 9, 92, 85, 0, 513, 471, -2, 0, 512, 513, 513, 513, 513, 513, -2, 154, 0, 520, 416, 387, 391, 401, 447, 459, 461, 205, 0, 510, 471, -2, 211, 510, 135, 0, -2, -2, 384, 374, 512, 0, 520, 512, 471, -2, 513, 282, 529, 519, 508, -2, 512, 512, 508, 280, 508, 0, 512, 508, 62, 0, -2, 512, 510, -2, 513, 513, -2, 520, 520, -2, 0, -2, 510, 346, 352, 426, 436, 452, 181, -2, 328, 326, 354, 323, -2, 87, 288, 510, 275, 520, 517, 414, 124, 0, 0, 0, 0, 0, 0, 510, 520, 510, 471, 520, 344, 208, 411, 210, 0, -2, 221, 0, 513, 450, 525, 520, -2, 471, 471, 34, 519, 510, 0, 285, 520, 0, 471, 0, 0, -2, 77, 325, 333, 65, 508, 520, 471, 520, 519, 508, 520, 519, 312, 165, 185, 167, 519, -2, 0, 510, 510, 510, 525, 524, 0, 185, 185, 517, -2, 428, 412, 519, 268, 520, 471, 471, 471, 471, 471, 186, 0, -2, -2, 471, 513, 471, 512, 526, -2, 471, 520, 512, 438, 512, 364, 512, 512, 512, 155, 0, 204, 417, 510, 471, 520, 213, 214, 215, 216, 217, 218, 219, 302, 296, 298, 292, 294, 394, 220, 0, -2, 227, 233, 519, 519, 519, 304, 300, 237, 238, 239, 240, 241, -2, 336, 338, 340, 342, 510, 471, 0, 520, 525, 0, 385, 375, 0, 509, 27, 526, 271, 283, 512, -2, 512, 0, 74, 509, 520, 520, 520, 454, 424, 510, 512, 281, 0, 0, 520, 512, 529, 471, -2, 0, 0, 0, 0, 517, 163, 513, 172, 0, 508, 517, -2, 0, 182, 510, -2, 471, 471, 0, 0, 347, 353, 427, 437, 453, 513, 329, 327, 355, 331, 289, 112, 529, 116, -2, 510, 415, 510, -2, 471, -2, 471, -2, -2, -2, 513, 207, 345, 510, 471, 471, 471, 471, 471, 471, 520, 223, 224, 225, 272, 226, 0, 0, 0, 244, 471, 471, 519, 519, 471, 471, 471, 471, 512, 451, 140, 510, 0, -2, 520, 366, 278, 20, 519, 529, 512, 515, 0, 72, -2, 512, 78, 79, 80, 471, 471, 520, 508, 520, 520, 318, 54, 510, 508, 0, 313, 166, 512, 513, 517, 510, 0, 173, -2, 191, 508, 510, 517, 178, 0, 0, 429, 413, 179, 308, 517, 286, 187, 0, -2, 525, 0, 0, 510, 513, 131, 439, 525, 365, 520, -2, 525, 525, 510, 212, 303, 297, 299, 293, 295, 395, 510, 471, 520, 229, 230, 231, 232, 276, 316, 362, 406, 234, 235, -2, 305, 301, 0, 0, 337, 339, 341, 343, 137, 143, 0, 142, 130, 510, 471, 471, 512, 0, 38, 69, 520, 512, 512, 76, 512, 508, 455, 425, 512, 0, 510, 510, 471, -2, 0, 521, 168, 510, 510, 170, 517, 512, 0, 509, 174, 510, 183, -2, 404, 471, 510, 471, 519, 525, 0, 520, -2, 119, 510, 0, -2, 0, 520, 525, 0, 0, 0, 512, 222, 273, 0, 471, 471, 471, 471, 520, 242, 243, -2, -2, 159, 161, 144, 367, 279, 0, 520, 512, 520, 422, 510, 73, 508, 508, 520, 508, 520, 519, 519, 319, 529, 512, 520, 63, 164, 169, 510, 512, -2, 512, 177, 525, 524, 471, 309, 519, 287, 512, 0, 115, 510, 0, 0, -2, 520, 440, 525, 132, 510, 134, 510, 0, 520, 152, 153, 156, 228, 277, 317, 363, 407, 245, 0, 247, 0, 320, 525, 0, 0, 0, 0, 26, 0, 66, 0, 471, 68, 77, 520, 512, 0, 510, 529, 529, 0, 508, 510, 171, 189, 512, 512, 193, 0, 508, 405, 0, 28, 114, 117, 512, 306, 513, 121, 0, 510, 471, 0, 0, 149, 513, 148, 510, 246, 509, -2, -2, 471, 0, 0, 512, 513, 162, 512, 157, 423, 75, 510, 508, 520, 519, 0, 0, 512, 0, 519, 512, 512, 184, -2, 197, 508, 180, 310, -2, 471, 510, 517, 513, 441, 128, 513, 368, -2, -2, 150, 519, 519, 0, 519, 0, 321, 141, 519, -2, 0, 29, 519, -2, -2, 0, 510, 529, 521, 521, 508, 520, 529, 190, 508, 512, 0, 0, 471, 512, 307, 120, 510, 126, 510, 471, 525, 0, -2, 510, -2, 508, 250, -2, 510, 252, 0, 146, 160, 0, 508, 512, 520, 519, 0, 512, 512, 521, 510, 0, 192, 512, -2, 512, 311, 118, 512, 0, 520, 356, 513, 369, 0, 512, 519, 0, 253, 519, 0, 255, -2, 512, 0, 260, -2, 520, 70, 81, 508, 510, 529, 521, 512, 512, 512, 519, 521, 195, 512, 512, 508, 122, 512, 510, 471, 0, 147, -2, 0, 513, 0, 513, 512, 512, 510, 519, 513, 0, 0, 0, 0, 83, 0, 512, 51, 52, 512, 529, 512, 512, 512, 520, -2, 520, 357, 512, 151, 248, 510, 249, 508, 257, 258, 510, 0, 510, 513, 513, 512, 520, 521, 512, 57, 0, 512, 196, 508, -2, 525, 127, -2, 254, 256, 510, 251, 261, 266, 510, 510, -2, 510, 512, 48, 521, 59, 198, -2, 508, 0, 133, 510, 263, 264, 145, 82, 512, 512, 508, 512, 0, 125, 0, 47, 512, 199, 508, 520, -2, 58, 0, 0, 0, 520, 201, 513, 0, 510, 200, 512, 512, 512, 512, 512, 512, 259 }; #ifndef lint static char yaccpar_sccsid[] = "@(#)yaccpar 4.1 (Berkeley) 2/11/83"; #endif not lint # # define YYFLAG -1000 # define YYERROR goto yyerrlab # define YYACCEPT return(0) # define YYABORT return(1) /* parser for yacc output */ #ifdef YYDEBUG int yydebug = 0; /* 1 for debugging */ #endif YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */ int yychar = -1; /* current input token number */ int yynerrs = 0; /* number of errors */ short yyerrflag = 0; /* error recovery flag */ yyparse() { short yys[YYMAXDEPTH]; short yyj, yym; register YYSTYPE *yypvt; register short yystate, *yyps, yyn; register YYSTYPE *yypv; register short *yyxi; yystate = 0; yychar = -1; yynerrs = 0; yyerrflag = 0; yyps= &yys[-1]; yypv= &yyv[-1]; yystack: /* put a state and value onto the stack */ #ifdef YYDEBUG if( yydebug ) printf( "state %d, char 0%o\n", yystate, yychar ); #endif if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); } *yyps = yystate; ++yypv; *yypv = yyval; yynewstate: yyn = yypact[yystate]; if( yyn<= YYFLAG ) goto yydefault; /* simple state */ if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0; if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault; if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */ yychar = -1; yyval = yylval; yystate = yyn; if( yyerrflag > 0 ) --yyerrflag; goto yystack; } yydefault: /* default state action */ if( (yyn=yydef[yystate]) == -2 ) { if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0; /* look through exception table */ for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */ while( *(yyxi+=2) >= 0 ){ if( *yyxi == yychar ) break; } if( (yyn = yyxi[1]) < 0 ) return(0); /* accept */ } if( yyn == 0 ){ /* error */ /* error ... attempt to resume parsing */ switch( yyerrflag ){ case 0: /* brand new error */ yyerror( "syntax error" ); yyerrlab: ++yynerrs; case 1: case 2: /* incompletely recovered error ... try again */ yyerrflag = 3; /* find a state where "error" is a legal shift action */ while ( yyps >= yys ) { yyn = yypact[*yyps] + YYERRCODE; if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){ yystate = yyact[yyn]; /* simulate a shift of "error" */ goto yystack; } yyn = yypact[*yyps]; /* the current yyps has no shift onn "error", pop stack */ #ifdef YYDEBUG if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] ); #endif --yyps; --yypv; } /* there is no state on the stack with an error shift ... abort */ yyabort: return(1); case 3: /* no shift yet; clobber input char */ #ifdef YYDEBUG if( yydebug ) printf( "error recovery discards char %d\n", yychar ); #endif if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */ yychar = -1; goto yynewstate; /* try again in the same state */ } } /* reduction by production yyn */ #ifdef YYDEBUG if( yydebug ) printf("reduce %d\n",yyn); #endif yyps -= yyr2[yyn]; yypvt = yypv; yypv -= yyr2[yyn]; yyval = yypv[1]; yym=yyn; /* consult goto table to find next state */ yyn = yyr1[yyn]; yyj = yypgo[yyn] + *yyps + 1; if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]]; switch(yym){ case 1: # line 154 "Parse.yacc" { depth=0; } break; case 3: # line 155 "Parse.yacc" { depth=0; } break; case 5: # line 156 "Parse.yacc" { depth=0; } break; case 272: # line 721 "Parse.yacc" { PR ("&");} break; case 274: # line 722 "Parse.yacc" { PR (":=");} break; case 276: # line 723 "Parse.yacc" { PR ("*");} break; case 278: # line 724 "Parse.yacc" { PR ("|");} break; case 280: # line 725 "Parse.yacc" { PR (":");} break; case 282: # line 726 "Parse.yacc" { PR (",");} break; case 284: # line 727 "Parse.yacc" { PR (".");} break; case 286: # line 728 "Parse.yacc" { PR ("..");} break; case 288: # line 729 "Parse.yacc" { PR ("*>");} break; case 290: # line 730 "Parse.yacc" { PR ("=");} break; case 292: # line 731 "Parse.yacc" { PR (">");} break; case 294: # line 732 "Parse.yacc" { PR (">=");} break; case 296: # line 733 "Parse.yacc" { PR ("<");} break; case 298: # line 734 "Parse.yacc" { PR ("<=");} break; case 300: # line 735 "Parse.yacc" { PR ("-");} break; case 302: # line 736 "Parse.yacc" { PR ("\043");} break; case 304: # line 737 "Parse.yacc" { PR ("+");} break; case 306: # line 738 "Parse.yacc" { PR ("=>");} break; case 308: # line 739 "Parse.yacc" { PR ("}");} break; case 310: # line 740 "Parse.yacc" { PR ("]");} break; case 312: # line 741 "Parse.yacc" { PR (")");} break; case 314: # line 742 "Parse.yacc" { PR (";");} break; case 316: # line 743 "Parse.yacc" { PR ("/");} break; case 318: # line 744 "Parse.yacc" { PR ("<:");} break; case 320: # line 745 "Parse.yacc" { PR ("^");} break; case 322: # line 747 "Parse.yacc" { PR ("("); blanklinep=0;} break; case 324: # line 748 "Parse.yacc" { PR ("("); blanklinep=0;} break; case 326: # line 749 "Parse.yacc" { PR ("["); blanklinep=0;} break; case 328: # line 750 "Parse.yacc" { PR ("{"); blanklinep=0;} break; case 334: # line 755 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 336: # line 756 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 338: # line 757 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 340: # line 758 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 342: # line 759 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 344: # line 761 "Parse.yacc" { PR ("AND");} break; case 346: # line 762 "Parse.yacc" { PR ("ARRAY");} break; case 348: # line 763 "Parse.yacc" { PR ("<*ASSERT");} break; case 350: # line 764 "Parse.yacc" { PR ("BEGIN");} break; case 352: # line 765 "Parse.yacc" { PR ("BITS");} break; case 354: # line 766 "Parse.yacc" { PR ("BRANDED");} break; case 356: # line 767 "Parse.yacc" { PR ("BY");} break; case 358: # line 768 "Parse.yacc" { PR ("CASE");} break; case 360: # line 769 "Parse.yacc" { PR ("CONST");} break; case 362: # line 770 "Parse.yacc" { PR ("DIV");} break; case 364: # line 771 "Parse.yacc" { PR ("DO");} break; case 366: # line 772 "Parse.yacc" { PR ("ELSE");} break; case 368: # line 773 "Parse.yacc" { PR ("ELSIF");} break; case 370: # line 774 "Parse.yacc" { PR ("END");} break; case 372: # line 775 "Parse.yacc" { PR ("EVAL");} break; case 374: # line 776 "Parse.yacc" { PR ("EXCEPT");} break; case 376: # line 777 "Parse.yacc" { PR ("EXCEPTION");} break; case 378: # line 778 "Parse.yacc" { PR ("EXIT");} break; case 380: # line 779 "Parse.yacc" { PR ("EXPORTS");} break; case 382: # line 780 "Parse.yacc" { PR ("<*EXTERNAL*>");} break; case 384: # line 781 "Parse.yacc" { PR ("FINALLY");} break; case 386: # line 782 "Parse.yacc" { PR ("FOR");} break; case 388: # line 783 "Parse.yacc" { PR ("FROM");} break; case 390: # line 784 "Parse.yacc" { PR ("IF");} break; case 392: # line 785 "Parse.yacc" { PR ("IMPORT");} break; case 394: # line 786 "Parse.yacc" { PR ("IN");} break; case 396: # line 787 "Parse.yacc" { PR ("<*INLINE*>");} break; case 398: # line 788 "Parse.yacc" { PR ("INTERFACE");} break; case 400: # line 789 "Parse.yacc" { PR ("LOCK");} break; case 402: # line 790 "Parse.yacc" { PR ("LOOP");} break; case 404: # line 791 "Parse.yacc" { PR ("METHODS");} break; case 406: # line 792 "Parse.yacc" { PR ("MOD");} break; case 408: # line 793 "Parse.yacc" { PR ("MODULE");} break; case 410: # line 794 "Parse.yacc" { PR ("NOT");} break; case 412: # line 795 "Parse.yacc" { PR ("OBJECT");} break; case 414: # line 796 "Parse.yacc" { PR ("OF");} break; case 416: # line 797 "Parse.yacc" { PR ("OR");} break; case 418: # line 798 "Parse.yacc" { PR ("PROCEDURE");} break; case 420: # line 799 "Parse.yacc" { PR ("RAISE");} break; case 422: # line 800 "Parse.yacc" { PR (" RAISES");} break; case 424: # line 801 "Parse.yacc" { PR ("READONLY");} break; case 426: # line 802 "Parse.yacc" { PR ("RECORD");} break; case 428: # line 803 "Parse.yacc" { PR ("REF");} break; case 430: # line 804 "Parse.yacc" { PR ("REPEAT");} break; case 432: # line 805 "Parse.yacc" { PR ("RETURN");} break; case 434: # line 806 "Parse.yacc" { PR ("REVEAL");} break; case 436: # line 807 "Parse.yacc" { PR ("SET");} break; case 438: # line 808 "Parse.yacc" { PR ("THEN");} break; case 440: # line 809 "Parse.yacc" { PR ("TO");} break; case 442: # line 810 "Parse.yacc" { PR ("TRY");} break; case 444: # line 811 "Parse.yacc" { PR ("TYPE");} break; case 446: # line 812 "Parse.yacc" { PR ("TYPECASE");} break; case 448: # line 813 "Parse.yacc" { PR ("UNSAFE");} break; case 450: # line 814 "Parse.yacc" { PR ("UNTIL");} break; case 452: # line 815 "Parse.yacc" { PR ("UNTRACED");} break; case 454: # line 816 "Parse.yacc" { PR ("VALUE");} break; case 456: # line 817 "Parse.yacc" { PR ("VAR");} break; case 458: # line 818 "Parse.yacc" { PR ("WHILE");} break; case 460: # line 819 "Parse.yacc" { PR ("WITH");} break; case 462: # line 821 "Parse.yacc" { PR ("(*");} break; case 463: # line 822 "Parse.yacc" { PR ("(*");} break; case 464: # line 823 "Parse.yacc" { PR ("*)");} break; case 465: # line 824 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 466: # line 825 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 467: # line 826 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 468: # line 827 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 469: # line 828 "Parse.yacc" { PR (&lexbuf[yypvt[-0]]);} break; case 471: # line 834 "Parse.yacc" { blanklinep=0; } break; case 474: # line 839 "Parse.yacc" { if (depth==0) BE(-9999); blanklinep=1; } break; case 475: # line 840 "Parse.yacc" { if (depth==0) EN(); } break; case 476: # line 841 "Parse.yacc" { blanklinep=1; } break; case 478: # line 842 "Parse.yacc" { blanklinep=0; } break; case 480: # line 846 "Parse.yacc" { blanklinep=1; } break; case 482: # line 847 "Parse.yacc" { blanklinep=1; } break; case 484: # line 848 "Parse.yacc" { blanklinep=0; } break; case 508: # line 899 "Parse.yacc" { GR (); } break; case 509: # line 900 "Parse.yacc" { BE (0); } break; case 510: # line 901 "Parse.yacc" { BE (offset); } break; case 511: # line 902 "Parse.yacc" { BE (3); } break; case 512: # line 903 "Parse.yacc" { EN (); } break; case 513: # line 905 "Parse.yacc" { DoBreak (1, 2, 0); } break; case 514: # line 906 "Parse.yacc" { DoBreak (1, 3, 0); } break; case 515: # line 907 "Parse.yacc" { DoBreak (0, 2, 0); } break; case 516: # line 909 "Parse.yacc" { DoBreak (1, 2, -3); } break; case 517: # line 911 "Parse.yacc" { DoBreak (1, 1, 0); } break; case 518: # line 913 "Parse.yacc" { DoBreak (1, 1, -offset); } break; case 519: # line 915 "Parse.yacc" { DoBreak (0, 0, 0); } break; case 520: # line 916 "Parse.yacc" { DoBreak (1, 0, 0); } break; case 521: # line 917 "Parse.yacc" { PR (" "); } break; case 522: # line 919 "Parse.yacc" { BL (); } break; case 523: # line 921 "Parse.yacc" { DoAlign (2, 0); } break; case 524: # line 922 "Parse.yacc" { DoAlign (3, 0); } break; case 525: # line 925 "Parse.yacc" { DoSPNL (); } break; case 526: # line 926 "Parse.yacc" { NL (); } break; case 527: # line 928 "Parse.yacc" { {int zz; for (zz = depth*offset; zz > 0; zz--) P(' ');}; } break; case 528: # line 931 "Parse.yacc" { depth++; } break; case 529: # line 932 "Parse.yacc" { depth--; } break; } goto yystack; /* stack new state and value */ }