00001
00002
00003
00004 #define YYBISON 1
00005
00006 # define kCLASS 257
00007 # define kMODULE 258
00008 # define kDEF 259
00009 # define kUNDEF 260
00010 # define kBEGIN 261
00011 # define kRESCUE 262
00012 # define kENSURE 263
00013 # define kEND 264
00014 # define kIF 265
00015 # define kUNLESS 266
00016 # define kTHEN 267
00017 # define kELSIF 268
00018 # define kELSE 269
00019 # define kCASE 270
00020 # define kWHEN 271
00021 # define kWHILE 272
00022 # define kUNTIL 273
00023 # define kFOR 274
00024 # define kBREAK 275
00025 # define kNEXT 276
00026 # define kREDO 277
00027 # define kRETRY 278
00028 # define kIN 279
00029 # define kDO 280
00030 # define kDO_COND 281
00031 # define kDO_BLOCK 282
00032 # define kRETURN 283
00033 # define kYIELD 284
00034 # define kSUPER 285
00035 # define kSELF 286
00036 # define kNIL 287
00037 # define kTRUE 288
00038 # define kFALSE 289
00039 # define kAND 290
00040 # define kOR 291
00041 # define kNOT 292
00042 # define kIF_MOD 293
00043 # define kUNLESS_MOD 294
00044 # define kWHILE_MOD 295
00045 # define kUNTIL_MOD 296
00046 # define kRESCUE_MOD 297
00047 # define kALIAS 298
00048 # define kDEFINED 299
00049 # define klBEGIN 300
00050 # define klEND 301
00051 # define k__LINE__ 302
00052 # define k__FILE__ 303
00053 # define tIDENTIFIER 304
00054 # define tFID 305
00055 # define tGVAR 306
00056 # define tIVAR 307
00057 # define tCONSTANT 308
00058 # define tCVAR 309
00059 # define tINTEGER 310
00060 # define tFLOAT 311
00061 # define tSTRING_CONTENT 312
00062 # define tNTH_REF 313
00063 # define tBACK_REF 314
00064 # define tREGEXP_END 315
00065 # define tUPLUS 316
00066 # define tUMINUS 317
00067 # define tPOW 318
00068 # define tCMP 319
00069 # define tEQ 320
00070 # define tEQQ 321
00071 # define tNEQ 322
00072 # define tGEQ 323
00073 # define tLEQ 324
00074 # define tANDOP 325
00075 # define tOROP 326
00076 # define tMATCH 327
00077 # define tNMATCH 328
00078 # define tDOT2 329
00079 # define tDOT3 330
00080 # define tAREF 331
00081 # define tASET 332
00082 # define tLSHFT 333
00083 # define tRSHFT 334
00084 # define tCOLON2 335
00085 # define tCOLON3 336
00086 # define tOP_ASGN 337
00087 # define tASSOC 338
00088 # define tLPAREN 339
00089 # define tLPAREN_ARG 340
00090 # define tRPAREN 341
00091 # define tLBRACK 342
00092 # define tLBRACE 343
00093 # define tLBRACE_ARG 344
00094 # define tSTAR 345
00095 # define tAMPER 346
00096 # define tSYMBEG 347
00097 # define tSTRING_BEG 348
00098 # define tXSTRING_BEG 349
00099 # define tREGEXP_BEG 350
00100 # define tWORDS_BEG 351
00101 # define tQWORDS_BEG 352
00102 # define tSTRING_DBEG 353
00103 # define tSTRING_DVAR 354
00104 # define tSTRING_END 355
00105 # define tLOWEST 356
00106 # define tUMINUS_NUM 357
00107 # define tLAST_TOKEN 358
00108
00109 #line 13 "parse.y"
00110
00111
00112 #define YYDEBUG 1
00113 #define YYERROR_VERBOSE 1
00114 #ifndef YYSTACK_USE_ALLOCA
00115 #define YYSTACK_USE_ALLOCA 0
00116 #endif
00117
00118 #include "ruby.h"
00119 #include "env.h"
00120 #include "intern.h"
00121 #include "node.h"
00122 #include "st.h"
00123 #include <stdio.h>
00124 #include <errno.h>
00125 #include <ctype.h>
00126
00127 #define YYMALLOC rb_parser_malloc
00128 #define YYREALLOC rb_parser_realloc
00129 #define YYCALLOC rb_parser_calloc
00130 #define YYFREE rb_parser_free
00131 #define malloc YYMALLOC
00132 #define realloc YYREALLOC
00133 #define calloc YYCALLOC
00134 #define free YYFREE
00135 static void *rb_parser_malloc (size_t);
00136 static void *rb_parser_realloc (void *, size_t);
00137 static void *rb_parser_calloc (size_t, size_t);
00138 static void rb_parser_free (void *);
00139
00140 #define yyparse ruby_yyparse
00141 #define yylex ruby_yylex
00142 #define yyerror ruby_yyerror
00143 #define yylval ruby_yylval
00144 #define yychar ruby_yychar
00145 #define yydebug ruby_yydebug
00146
00147 #define ID_SCOPE_SHIFT 3
00148 #define ID_SCOPE_MASK 0x07
00149 #define ID_LOCAL 0x01
00150 #define ID_INSTANCE 0x02
00151 #define ID_GLOBAL 0x03
00152 #define ID_ATTRSET 0x04
00153 #define ID_CONST 0x05
00154 #define ID_CLASS 0x06
00155 #define ID_JUNK 0x07
00156 #define ID_INTERNAL ID_JUNK
00157
00158 #define is_notop_id(id) ((id)>tLAST_TOKEN)
00159 #define is_local_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_LOCAL)
00160 #define is_global_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_GLOBAL)
00161 #define is_instance_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_INSTANCE)
00162 #define is_attrset_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_ATTRSET)
00163 #define is_const_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CONST)
00164 #define is_class_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CLASS)
00165 #define is_junk_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_JUNK)
00166
00167 #define is_asgn_or_id(id) ((is_notop_id(id)) && \
00168 (((id)&ID_SCOPE_MASK) == ID_GLOBAL || \
00169 ((id)&ID_SCOPE_MASK) == ID_INSTANCE || \
00170 ((id)&ID_SCOPE_MASK) == ID_CLASS))
00171
00172 NODE *ruby_eval_tree_begin = 0;
00173 NODE *ruby_eval_tree = 0;
00174
00175 char *ruby_sourcefile;
00176 int ruby_sourceline;
00177
00178 static int yylex();
00179 static int yyerror();
00180
00181 static enum lex_state {
00182 EXPR_BEG,
00183 EXPR_END,
00184 EXPR_ARG,
00185 EXPR_CMDARG,
00186 EXPR_ENDARG,
00187 EXPR_MID,
00188 EXPR_FNAME,
00189 EXPR_DOT,
00190 EXPR_CLASS,
00191 } lex_state;
00192 static NODE *lex_strterm;
00193
00194 #ifdef HAVE_LONG_LONG
00195 typedef unsigned LONG_LONG stack_type;
00196 #else
00197 typedef unsigned long stack_type;
00198 #endif
00199
00200 #define BITSTACK_PUSH(stack, n) (stack = (stack<<1)|((n)&1))
00201 #define BITSTACK_POP(stack) (stack >>= 1)
00202 #define BITSTACK_LEXPOP(stack) (stack = (stack >> 1) | (stack & 1))
00203 #define BITSTACK_SET_P(stack) (stack&1)
00204
00205 static stack_type cond_stack = 0;
00206 #define COND_PUSH(n) BITSTACK_PUSH(cond_stack, n)
00207 #define COND_POP() BITSTACK_POP(cond_stack)
00208 #define COND_LEXPOP() BITSTACK_LEXPOP(cond_stack)
00209 #define COND_P() BITSTACK_SET_P(cond_stack)
00210
00211 static stack_type cmdarg_stack = 0;
00212 #define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, n)
00213 #define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
00214 #define CMDARG_LEXPOP() BITSTACK_LEXPOP(cmdarg_stack)
00215 #define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
00216
00217 static int class_nest = 0;
00218 static int in_single = 0;
00219 static int in_def = 0;
00220 static int compile_for_eval = 0;
00221 static ID cur_mid = 0;
00222
00223 static NODE *cond();
00224 static NODE *logop();
00225 static int cond_negative();
00226
00227 static NODE *newline_node();
00228 static void fixpos();
00229
00230 static int value_expr0();
00231 static void void_expr0();
00232 static void void_stmts();
00233 static NODE *remove_begin();
00234 #define value_expr(node) value_expr0((node) = remove_begin(node))
00235 #define void_expr(node) void_expr0((node) = remove_begin(node))
00236
00237 static NODE *block_append();
00238 static NODE *list_append();
00239 static NODE *list_concat();
00240 static NODE *arg_concat();
00241 static NODE *arg_prepend();
00242 static NODE *literal_concat();
00243 static NODE *new_evstr();
00244 static NODE *evstr2dstr();
00245 static NODE *call_op();
00246 static int in_defined = 0;
00247
00248 static NODE *negate_lit();
00249 static NODE *ret_args();
00250 static NODE *arg_blk_pass();
00251 static NODE *new_call();
00252 static NODE *new_fcall();
00253 static NODE *new_super();
00254 static NODE *new_yield();
00255
00256 static NODE *gettable();
00257 static NODE *assignable();
00258 static NODE *aryset();
00259 static NODE *attrset();
00260 static void rb_backref_error();
00261 static NODE *node_assign();
00262
00263 static NODE *match_gen();
00264 static void local_push();
00265 static void local_pop();
00266 static int local_append();
00267 static int local_cnt();
00268 static int local_id();
00269 static ID *local_tbl();
00270 static ID internal_id();
00271
00272 static struct RVarmap *dyna_push();
00273 static void dyna_pop();
00274 static int dyna_in_block();
00275 static NODE *dyna_init();
00276
00277 static void top_local_init();
00278 static void top_local_setup();
00279
00280 #define RE_OPTION_ONCE 0x80
00281
00282 #define NODE_STRTERM NODE_ZARRAY
00283 #define NODE_HEREDOC NODE_ARRAY
00284 #define SIGN_EXTEND(x,n) (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))
00285 #define nd_func u1.id
00286 #if SIZEOF_SHORT == 2
00287 #define nd_term(node) ((signed short)(node)->u2.id)
00288 #else
00289 #define nd_term(node) SIGN_EXTEND((node)->u2.id, CHAR_BIT*2)
00290 #endif
00291 #define nd_paren(node) (char)((node)->u2.id >> CHAR_BIT*2)
00292 #define nd_nest u3.id
00293
00294
00295
00296
00297 #ifdef OLD_YACC
00298 #ifndef YYMAXDEPTH
00299 #define YYMAXDEPTH 10000
00300 #endif
00301 #endif
00302
00303
00304 #line 208 "parse.y"
00305 #ifndef YYSTYPE
00306 typedef union {
00307 NODE *node;
00308 ID id;
00309 int num;
00310 struct RVarmap *vars;
00311 } yystype;
00312 # define YYSTYPE yystype
00313 # define YYSTYPE_IS_TRIVIAL 1
00314 #endif
00315 #ifndef YYDEBUG
00316 # define YYDEBUG 0
00317 #endif
00318
00319
00320
00321 #define YYFINAL 895
00322 #define YYFLAG -32768
00323 #define YYNTBASE 132
00324
00325
00326 #define YYTRANSLATE(x) ((unsigned)(x) <= 358 ? yytranslate[x] : 274)
00327
00328
00329 static const short yytranslate[] =
00330 {
00331 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00332 130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00333 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00334 2, 2, 129, 117, 2, 2, 2, 115, 110, 2,
00335 128, 125, 113, 111, 126, 112, 124, 114, 2, 2,
00336 2, 2, 2, 2, 2, 2, 2, 2, 105, 131,
00337 107, 103, 106, 104, 2, 2, 2, 2, 2, 2,
00338 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00339 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00340 2, 122, 2, 123, 109, 2, 127, 2, 2, 2,
00341 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00342 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00343 2, 2, 2, 120, 108, 121, 118, 2, 2, 2,
00344 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00345 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00346 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00347 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00348 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00349 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00350 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00351 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00352 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00353 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00354 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00355 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00356 2, 2, 2, 2, 2, 2, 1, 3, 4, 5,
00357 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00358 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
00359 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
00360 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
00361 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
00362 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
00363 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
00364 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
00365 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
00366 96, 97, 98, 99, 100, 101, 102, 116, 119
00367 };
00368
00369 #if YYDEBUG
00370 static const short yyprhs[] =
00371 {
00372 0, 0, 1, 4, 9, 12, 14, 16, 20, 23,
00373 24, 29, 33, 37, 41, 44, 48, 52, 56, 60,
00374 64, 65, 71, 76, 80, 84, 88, 95, 101, 107,
00375 113, 117, 121, 125, 129, 131, 133, 137, 141, 144,
00376 147, 149, 151, 153, 155, 158, 161, 164, 166, 171,
00377 176, 177, 178, 185, 188, 192, 197, 203, 208, 214,
00378 217, 220, 222, 226, 228, 232, 234, 237, 241, 244,
00379 247, 249, 251, 255, 258, 262, 264, 269, 273, 277,
00380 281, 285, 288, 290, 292, 297, 301, 305, 309, 313,
00381 316, 318, 320, 322, 325, 327, 331, 333, 335, 337,
00382 339, 341, 343, 345, 347, 348, 353, 355, 357, 359,
00383 361, 363, 365, 367, 369, 371, 373, 375, 377, 379,
00384 381, 383, 385, 387, 389, 391, 393, 395, 397, 399,
00385 401, 403, 405, 407, 409, 411, 413, 415, 417, 419,
00386 421, 423, 425, 427, 429, 431, 433, 435, 437, 439,
00387 441, 443, 445, 447, 449, 451, 453, 455, 457, 459,
00388 461, 463, 465, 467, 469, 471, 473, 475, 477, 479,
00389 481, 483, 485, 487, 491, 497, 501, 508, 514, 520,
00390 526, 532, 537, 541, 545, 549, 553, 557, 561, 565,
00391 569, 573, 578, 583, 586, 589, 593, 597, 601, 605,
00392 609, 613, 617, 621, 625, 629, 633, 637, 641, 644,
00393 647, 651, 655, 659, 663, 664, 669, 675, 677, 679,
00394 681, 684, 687, 693, 696, 700, 704, 709, 714, 721,
00395 723, 725, 727, 730, 736, 739, 745, 750, 758, 762,
00396 764, 769, 773, 779, 787, 790, 796, 801, 808, 816,
00397 826, 830, 832, 833, 836, 838, 839, 843, 844, 849,
00398 852, 855, 857, 859, 863, 867, 872, 875, 877, 879,
00399 881, 883, 885, 887, 889, 891, 893, 894, 899, 900,
00400 906, 910, 914, 917, 922, 926, 930, 932, 937, 941,
00401 943, 944, 951, 954, 956, 959, 966, 973, 974, 975,
00402 983, 984, 985, 993, 999, 1004, 1010, 1011, 1012, 1022,
00403 1023, 1030, 1031, 1032, 1041, 1042, 1048, 1049, 1056, 1057,
00404 1058, 1068, 1070, 1072, 1074, 1076, 1078, 1080, 1082, 1084,
00405 1087, 1089, 1091, 1093, 1095, 1101, 1103, 1106, 1108, 1110,
00406 1112, 1115, 1117, 1121, 1122, 1123, 1130, 1133, 1138, 1143,
00407 1146, 1151, 1156, 1160, 1163, 1165, 1166, 1167, 1174, 1175,
00408 1176, 1183, 1189, 1191, 1196, 1199, 1201, 1203, 1210, 1212,
00409 1214, 1216, 1218, 1221, 1223, 1226, 1228, 1230, 1232, 1234,
00410 1236, 1238, 1241, 1245, 1249, 1253, 1257, 1261, 1262, 1266,
00411 1268, 1271, 1275, 1279, 1280, 1284, 1285, 1288, 1289, 1292,
00412 1294, 1295, 1299, 1300, 1305, 1307, 1309, 1311, 1313, 1316,
00413 1318, 1320, 1322, 1324, 1328, 1330, 1332, 1335, 1338, 1340,
00414 1342, 1344, 1346, 1348, 1350, 1352, 1354, 1356, 1358, 1360,
00415 1362, 1364, 1366, 1368, 1370, 1371, 1376, 1379, 1384, 1387,
00416 1394, 1399, 1404, 1407, 1412, 1415, 1418, 1420, 1421, 1423,
00417 1425, 1427, 1429, 1431, 1433, 1437, 1441, 1443, 1447, 1449,
00418 1451, 1454, 1456, 1458, 1460, 1463, 1466, 1468, 1470, 1471,
00419 1477, 1479, 1482, 1485, 1487, 1491, 1495, 1497, 1499, 1501,
00420 1503, 1505, 1507, 1509, 1511, 1513, 1515, 1517, 1519, 1520,
00421 1522, 1523, 1525, 1526, 1528, 1530, 1532, 1534, 1536, 1539
00422 };
00423 static const short yyrhs[] =
00424 {
00425 -1, 133, 135, 0, 135, 217, 201, 220, 0, 136,
00426 268, 0, 273, 0, 137, 0, 136, 272, 137, 0,
00427 1, 137, 0, 0, 44, 158, 138, 158, 0, 44,
00428 52, 52, 0, 44, 52, 60, 0, 44, 52, 59,
00429 0, 6, 159, 0, 137, 39, 141, 0, 137, 40,
00430 141, 0, 137, 41, 141, 0, 137, 42, 141, 0,
00431 137, 43, 137, 0, 0, 46, 139, 120, 135, 121,
00432 0, 47, 120, 135, 121, 0, 154, 103, 142, 0,
00433 148, 103, 142, 0, 244, 83, 142, 0, 197, 122,
00434 166, 123, 83, 142, 0, 197, 124, 50, 83, 142,
00435 0, 197, 124, 54, 83, 142, 0, 197, 81, 50,
00436 83, 142, 0, 245, 83, 142, 0, 154, 103, 179,
00437 0, 148, 103, 165, 0, 148, 103, 179, 0, 140,
00438 0, 142, 0, 140, 36, 140, 0, 140, 37, 140,
00439 0, 38, 140, 0, 117, 142, 0, 163, 0, 140,
00440 0, 147, 0, 143, 0, 29, 169, 0, 21, 169,
00441 0, 22, 169, 0, 207, 0, 207, 124, 265, 171,
00442 0, 207, 81, 265, 171, 0, 0, 0, 90, 145,
00443 203, 146, 135, 121, 0, 264, 171, 0, 264, 171,
00444 144, 0, 197, 124, 265, 171, 0, 197, 124, 265,
00445 171, 144, 0, 197, 81, 265, 171, 0, 197, 81,
00446 265, 171, 144, 0, 31, 171, 0, 30, 171, 0,
00447 150, 0, 85, 149, 125, 0, 150, 0, 85, 149,
00448 125, 0, 152, 0, 152, 151, 0, 152, 91, 153,
00449 0, 152, 91, 0, 91, 153, 0, 91, 0, 153,
00450 0, 85, 149, 125, 0, 151, 126, 0, 152, 151,
00451 126, 0, 242, 0, 197, 122, 166, 123, 0, 197,
00452 124, 50, 0, 197, 81, 50, 0, 197, 124, 54,
00453 0, 197, 81, 54, 0, 82, 54, 0, 245, 0,
00454 242, 0, 197, 122, 166, 123, 0, 197, 124, 50,
00455 0, 197, 81, 50, 0, 197, 124, 54, 0, 197,
00456 81, 54, 0, 82, 54, 0, 245, 0, 50, 0,
00457 54, 0, 82, 155, 0, 155, 0, 197, 81, 155,
00458 0, 50, 0, 54, 0, 51, 0, 161, 0, 162,
00459 0, 157, 0, 238, 0, 158, 0, 0, 159, 126,
00460 160, 158, 0, 108, 0, 109, 0, 110, 0, 65,
00461 0, 66, 0, 67, 0, 73, 0, 106, 0, 69,
00462 0, 107, 0, 70, 0, 79, 0, 80, 0, 111,
00463 0, 112, 0, 113, 0, 91, 0, 114, 0, 115,
00464 0, 64, 0, 118, 0, 62, 0, 63, 0, 77,
00465 0, 78, 0, 127, 0, 48, 0, 49, 0, 46,
00466 0, 47, 0, 44, 0, 36, 0, 7, 0, 21,
00467 0, 16, 0, 3, 0, 5, 0, 45, 0, 26,
00468 0, 15, 0, 14, 0, 10, 0, 9, 0, 35,
00469 0, 20, 0, 25, 0, 4, 0, 22, 0, 33,
00470 0, 38, 0, 37, 0, 23, 0, 8, 0, 24,
00471 0, 29, 0, 32, 0, 31, 0, 13, 0, 34,
00472 0, 6, 0, 17, 0, 30, 0, 39, 0, 40,
00473 0, 41, 0, 42, 0, 43, 0, 154, 103, 163,
00474 0, 154, 103, 163, 43, 163, 0, 244, 83, 163,
00475 0, 197, 122, 166, 123, 83, 163, 0, 197, 124,
00476 50, 83, 163, 0, 197, 124, 54, 83, 163, 0,
00477 197, 81, 50, 83, 163, 0, 197, 81, 54, 83,
00478 163, 0, 82, 54, 83, 163, 0, 245, 83, 163,
00479 0, 163, 75, 163, 0, 163, 76, 163, 0, 163,
00480 111, 163, 0, 163, 112, 163, 0, 163, 113, 163,
00481 0, 163, 114, 163, 0, 163, 115, 163, 0, 163,
00482 64, 163, 0, 116, 56, 64, 163, 0, 116, 57,
00483 64, 163, 0, 62, 163, 0, 63, 163, 0, 163,
00484 108, 163, 0, 163, 109, 163, 0, 163, 110, 163,
00485 0, 163, 65, 163, 0, 163, 106, 163, 0, 163,
00486 69, 163, 0, 163, 107, 163, 0, 163, 70, 163,
00487 0, 163, 66, 163, 0, 163, 67, 163, 0, 163,
00488 68, 163, 0, 163, 73, 163, 0, 163, 74, 163,
00489 0, 117, 163, 0, 118, 163, 0, 163, 79, 163,
00490 0, 163, 80, 163, 0, 163, 71, 163, 0, 163,
00491 72, 163, 0, 0, 45, 269, 164, 163, 0, 163,
00492 104, 163, 105, 163, 0, 180, 0, 163, 0, 273,
00493 0, 147, 269, 0, 178, 270, 0, 178, 126, 91,
00494 163, 269, 0, 262, 270, 0, 91, 163, 269, 0,
00495 128, 273, 125, 0, 128, 169, 269, 125, 0, 128,
00496 207, 269, 125, 0, 128, 178, 126, 207, 269, 125,
00497 0, 273, 0, 167, 0, 147, 0, 178, 177, 0,
00498 178, 126, 91, 165, 177, 0, 262, 177, 0, 262,
00499 126, 91, 165, 177, 0, 178, 126, 262, 177, 0,
00500 178, 126, 262, 126, 91, 163, 177, 0, 91, 165,
00501 177, 0, 176, 0, 165, 126, 178, 177, 0, 165,
00502 126, 176, 0, 165, 126, 91, 165, 177, 0, 165,
00503 126, 178, 126, 91, 165, 177, 0, 262, 177, 0,
00504 262, 126, 91, 165, 177, 0, 165, 126, 262, 177,
00505 0, 165, 126, 178, 126, 262, 177, 0, 165, 126,
00506 262, 126, 91, 165, 177, 0, 165, 126, 178, 126,
00507 262, 126, 91, 165, 177, 0, 91, 165, 177, 0,
00508 176, 0, 0, 172, 173, 0, 169, 0, 0, 86,
00509 174, 125, 0, 0, 86, 170, 175, 125, 0, 92,
00510 165, 0, 126, 176, 0, 273, 0, 165, 0, 178,
00511 126, 165, 0, 178, 126, 165, 0, 178, 126, 91,
00512 165, 0, 91, 165, 0, 221, 0, 222, 0, 225,
00513 0, 226, 0, 227, 0, 230, 0, 243, 0, 245,
00514 0, 51, 0, 0, 7, 181, 134, 10, 0, 0,
00515 86, 140, 182, 269, 125, 0, 85, 135, 125, 0,
00516 197, 81, 54, 0, 82, 54, 0, 197, 122, 166,
00517 123, 0, 88, 166, 123, 0, 89, 261, 121, 0,
00518 29, 0, 30, 128, 169, 125, 0, 30, 128, 125,
00519 0, 30, 0, 0, 45, 269, 128, 183, 140, 125,
00520 0, 264, 209, 0, 208, 0, 208, 209, 0, 11,
00521 141, 198, 135, 200, 10, 0, 12, 141, 198, 135,
00522 201, 10, 0, 0, 0, 18, 184, 141, 199, 185,
00523 135, 10, 0, 0, 0, 19, 186, 141, 199, 187,
00524 135, 10, 0, 16, 141, 268, 214, 10, 0, 16,
00525 268, 214, 10, 0, 16, 268, 15, 135, 10, 0,
00526 0, 0, 20, 202, 25, 188, 141, 199, 189, 135,
00527 10, 0, 0, 3, 156, 246, 190, 134, 10, 0,
00528 0, 0, 3, 79, 140, 191, 271, 192, 134, 10,
00529 0, 0, 4, 156, 193, 134, 10, 0, 0, 5,
00530 157, 194, 248, 134, 10, 0, 0, 0, 5, 259,
00531 267, 195, 157, 196, 248, 134, 10, 0, 21, 0,
00532 22, 0, 23, 0, 24, 0, 180, 0, 271, 0,
00533 105, 0, 13, 0, 271, 13, 0, 271, 0, 105,
00534 0, 27, 0, 201, 0, 14, 141, 198, 135, 200,
00535 0, 273, 0, 15, 135, 0, 154, 0, 148, 0,
00536 273, 0, 108, 108, 0, 72, 0, 108, 202, 108,
00537 0, 0, 0, 28, 205, 203, 206, 135, 10, 0,
00538 147, 204, 0, 207, 124, 265, 168, 0, 207, 81,
00539 265, 168, 0, 264, 167, 0, 197, 124, 265, 168,
00540 0, 197, 81, 265, 167, 0, 197, 81, 266, 0,
00541 31, 167, 0, 31, 0, 0, 0, 120, 210, 203,
00542 211, 135, 121, 0, 0, 0, 26, 212, 203, 213,
00543 135, 10, 0, 17, 215, 198, 135, 216, 0, 178,
00544 0, 178, 126, 91, 165, 0, 91, 165, 0, 201,
00545 0, 214, 0, 8, 218, 219, 198, 135, 217, 0,
00546 273, 0, 165, 0, 179, 0, 273, 0, 84, 154,
00547 0, 273, 0, 9, 135, 0, 273, 0, 241, 0,
00548 238, 0, 240, 0, 223, 0, 224, 0, 223, 224,
00549 0, 94, 232, 101, 0, 95, 233, 101, 0, 96,
00550 233, 61, 0, 97, 129, 101, 0, 97, 228, 101,
00551 0, 0, 228, 229, 129, 0, 234, 0, 229, 234,
00552 0, 98, 129, 101, 0, 98, 231, 101, 0, 0,
00553 231, 58, 129, 0, 0, 232, 234, 0, 0, 233,
00554 234, 0, 58, 0, 0, 100, 235, 237, 0, 0,
00555 99, 236, 135, 121, 0, 52, 0, 53, 0, 55,
00556 0, 245, 0, 93, 239, 0, 157, 0, 53, 0,
00557 52, 0, 55, 0, 93, 233, 101, 0, 56, 0,
00558 57, 0, 116, 56, 0, 116, 57, 0, 50, 0,
00559 53, 0, 52, 0, 54, 0, 55, 0, 33, 0,
00560 32, 0, 34, 0, 35, 0, 49, 0, 48, 0,
00561 242, 0, 242, 0, 59, 0, 60, 0, 271, 0,
00562 0, 107, 247, 141, 271, 0, 1, 271, 0, 128,
00563 249, 269, 125, 0, 249, 271, 0, 251, 126, 253,
00564 126, 255, 258, 0, 251, 126, 253, 258, 0, 251,
00565 126, 255, 258, 0, 251, 258, 0, 253, 126, 255,
00566 258, 0, 253, 258, 0, 255, 258, 0, 257, 0,
00567 0, 54, 0, 53, 0, 52, 0, 55, 0, 50,
00568 0, 250, 0, 251, 126, 250, 0, 50, 103, 165,
00569 0, 252, 0, 253, 126, 252, 0, 113, 0, 91,
00570 0, 254, 50, 0, 254, 0, 110, 0, 92, 0,
00571 256, 50, 0, 126, 257, 0, 273, 0, 243, 0,
00572 0, 128, 260, 140, 269, 125, 0, 273, 0, 262,
00573 270, 0, 178, 270, 0, 263, 0, 262, 126, 263,
00574 0, 165, 84, 165, 0, 50, 0, 54, 0, 51,
00575 0, 50, 0, 54, 0, 51, 0, 161, 0, 50,
00576 0, 51, 0, 161, 0, 124, 0, 81, 0, 0,
00577 272, 0, 0, 130, 0, 0, 130, 0, 126, 0,
00578 131, 0, 130, 0, 271, 0, 272, 131, 0, 0
00579 };
00580
00581 #endif
00582
00583 #if YYDEBUG
00584
00585 static const short yyrline[] =
00586 {
00587 0, 345, 345, 370, 390, 397, 398, 402, 406, 412,
00588 412, 416, 420, 427, 432, 436, 445, 454, 466, 478,
00589 482, 482, 496, 504, 508, 514, 539, 558, 570, 582,
00590 594, 599, 603, 608, 613, 616, 617, 621, 625, 629,
00591 633, 636, 643, 644, 645, 649, 653, 659, 660, 664,
00592 670, 670, 670, 685, 690, 702, 707, 719, 724, 736,
00593 741, 748, 749, 755, 756, 762, 766, 770, 774, 778,
00594 782, 788, 789, 795, 799, 805, 809, 813, 817, 821,
00595 825, 831, 837, 844, 848, 852, 856, 860, 864, 870,
00596 876, 883, 887, 890, 894, 898, 904, 905, 906, 907,
00597 912, 919, 920, 923, 927, 927, 933, 934, 935, 936,
00598 937, 938, 939, 940, 941, 942, 943, 944, 945, 946,
00599 947, 948, 949, 950, 951, 952, 953, 954, 955, 956,
00600 957, 958, 961, 961, 961, 961, 962, 962, 962, 962,
00601 962, 962, 962, 963, 963, 963, 963, 963, 963, 963,
00602 964, 964, 964, 964, 964, 964, 965, 965, 965, 965,
00603 965, 965, 965, 966, 966, 966, 966, 966, 967, 967,
00604 967, 967, 967, 970, 974, 978, 1003, 1022, 1034, 1046,
00605 1058, 1063, 1068, 1073, 1086, 1099, 1103, 1107, 1111, 1115,
00606 1119, 1123, 1127, 1131, 1140, 1144, 1148, 1152, 1156, 1160,
00607 1164, 1168, 1172, 1176, 1180, 1184, 1188, 1192, 1196, 1200,
00608 1204, 1208, 1212, 1216, 1220, 1220, 1225, 1230, 1236, 1243,
00609 1244, 1249, 1253, 1258, 1262, 1269, 1273, 1277, 1282, 1289,
00610 1290, 1293, 1298, 1302, 1307, 1312, 1317, 1322, 1328, 1332,
00611 1335, 1339, 1343, 1348, 1353, 1358, 1363, 1368, 1373, 1378,
00612 1383, 1387, 1390, 1390, 1402, 1403, 1403, 1408, 1408, 1415,
00613 1421, 1425, 1428, 1432, 1438, 1442, 1446, 1452, 1453, 1454,
00614 1455, 1456, 1457, 1458, 1459, 1460, 1464, 1464, 1477, 1477,
00615 1482, 1486, 1490, 1494, 1502, 1511, 1515, 1519, 1523, 1527,
00616 1531, 1531, 1536, 1542, 1543, 1552, 1565, 1578, 1578, 1578,
00617 1588, 1588, 1588, 1598, 1605, 1609, 1613, 1613, 1613, 1620,
00618 1620, 1636, 1636, 1636, 1658, 1658, 1674, 1674, 1692, 1692,
00619 1692, 1707, 1711, 1715, 1719, 1725, 1732, 1733, 1734, 1735,
00620 1738, 1739, 1740, 1743, 1744, 1753, 1754, 1760, 1761, 1764,
00621 1765, 1769, 1773, 1779, 1779, 1779, 1794, 1803, 1807, 1813,
00622 1818, 1823, 1828, 1832, 1836, 1842, 1842, 1842, 1854, 1854,
00623 1854, 1868, 1875, 1876, 1880, 1886, 1887, 1890, 1901, 1904,
00624 1908, 1909, 1912, 1916, 1919, 1927, 1930, 1931, 1935, 1938,
00625 1951, 1952, 1958, 1964, 1987, 2020, 2024, 2030, 2034, 2040,
00626 2041, 2047, 2051, 2057, 2061, 2067, 2071, 2077, 2081, 2087,
00627 2088, 2088, 2099, 2099, 2120, 2121, 2122, 2123, 2126, 2133,
00628 2134, 2135, 2136, 2139, 2172, 2173, 2174, 2178, 2184, 2185,
00629 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2197,
00630 2203, 2209, 2210, 2213, 2217, 2217, 2225, 2228, 2233, 2239,
00631 2243, 2247, 2251, 2255, 2259, 2263, 2267, 2271, 2277, 2281,
00632 2285, 2289, 2293, 2304, 2305, 2311, 2321, 2326, 2332, 2333,
00633 2336, 2344, 2350, 2351, 2354, 2364, 2368, 2371, 2381, 2381,
00634 2406, 2407, 2411, 2420, 2421, 2427, 2433, 2434, 2435, 2438,
00635 2439, 2440, 2441, 2444, 2445, 2446, 2449, 2450, 2453, 2454,
00636 2457, 2458, 2461, 2462, 2463, 2466, 2467, 2470, 2471, 2474
00637 };
00638 #endif
00639
00640
00641 #if (YYDEBUG) || defined YYERROR_VERBOSE
00642
00643
00644 static const char *const yytname[] =
00645 {
00646 "$", "error", "$undefined.", "kCLASS", "kMODULE", "kDEF", "kUNDEF",
00647 "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN",
00648 "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR",
00649 "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND",
00650 "kDO_BLOCK", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE",
00651 "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD",
00652 "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND",
00653 "k__LINE__", "k__FILE__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR",
00654 "tCONSTANT", "tCVAR", "tINTEGER", "tFLOAT", "tSTRING_CONTENT",
00655 "tNTH_REF", "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW",
00656 "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP",
00657 "tMATCH", "tNMATCH", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT",
00658 "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN",
00659 "tLPAREN_ARG", "tRPAREN", "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR",
00660 "tAMPER", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG",
00661 "tWORDS_BEG", "tQWORDS_BEG", "tSTRING_DBEG", "tSTRING_DVAR",
00662 "tSTRING_END", "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'",
00663 "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'",
00664 "'~'", "tLAST_TOKEN", "'{'", "'}'", "'['", "']'", "'.'", "')'", "','",
00665 "'`'", "'('", "' '", "'\\n'", "';'", "program", "@1", "bodystmt",
00666 "compstmt", "stmts", "stmt", "@2", "@3", "expr", "expr_value",
00667 "command_call", "block_command", "cmd_brace_block", "@4", "@5",
00668 "command", "mlhs", "mlhs_entry", "mlhs_basic", "mlhs_item", "mlhs_head",
00669 "mlhs_node", "lhs", "cname", "cpath", "fname", "fitem", "undef_list",
00670 "@6", "op", "reswords", "arg", "@7", "arg_value", "aref_args",
00671 "paren_args", "opt_paren_args", "call_args", "call_args2",
00672 "command_args", "@8", "open_args", "@9", "@10", "block_arg",
00673 "opt_block_arg", "args", "mrhs", "primary", "@11", "@12", "@13", "@14",
00674 "@15", "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "@24",
00675 "@25", "@26", "primary_value", "then", "do", "if_tail", "opt_else",
00676 "block_var", "opt_block_var", "do_block", "@27", "@28", "block_call",
00677 "method_call", "brace_block", "@29", "@30", "@31", "@32", "case_body",
00678 "when_args", "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure",
00679 "literal", "strings", "string", "string1", "xstring", "regexp", "words",
00680 "word_list", "word", "qwords", "qword_list", "string_contents",
00681 "xstring_contents", "string_content", "@33", "@34", "string_dvar",
00682 "symbol", "sym", "dsym", "numeric", "variable", "var_ref", "var_lhs",
00683 "backref", "superclass", "@35", "f_arglist", "f_args", "f_norm_arg",
00684 "f_arg", "f_opt", "f_optarg", "restarg_mark", "f_rest_arg",
00685 "blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "@36",
00686 "assoc_list", "assocs", "assoc", "operation", "operation2",
00687 "operation3", "dot_or_colon", "opt_terms", "opt_nl", "trailer", "term",
00688 "terms", "none", 0
00689 };
00690 #endif
00691
00692
00693 static const short yyr1[] =
00694 {
00695 0, 133, 132, 134, 135, 136, 136, 136, 136, 138,
00696 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
00697 139, 137, 137, 137, 137, 137, 137, 137, 137, 137,
00698 137, 137, 137, 137, 137, 140, 140, 140, 140, 140,
00699 140, 141, 142, 142, 142, 142, 142, 143, 143, 143,
00700 145, 146, 144, 147, 147, 147, 147, 147, 147, 147,
00701 147, 148, 148, 149, 149, 150, 150, 150, 150, 150,
00702 150, 151, 151, 152, 152, 153, 153, 153, 153, 153,
00703 153, 153, 153, 154, 154, 154, 154, 154, 154, 154,
00704 154, 155, 155, 156, 156, 156, 157, 157, 157, 157,
00705 157, 158, 158, 159, 160, 159, 161, 161, 161, 161,
00706 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
00707 161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
00708 161, 161, 162, 162, 162, 162, 162, 162, 162, 162,
00709 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
00710 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
00711 162, 162, 162, 162, 162, 162, 162, 162, 162, 162,
00712 162, 162, 162, 163, 163, 163, 163, 163, 163, 163,
00713 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
00714 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
00715 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
00716 163, 163, 163, 163, 164, 163, 163, 163, 165, 166,
00717 166, 166, 166, 166, 166, 167, 167, 167, 167, 168,
00718 168, 169, 169, 169, 169, 169, 169, 169, 169, 169,
00719 170, 170, 170, 170, 170, 170, 170, 170, 170, 170,
00720 170, 170, 172, 171, 173, 174, 173, 175, 173, 176,
00721 177, 177, 178, 178, 179, 179, 179, 180, 180, 180,
00722 180, 180, 180, 180, 180, 180, 181, 180, 182, 180,
00723 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
00724 183, 180, 180, 180, 180, 180, 180, 184, 185, 180,
00725 186, 187, 180, 180, 180, 180, 188, 189, 180, 190,
00726 180, 191, 192, 180, 193, 180, 194, 180, 195, 196,
00727 180, 180, 180, 180, 180, 197, 198, 198, 198, 198,
00728 199, 199, 199, 200, 200, 201, 201, 202, 202, 203,
00729 203, 203, 203, 205, 206, 204, 207, 207, 207, 208,
00730 208, 208, 208, 208, 208, 210, 211, 209, 212, 213,
00731 209, 214, 215, 215, 215, 216, 216, 217, 217, 218,
00732 218, 218, 219, 219, 220, 220, 221, 221, 221, 222,
00733 223, 223, 224, 225, 226, 227, 227, 228, 228, 229,
00734 229, 230, 230, 231, 231, 232, 232, 233, 233, 234,
00735 235, 234, 236, 234, 237, 237, 237, 237, 238, 239,
00736 239, 239, 239, 240, 241, 241, 241, 241, 242, 242,
00737 242, 242, 242, 242, 242, 242, 242, 242, 242, 243,
00738 244, 245, 245, 246, 247, 246, 246, 248, 248, 249,
00739 249, 249, 249, 249, 249, 249, 249, 249, 250, 250,
00740 250, 250, 250, 251, 251, 252, 253, 253, 254, 254,
00741 255, 255, 256, 256, 257, 258, 258, 259, 260, 259,
00742 261, 261, 261, 262, 262, 263, 264, 264, 264, 265,
00743 265, 265, 265, 266, 266, 266, 267, 267, 268, 268,
00744 269, 269, 270, 270, 270, 271, 271, 272, 272, 273
00745 };
00746
00747
00748 static const short yyr2[] =
00749 {
00750 0, 0, 2, 4, 2, 1, 1, 3, 2, 0,
00751 4, 3, 3, 3, 2, 3, 3, 3, 3, 3,
00752 0, 5, 4, 3, 3, 3, 6, 5, 5, 5,
00753 3, 3, 3, 3, 1, 1, 3, 3, 2, 2,
00754 1, 1, 1, 1, 2, 2, 2, 1, 4, 4,
00755 0, 0, 6, 2, 3, 4, 5, 4, 5, 2,
00756 2, 1, 3, 1, 3, 1, 2, 3, 2, 2,
00757 1, 1, 3, 2, 3, 1, 4, 3, 3, 3,
00758 3, 2, 1, 1, 4, 3, 3, 3, 3, 2,
00759 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
00760 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
00761 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00762 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00763 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00764 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00765 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00766 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00767 1, 1, 1, 3, 5, 3, 6, 5, 5, 5,
00768 5, 4, 3, 3, 3, 3, 3, 3, 3, 3,
00769 3, 4, 4, 2, 2, 3, 3, 3, 3, 3,
00770 3, 3, 3, 3, 3, 3, 3, 3, 2, 2,
00771 3, 3, 3, 3, 0, 4, 5, 1, 1, 1,
00772 2, 2, 5, 2, 3, 3, 4, 4, 6, 1,
00773 1, 1, 2, 5, 2, 5, 4, 7, 3, 1,
00774 4, 3, 5, 7, 2, 5, 4, 6, 7, 9,
00775 3, 1, 0, 2, 1, 0, 3, 0, 4, 2,
00776 2, 1, 1, 3, 3, 4, 2, 1, 1, 1,
00777 1, 1, 1, 1, 1, 1, 0, 4, 0, 5,
00778 3, 3, 2, 4, 3, 3, 1, 4, 3, 1,
00779 0, 6, 2, 1, 2, 6, 6, 0, 0, 7,
00780 0, 0, 7, 5, 4, 5, 0, 0, 9, 0,
00781 6, 0, 0, 8, 0, 5, 0, 6, 0, 0,
00782 9, 1, 1, 1, 1, 1, 1, 1, 1, 2,
00783 1, 1, 1, 1, 5, 1, 2, 1, 1, 1,
00784 2, 1, 3, 0, 0, 6, 2, 4, 4, 2,
00785 4, 4, 3, 2, 1, 0, 0, 6, 0, 0,
00786 6, 5, 1, 4, 2, 1, 1, 6, 1, 1,
00787 1, 1, 2, 1, 2, 1, 1, 1, 1, 1,
00788 1, 2, 3, 3, 3, 3, 3, 0, 3, 1,
00789 2, 3, 3, 0, 3, 0, 2, 0, 2, 1,
00790 0, 3, 0, 4, 1, 1, 1, 1, 2, 1,
00791 1, 1, 1, 3, 1, 1, 2, 2, 1, 1,
00792 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00793 1, 1, 1, 1, 0, 4, 2, 4, 2, 6,
00794 4, 4, 2, 4, 2, 2, 1, 0, 1, 1,
00795 1, 1, 1, 1, 3, 3, 1, 3, 1, 1,
00796 2, 1, 1, 1, 2, 2, 1, 1, 0, 5,
00797 1, 2, 2, 1, 3, 3, 1, 1, 1, 1,
00798 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
00799 0, 1, 0, 1, 1, 1, 1, 1, 2, 0
00800 };
00801
00802
00803
00804
00805 static const short yydefact[] =
00806 {
00807 1, 0, 0, 0, 0, 0, 0, 276, 0, 0,
00808 488, 297, 300, 0, 321, 322, 323, 324, 286, 289,
00809 354, 424, 423, 425, 426, 0, 0, 490, 20, 0,
00810 428, 427, 418, 275, 420, 419, 421, 422, 414, 415,
00811 431, 432, 0, 0, 0, 0, 0, 499, 499, 70,
00812 397, 395, 397, 397, 387, 393, 0, 0, 0, 2,
00813 488, 6, 34, 35, 43, 42, 0, 61, 0, 65,
00814 71, 0, 40, 217, 0, 47, 293, 267, 268, 379,
00815 380, 269, 270, 271, 272, 377, 378, 376, 429, 273,
00816 0, 274, 252, 5, 8, 321, 322, 286, 289, 354,
00817 490, 91, 92, 0, 0, 0, 0, 94, 0, 325,
00818 0, 429, 274, 0, 314, 141, 152, 142, 165, 138,
00819 158, 148, 147, 163, 146, 145, 140, 166, 150, 139,
00820 153, 157, 159, 151, 144, 160, 167, 162, 161, 154,
00821 164, 149, 137, 156, 155, 168, 169, 170, 171, 172,
00822 136, 143, 134, 135, 132, 133, 96, 98, 97, 127,
00823 128, 125, 109, 110, 111, 114, 116, 112, 129, 130,
00824 117, 118, 122, 113, 115, 106, 107, 108, 119, 120,
00825 121, 123, 124, 126, 131, 468, 316, 99, 100, 467,
00826 0, 161, 154, 164, 149, 132, 133, 96, 97, 0,
00827 101, 103, 14, 102, 0, 0, 41, 0, 0, 0,
00828 429, 0, 274, 0, 496, 495, 488, 0, 497, 489,
00829 0, 0, 0, 338, 337, 0, 0, 429, 274, 0,
00830 0, 0, 231, 218, 262, 45, 239, 499, 499, 473,
00831 46, 44, 0, 60, 0, 499, 353, 59, 38, 0,
00832 9, 491, 214, 0, 0, 193, 0, 194, 282, 0,
00833 0, 0, 61, 278, 0, 490, 0, 492, 492, 219,
00834 492, 0, 492, 470, 0, 69, 0, 75, 82, 411,
00835 410, 412, 409, 0, 408, 0, 0, 0, 0, 0,
00836 0, 0, 416, 417, 39, 208, 209, 4, 489, 0,
00837 0, 0, 0, 0, 0, 0, 343, 346, 0, 73,
00838 0, 68, 66, 0, 0, 0, 0, 0, 0, 0,
00839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00841 0, 499, 0, 0, 0, 358, 355, 294, 381, 0,
00842 0, 349, 53, 292, 0, 311, 91, 92, 93, 416,
00843 417, 0, 434, 309, 433, 0, 499, 0, 0, 0,
00844 447, 487, 486, 318, 104, 0, 499, 282, 328, 327,
00845 0, 326, 0, 0, 499, 0, 0, 0, 0, 0,
00846 0, 0, 0, 498, 0, 0, 282, 0, 499, 0,
00847 306, 499, 259, 0, 0, 232, 261, 0, 234, 288,
00848 0, 255, 254, 253, 231, 490, 499, 490, 0, 11,
00849 13, 12, 0, 290, 0, 0, 0, 0, 0, 0,
00850 0, 280, 62, 490, 490, 220, 284, 494, 493, 221,
00851 494, 223, 494, 472, 285, 471, 81, 0, 499, 0,
00852 399, 402, 400, 413, 398, 382, 396, 383, 384, 385,
00853 386, 0, 389, 391, 0, 392, 0, 0, 7, 15,
00854 16, 17, 18, 19, 36, 37, 499, 0, 24, 32,
00855 0, 33, 0, 67, 74, 23, 173, 262, 31, 190,
00856 198, 203, 204, 205, 200, 202, 212, 213, 206, 207,
00857 183, 184, 210, 211, 0, 199, 201, 195, 196, 197,
00858 185, 186, 187, 188, 189, 479, 484, 480, 485, 252,
00859 352, 0, 479, 481, 480, 482, 499, 479, 480, 252,
00860 252, 499, 499, 25, 175, 30, 182, 50, 54, 0,
00861 436, 0, 0, 91, 92, 95, 0, 0, 499, 0,
00862 490, 452, 450, 449, 448, 451, 459, 463, 462, 458,
00863 447, 0, 0, 453, 499, 456, 499, 461, 499, 0,
00864 446, 0, 0, 277, 499, 499, 368, 499, 329, 173,
00865 483, 281, 0, 479, 480, 499, 0, 0, 0, 362,
00866 0, 304, 332, 331, 298, 330, 301, 483, 281, 0,
00867 479, 480, 0, 0, 238, 475, 0, 263, 260, 499,
00868 0, 0, 474, 287, 0, 40, 0, 257, 0, 251,
00869 499, 0, 0, 0, 0, 0, 225, 10, 0, 215,
00870 0, 22, 181, 62, 0, 224, 0, 263, 78, 80,
00871 0, 479, 480, 0, 0, 388, 390, 394, 191, 192,
00872 341, 0, 344, 339, 266, 0, 72, 0, 0, 0,
00873 0, 351, 57, 283, 0, 0, 230, 350, 55, 229,
00874 348, 49, 347, 48, 359, 356, 499, 312, 0, 0,
00875 283, 315, 0, 0, 490, 0, 438, 0, 442, 466,
00876 0, 444, 460, 0, 445, 464, 319, 105, 369, 370,
00877 499, 371, 0, 499, 335, 0, 0, 333, 0, 283,
00878 0, 0, 0, 303, 305, 364, 0, 0, 0, 0,
00879 283, 0, 499, 0, 236, 499, 499, 0, 0, 256,
00880 0, 244, 226, 0, 490, 499, 499, 227, 0, 21,
00881 279, 490, 76, 0, 404, 405, 406, 401, 407, 340,
00882 0, 0, 0, 264, 174, 216, 29, 179, 180, 58,
00883 0, 27, 177, 28, 178, 56, 0, 0, 51, 0,
00884 435, 310, 469, 455, 0, 317, 454, 499, 499, 465,
00885 0, 457, 499, 447, 0, 0, 373, 336, 0, 3,
00886 375, 0, 295, 0, 296, 0, 499, 0, 0, 307,
00887 233, 0, 235, 250, 0, 241, 499, 499, 258, 0,
00888 0, 291, 222, 403, 342, 0, 265, 26, 176, 0,
00889 0, 0, 0, 437, 0, 440, 441, 443, 0, 0,
00890 372, 0, 83, 90, 0, 374, 0, 363, 365, 366,
00891 361, 299, 302, 0, 499, 499, 0, 240, 0, 246,
00892 499, 228, 345, 360, 357, 0, 313, 499, 0, 89,
00893 0, 499, 0, 499, 499, 0, 237, 242, 0, 499,
00894 0, 245, 52, 439, 320, 483, 88, 0, 479, 480,
00895 367, 334, 308, 499, 0, 247, 499, 84, 243, 0,
00896 248, 499, 249, 0, 0, 0
00897 };
00898
00899 static const short yydefgoto[] =
00900 {
00901 893, 1, 375, 376, 60, 61, 422, 253, 62, 207,
00902 63, 64, 538, 676, 821, 65, 66, 261, 67, 68,
00903 69, 70, 208, 107, 108, 200, 201, 202, 572, 525,
00904 188, 72, 424, 234, 266, 666, 667, 235, 617, 243,
00905 244, 413, 618, 728, 608, 405, 267, 481, 73, 204,
00906 433, 628, 220, 718, 221, 719, 602, 843, 542, 539,
00907 769, 368, 370, 571, 783, 256, 380, 594, 706, 707,
00908 226, 652, 307, 476, 751, 75, 76, 353, 532, 767,
00909 531, 766, 392, 590, 840, 575, 700, 785, 789, 77,
00910 78, 79, 80, 81, 82, 83, 289, 461, 84, 291,
00911 285, 283, 454, 644, 643, 747, 85, 284, 86, 87,
00912 210, 89, 211, 212, 363, 541, 561, 562, 563, 564,
00913 565, 566, 567, 568, 569, 779, 688, 190, 369, 271,
00914 268, 239, 113, 546, 520, 373, 217, 252, 439, 381,
00915 219, 93
00916 };
00917
00918 static const short yypact[] =
00919 {
00920 -32768, 2226, 5380, 7848, 8145, 3749, 5039,-32768, 6719, 6719,
00921 3630,-32768,-32768, 7947, 5586, 5586,-32768,-32768, 5586, 4382,
00922 4485,-32768,-32768,-32768,-32768, 6719, 4923, -34,-32768, -12,
00923 -32768,-32768, 3867, 3970,-32768,-32768, 4073,-32768,-32768,-32768,
00924 -32768,-32768, 7543, 7543, 52, 3040, 6719, 6822, 7543, 8244,
00925 4807,-32768,-32768,-32768, -9, 2, 226, 7646, 7543,-32768,
00926 329, 725, 430,-32768,-32768, 87, 42,-32768, 36, 8046,
00927 -32768, 110, 9349, 14, 41, 96, 62,-32768,-32768, 127,
00928 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 29,-32768,
00929 160, 277, 19,-32768, 725,-32768,-32768,-32768, 129, 131,
00930 -34, 355, 383, 6719, 117, 3171, 415,-32768, 30,-32768,
00931 167,-32768,-32768, 19,-32768,-32768,-32768,-32768,-32768,-32768,
00932 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00933 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 138, 157,
00934 333, 462,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00935 -32768,-32768,-32768,-32768, 473, 477, 478,-32768, 513,-32768,
00936 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00937 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00938 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00939 523,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 4807,
00940 -32768,-32768, 121,-32768, 2468, 215, 430, 63, 169, 346,
00941 43, 204, 73, 63,-32768,-32768, 329, 106,-32768, 166,
00942 6719, 6719, 275,-32768,-32768, 439, 322, 103, 115, 7543,
00943 7543, 7543,-32768, 9349, 285,-32768,-32768, 316, 324,-32768,
00944 -32768,-32768, 5272,-32768, 5689, 5586,-32768,-32768,-32768, 326,
00945 -32768,-32768, 320, 334, 3302,-32768, 459, 397, 319, 3040,
00946 348, 353, 357, 430, 7543, -34, 390, 158, 224,-32768,
00947 321, 359, 224,-32768, 463,-32768, 512, 539, 571,-32768,
00948 -32768,-32768,-32768, 299,-32768, 423, 510, 650, 418, 532,
00949 425, 584, 465, 468,-32768,-32768,-32768,-32768, 3527, 6719,
00950 6719, 6719, 6719, 5380, 6719, 6719,-32768,-32768, 6925,-32768,
00951 3040, 8244, 426, 6925, 7543, 7543, 7543, 7543, 7543, 7543,
00952 7543, 7543, 7543, 7543, 7543, 7543, 7543, 7543, 7543, 7543,
00953 7543, 7543, 7543, 7543, 7543, 7543, 7543, 7543, 7543, 7543,
00954 8406, 6822, 8472, 8538, 8538,-32768,-32768,-32768,-32768, 7646,
00955 7646,-32768, 454,-32768, 320, 430,-32768, 576,-32768,-32768,
00956 -32768, 329,-32768,-32768,-32768, 8604, 6822, 8538, 2468, 6719,
00957 573,-32768,-32768,-32768,-32768, 554, 557, 100,-32768,-32768,
00958 2590, 563, 7543, 8670, 6822, 8736, 7543, 7543, 2834, 553,
00959 3424, 7028, 569,-32768, 11, 11, 119, 8802, 6822, 8868,
00960 -32768, 498,-32768, 7543, 5792,-32768,-32768, 5895,-32768,-32768,
00961 505, 5483,-32768,-32768, 87, -34, 522, 3, 530,-32768,
00962 -32768,-32768, 5039,-32768, 7543, 3302, 537, 8670, 8736, 7543,
00963 534,-32768, 540, -34, 9196,-32768,-32768, 7131,-32768,-32768,
00964 7543,-32768, 7543,-32768,-32768,-32768, 576, 8934, 6822, 9000,
00965 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00966 -32768, 35,-32768,-32768, 531,-32768, 7543, 7543, 725,-32768,
00967 -32768,-32768,-32768,-32768,-32768,-32768, 22, 7543,-32768, 542,
00968 544,-32768, 547,-32768,-32768,-32768, 8340,-32768,-32768, 397,
00969 1935, 1935, 1935, 1935, 870, 870, 9470, 9418, 1935, 1935,
00970 9401, 9401, 502, 502, 9332, 870, 870, 879, 879, 888,
00971 38, 38, 397, 397, 397, 2337, 4588, 2056, 4691, 131,
00972 -32768, 552, 401,-32768, 413,-32768, 4485,-32768,-32768, 1955,
00973 1955, 22, 22,-32768, 9349,-32768, 9349,-32768,-32768, 329,
00974 -32768, 6719, 2468, 467, 315,-32768, 131, 559, 131, 578,
00975 88, 574,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00976 626, 2468, 329,-32768, 561,-32768, 565, 642, 580, 649,
00977 -32768, 5155, 5039,-32768, 7234, 692,-32768, 520,-32768, 2317,
00978 4176, 4279, 587, 273, 279, 692, 705, 709, 7543, 597,
00979 63,-32768,-32768,-32768,-32768,-32768,-32768, 46, 58, 601,
00980 145, 150, 6719, 635,-32768,-32768, 7543, 285,-32768, 604,
00981 7543, 285,-32768,-32768, 7543, 9248, 17,-32768, 607,-32768,
00982 609, 608, 5998, 8538, 8538, 612,-32768,-32768, 6719, 9349,
00983 619,-32768, 9349, 528, 616,-32768, 7543,-32768, 467, 315,
00984 620, 84, 330, 3302, 703,-32768,-32768,-32768, 397, 397,
00985 -32768, 7749,-32768,-32768,-32768, 7337,-32768, 7543, 7543, 7646,
00986 7543,-32768, 454, 447, 7646, 7646,-32768,-32768, 454,-32768,
00987 -32768,-32768,-32768,-32768,-32768,-32768, 22,-32768, 329, 737,
00988 -32768,-32768, 627, 7543, -34, 741,-32768, 626,-32768,-32768,
00989 303,-32768,-32768, 163,-32768,-32768,-32768,-32768, 542,-32768,
00990 669,-32768, 2937, 748,-32768, 6719, 751,-32768, 7543, 337,
00991 7543, 7543, 759,-32768,-32768,-32768, 7440, 2712, 3424, 3424,
00992 153, 11, 498, 6101,-32768, 498, 498, 6204, 646,-32768,
00993 6307,-32768,-32768, 87, 3, 131, 131,-32768, 54,-32768,
00994 -32768, 9196, 581, 651,-32768,-32768,-32768,-32768,-32768,-32768,
00995 665, 3424, 7543, 648, 9349, 9349,-32768, 9349, 9349,-32768,
00996 7646,-32768, 9349,-32768, 9349,-32768, 3424, 3302,-32768, 2468,
00997 -32768,-32768,-32768,-32768, 652,-32768,-32768, 654, 580,-32768,
00998 574,-32768, 580, 573, 8343, 63,-32768,-32768, 3424,-32768,
00999 -32768, 63,-32768, 7543,-32768, 7543, 142, 765, 766,-32768,
01000 -32768, 7543,-32768,-32768, 7543,-32768, 656, 657,-32768, 7543,
01001 653,-32768,-32768,-32768,-32768, 774,-32768,-32768, 9349, 776,
01002 667, 3302, 781,-32768, 303,-32768,-32768,-32768, 2468, 738,
01003 -32768, 590, 539, 571, 2468,-32768, 2590,-32768,-32768,-32768,
01004 -32768,-32768,-32768, 3424, 9269, 498, 6410,-32768, 6513,-32768,
01005 498,-32768,-32768,-32768,-32768, 672,-32768, 580, 784, 576,
01006 9066, 6822, 9132, 557, 520, 786,-32768,-32768, 7543, 671,
01007 7543,-32768,-32768,-32768,-32768, 76, 315, 683, 94, 137,
01008 -32768,-32768,-32768, 498, 6616,-32768, 498, 581,-32768, 7543,
01009 -32768, 498,-32768, 811, 812,-32768
01010 };
01011
01012 static const short yypgoto[] =
01013 {
01014 -32768,-32768, -307, 890,-32768, 28,-32768,-32768, 814, 65,
01015 25,-32768, -551,-32768,-32768, 51, -11, -181, 69, 745,
01016 -32768, -37, 1085, -67, 813, 9, -21,-32768,-32768, 47,
01017 -32768, -14,-32768, 1352, -299, -13, -472, 95,-32768, 12,
01018 -32768,-32768,-32768,-32768, -5, 220, 33, -294, 23,-32768,
01019 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
01020 -32768,-32768,-32768,-32768,-32768, 187, -207, -379, -48, -536,
01021 168, -491,-32768,-32768,-32768, -234,-32768, 742,-32768,-32768,
01022 -32768,-32768, -371,-32768,-32768, -42,-32768,-32768,-32768,-32768,
01023 -32768,-32768, 746,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
01024 -32768, 586, -239,-32768,-32768,-32768, -3,-32768,-32768,-32768,
01025 917, 815, 1185, 1055,-32768,-32768, 44, 266, 141,-32768,
01026 -666, 144,-32768, -610,-32768, -362, -512,-32768,-32768,-32768,
01027 7, -372, 500, -280,-32768,-32768, -43, -85, 91, 10,
01028 773, 678
01029 };
01030
01031
01032 #define YYLAST 9585
01033
01034
01035 static const short yytable[] =
01036 {
01037 233, 233, 223, 203, 233, 250, 388, 246, 570, 236,
01038 236, 417, 275, 236, 186, 354, 596, 297, 586, 488,
01039 218, 238, 238, 203, 781, 238, 109, 109, 255, 257,
01040 94, 361, 247, 233, 233, 612, 109, 358, 592, 703,
01041 674, 675, 521, 295, 296, 345, 456, 237, 237, 712,
01042 462, 237, 187, 187, 691, 272, 694, 670, 672, 282,
01043 519, 549, 526, 529, 530, 232, 232, 547, 612, 232,
01044 218, -86, 109, 187, 213, 216, 378, 778, 430, 351,
01045 782, 270, 294, -88, 623, 582, 246, 548, 345, -86,
01046 304, 305, 109, 450, 650, -325, 251, 187, 265, 599,
01047 351, 403, 314, 519, 352, 526, 258, -85, 254, -77,
01048 240, 759, -430, 241, 262, 306, 593, 765, 364, 548,
01049 288, 390, 340, 391, 304, 305, -430, 624, -83, 482,
01050 651, 290, -83, 251, 451, 452, -325, 362, -325, 346,
01051 -90, 214, 215, 727, -89, 308, -83, 245, 548, 640,
01052 -87, 337, 338, 339, -86, -75, 387, 702, 781, 391,
01053 214, 215, 309, 341, 645, 342, -88, 356, 379, 548,
01054 -85, 357, -78, 389, -479, -87, -90, 343, -84, 811,
01055 435, -86, 346, 429, -80, 768, -480, -77, 74, 74,
01056 110, 110, -77, 214, 215, 209, 209, 209, 570, -85,
01057 225, 209, 209, -89, -479, 209, -86, -86, 282, -77,
01058 -77, -83, 209, 313, 857, 233, 233, 295, 251, -424,
01059 344, 51, 646, -90, -85, -85, 218, -89, 233, -75,
01060 233, 233, 74, 209, 209, 679, 276, 236, -423, 236,
01061 236, -82, -87, 349, 209, -81, 187, 374, 365, 238,
01062 434, 238, 238, -85, 685, 557, 276, 242, -87, 245,
01063 838, -84, -424, 670, 672, 825, 826, -87, -87, 377,
01064 827, -77, 382, 558, 483, 237, -79, 237, 416, -76,
01065 699, -423, 292, 293, 437, 394, 395, 386, 438, 366,
01066 209, 367, 74, 232, 233, 232, 414, 393, 545, 486,
01067 489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
01068 499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
01069 509, 510, 511, 512, 513, 514, 468, 233, 262, 396,
01070 621, 473, 625, 478, 109, 534, 536, 410, 485, 412,
01071 415, 480, 799, 735, 736, 873, 480, 400, 634, 635,
01072 440, 612, 233, 780, 438, -79, 710, 450, 612, 441,
01073 350, 443, 711, 445, 469, 470, 471, 472, 579, 403,
01074 233, 540, 534, 536, 533, 535, -85, 233, 419, 262,
01075 -90, -476, -87, 717, 233, 420, 421, 518, 734, 233,
01076 233, 74, 265, 233, 556, 557, -281, 615, 451, 452,
01077 453, 627, 429, -82, 595, 595, 619, 209, 209, -477,
01078 629, 609, 518, 558, -425, 632, 559, 265, 620, 203,
01079 793, 570, -89, 233, 589, 839, 233, 383, 233, 209,
01080 518, 209, 209, -79, 233, 265, -418, -281, -79, -281,
01081 -84, 74, 404, -480, 518, -81, 74, 442, 423, 265,
01082 407, 438, 648, 649, 425, -79, -79, -425, 408, 214,
01083 215, 314, 822, 233, -421, 682, 304, 305, 384, 187,
01084 385, 359, 360, 431, 518, -476, 612, -418, 432, -418,
01085 444, 450, -63, -476, 664, 74, 209, 209, 209, 209,
01086 74, 209, 209, -483, 518, 209, 665, 74, 276, 265,
01087 209, 92, 92, -477, -85, -421, 661, -421, 92, 92,
01088 92, -477, 612, 436, 92, 92, -87, 446, 92, 459,
01089 397, 858, 451, 452, 455, 92, 463, -77, 209, 466,
01090 760, 662, 467, 661, 705, 702, 209, 209, 668, -79,
01091 427, 671, 673, -426, 537, 92, 92, 92, -483, 677,
01092 -84, 697, 484, 209, -428, 74, 209, 92, -427, -418,
01093 233, 398, 877, 399, 573, 574, 314, 74, 450, 203,
01094 391, 209, 686, -76, 233, 74, 578, 74, 834, 591,
01095 696, 384, 548, 428, 836, 209, -426, -483, 681, -483,
01096 450, -483, 233, 447, -421, -479, 233, -428, 209, 774,
01097 233, -427, -418, 92, 371, 92, 678, 480, 233, 451,
01098 452, 457, 74, 335, 336, 337, 338, 339, 187, 187,
01099 -429, 604, 741, 551, 603, 552, 553, 554, 555, 609,
01100 613, 451, 452, 460, 448, 209, 449, -421, 286, 287,
01101 223, 233, 464, 754, 755, 757, 758, 372, 622, 810,
01102 762, 764, -274, -64, -72, 626, 812, -282, 631, 633,
01103 647, -429, -283, -429, 556, 557, -72, 721, -262, 233,
01104 655, 860, 656, 733, 109, 663, 551, 683, 552, 553,
01105 554, 555, 680, 558, 756, 465, 559, 687, 770, 761,
01106 763, 690, 692, -274, 757, -274, 762, 764, -282, 695,
01107 -282, 560, 233, -283, 92, -283, 693, 702, 450, 233,
01108 709, 458, 861, 233, 862, 713, 233, 556, 557, 714,
01109 92, 92, 805, 716, 720, 269, 273, 230, 209, 74,
01110 723, 595, 729, 732, 807, 730, 558, 737, 233, 559,
01111 739, 740, 92, 742, 92, 92, 818, 771, 74, 451,
01112 452, 775, 772, 784, 92, 744, 745, 788, 746, 92,
01113 806, 792, 40, 41, 299, 300, 301, 302, 303, 794,
01114 791, 808, 813, 814, -263, 841, 842, 823, 851, 818,
01115 824, 233, 846, 848, 852, 817, 853, 844, 854, 209,
01116 233, 856, 859, 872, 874, 233, 882, 884, 92, 92,
01117 92, 92, 92, 92, 92, 92, 887, 109, 92, 209,
01118 92, 894, 895, 92, 312, 209, 881, 114, 347, 750,
01119 189, 880, 206, 206, 206, 348, 684, 828, 776, 724,
01120 74, 777, 233, 298, 233, 0, 0, 0, 225, 248,
01121 731, 92, 0, 0, 0, 0, 209, 233, 0, 92,
01122 92, 209, 209, 869, 233, 0, 233, 0, 0, 0,
01123 263, 0, 0, 0, 0, 0, 92, 0, 92, 92,
01124 233, 0, 0, 0, 0, 233, 0, 0, 0, 0,
01125 92, 0, 0, 0, 92, 0, 0, 0, 92, 74,
01126 92, 59, 209, 0, 0, 0, 0, 0, 92, 0,
01127 0, 0, 0, 0, 74, 74, 74, 518, 0, 0,
01128 0, 92, 265, 0, 0, 406, 406, 355, 88, 88,
01129 111, 111, 111, 418, 0, 92, 0, 0, 0, 0,
01130 227, 0, 0, 0, 314, 260, 0, 0, 74, 0,
01131 0, 0, 800, 314, 0, 802, 803, 209, 92, 327,
01132 328, 0, 314, 74, 74, 0, 74, 0, 327, 328,
01133 0, 0, 88, 0, 0, 0, 277, 327, 328, 0,
01134 0, 831, 0, 0, 0, 74, 0, 0, 332, 333,
01135 334, 335, 336, 337, 338, 339, 277, 0, 0, 334,
01136 335, 336, 337, 338, 339, 260, 0, 0, 0, 335,
01137 336, 337, 338, 339, 0, 0, 0, 0, 74, 0,
01138 0, 0, 0, 0, 0, 74, 0, 0, 0, 269,
01139 0, 74, 88, 74, 0, 0, 847, 849, 0, 0,
01140 74, 0, 0, 0, 206, 206, 0, 0, 0, 0,
01141 0, 92, 92, 0, 269, 0, 0, 0, 209, 0,
01142 0, 0, 0, 0, 576, 0, 91, 91, 112, 112,
01143 0, 92, 269, 0, 866, 867, 0, 0, 228, 0,
01144 871, 0, 0, 0, 0, 0, 269, 0, 0, 406,
01145 0, 0, 0, 0, 0, 0, 71, 71, 0, 885,
01146 0, 0, 0, 0, 406, 0, 0, 0, 224, 0,
01147 91, 0, 92, 888, 278, 0, 890, 0, 0, 0,
01148 0, 892, 0, 206, 206, 206, 206, 0, 474, 475,
01149 0, 88, 92, 0, 278, 0, 269, 0, 92, 0,
01150 71, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01151 0, 0, 0, 92, 426, 0, 0, 0, 0, 260,
01152 0, 0, 0, 0, 653, 0, 0, 0, 0, 92,
01153 91, 0, 0, 0, 92, 92, 0, 0, 0, 0,
01154 0, 88, 0, 0, 0, 0, 88, 0, 0, 0,
01155 0, 0, 0, 550, 0, 0, 90, 90, 0, 0,
01156 71, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01157 260, 0, 92, 0, 669, 92, 0, 669, 669, 653,
01158 653, 0, 0, 0, 0, 88, 0, 92, 92, 92,
01159 88, 0, 0, 0, 0, 263, 669, 88, 277, 0,
01160 90, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01161 0, 0, 689, 0, 689, 0, 689, 0, 0, 0,
01162 0, 92, 701, 704, 0, 704, 0, 0, 0, 91,
01163 92, 0, 0, 704, 0, 0, 92, 92, 0, 92,
01164 577, 0, 0, 0, 0, 0, 0, 0, 585, 0,
01165 587, 0, 0, 0, 0, 88, 0, 406, 92, 71,
01166 90, 0, 0, 0, 0, 0, 0, 88, 406, 0,
01167 0, 0, 0, 0, 0, 88, 0, 88, 0, 91,
01168 0, 0, 0, 0, 91, 630, 0, 0, 0, 0,
01169 0, 92, 0, 0, 0, 0, 0, 0, 92, 0,
01170 0, 0, 0, 0, 92, 0, 92, 0, 0, 71,
01171 0, 0, 88, 92, 71, 0, 0, 0, 0, 0,
01172 0, 0, 0, 91, 653, 206, 0, 0, 91, 0,
01173 0, 92, 0, 0, 0, 91, 278, 0, 0, 0,
01174 0, 0, 0, 0, 0, 0, 0, 0, 786, 0,
01175 0, 790, 0, 71, 0, 0, 0, 0, 71, 90,
01176 0, 0, 0, 0, 0, 71, 0, 0, 0, 0,
01177 406, 0, 0, 406, 406, 0, 0, 0, 0, 0,
01178 0, 0, 0, 669, 669, 0, 206, 0, 0, 0,
01179 0, 0, 0, 91, 0, 0, 0, 0, 0, 0,
01180 0, 0, 0, 0, 0, 91, 0, 0, 0, 90,
01181 0, 0, 738, 91, 90, 91, 0, 0, 0, 0,
01182 0, 0, 0, 71, 0, 689, 689, 0, 0, 88,
01183 689, 0, 0, 0, 0, 71, 0, 0, 0, 0,
01184 0, 0, 0, 71, 704, 71, 0, 0, 88, 0,
01185 91, 0, 0, 90, 406, 406, 0, 0, 90, 0,
01186 0, 0, 0, 0, 0, 90, 0, 0, 0, 0,
01187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01188 71, 0, 0, 0, 0, 0, 0, 0, 0, 206,
01189 0, 0, 406, 406, 0, 0, 0, 0, 406, 0,
01190 0, 0, 0, 743, 0, 689, 0, 0, 0, 269,
01191 0, 576, 704, 0, 0, 0, 0, 406, 0, 0,
01192 0, 0, 0, 90, 0, 0, 0, 0, 0, 0,
01193 88, 406, 0, 0, 406, 90, 0, 0, 227, 406,
01194 0, 0, 0, 90, 0, 90, 0, 0, 0, 0,
01195 0, 401, 402, 0, 0, 0, 0, 0, 0, 0,
01196 0, 0, 787, 0, 0, 0, 0, 91, 0, 0,
01197 0, 0, 0, 0, 0, 0, 0, 796, 797, 798,
01198 90, 0, 0, 0, 0, 0, 91, 0, 0, 88,
01199 0, 0, 0, 0, 0, 0, 0, 71, 0, 0,
01200 0, 0, 0, 0, 88, 88, 88, 0, 0, 0,
01201 0, 815, 0, 0, 0, 0, 71, 0, 0, 0,
01202 0, 0, 0, 0, 0, 0, 819, 820, 0, 0,
01203 479, 0, 0, 0, 0, 487, 0, 0, 88, 0,
01204 0, 0, 0, 0, 0, 0, 0, 0, 835, 0,
01205 0, 0, 0, 88, 88, 0, 88, 0, 0, 0,
01206 0, 0, 0, 0, 0, 0, 0, 0, 91, 748,
01207 0, 832, 0, 0, 0, 88, 228, 0, 0, 0,
01208 0, 855, 0, 0, 0, 0, 0, 0, 0, 0,
01209 0, 0, 0, 0, 863, 0, 864, 90, 71, 0,
01210 0, 0, 0, 865, 0, 0, 224, 0, 88, 0,
01211 0, 0, 0, 487, 0, 88, 90, 0, 0, 0,
01212 0, 88, 0, 88, 0, 605, 607, 91, 0, 611,
01213 88, 0, 0, 616, 0, 0, 0, 0, 0, 0,
01214 0, 0, 91, 91, 91, 0, 0, 0, 0, 0,
01215 0, 0, 0, 0, 0, 0, 0, 71, 0, 637,
01216 0, 0, 611, 0, 637, 0, 0, 0, 0, 0,
01217 0, 0, 71, 71, 71, 0, 91, 0, 0, 0,
01218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01219 0, 91, 91, 0, 91, 0, 0, 0, 90, 654,
01220 0, 0, 0, 0, 0, 0, 71, 0, 0, 833,
01221 0, 0, 0, 91, 0, 0, 0, 0, 0, 0,
01222 0, 71, 71, 0, 71, 0, 0, 0, 0, 0,
01223 0, 0, 0, 0, 0, 0, 0, 0, 0, 830,
01224 0, 0, 0, 71, 0, 0, 91, 0, 0, 0,
01225 0, 0, 0, 91, 0, 0, 0, 90, 0, 91,
01226 0, 91, 0, 0, 0, 0, 0, 0, 91, 0,
01227 0, 0, 90, 90, 90, 0, 71, 0, 0, 0,
01228 0, 0, 0, 71, 0, 0, 0, 0, 0, 71,
01229 0, 71, 0, 0, 0, 0, 698, 0, 71, 0,
01230 0, 0, 0, 0, 0, 0, 90, 0, 0, 0,
01231 715, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01232 0, 90, 90, 0, 90, -499, 0, 0, 722, 0,
01233 0, 0, 725, -499, -499, -499, 726, 0, -499, -499,
01234 -499, 0, -499, 90, 607, 0, 0, 0, 0, 0,
01235 0, 0, -499, 0, 0, 0, 0, 0, 0, 0,
01236 0, -499, -499, 0, -499, -499, -499, -499, -499, 314,
01237 -32768,-32768,-32768,-32768, 319, 320, 90, 753,-32768,-32768,
01238 0, 0, 0, 90, 327, 328, 0, 0, 0, 90,
01239 0, 90, 0, 0, 0, 0, 0, 0, 90, 0,
01240 0, 0, 0, 0, 0, 773, -499, 0, 0, 0,
01241 0, 330, 331, 332, 333, 334, 335, 336, 337, 338,
01242 339, 0, 0, 0, 0, 0, -281, 0, 0, 0,
01243 -499, 0, 0, 0, -281, -281, -281, 0, 637, 0,
01244 -281, -281, 0, -281, 0, 611, -499, 0, 0, -499,
01245 -499, 0, 611, 245, 0, -499, -499, 0, 0, 0,
01246 0, 0, -281, -281, 0, -281, -281, -281, -281, -281,
01247 0, 0, 0, 0, 816, 0, 0, 0, 0, 0,
01248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01249 -281, -281, -281, -281, -281, -281, -281, -281, -281, -281,
01250 -281, -281, -281, 0, 0, -281, -281, -281, 0, 660,
01251 0, 0, 0, 0, 0, 0, 0, 837, 0, 0,
01252 0, 0, 0, 0, 0, 0, 845, 0, 0, -88,
01253 -281, 850, -281, -281, -281, -281, -281, -281, -281, -281,
01254 -281, -281, 0, 0, 0, 0, 0, -281, -281, 0,
01255 -281, -281, -80, 0, 0, 0, -281, -281, 0, 0,
01256 0, 0, 0, 0, 0, 0, 0, 0, 607, 0,
01257 611, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01259 883, 0, 886, 0, 0, 0, -499, 2, 0, 3,
01260 4, 5, 6, 7, 0, 0, 611, 8, 9, 0,
01261 0, 891, 10, 0, 11, 12, 13, 14, 15, 16,
01262 17, 0, 0, 0, 0, 18, 19, 20, 21, 22,
01263 23, 24, 0, 0, 25, 0, 0, 0, 0, 0,
01264 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
01265 36, 37, 38, 39, 0, 40, 41, 0, 42, 43,
01266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
01267 0, 0, 0, 0, 0, 0, 0, 0, 44, 0,
01268 0, 45, 46, 0, 47, 48, 0, 49, 0, 50,
01269 51, 52, 53, 54, 55, 0, 0, 0, 0, 0,
01270 0, 0, 0, 0, 0, 0, 0, -483, 0, 0,
01271 0, 0, 56, 57, 58, -483, -483, -483, 0, 0,
01272 0, -483, -483, 0, -483, 0, -499, -4