mbed I/F binding for mruby
Dependents: mruby_mbed_web mirb_mbed
parse.c
00001 /* A Bison parser, made by GNU Bison 2.4.2. */ 00002 00003 /* Skeleton implementation for Bison's Yacc-like parsers in C 00004 00005 Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software 00006 Foundation, Inc. 00007 00008 This program is free software: you can redistribute it and/or modify 00009 it under the terms of the GNU General Public License as published by 00010 the Free Software Foundation, either version 3 of the License, or 00011 (at your option) any later version. 00012 00013 This program is distributed in the hope that it will be useful, 00014 but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 GNU General Public License for more details. 00017 00018 You should have received a copy of the GNU General Public License 00019 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 00020 00021 /* As a special exception, you may create a larger work that contains 00022 part or all of the Bison parser skeleton and distribute that work 00023 under terms of your choice, so long as that work isn't itself a 00024 parser generator using the skeleton or a modified version thereof 00025 as a parser skeleton. Alternatively, if you modify or redistribute 00026 the parser skeleton itself, you may (at your option) remove this 00027 special exception, which will cause the skeleton and the resulting 00028 Bison output files to be licensed under the GNU General Public 00029 License without this special exception. 00030 00031 This special exception was added by the Free Software Foundation in 00032 version 2.2 of Bison. */ 00033 00034 /* C LALR(1) parser skeleton written by Richard Stallman, by 00035 simplifying the original so-called "semantic" parser. */ 00036 00037 /* All symbols defined below should begin with yy or YY, to avoid 00038 infringing on user name space. This should be done even for local 00039 variables, as they might otherwise be expanded by user macros. 00040 There are some unavoidable exceptions within include files to 00041 define necessary library symbols; they are noted "INFRINGES ON 00042 USER NAME SPACE" below. */ 00043 00044 /* Identify Bison output. */ 00045 #define YYBISON 1 00046 00047 /* Bison version. */ 00048 #define YYBISON_VERSION "2.4.2" 00049 00050 /* Skeleton name. */ 00051 #define YYSKELETON_NAME "yacc.c" 00052 00053 /* Pure parsers. */ 00054 #define YYPURE 1 00055 00056 /* Push parsers. */ 00057 #define YYPUSH 0 00058 00059 /* Pull parsers. */ 00060 #define YYPULL 1 00061 00062 /* Using locations. */ 00063 #define YYLSP_NEEDED 0 00064 00065 00066 00067 /* Copy the first part of user declarations. */ 00068 00069 /* Line 189 of yacc.c */ 00070 #line 7 "src/parse.y" 00071 00072 #undef PARSER_DEBUG 00073 00074 #define YYDEBUG 1 00075 #define YYERROR_VERBOSE 1 00076 /* 00077 * Force yacc to use our memory management. This is a little evil because 00078 * the macros assume that "parser_state *p" is in scope 00079 */ 00080 #define YYMALLOC(n) mrb_malloc(p->mrb, (n)) 00081 #define YYFREE(o) mrb_free(p->mrb, (o)) 00082 #define YYSTACK_USE_ALLOCA 0 00083 00084 #include <ctype.h> 00085 #include <errno.h> 00086 #include <stdlib.h> 00087 #include <string.h> 00088 #include "mruby.h" 00089 #include "mruby/compile.h" 00090 #include "mruby/proc.h" 00091 #include "mruby/error.h" 00092 #include "node.h" 00093 #include "mrb_throw.h" 00094 00095 #define YYLEX_PARAM p 00096 00097 typedef mrb_ast_node node; 00098 typedef struct mrb_parser_state parser_state; 00099 typedef struct mrb_parser_heredoc_info parser_heredoc_info; 00100 00101 static int yyparse(parser_state *p); 00102 static int yylex(void *lval, parser_state *p); 00103 static void yyerror(parser_state *p, const char *s); 00104 static void yywarn(parser_state *p, const char *s); 00105 static void yywarning(parser_state *p, const char *s); 00106 static void backref_error(parser_state *p, node *n); 00107 static void tokadd(parser_state *p, int32_t c); 00108 00109 #define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c)) 00110 00111 typedef unsigned int stack_type; 00112 00113 #define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1)) 00114 #define BITSTACK_POP(stack) ((stack) = (stack) >> 1) 00115 #define BITSTACK_LEXPOP(stack) ((stack) = ((stack) >> 1) | ((stack) & 1)) 00116 #define BITSTACK_SET_P(stack) ((stack)&1) 00117 00118 #define COND_PUSH(n) BITSTACK_PUSH(p->cond_stack, (n)) 00119 #define COND_POP() BITSTACK_POP(p->cond_stack) 00120 #define COND_LEXPOP() BITSTACK_LEXPOP(p->cond_stack) 00121 #define COND_P() BITSTACK_SET_P(p->cond_stack) 00122 00123 #define CMDARG_PUSH(n) BITSTACK_PUSH(p->cmdarg_stack, (n)) 00124 #define CMDARG_POP() BITSTACK_POP(p->cmdarg_stack) 00125 #define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack) 00126 #define CMDARG_P() BITSTACK_SET_P(p->cmdarg_stack) 00127 00128 #define SET_LINENO(c,n) ((c)->lineno = (n)) 00129 #define NODE_LINENO(c,n) do {\ 00130 if (n) {\ 00131 (c)->filename_index = (n)->filename_index;\ 00132 (c)->lineno = (n)->lineno;\ 00133 }\ 00134 } while (0) 00135 00136 #define sym(x) ((mrb_sym)(intptr_t)(x)) 00137 #define nsym(x) ((node*)(intptr_t)(x)) 00138 00139 static inline mrb_sym 00140 intern_cstr_gen(parser_state *p, const char *s) 00141 { 00142 return mrb_intern_cstr(p->mrb, s); 00143 } 00144 #define intern_cstr(s) intern_cstr_gen(p,(s)) 00145 00146 static inline mrb_sym 00147 intern_gen(parser_state *p, const char *s, size_t len) 00148 { 00149 return mrb_intern(p->mrb, s, len); 00150 } 00151 #define intern(s,len) intern_gen(p,(s),(len)) 00152 00153 static inline mrb_sym 00154 intern_gen_c(parser_state *p, const char c) 00155 { 00156 return mrb_intern(p->mrb, &c, 1); 00157 } 00158 #define intern_c(c) intern_gen_c(p,(c)) 00159 00160 static void 00161 cons_free_gen(parser_state *p, node *cons) 00162 { 00163 cons->cdr = p->cells; 00164 p->cells = cons; 00165 } 00166 #define cons_free(c) cons_free_gen(p, (c)) 00167 00168 static void* 00169 parser_palloc(parser_state *p, size_t size) 00170 { 00171 void *m = mrb_pool_alloc(p->pool, size); 00172 00173 if (!m) { 00174 MRB_THROW(p->jmp); 00175 } 00176 return m; 00177 } 00178 00179 static node* 00180 cons_gen(parser_state *p, node *car, node *cdr) 00181 { 00182 node *c; 00183 00184 if (p->cells) { 00185 c = p->cells; 00186 p->cells = p->cells->cdr; 00187 } 00188 else { 00189 c = (node *)parser_palloc(p, sizeof(mrb_ast_node)); 00190 } 00191 00192 c->car = car; 00193 c->cdr = cdr; 00194 c->lineno = p->lineno; 00195 c->filename_index = p->current_filename_index; 00196 return c; 00197 } 00198 #define cons(a,b) cons_gen(p,(a),(b)) 00199 00200 static node* 00201 list1_gen(parser_state *p, node *a) 00202 { 00203 return cons(a, 0); 00204 } 00205 #define list1(a) list1_gen(p, (a)) 00206 00207 static node* 00208 list2_gen(parser_state *p, node *a, node *b) 00209 { 00210 return cons(a, cons(b,0)); 00211 } 00212 #define list2(a,b) list2_gen(p, (a),(b)) 00213 00214 static node* 00215 list3_gen(parser_state *p, node *a, node *b, node *c) 00216 { 00217 return cons(a, cons(b, cons(c,0))); 00218 } 00219 #define list3(a,b,c) list3_gen(p, (a),(b),(c)) 00220 00221 static node* 00222 list4_gen(parser_state *p, node *a, node *b, node *c, node *d) 00223 { 00224 return cons(a, cons(b, cons(c, cons(d, 0)))); 00225 } 00226 #define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d)) 00227 00228 static node* 00229 list5_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e) 00230 { 00231 return cons(a, cons(b, cons(c, cons(d, cons(e, 0))))); 00232 } 00233 #define list5(a,b,c,d,e) list5_gen(p, (a),(b),(c),(d),(e)) 00234 00235 static node* 00236 list6_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e, node *f) 00237 { 00238 return cons(a, cons(b, cons(c, cons(d, cons(e, cons(f, 0)))))); 00239 } 00240 #define list6(a,b,c,d,e,f) list6_gen(p, (a),(b),(c),(d),(e),(f)) 00241 00242 static node* 00243 append_gen(parser_state *p, node *a, node *b) 00244 { 00245 node *c = a; 00246 00247 if (!a) return b; 00248 while (c->cdr) { 00249 c = c->cdr; 00250 } 00251 if (b) { 00252 c->cdr = b; 00253 } 00254 return a; 00255 } 00256 #define append(a,b) append_gen(p,(a),(b)) 00257 #define push(a,b) append_gen(p,(a),list1(b)) 00258 00259 static char* 00260 parser_strndup(parser_state *p, const char *s, size_t len) 00261 { 00262 char *b = (char *)parser_palloc(p, len+1); 00263 00264 memcpy(b, s, len); 00265 b[len] = '\0'; 00266 return b; 00267 } 00268 #define strndup(s,len) parser_strndup(p, s, len) 00269 00270 static char* 00271 parser_strdup(parser_state *p, const char *s) 00272 { 00273 return parser_strndup(p, s, strlen(s)); 00274 } 00275 #undef strdup 00276 #define strdup(s) parser_strdup(p, s) 00277 00278 /* xxx ----------------------------- */ 00279 00280 static node* 00281 local_switch(parser_state *p) 00282 { 00283 node *prev = p->locals; 00284 00285 p->locals = cons(0, 0); 00286 return prev; 00287 } 00288 00289 static void 00290 local_resume(parser_state *p, node *prev) 00291 { 00292 p->locals = prev; 00293 } 00294 00295 static void 00296 local_nest(parser_state *p) 00297 { 00298 p->locals = cons(0, p->locals); 00299 } 00300 00301 static void 00302 local_unnest(parser_state *p) 00303 { 00304 p->locals = p->locals->cdr; 00305 } 00306 00307 static mrb_bool 00308 local_var_p(parser_state *p, mrb_sym sym) 00309 { 00310 node *l = p->locals; 00311 00312 while (l) { 00313 node *n = l->car; 00314 while (n) { 00315 if (sym(n->car) == sym) return TRUE; 00316 n = n->cdr; 00317 } 00318 l = l->cdr; 00319 } 00320 return FALSE; 00321 } 00322 00323 static void 00324 local_add_f(parser_state *p, mrb_sym sym) 00325 { 00326 p->locals->car = push(p->locals->car, nsym(sym)); 00327 } 00328 00329 static void 00330 local_add(parser_state *p, mrb_sym sym) 00331 { 00332 if (!local_var_p(p, sym)) { 00333 local_add_f(p, sym); 00334 } 00335 } 00336 00337 /* (:scope (vars..) (prog...)) */ 00338 static node* 00339 new_scope(parser_state *p, node *body) 00340 { 00341 return cons((node*)NODE_SCOPE, cons(p->locals->car, body)); 00342 } 00343 00344 /* (:begin prog...) */ 00345 static node* 00346 new_begin(parser_state *p, node *body) 00347 { 00348 if (body) { 00349 return list2((node*)NODE_BEGIN, body); 00350 } 00351 return cons((node*)NODE_BEGIN, 0); 00352 } 00353 00354 #define newline_node(n) (n) 00355 00356 /* (:rescue body rescue else) */ 00357 static node* 00358 new_rescue(parser_state *p, node *body, node *resq, node *els) 00359 { 00360 return list4((node*)NODE_RESCUE, body, resq, els); 00361 } 00362 00363 /* (:ensure body ensure) */ 00364 static node* 00365 new_ensure(parser_state *p, node *a, node *b) 00366 { 00367 return cons((node*)NODE_ENSURE, cons(a, cons(0, b))); 00368 } 00369 00370 /* (:nil) */ 00371 static node* 00372 new_nil(parser_state *p) 00373 { 00374 return list1((node*)NODE_NIL); 00375 } 00376 00377 /* (:true) */ 00378 static node* 00379 new_true(parser_state *p) 00380 { 00381 return list1((node*)NODE_TRUE); 00382 } 00383 00384 /* (:false) */ 00385 static node* 00386 new_false(parser_state *p) 00387 { 00388 return list1((node*)NODE_FALSE); 00389 } 00390 00391 /* (:alias new old) */ 00392 static node* 00393 new_alias(parser_state *p, mrb_sym a, mrb_sym b) 00394 { 00395 return cons((node*)NODE_ALIAS, cons(nsym(a), nsym(b))); 00396 } 00397 00398 /* (:if cond then else) */ 00399 static node* 00400 new_if(parser_state *p, node *a, node *b, node *c) 00401 { 00402 return list4((node*)NODE_IF, a, b, c); 00403 } 00404 00405 /* (:unless cond then else) */ 00406 static node* 00407 new_unless(parser_state *p, node *a, node *b, node *c) 00408 { 00409 return list4((node*)NODE_IF, a, c, b); 00410 } 00411 00412 /* (:while cond body) */ 00413 static node* 00414 new_while(parser_state *p, node *a, node *b) 00415 { 00416 return cons((node*)NODE_WHILE, cons(a, b)); 00417 } 00418 00419 /* (:until cond body) */ 00420 static node* 00421 new_until(parser_state *p, node *a, node *b) 00422 { 00423 return cons((node*)NODE_UNTIL, cons(a, b)); 00424 } 00425 00426 /* (:for var obj body) */ 00427 static node* 00428 new_for(parser_state *p, node *v, node *o, node *b) 00429 { 00430 return list4((node*)NODE_FOR, v, o, b); 00431 } 00432 00433 /* (:case a ((when ...) body) ((when...) body)) */ 00434 static node* 00435 new_case(parser_state *p, node *a, node *b) 00436 { 00437 node *n = list2((node*)NODE_CASE, a); 00438 node *n2 = n; 00439 00440 while (n2->cdr) { 00441 n2 = n2->cdr; 00442 } 00443 n2->cdr = b; 00444 return n; 00445 } 00446 00447 /* (:postexe a) */ 00448 static node* 00449 new_postexe(parser_state *p, node *a) 00450 { 00451 return cons((node*)NODE_POSTEXE, a); 00452 } 00453 00454 /* (:self) */ 00455 static node* 00456 new_self(parser_state *p) 00457 { 00458 return list1((node*)NODE_SELF); 00459 } 00460 00461 /* (:call a b c) */ 00462 static node* 00463 new_call(parser_state *p, node *a, mrb_sym b, node *c) 00464 { 00465 node *n = list4((node*)NODE_CALL, a, nsym(b), c); 00466 NODE_LINENO(n, a); 00467 return n; 00468 } 00469 00470 /* (:fcall self mid args) */ 00471 static node* 00472 new_fcall(parser_state *p, mrb_sym b, node *c) 00473 { 00474 node *n = new_self(p); 00475 NODE_LINENO(n, c); 00476 n = list4((node*)NODE_FCALL, n, nsym(b), c); 00477 NODE_LINENO(n, c); 00478 return n; 00479 } 00480 00481 /* (:super . c) */ 00482 static node* 00483 new_super(parser_state *p, node *c) 00484 { 00485 return cons((node*)NODE_SUPER, c); 00486 } 00487 00488 /* (:zsuper) */ 00489 static node* 00490 new_zsuper(parser_state *p) 00491 { 00492 return list1((node*)NODE_ZSUPER); 00493 } 00494 00495 /* (:yield . c) */ 00496 static node* 00497 new_yield(parser_state *p, node *c) 00498 { 00499 if (c) { 00500 if (c->cdr) { 00501 yyerror(p, "both block arg and actual block given"); 00502 } 00503 return cons((node*)NODE_YIELD, c->car); 00504 } 00505 return cons((node*)NODE_YIELD, 0); 00506 } 00507 00508 /* (:return . c) */ 00509 static node* 00510 new_return(parser_state *p, node *c) 00511 { 00512 return cons((node*)NODE_RETURN, c); 00513 } 00514 00515 /* (:break . c) */ 00516 static node* 00517 new_break(parser_state *p, node *c) 00518 { 00519 return cons((node*)NODE_BREAK, c); 00520 } 00521 00522 /* (:next . c) */ 00523 static node* 00524 new_next(parser_state *p, node *c) 00525 { 00526 return cons((node*)NODE_NEXT, c); 00527 } 00528 00529 /* (:redo) */ 00530 static node* 00531 new_redo(parser_state *p) 00532 { 00533 return list1((node*)NODE_REDO); 00534 } 00535 00536 /* (:retry) */ 00537 static node* 00538 new_retry(parser_state *p) 00539 { 00540 return list1((node*)NODE_RETRY); 00541 } 00542 00543 /* (:dot2 a b) */ 00544 static node* 00545 new_dot2(parser_state *p, node *a, node *b) 00546 { 00547 return cons((node*)NODE_DOT2, cons(a, b)); 00548 } 00549 00550 /* (:dot3 a b) */ 00551 static node* 00552 new_dot3(parser_state *p, node *a, node *b) 00553 { 00554 return cons((node*)NODE_DOT3, cons(a, b)); 00555 } 00556 00557 /* (:colon2 b c) */ 00558 static node* 00559 new_colon2(parser_state *p, node *b, mrb_sym c) 00560 { 00561 return cons((node*)NODE_COLON2, cons(b, nsym(c))); 00562 } 00563 00564 /* (:colon3 . c) */ 00565 static node* 00566 new_colon3(parser_state *p, mrb_sym c) 00567 { 00568 return cons((node*)NODE_COLON3, nsym(c)); 00569 } 00570 00571 /* (:and a b) */ 00572 static node* 00573 new_and(parser_state *p, node *a, node *b) 00574 { 00575 return cons((node*)NODE_AND, cons(a, b)); 00576 } 00577 00578 /* (:or a b) */ 00579 static node* 00580 new_or(parser_state *p, node *a, node *b) 00581 { 00582 return cons((node*)NODE_OR, cons(a, b)); 00583 } 00584 00585 /* (:array a...) */ 00586 static node* 00587 new_array(parser_state *p, node *a) 00588 { 00589 return cons((node*)NODE_ARRAY, a); 00590 } 00591 00592 /* (:splat . a) */ 00593 static node* 00594 new_splat(parser_state *p, node *a) 00595 { 00596 return cons((node*)NODE_SPLAT, a); 00597 } 00598 00599 /* (:hash (k . v) (k . v)...) */ 00600 static node* 00601 new_hash(parser_state *p, node *a) 00602 { 00603 return cons((node*)NODE_HASH, a); 00604 } 00605 00606 /* (:sym . a) */ 00607 static node* 00608 new_sym(parser_state *p, mrb_sym sym) 00609 { 00610 return cons((node*)NODE_SYM, nsym(sym)); 00611 } 00612 00613 static mrb_sym 00614 new_strsym(parser_state *p, node* str) 00615 { 00616 const char *s = (const char*)str->cdr->car; 00617 size_t len = (size_t)str->cdr->cdr; 00618 00619 return mrb_intern(p->mrb, s, len); 00620 } 00621 00622 /* (:lvar . a) */ 00623 static node* 00624 new_lvar(parser_state *p, mrb_sym sym) 00625 { 00626 return cons((node*)NODE_LVAR, nsym(sym)); 00627 } 00628 00629 /* (:gvar . a) */ 00630 static node* 00631 new_gvar(parser_state *p, mrb_sym sym) 00632 { 00633 return cons((node*)NODE_GVAR, nsym(sym)); 00634 } 00635 00636 /* (:ivar . a) */ 00637 static node* 00638 new_ivar(parser_state *p, mrb_sym sym) 00639 { 00640 return cons((node*)NODE_IVAR, nsym(sym)); 00641 } 00642 00643 /* (:cvar . a) */ 00644 static node* 00645 new_cvar(parser_state *p, mrb_sym sym) 00646 { 00647 return cons((node*)NODE_CVAR, nsym(sym)); 00648 } 00649 00650 /* (:const . a) */ 00651 static node* 00652 new_const(parser_state *p, mrb_sym sym) 00653 { 00654 return cons((node*)NODE_CONST, nsym(sym)); 00655 } 00656 00657 /* (:undef a...) */ 00658 static node* 00659 new_undef(parser_state *p, mrb_sym sym) 00660 { 00661 return list2((node*)NODE_UNDEF, nsym(sym)); 00662 } 00663 00664 /* (:class class super body) */ 00665 static node* 00666 new_class(parser_state *p, node *c, node *s, node *b) 00667 { 00668 return list4((node*)NODE_CLASS, c, s, cons(p->locals->car, b)); 00669 } 00670 00671 /* (:sclass obj body) */ 00672 static node* 00673 new_sclass(parser_state *p, node *o, node *b) 00674 { 00675 return list3((node*)NODE_SCLASS, o, cons(p->locals->car, b)); 00676 } 00677 00678 /* (:module module body) */ 00679 static node* 00680 new_module(parser_state *p, node *m, node *b) 00681 { 00682 return list3((node*)NODE_MODULE, m, cons(p->locals->car, b)); 00683 } 00684 00685 /* (:def m lv (arg . body)) */ 00686 static node* 00687 new_def(parser_state *p, mrb_sym m, node *a, node *b) 00688 { 00689 return list5((node*)NODE_DEF, nsym(m), p->locals->car, a, b); 00690 } 00691 00692 /* (:sdef obj m lv (arg . body)) */ 00693 static node* 00694 new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b) 00695 { 00696 return list6((node*)NODE_SDEF, o, nsym(m), p->locals->car, a, b); 00697 } 00698 00699 /* (:arg . sym) */ 00700 static node* 00701 new_arg(parser_state *p, mrb_sym sym) 00702 { 00703 return cons((node*)NODE_ARG, nsym(sym)); 00704 } 00705 00706 /* (m o r m2 b) */ 00707 /* m: (a b c) */ 00708 /* o: ((a . e1) (b . e2)) */ 00709 /* r: a */ 00710 /* m2: (a b c) */ 00711 /* b: a */ 00712 static node* 00713 new_args(parser_state *p, node *m, node *opt, mrb_sym rest, node *m2, mrb_sym blk) 00714 { 00715 node *n; 00716 00717 n = cons(m2, nsym(blk)); 00718 n = cons(nsym(rest), n); 00719 n = cons(opt, n); 00720 return cons(m, n); 00721 } 00722 00723 /* (:block_arg . a) */ 00724 static node* 00725 new_block_arg(parser_state *p, node *a) 00726 { 00727 return cons((node*)NODE_BLOCK_ARG, a); 00728 } 00729 00730 /* (:block arg body) */ 00731 static node* 00732 new_block(parser_state *p, node *a, node *b) 00733 { 00734 return list4((node*)NODE_BLOCK, p->locals->car, a, b); 00735 } 00736 00737 /* (:lambda arg body) */ 00738 static node* 00739 new_lambda(parser_state *p, node *a, node *b) 00740 { 00741 return list4((node*)NODE_LAMBDA, p->locals->car, a, b); 00742 } 00743 00744 /* (:asgn lhs rhs) */ 00745 static node* 00746 new_asgn(parser_state *p, node *a, node *b) 00747 { 00748 return cons((node*)NODE_ASGN, cons(a, b)); 00749 } 00750 00751 /* (:masgn mlhs=(pre rest post) mrhs) */ 00752 static node* 00753 new_masgn(parser_state *p, node *a, node *b) 00754 { 00755 return cons((node*)NODE_MASGN, cons(a, b)); 00756 } 00757 00758 /* (:asgn lhs rhs) */ 00759 static node* 00760 new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b) 00761 { 00762 return list4((node*)NODE_OP_ASGN, a, nsym(op), b); 00763 } 00764 00765 /* (:int . i) */ 00766 static node* 00767 new_int(parser_state *p, const char *s, int base) 00768 { 00769 return list3((node*)NODE_INT, (node*)strdup(s), (node*)(intptr_t)base); 00770 } 00771 00772 /* (:float . i) */ 00773 static node* 00774 new_float(parser_state *p, const char *s) 00775 { 00776 return cons((node*)NODE_FLOAT, (node*)strdup(s)); 00777 } 00778 00779 /* (:str . (s . len)) */ 00780 static node* 00781 new_str(parser_state *p, const char *s, int len) 00782 { 00783 return cons((node*)NODE_STR, cons((node*)strndup(s, len), (node*)(intptr_t)len)); 00784 } 00785 00786 /* (:dstr . a) */ 00787 static node* 00788 new_dstr(parser_state *p, node *a) 00789 { 00790 return cons((node*)NODE_DSTR, a); 00791 } 00792 00793 /* (:str . (s . len)) */ 00794 static node* 00795 new_xstr(parser_state *p, const char *s, int len) 00796 { 00797 return cons((node*)NODE_XSTR, cons((node*)strndup(s, len), (node*)(intptr_t)len)); 00798 } 00799 00800 /* (:xstr . a) */ 00801 static node* 00802 new_dxstr(parser_state *p, node *a) 00803 { 00804 return cons((node*)NODE_DXSTR, a); 00805 } 00806 00807 /* (:dsym . a) */ 00808 static node* 00809 new_dsym(parser_state *p, node *a) 00810 { 00811 return cons((node*)NODE_DSYM, new_dstr(p, a)); 00812 } 00813 00814 /* (:str . (a . a)) */ 00815 static node* 00816 new_regx(parser_state *p, const char *p1, const char* p2) 00817 { 00818 return cons((node*)NODE_REGX, cons((node*)p1, (node*)p2)); 00819 } 00820 00821 /* (:dregx . a) */ 00822 static node* 00823 new_dregx(parser_state *p, node *a, node *b) 00824 { 00825 return cons((node*)NODE_DREGX, cons(a, b)); 00826 } 00827 00828 /* (:backref . n) */ 00829 static node* 00830 new_back_ref(parser_state *p, int n) 00831 { 00832 return cons((node*)NODE_BACK_REF, (node*)(intptr_t)n); 00833 } 00834 00835 /* (:nthref . n) */ 00836 static node* 00837 new_nth_ref(parser_state *p, int n) 00838 { 00839 return cons((node*)NODE_NTH_REF, (node*)(intptr_t)n); 00840 } 00841 00842 /* (:heredoc . a) */ 00843 static node* 00844 new_heredoc(parser_state *p) 00845 { 00846 parser_heredoc_info *inf = (parser_heredoc_info *)parser_palloc(p, sizeof(parser_heredoc_info)); 00847 return cons((node*)NODE_HEREDOC, (node*)inf); 00848 } 00849 00850 static void 00851 new_bv(parser_state *p, mrb_sym id) 00852 { 00853 } 00854 00855 static node* 00856 new_literal_delim(parser_state *p) 00857 { 00858 return cons((node*)NODE_LITERAL_DELIM, 0); 00859 } 00860 00861 /* (:words . a) */ 00862 static node* 00863 new_words(parser_state *p, node *a) 00864 { 00865 return cons((node*)NODE_WORDS, a); 00866 } 00867 00868 /* (:symbols . a) */ 00869 static node* 00870 new_symbols(parser_state *p, node *a) 00871 { 00872 return cons((node*)NODE_SYMBOLS, a); 00873 } 00874 00875 /* xxx ----------------------------- */ 00876 00877 /* (:call a op) */ 00878 static node* 00879 call_uni_op(parser_state *p, node *recv, const char *m) 00880 { 00881 return new_call(p, recv, intern_cstr(m), 0); 00882 } 00883 00884 /* (:call a op b) */ 00885 static node* 00886 call_bin_op(parser_state *p, node *recv, const char *m, node *arg1) 00887 { 00888 return new_call(p, recv, intern_cstr(m), list1(list1(arg1))); 00889 } 00890 00891 static void 00892 args_with_block(parser_state *p, node *a, node *b) 00893 { 00894 if (b) { 00895 if (a->cdr) { 00896 yyerror(p, "both block arg and actual block given"); 00897 } 00898 a->cdr = b; 00899 } 00900 } 00901 00902 static void 00903 call_with_block(parser_state *p, node *a, node *b) 00904 { 00905 node *n; 00906 00907 if (a->car == (node*)NODE_SUPER || 00908 a->car == (node*)NODE_ZSUPER) { 00909 if (!a->cdr) a->cdr = cons(0, b); 00910 else { 00911 args_with_block(p, a->cdr, b); 00912 } 00913 } 00914 else { 00915 n = a->cdr->cdr->cdr; 00916 if (!n->car) n->car = cons(0, b); 00917 else { 00918 args_with_block(p, n->car, b); 00919 } 00920 } 00921 } 00922 00923 static node* 00924 negate_lit(parser_state *p, node *n) 00925 { 00926 return cons((node*)NODE_NEGATE, n); 00927 } 00928 00929 static node* 00930 cond(node *n) 00931 { 00932 return n; 00933 } 00934 00935 static node* 00936 ret_args(parser_state *p, node *n) 00937 { 00938 if (n->cdr) { 00939 yyerror(p, "block argument should not be given"); 00940 return NULL; 00941 } 00942 if (!n->car->cdr) return n->car->car; 00943 return new_array(p, n->car); 00944 } 00945 00946 static void 00947 assignable(parser_state *p, node *lhs) 00948 { 00949 if ((int)(intptr_t)lhs->car == NODE_LVAR) { 00950 local_add(p, sym(lhs->cdr)); 00951 } 00952 } 00953 00954 static node* 00955 var_reference(parser_state *p, node *lhs) 00956 { 00957 node *n; 00958 00959 if ((int)(intptr_t)lhs->car == NODE_LVAR) { 00960 if (!local_var_p(p, sym(lhs->cdr))) { 00961 n = new_fcall(p, sym(lhs->cdr), 0); 00962 cons_free(lhs); 00963 return n; 00964 } 00965 } 00966 00967 return lhs; 00968 } 00969 00970 typedef enum mrb_string_type string_type; 00971 00972 static node* 00973 new_strterm(parser_state *p, string_type type, int term, int paren) 00974 { 00975 return cons((node*)(intptr_t)type, cons((node*)0, cons((node*)(intptr_t)paren, (node*)(intptr_t)term))); 00976 } 00977 00978 static void 00979 end_strterm(parser_state *p) 00980 { 00981 cons_free(p->lex_strterm->cdr->cdr); 00982 cons_free(p->lex_strterm->cdr); 00983 cons_free(p->lex_strterm); 00984 p->lex_strterm = NULL; 00985 } 00986 00987 static parser_heredoc_info * 00988 parsing_heredoc_inf(parser_state *p) 00989 { 00990 node *nd = p->parsing_heredoc; 00991 if (nd == NULL) 00992 return NULL; 00993 /* mrb_assert(nd->car->car == NODE_HEREDOC); */ 00994 return (parser_heredoc_info*)nd->car->cdr; 00995 } 00996 00997 static void 00998 heredoc_treat_nextline(parser_state *p) 00999 { 01000 if (p->heredocs_from_nextline == NULL) 01001 return; 01002 if (p->parsing_heredoc == NULL) { 01003 node *n; 01004 p->parsing_heredoc = p->heredocs_from_nextline; 01005 p->lex_strterm_before_heredoc = p->lex_strterm; 01006 p->lex_strterm = new_strterm(p, parsing_heredoc_inf(p)->type, 0, 0); 01007 n = p->all_heredocs; 01008 if (n) { 01009 while (n->cdr) 01010 n = n->cdr; 01011 n->cdr = p->parsing_heredoc; 01012 } 01013 else { 01014 p->all_heredocs = p->parsing_heredoc; 01015 } 01016 } 01017 else { 01018 node *n, *m; 01019 m = p->heredocs_from_nextline; 01020 while (m->cdr) 01021 m = m->cdr; 01022 n = p->all_heredocs; 01023 mrb_assert(n != NULL); 01024 if (n == p->parsing_heredoc) { 01025 m->cdr = n; 01026 p->all_heredocs = p->heredocs_from_nextline; 01027 p->parsing_heredoc = p->heredocs_from_nextline; 01028 } 01029 else { 01030 while (n->cdr != p->parsing_heredoc) { 01031 n = n->cdr; 01032 mrb_assert(n != NULL); 01033 } 01034 m->cdr = n->cdr; 01035 n->cdr = p->heredocs_from_nextline; 01036 p->parsing_heredoc = p->heredocs_from_nextline; 01037 } 01038 } 01039 p->heredocs_from_nextline = NULL; 01040 } 01041 01042 static void 01043 heredoc_end(parser_state *p) 01044 { 01045 p->parsing_heredoc = p->parsing_heredoc->cdr; 01046 if (p->parsing_heredoc == NULL) { 01047 p->lstate = EXPR_BEG; 01048 p->cmd_start = TRUE; 01049 end_strterm(p); 01050 p->lex_strterm = p->lex_strterm_before_heredoc; 01051 p->lex_strterm_before_heredoc = NULL; 01052 p->heredoc_end_now = TRUE; 01053 } 01054 else { 01055 /* next heredoc */ 01056 p->lex_strterm->car = (node*)(intptr_t)parsing_heredoc_inf(p)->type; 01057 } 01058 } 01059 #define is_strterm_type(p,str_func) ((int)(intptr_t)((p)->lex_strterm->car) & (str_func)) 01060 01061 /* xxx ----------------------------- */ 01062 01063 01064 01065 /* Line 189 of yacc.c */ 01066 #line 1067 "C:/Users/matsuzaki.takuya/work/daily/20150106/mruby-1.1.0/build/ARMCA9/src/y.tab.c" 01067 01068 /* Enabling traces. */ 01069 #ifndef YYDEBUG 01070 # define YYDEBUG 0 01071 #endif 01072 01073 /* Enabling verbose error messages. */ 01074 #ifdef YYERROR_VERBOSE 01075 # undef YYERROR_VERBOSE 01076 # define YYERROR_VERBOSE 1 01077 #else 01078 # define YYERROR_VERBOSE 0 01079 #endif 01080 01081 /* Enabling the token table. */ 01082 #ifndef YYTOKEN_TABLE 01083 # define YYTOKEN_TABLE 0 01084 #endif 01085 01086 01087 /* Tokens. */ 01088 #ifndef YYTOKENTYPE 01089 # define YYTOKENTYPE 01090 /* Put the tokens into the symbol table, so that GDB and other debuggers 01091 know about them. */ 01092 enum yytokentype { 01093 keyword_class = 258, 01094 keyword_module = 259, 01095 keyword_def = 260, 01096 keyword_begin = 261, 01097 keyword_if = 262, 01098 keyword_unless = 263, 01099 keyword_while = 264, 01100 keyword_until = 265, 01101 keyword_for = 266, 01102 keyword_undef = 267, 01103 keyword_rescue = 268, 01104 keyword_ensure = 269, 01105 keyword_end = 270, 01106 keyword_then = 271, 01107 keyword_elsif = 272, 01108 keyword_else = 273, 01109 keyword_case = 274, 01110 keyword_when = 275, 01111 keyword_break = 276, 01112 keyword_next = 277, 01113 keyword_redo = 278, 01114 keyword_retry = 279, 01115 keyword_in = 280, 01116 keyword_do = 281, 01117 keyword_do_cond = 282, 01118 keyword_do_block = 283, 01119 keyword_do_LAMBDA = 284, 01120 keyword_return = 285, 01121 keyword_yield = 286, 01122 keyword_super = 287, 01123 keyword_self = 288, 01124 keyword_nil = 289, 01125 keyword_true = 290, 01126 keyword_false = 291, 01127 keyword_and = 292, 01128 keyword_or = 293, 01129 keyword_not = 294, 01130 modifier_if = 295, 01131 modifier_unless = 296, 01132 modifier_while = 297, 01133 modifier_until = 298, 01134 modifier_rescue = 299, 01135 keyword_alias = 300, 01136 keyword_BEGIN = 301, 01137 keyword_END = 302, 01138 keyword__LINE__ = 303, 01139 keyword__FILE__ = 304, 01140 keyword__ENCODING__ = 305, 01141 tIDENTIFIER = 306, 01142 tFID = 307, 01143 tGVAR = 308, 01144 tIVAR = 309, 01145 tCONSTANT = 310, 01146 tCVAR = 311, 01147 tLABEL = 312, 01148 tINTEGER = 313, 01149 tFLOAT = 314, 01150 tCHAR = 315, 01151 tXSTRING = 316, 01152 tREGEXP = 317, 01153 tSTRING = 318, 01154 tSTRING_PART = 319, 01155 tSTRING_MID = 320, 01156 tNTH_REF = 321, 01157 tBACK_REF = 322, 01158 tREGEXP_END = 323, 01159 tUPLUS = 324, 01160 tUMINUS = 325, 01161 tPOW = 326, 01162 tCMP = 327, 01163 tEQ = 328, 01164 tEQQ = 329, 01165 tNEQ = 330, 01166 tGEQ = 331, 01167 tLEQ = 332, 01168 tANDOP = 333, 01169 tOROP = 334, 01170 tMATCH = 335, 01171 tNMATCH = 336, 01172 tDOT2 = 337, 01173 tDOT3 = 338, 01174 tAREF = 339, 01175 tASET = 340, 01176 tLSHFT = 341, 01177 tRSHFT = 342, 01178 tCOLON2 = 343, 01179 tCOLON3 = 344, 01180 tOP_ASGN = 345, 01181 tASSOC = 346, 01182 tLPAREN = 347, 01183 tLPAREN_ARG = 348, 01184 tRPAREN = 349, 01185 tLBRACK = 350, 01186 tLBRACE = 351, 01187 tLBRACE_ARG = 352, 01188 tSTAR = 353, 01189 tAMPER = 354, 01190 tLAMBDA = 355, 01191 tSYMBEG = 356, 01192 tREGEXP_BEG = 357, 01193 tWORDS_BEG = 358, 01194 tSYMBOLS_BEG = 359, 01195 tSTRING_BEG = 360, 01196 tXSTRING_BEG = 361, 01197 tSTRING_DVAR = 362, 01198 tLAMBEG = 363, 01199 tHEREDOC_BEG = 364, 01200 tHEREDOC_END = 365, 01201 tLITERAL_DELIM = 366, 01202 tHD_LITERAL_DELIM = 367, 01203 tHD_STRING_PART = 368, 01204 tHD_STRING_MID = 369, 01205 tLOWEST = 370, 01206 tUMINUS_NUM = 371, 01207 idNULL = 372, 01208 idRespond_to = 373, 01209 idIFUNC = 374, 01210 idCFUNC = 375, 01211 id_core_set_method_alias = 376, 01212 id_core_set_variable_alias = 377, 01213 id_core_undef_method = 378, 01214 id_core_define_method = 379, 01215 id_core_define_singleton_method = 380, 01216 id_core_set_postexe = 381, 01217 tLAST_TOKEN = 382 01218 }; 01219 #endif 01220 01221 01222 01223 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED 01224 typedef union YYSTYPE 01225 { 01226 01227 /* Line 214 of yacc.c */ 01228 #line 1005 "src/parse.y" 01229 01230 node *nd; 01231 mrb_sym id; 01232 int num; 01233 stack_type stack; 01234 const struct vtable *vars; 01235 01236 01237 01238 /* Line 214 of yacc.c */ 01239 #line 1240 "C:/Users/matsuzaki.takuya/work/daily/20150106/mruby-1.1.0/build/ARMCA9/src/y.tab.c" 01240 } YYSTYPE; 01241 # define YYSTYPE_IS_TRIVIAL 1 01242 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ 01243 # define YYSTYPE_IS_DECLARED 1 01244 #endif 01245 01246 01247 /* Copy the second part of user declarations. */ 01248 01249 01250 /* Line 264 of yacc.c */ 01251 #line 1252 "C:/Users/matsuzaki.takuya/work/daily/20150106/mruby-1.1.0/build/ARMCA9/src/y.tab.c" 01252 01253 #ifdef short 01254 # undef short 01255 #endif 01256 01257 #ifdef YYTYPE_UINT8 01258 typedef YYTYPE_UINT8 yytype_uint8; 01259 #else 01260 typedef unsigned char yytype_uint8; 01261 #endif 01262 01263 #ifdef YYTYPE_INT8 01264 typedef YYTYPE_INT8 yytype_int8; 01265 #elif (defined __STDC__ || defined __C99__FUNC__ \ 01266 || defined __cplusplus || defined _MSC_VER) 01267 typedef signed char yytype_int8; 01268 #else 01269 typedef short int yytype_int8; 01270 #endif 01271 01272 #ifdef YYTYPE_UINT16 01273 typedef YYTYPE_UINT16 yytype_uint16; 01274 #else 01275 typedef unsigned short int yytype_uint16; 01276 #endif 01277 01278 #ifdef YYTYPE_INT16 01279 typedef YYTYPE_INT16 yytype_int16; 01280 #else 01281 typedef short int yytype_int16; 01282 #endif 01283 01284 #ifndef YYSIZE_T 01285 # ifdef __SIZE_TYPE__ 01286 # define YYSIZE_T __SIZE_TYPE__ 01287 # elif defined size_t 01288 # define YYSIZE_T size_t 01289 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ 01290 || defined __cplusplus || defined _MSC_VER) 01291 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */ 01292 # define YYSIZE_T size_t 01293 # else 01294 # define YYSIZE_T unsigned int 01295 # endif 01296 #endif 01297 01298 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) 01299 01300 #ifndef YY_ 01301 # if defined YYENABLE_NLS && YYENABLE_NLS 01302 # if ENABLE_NLS 01303 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */ 01304 # define YY_(msgid) dgettext ("bison-runtime", msgid) 01305 # endif 01306 # endif 01307 # ifndef YY_ 01308 # define YY_(msgid) msgid 01309 # endif 01310 #endif 01311 01312 /* Suppress unused-variable warnings by "using" E. */ 01313 #if ! defined lint || defined __GNUC__ 01314 # define YYUSE(e) ((void) (e)) 01315 #else 01316 # define YYUSE(e) /* empty */ 01317 #endif 01318 01319 /* Identity function, used to suppress warnings about constant conditions. */ 01320 #ifndef lint 01321 # define YYID(n) (n) 01322 #else 01323 #if (defined __STDC__ || defined __C99__FUNC__ \ 01324 || defined __cplusplus || defined _MSC_VER) 01325 static int 01326 YYID (int yyi) 01327 #else 01328 static int 01329 YYID (yyi) 01330 int yyi; 01331 #endif 01332 { 01333 return yyi; 01334 } 01335 #endif 01336 01337 #if ! defined yyoverflow || YYERROR_VERBOSE 01338 01339 /* The parser invokes alloca or malloc; define the necessary symbols. */ 01340 01341 # ifdef YYSTACK_USE_ALLOCA 01342 # if YYSTACK_USE_ALLOCA 01343 # ifdef __GNUC__ 01344 # define YYSTACK_ALLOC __builtin_alloca 01345 # elif defined __BUILTIN_VA_ARG_INCR 01346 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */ 01347 # elif defined _AIX 01348 # define YYSTACK_ALLOC __alloca 01349 # elif defined _MSC_VER 01350 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */ 01351 # define alloca _alloca 01352 # else 01353 # define YYSTACK_ALLOC alloca 01354 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 01355 || defined __cplusplus || defined _MSC_VER) 01356 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 01357 # ifndef _STDLIB_H 01358 # define _STDLIB_H 1 01359 # endif 01360 # endif 01361 # endif 01362 # endif 01363 # endif 01364 01365 # ifdef YYSTACK_ALLOC 01366 /* Pacify GCC's `empty if-body' warning. */ 01367 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) 01368 # ifndef YYSTACK_ALLOC_MAXIMUM 01369 /* The OS might guarantee only one guard page at the bottom of the stack, 01370 and a page size can be as small as 4096 bytes. So we cannot safely 01371 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number 01372 to allow for a few compiler-allocated temporary stack slots. */ 01373 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ 01374 # endif 01375 # else 01376 # define YYSTACK_ALLOC YYMALLOC 01377 # define YYSTACK_FREE YYFREE 01378 # ifndef YYSTACK_ALLOC_MAXIMUM 01379 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM 01380 # endif 01381 # if (defined __cplusplus && ! defined _STDLIB_H \ 01382 && ! ((defined YYMALLOC || defined malloc) \ 01383 && (defined YYFREE || defined free))) 01384 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ 01385 # ifndef _STDLIB_H 01386 # define _STDLIB_H 1 01387 # endif 01388 # endif 01389 # ifndef YYMALLOC 01390 # define YYMALLOC malloc 01391 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 01392 || defined __cplusplus || defined _MSC_VER) 01393 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ 01394 # endif 01395 # endif 01396 # ifndef YYFREE 01397 # define YYFREE free 01398 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ 01399 || defined __cplusplus || defined _MSC_VER) 01400 void free (void *); /* INFRINGES ON USER NAME SPACE */ 01401 # endif 01402 # endif 01403 # endif 01404 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ 01405 01406 01407 #if (! defined yyoverflow \ 01408 && (! defined __cplusplus \ 01409 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) 01410 01411 /* A type that is properly aligned for any stack member. */ 01412 union yyalloc 01413 { 01414 yytype_int16 yyss_alloc; 01415 YYSTYPE yyvs_alloc; 01416 }; 01417 01418 /* The size of the maximum gap between one aligned stack and the next. */ 01419 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) 01420 01421 /* The size of an array large to enough to hold all stacks, each with 01422 N elements. */ 01423 # define YYSTACK_BYTES(N) \ 01424 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ 01425 + YYSTACK_GAP_MAXIMUM) 01426 01427 /* Copy COUNT objects from FROM to TO. The source and destination do 01428 not overlap. */ 01429 # ifndef YYCOPY 01430 # if defined __GNUC__ && 1 < __GNUC__ 01431 # define YYCOPY(To, From, Count) \ 01432 __builtin_memcpy (To, From, (Count) * sizeof (*(From))) 01433 # else 01434 # define YYCOPY(To, From, Count) \ 01435 do \ 01436 { \ 01437 YYSIZE_T yyi; \ 01438 for (yyi = 0; yyi < (Count); yyi++) \ 01439 (To)[yyi] = (From)[yyi]; \ 01440 } \ 01441 while (YYID (0)) 01442 # endif 01443 # endif 01444 01445 /* Relocate STACK from its old location to the new one. The 01446 local variables YYSIZE and YYSTACKSIZE give the old and new number of 01447 elements in the stack, and YYPTR gives the new location of the 01448 stack. Advance YYPTR to a properly aligned location for the next 01449 stack. */ 01450 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ 01451 do \ 01452 { \ 01453 YYSIZE_T yynewbytes; \ 01454 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ 01455 Stack = &yyptr->Stack_alloc; \ 01456 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ 01457 yyptr += yynewbytes / sizeof (*yyptr); \ 01458 } \ 01459 while (YYID (0)) 01460 01461 #endif 01462 01463 /* YYFINAL -- State number of the termination state. */ 01464 #define YYFINAL 3 01465 /* YYLAST -- Last index in YYTABLE. */ 01466 #define YYLAST 10941 01467 01468 /* YYNTOKENS -- Number of terminals. */ 01469 #define YYNTOKENS 154 01470 /* YYNNTS -- Number of nonterminals. */ 01471 #define YYNNTS 160 01472 /* YYNRULES -- Number of rules. */ 01473 #define YYNRULES 555 01474 /* YYNRULES -- Number of states. */ 01475 #define YYNSTATES 970 01476 01477 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 01478 #define YYUNDEFTOK 2 01479 #define YYMAXUTOK 382 01480 01481 #define YYTRANSLATE(YYX) \ 01482 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) 01483 01484 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 01485 static const yytype_uint8 yytranslate[] = 01486 { 01487 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01488 153, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01489 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01490 2, 2, 2, 130, 2, 2, 2, 128, 123, 2, 01491 149, 150, 126, 124, 147, 125, 146, 127, 2, 2, 01492 2, 2, 2, 2, 2, 2, 2, 2, 118, 152, 01493 120, 116, 119, 117, 2, 2, 2, 2, 2, 2, 01494 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01495 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01496 2, 145, 2, 151, 122, 2, 148, 2, 2, 2, 01497 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01498 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01499 2, 2, 2, 143, 121, 144, 131, 2, 2, 2, 01500 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01501 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01502 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01503 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01504 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01505 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01506 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01507 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01508 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 01512 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 01513 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 01514 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 01515 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 01516 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 01517 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 01518 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 01519 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 01520 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 01521 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 01522 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 01523 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 01524 115, 129, 132, 133, 134, 135, 136, 137, 138, 139, 01525 140, 141, 142 01526 }; 01527 01528 #if YYDEBUG 01529 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in 01530 YYRHS. */ 01531 static const yytype_uint16 yyprhs[] = 01532 { 01533 0, 0, 3, 4, 7, 10, 12, 14, 18, 21, 01534 23, 24, 30, 35, 38, 40, 42, 46, 49, 50, 01535 55, 58, 62, 66, 70, 74, 78, 83, 85, 89, 01536 93, 100, 106, 112, 118, 124, 128, 132, 136, 140, 01537 142, 146, 150, 152, 156, 160, 164, 167, 169, 171, 01538 173, 175, 177, 182, 183, 189, 192, 196, 201, 207, 01539 212, 218, 221, 224, 227, 230, 233, 235, 239, 241, 01540 245, 247, 250, 254, 260, 263, 268, 271, 276, 278, 01541 282, 284, 288, 291, 295, 297, 300, 302, 307, 311, 01542 315, 319, 323, 326, 328, 330, 335, 339, 343, 347, 01543 351, 354, 356, 358, 360, 363, 365, 369, 371, 373, 01544 375, 377, 379, 381, 383, 385, 386, 391, 393, 395, 01545 397, 399, 401, 403, 405, 407, 409, 411, 413, 415, 01546 417, 419, 421, 423, 425, 427, 429, 431, 433, 435, 01547 437, 439, 441, 443, 445, 447, 449, 451, 453, 455, 01548 457, 459, 461, 463, 465, 467, 469, 471, 473, 475, 01549 477, 479, 481, 483, 485, 487, 489, 491, 493, 495, 01550 497, 499, 501, 503, 505, 507, 509, 511, 513, 515, 01551 517, 519, 521, 523, 525, 527, 529, 533, 539, 543, 01552 549, 556, 562, 568, 574, 580, 585, 589, 593, 597, 01553 601, 605, 609, 613, 617, 621, 626, 631, 634, 637, 01554 641, 645, 649, 653, 657, 661, 665, 669, 673, 677, 01555 681, 685, 689, 692, 695, 699, 703, 707, 711, 718, 01556 720, 722, 724, 727, 732, 735, 739, 741, 743, 745, 01557 747, 750, 755, 758, 760, 763, 766, 771, 773, 774, 01558 777, 780, 783, 785, 787, 790, 794, 799, 804, 810, 01559 814, 819, 822, 824, 826, 828, 830, 832, 834, 836, 01560 838, 839, 844, 845, 846, 852, 853, 857, 861, 865, 01561 868, 872, 876, 878, 883, 887, 889, 894, 898, 901, 01562 903, 906, 907, 912, 919, 926, 927, 928, 936, 937, 01563 938, 946, 952, 957, 958, 959, 969, 970, 977, 978, 01564 979, 988, 989, 995, 996, 997, 1005, 1006, 1007, 1017, 01565 1019, 1021, 1023, 1025, 1027, 1029, 1031, 1034, 1036, 1038, 01566 1040, 1046, 1048, 1051, 1053, 1055, 1057, 1061, 1063, 1067, 01567 1069, 1074, 1081, 1085, 1091, 1094, 1099, 1101, 1105, 1112, 01568 1121, 1126, 1133, 1138, 1141, 1148, 1151, 1156, 1163, 1166, 01569 1171, 1174, 1179, 1181, 1183, 1185, 1189, 1191, 1196, 1198, 01570 1203, 1205, 1209, 1211, 1213, 1218, 1220, 1224, 1228, 1229, 01571 1235, 1238, 1243, 1249, 1255, 1258, 1263, 1268, 1272, 1276, 01572 1280, 1283, 1285, 1290, 1291, 1297, 1298, 1304, 1310, 1312, 01573 1314, 1321, 1323, 1325, 1327, 1329, 1332, 1334, 1337, 1339, 01574 1341, 1343, 1345, 1347, 1349, 1351, 1354, 1358, 1360, 1363, 01575 1365, 1366, 1371, 1373, 1376, 1379, 1383, 1386, 1390, 1392, 01576 1393, 1395, 1397, 1400, 1402, 1405, 1407, 1410, 1412, 1413, 01577 1418, 1421, 1425, 1427, 1432, 1435, 1437, 1439, 1441, 1443, 01578 1445, 1448, 1451, 1455, 1457, 1459, 1462, 1465, 1467, 1469, 01579 1471, 1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, 1489, 01580 1491, 1493, 1495, 1497, 1498, 1503, 1506, 1510, 1513, 1520, 01581 1529, 1534, 1541, 1546, 1553, 1556, 1561, 1568, 1571, 1576, 01582 1579, 1584, 1586, 1587, 1589, 1591, 1593, 1595, 1597, 1599, 01583 1601, 1605, 1607, 1611, 1614, 1617, 1620, 1622, 1626, 1628, 01584 1632, 1634, 1636, 1639, 1641, 1643, 1645, 1648, 1651, 1653, 01585 1655, 1656, 1661, 1663, 1666, 1668, 1672, 1676, 1679, 1681, 01586 1683, 1685, 1687, 1689, 1691, 1693, 1695, 1697, 1699, 1701, 01587 1703, 1704, 1706, 1707, 1709, 1712, 1715, 1716, 1718, 1720, 01588 1722, 1724, 1725, 1729, 1731, 1734 01589 }; 01590 01591 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 01592 static const yytype_int16 yyrhs[] = 01593 { 01594 155, 0, -1, -1, 156, 157, -1, 158, 304, -1, 01595 313, -1, 159, -1, 158, 312, 159, -1, 1, 159, 01596 -1, 164, -1, -1, 46, 160, 143, 157, 144, -1, 01597 162, 249, 227, 252, -1, 163, 304, -1, 313, -1, 01598 164, -1, 163, 312, 164, -1, 1, 164, -1, -1, 01599 45, 185, 165, 185, -1, 12, 186, -1, 164, 40, 01600 168, -1, 164, 41, 168, -1, 164, 42, 168, -1, 01601 164, 43, 168, -1, 164, 44, 164, -1, 47, 143, 01602 162, 144, -1, 166, -1, 174, 116, 169, -1, 274, 01603 90, 169, -1, 223, 145, 195, 307, 90, 169, -1, 01604 223, 146, 51, 90, 169, -1, 223, 146, 55, 90, 01605 169, -1, 223, 88, 55, 90, 169, -1, 223, 88, 01606 51, 90, 169, -1, 276, 90, 169, -1, 181, 116, 01607 202, -1, 174, 116, 191, -1, 174, 116, 202, -1, 01608 167, -1, 181, 116, 169, -1, 181, 116, 166, -1, 01609 169, -1, 167, 37, 167, -1, 167, 38, 167, -1, 01610 39, 305, 167, -1, 130, 169, -1, 190, -1, 167, 01611 -1, 173, -1, 170, -1, 242, -1, 242, 303, 301, 01612 197, -1, -1, 97, 172, 233, 162, 144, -1, 300, 01613 197, -1, 300, 197, 171, -1, 223, 146, 301, 197, 01614 -1, 223, 146, 301, 197, 171, -1, 223, 88, 301, 01615 197, -1, 223, 88, 301, 197, 171, -1, 32, 197, 01616 -1, 31, 197, -1, 30, 196, -1, 21, 196, -1, 01617 22, 196, -1, 176, -1, 92, 175, 306, -1, 176, 01618 -1, 92, 175, 306, -1, 178, -1, 178, 177, -1, 01619 178, 98, 180, -1, 178, 98, 180, 147, 179, -1, 01620 178, 98, -1, 178, 98, 147, 179, -1, 98, 180, 01621 -1, 98, 180, 147, 179, -1, 98, -1, 98, 147, 01622 179, -1, 180, -1, 92, 175, 306, -1, 177, 147, 01623 -1, 178, 177, 147, -1, 177, -1, 178, 177, -1, 01624 273, -1, 223, 145, 195, 307, -1, 223, 146, 51, 01625 -1, 223, 88, 51, -1, 223, 146, 55, -1, 223, 01626 88, 55, -1, 89, 55, -1, 276, -1, 273, -1, 01627 223, 145, 195, 307, -1, 223, 146, 51, -1, 223, 01628 88, 51, -1, 223, 146, 55, -1, 223, 88, 55, 01629 -1, 89, 55, -1, 276, -1, 51, -1, 55, -1, 01630 89, 182, -1, 182, -1, 223, 88, 182, -1, 51, 01631 -1, 55, -1, 52, -1, 188, -1, 189, -1, 184, 01632 -1, 269, -1, 185, -1, -1, 186, 147, 187, 185, 01633 -1, 121, -1, 122, -1, 123, -1, 72, -1, 73, 01634 -1, 74, -1, 80, -1, 81, -1, 119, -1, 76, 01635 -1, 120, -1, 77, -1, 75, -1, 86, -1, 87, 01636 -1, 124, -1, 125, -1, 126, -1, 98, -1, 127, 01637 -1, 128, -1, 71, -1, 130, -1, 131, -1, 69, 01638 -1, 70, -1, 84, -1, 85, -1, 148, -1, 48, 01639 -1, 49, -1, 50, -1, 46, -1, 47, -1, 45, 01640 -1, 37, -1, 6, -1, 21, -1, 19, -1, 3, 01641 -1, 5, -1, 26, -1, 18, -1, 17, -1, 15, 01642 -1, 14, -1, 36, -1, 11, -1, 25, -1, 4, 01643 -1, 22, -1, 34, -1, 39, -1, 38, -1, 23, 01644 -1, 13, -1, 24, -1, 30, -1, 33, -1, 32, 01645 -1, 16, -1, 35, -1, 12, -1, 20, -1, 31, 01646 -1, 7, -1, 8, -1, 9, -1, 10, -1, 181, 01647 116, 190, -1, 181, 116, 190, 44, 190, -1, 274, 01648 90, 190, -1, 274, 90, 190, 44, 190, -1, 223, 01649 145, 195, 307, 90, 190, -1, 223, 146, 51, 90, 01650 190, -1, 223, 146, 55, 90, 190, -1, 223, 88, 01651 51, 90, 190, -1, 223, 88, 55, 90, 190, -1, 01652 89, 55, 90, 190, -1, 276, 90, 190, -1, 190, 01653 82, 190, -1, 190, 83, 190, -1, 190, 124, 190, 01654 -1, 190, 125, 190, -1, 190, 126, 190, -1, 190, 01655 127, 190, -1, 190, 128, 190, -1, 190, 71, 190, 01656 -1, 129, 58, 71, 190, -1, 129, 59, 71, 190, 01657 -1, 69, 190, -1, 70, 190, -1, 190, 121, 190, 01658 -1, 190, 122, 190, -1, 190, 123, 190, -1, 190, 01659 72, 190, -1, 190, 119, 190, -1, 190, 76, 190, 01660 -1, 190, 120, 190, -1, 190, 77, 190, -1, 190, 01661 73, 190, -1, 190, 74, 190, -1, 190, 75, 190, 01662 -1, 190, 80, 190, -1, 190, 81, 190, -1, 130, 01663 190, -1, 131, 190, -1, 190, 86, 190, -1, 190, 01664 87, 190, -1, 190, 78, 190, -1, 190, 79, 190, 01665 -1, 190, 117, 190, 305, 118, 190, -1, 203, -1, 01666 190, -1, 313, -1, 201, 308, -1, 201, 147, 298, 01667 308, -1, 298, 308, -1, 149, 195, 306, -1, 313, 01668 -1, 193, -1, 313, -1, 196, -1, 201, 147, -1, 01669 201, 147, 298, 147, -1, 298, 147, -1, 173, -1, 01670 201, 200, -1, 298, 200, -1, 201, 147, 298, 200, 01671 -1, 199, -1, -1, 198, 196, -1, 99, 191, -1, 01672 147, 199, -1, 313, -1, 191, -1, 98, 191, -1, 01673 201, 147, 191, -1, 201, 147, 98, 191, -1, 201, 01674 147, 262, 191, -1, 201, 147, 262, 98, 191, -1, 01675 201, 147, 191, -1, 201, 147, 98, 191, -1, 98, 01676 191, -1, 253, -1, 254, -1, 258, -1, 259, -1, 01677 260, -1, 275, -1, 276, -1, 52, -1, -1, 6, 01678 204, 161, 15, -1, -1, -1, 93, 205, 167, 206, 01679 306, -1, -1, 93, 207, 306, -1, 92, 162, 150, 01680 -1, 223, 88, 55, -1, 89, 55, -1, 95, 192, 01681 151, -1, 96, 297, 144, -1, 30, -1, 31, 149, 01682 196, 306, -1, 31, 149, 306, -1, 31, -1, 39, 01683 149, 167, 306, -1, 39, 149, 306, -1, 300, 244, 01684 -1, 243, -1, 243, 244, -1, -1, 100, 208, 238, 01685 239, -1, 7, 168, 224, 162, 226, 15, -1, 8, 01686 168, 224, 162, 227, 15, -1, -1, -1, 9, 209, 01687 168, 225, 210, 162, 15, -1, -1, -1, 10, 211, 01688 168, 225, 212, 162, 15, -1, 19, 168, 304, 247, 01689 15, -1, 19, 304, 247, 15, -1, -1, -1, 11, 01690 228, 25, 213, 168, 225, 214, 162, 15, -1, -1, 01691 3, 183, 277, 215, 161, 15, -1, -1, -1, 3, 01692 86, 167, 216, 309, 217, 161, 15, -1, -1, 4, 01693 183, 218, 161, 15, -1, -1, -1, 5, 184, 219, 01694 220, 279, 161, 15, -1, -1, -1, 5, 295, 303, 01695 221, 184, 222, 279, 161, 15, -1, 21, -1, 22, 01696 -1, 23, -1, 24, -1, 203, -1, 309, -1, 16, 01697 -1, 309, 16, -1, 309, -1, 27, -1, 227, -1, 01698 17, 168, 224, 162, 226, -1, 313, -1, 18, 162, 01699 -1, 181, -1, 174, -1, 282, -1, 92, 231, 306, 01700 -1, 229, -1, 230, 147, 229, -1, 230, -1, 230, 01701 147, 98, 282, -1, 230, 147, 98, 282, 147, 230, 01702 -1, 230, 147, 98, -1, 230, 147, 98, 147, 230, 01703 -1, 98, 282, -1, 98, 282, 147, 230, -1, 98, 01704 -1, 98, 147, 230, -1, 284, 147, 288, 147, 291, 01705 294, -1, 284, 147, 288, 147, 291, 147, 284, 294, 01706 -1, 284, 147, 288, 294, -1, 284, 147, 288, 147, 01707 284, 294, -1, 284, 147, 291, 294, -1, 284, 147, 01708 -1, 284, 147, 291, 147, 284, 294, -1, 284, 294, 01709 -1, 288, 147, 291, 294, -1, 288, 147, 291, 147, 01710 284, 294, -1, 288, 294, -1, 288, 147, 284, 294, 01711 -1, 291, 294, -1, 291, 147, 284, 294, -1, 293, 01712 -1, 313, -1, 234, -1, 121, 235, 121, -1, 79, 01713 -1, 121, 232, 235, 121, -1, 305, -1, 305, 152, 01714 236, 305, -1, 237, -1, 236, 147, 237, -1, 51, 01715 -1, 281, -1, 149, 280, 235, 150, -1, 280, -1, 01716 108, 162, 144, -1, 29, 162, 15, -1, -1, 28, 01717 241, 233, 162, 15, -1, 173, 240, -1, 242, 303, 01718 301, 194, -1, 242, 303, 301, 194, 244, -1, 242, 01719 303, 301, 197, 240, -1, 300, 193, -1, 223, 146, 01720 301, 194, -1, 223, 88, 301, 193, -1, 223, 88, 01721 302, -1, 223, 146, 193, -1, 223, 88, 193, -1, 01722 32, 193, -1, 32, -1, 223, 145, 195, 307, -1, 01723 -1, 143, 245, 233, 162, 144, -1, -1, 26, 246, 01724 233, 162, 15, -1, 20, 201, 224, 162, 248, -1, 01725 227, -1, 247, -1, 13, 250, 251, 224, 162, 249, 01726 -1, 313, -1, 191, -1, 202, -1, 313, -1, 91, 01727 181, -1, 313, -1, 14, 162, -1, 313, -1, 272, 01728 -1, 268, -1, 267, -1, 271, -1, 60, -1, 63, 01729 -1, 105, 63, -1, 105, 255, 63, -1, 256, -1, 01730 255, 256, -1, 65, -1, -1, 64, 257, 162, 144, 01731 -1, 111, -1, 112, 262, -1, 106, 61, -1, 106, 01732 255, 61, -1, 102, 62, -1, 102, 255, 62, -1, 01733 109, -1, -1, 262, -1, 263, -1, 262, 263, -1, 01734 110, -1, 264, 110, -1, 265, -1, 264, 265, -1, 01735 114, -1, -1, 113, 266, 162, 144, -1, 103, 63, 01736 -1, 103, 255, 63, -1, 269, -1, 101, 105, 256, 01737 63, -1, 101, 270, -1, 184, -1, 54, -1, 53, 01738 -1, 56, -1, 63, -1, 105, 63, -1, 104, 63, 01739 -1, 104, 255, 63, -1, 58, -1, 59, -1, 129, 01740 58, -1, 129, 59, -1, 51, -1, 54, -1, 53, 01741 -1, 56, -1, 55, -1, 273, -1, 273, -1, 34, 01742 -1, 33, -1, 35, -1, 36, -1, 49, -1, 48, 01743 -1, 66, -1, 67, -1, 309, -1, -1, 120, 278, 01744 168, 309, -1, 1, 309, -1, 149, 280, 306, -1, 01745 280, 309, -1, 284, 147, 289, 147, 291, 294, -1, 01746 284, 147, 289, 147, 291, 147, 284, 294, -1, 284, 01747 147, 289, 294, -1, 284, 147, 289, 147, 284, 294, 01748 -1, 284, 147, 291, 294, -1, 284, 147, 291, 147, 01749 284, 294, -1, 284, 294, -1, 289, 147, 291, 294, 01750 -1, 289, 147, 291, 147, 284, 294, -1, 289, 294, 01751 -1, 289, 147, 284, 294, -1, 291, 294, -1, 291, 01752 147, 284, 294, -1, 293, -1, -1, 55, -1, 54, 01753 -1, 53, -1, 56, -1, 281, -1, 51, -1, 282, 01754 -1, 92, 231, 306, -1, 283, -1, 284, 147, 283, 01755 -1, 51, 116, -1, 285, 191, -1, 285, 223, -1, 01756 287, -1, 288, 147, 287, -1, 286, -1, 289, 147, 01757 286, -1, 126, -1, 98, -1, 290, 51, -1, 290, 01758 -1, 123, -1, 99, -1, 292, 51, -1, 147, 293, 01759 -1, 313, -1, 275, -1, -1, 149, 296, 167, 306, 01760 -1, 313, -1, 298, 308, -1, 299, -1, 298, 147, 01761 299, -1, 191, 91, 191, -1, 57, 191, -1, 51, 01762 -1, 55, -1, 52, -1, 51, -1, 55, -1, 52, 01763 -1, 188, -1, 51, -1, 52, -1, 188, -1, 146, 01764 -1, 88, -1, -1, 312, -1, -1, 310, -1, 305, 01765 150, -1, 305, 151, -1, -1, 310, -1, 147, -1, 01766 152, -1, 310, -1, -1, 153, 311, 261, -1, 309, 01767 -1, 312, 152, -1, -1 01768 }; 01769 01770 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 01771 static const yytype_uint16 yyrline[] = 01772 { 01773 0, 1166, 1166, 1166, 1177, 1183, 1187, 1192, 1196, 1202, 01774 1204, 1203, 1215, 1242, 1248, 1252, 1257, 1261, 1267, 1267, 01775 1271, 1275, 1279, 1283, 1287, 1291, 1295, 1300, 1301, 1305, 01776 1309, 1313, 1317, 1321, 1326, 1330, 1335, 1339, 1343, 1347, 01777 1350, 1354, 1361, 1362, 1366, 1370, 1374, 1378, 1381, 1388, 01778 1389, 1392, 1393, 1397, 1396, 1409, 1413, 1418, 1422, 1427, 01779 1431, 1436, 1440, 1444, 1448, 1452, 1458, 1462, 1468, 1469, 01780 1475, 1479, 1483, 1487, 1491, 1495, 1499, 1503, 1507, 1511, 01781 1517, 1518, 1524, 1528, 1534, 1538, 1544, 1548, 1552, 1556, 01782 1560, 1564, 1570, 1576, 1583, 1587, 1591, 1595, 1599, 1603, 01783 1609, 1615, 1622, 1626, 1629, 1633, 1637, 1643, 1644, 1645, 01784 1646, 1651, 1658, 1659, 1662, 1666, 1666, 1672, 1673, 1674, 01785 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 01786 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 01787 1695, 1696, 1697, 1698, 1699, 1700, 1703, 1703, 1703, 1704, 01788 1704, 1705, 1705, 1705, 1706, 1706, 1706, 1706, 1707, 1707, 01789 1707, 1708, 1708, 1708, 1709, 1709, 1709, 1709, 1710, 1710, 01790 1710, 1710, 1711, 1711, 1711, 1711, 1712, 1712, 1712, 1712, 01791 1713, 1713, 1713, 1713, 1714, 1714, 1717, 1721, 1725, 1729, 01792 1733, 1737, 1741, 1745, 1749, 1754, 1759, 1764, 1768, 1772, 01793 1776, 1780, 1784, 1788, 1792, 1796, 1800, 1804, 1808, 1812, 01794 1816, 1820, 1824, 1828, 1832, 1836, 1840, 1844, 1848, 1852, 01795 1856, 1860, 1864, 1868, 1872, 1876, 1880, 1884, 1888, 1892, 01796 1898, 1905, 1906, 1911, 1915, 1922, 1928, 1929, 1932, 1933, 01797 1934, 1939, 1944, 1951, 1956, 1961, 1966, 1971, 1978, 1978, 01798 1989, 1995, 1999, 2005, 2010, 2015, 2019, 2023, 2027, 2033, 01799 2037, 2041, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 01800 2059, 2058, 2070, 2074, 2069, 2079, 2079, 2083, 2087, 2091, 01801 2095, 2100, 2105, 2109, 2113, 2117, 2121, 2125, 2129, 2133, 01802 2134, 2140, 2139, 2152, 2160, 2168, 2168, 2168, 2175, 2175, 01803 2175, 2182, 2188, 2193, 2195, 2192, 2204, 2202, 2218, 2223, 01804 2216, 2238, 2236, 2251, 2255, 2250, 2270, 2276, 2269, 2291, 01805 2295, 2299, 2303, 2309, 2316, 2317, 2318, 2321, 2322, 2325, 01806 2326, 2334, 2335, 2341, 2345, 2348, 2352, 2358, 2362, 2368, 01807 2372, 2376, 2380, 2384, 2388, 2392, 2396, 2400, 2406, 2410, 01808 2414, 2418, 2422, 2426, 2430, 2434, 2438, 2442, 2446, 2450, 01809 2454, 2458, 2462, 2468, 2469, 2476, 2480, 2484, 2491, 2495, 01810 2501, 2502, 2505, 2510, 2513, 2517, 2523, 2527, 2534, 2533, 01811 2546, 2556, 2560, 2565, 2572, 2576, 2580, 2584, 2588, 2592, 01812 2596, 2600, 2604, 2611, 2610, 2623, 2622, 2636, 2644, 2653, 01813 2656, 2663, 2666, 2670, 2671, 2674, 2678, 2681, 2685, 2688, 01814 2689, 2690, 2691, 2694, 2695, 2696, 2700, 2706, 2707, 2713, 01815 2718, 2717, 2728, 2732, 2738, 2742, 2748, 2752, 2758, 2761, 01816 2762, 2765, 2766, 2769, 2775, 2781, 2782, 2785, 2792, 2791, 01817 2805, 2809, 2816, 2820, 2827, 2834, 2835, 2836, 2837, 2838, 01818 2842, 2848, 2852, 2858, 2859, 2860, 2864, 2870, 2874, 2878, 01819 2882, 2886, 2892, 2898, 2902, 2906, 2910, 2914, 2918, 2925, 01820 2934, 2935, 2938, 2943, 2942, 2951, 2958, 2964, 2970, 2974, 01821 2978, 2982, 2986, 2990, 2994, 2998, 3002, 3006, 3010, 3014, 01822 3018, 3022, 3027, 3033, 3038, 3043, 3048, 3055, 3059, 3066, 01823 3070, 3076, 3080, 3086, 3093, 3099, 3105, 3109, 3115, 3119, 01824 3125, 3126, 3129, 3134, 3141, 3142, 3145, 3152, 3156, 3163, 01825 3168, 3168, 3193, 3194, 3200, 3205, 3211, 3215, 3221, 3222, 01826 3223, 3226, 3227, 3228, 3229, 3232, 3233, 3234, 3237, 3238, 01827 3241, 3242, 3245, 3246, 3249, 3252, 3255, 3256, 3257, 3260, 01828 3261, 3265, 3264, 3271, 3272, 3276 01829 }; 01830 #endif 01831 01832 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE 01833 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. 01834 First, the terminals, then, starting at YYNTOKENS, nonterminals. */ 01835 static const char *const yytname[] = 01836 { 01837 "$end", "error", "$undefined", "keyword_class", "keyword_module", 01838 "keyword_def", "keyword_begin", "keyword_if", "keyword_unless", 01839 "keyword_while", "keyword_until", "keyword_for", "keyword_undef", 01840 "keyword_rescue", "keyword_ensure", "keyword_end", "keyword_then", 01841 "keyword_elsif", "keyword_else", "keyword_case", "keyword_when", 01842 "keyword_break", "keyword_next", "keyword_redo", "keyword_retry", 01843 "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block", 01844 "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super", 01845 "keyword_self", "keyword_nil", "keyword_true", "keyword_false", 01846 "keyword_and", "keyword_or", "keyword_not", "modifier_if", 01847 "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue", 01848 "keyword_alias", "keyword_BEGIN", "keyword_END", "keyword__LINE__", 01849 "keyword__FILE__", "keyword__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR", 01850 "tIVAR", "tCONSTANT", "tCVAR", "tLABEL", "tINTEGER", "tFLOAT", "tCHAR", 01851 "tXSTRING", "tREGEXP", "tSTRING", "tSTRING_PART", "tSTRING_MID", 01852 "tNTH_REF", "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW", 01853 "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", 01854 "tMATCH", "tNMATCH", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", 01855 "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", 01856 "tLPAREN_ARG", "tRPAREN", "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", 01857 "tAMPER", "tLAMBDA", "tSYMBEG", "tREGEXP_BEG", "tWORDS_BEG", 01858 "tSYMBOLS_BEG", "tSTRING_BEG", "tXSTRING_BEG", "tSTRING_DVAR", "tLAMBEG", 01859 "tHEREDOC_BEG", "tHEREDOC_END", "tLITERAL_DELIM", "tHD_LITERAL_DELIM", 01860 "tHD_STRING_PART", "tHD_STRING_MID", "tLOWEST", "'='", "'?'", "':'", 01861 "'>'", "'<'", "'|'", "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", 01862 "tUMINUS_NUM", "'!'", "'~'", "idNULL", "idRespond_to", "idIFUNC", 01863 "idCFUNC", "id_core_set_method_alias", "id_core_set_variable_alias", 01864 "id_core_undef_method", "id_core_define_method", 01865 "id_core_define_singleton_method", "id_core_set_postexe", "tLAST_TOKEN", 01866 "'{'", "'}'", "'['", "'.'", "','", "'`'", "'('", "')'", "']'", "';'", 01867 "'\\n'", "$accept", "program", "$@1", "top_compstmt", "top_stmts", 01868 "top_stmt", "@2", "bodystmt", "compstmt", "stmts", "stmt", "$@3", 01869 "command_asgn", "expr", "expr_value", "command_call", "block_command", 01870 "cmd_brace_block", "$@4", "command", "mlhs", "mlhs_inner", "mlhs_basic", 01871 "mlhs_item", "mlhs_list", "mlhs_post", "mlhs_node", "lhs", "cname", 01872 "cpath", "fname", "fsym", "undef_list", "$@5", "op", "reswords", "arg", 01873 "arg_value", "aref_args", "paren_args", "opt_paren_args", 01874 "opt_call_args", "call_args", "command_args", "@6", "block_arg", 01875 "opt_block_arg", "args", "mrhs", "primary", "@7", "@8", "$@9", "$@10", 01876 "@11", "$@12", "$@13", "$@14", "$@15", "$@16", "$@17", "@18", "@19", 01877 "@20", "@21", "@22", "@23", "@24", "@25", "primary_value", "then", "do", 01878 "if_tail", "opt_else", "for_var", "f_marg", "f_marg_list", "f_margs", 01879 "block_param", "opt_block_param", "block_param_def", "opt_bv_decl", 01880 "bv_decls", "bvar", "f_larglist", "lambda_body", "do_block", "$@26", 01881 "block_call", "method_call", "brace_block", "@27", "@28", "case_body", 01882 "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal", 01883 "string", "string_rep", "string_interp", "@29", "xstring", "regexp", 01884 "heredoc", "opt_heredoc_bodies", "heredoc_bodies", "heredoc_body", 01885 "heredoc_string_rep", "heredoc_string_interp", "@30", "words", "symbol", 01886 "basic_symbol", "sym", "symbols", "numeric", "variable", "var_lhs", 01887 "var_ref", "backref", "superclass", "$@31", "f_arglist", "f_args", 01888 "f_bad_arg", "f_norm_arg", "f_arg_item", "f_arg", "f_opt_asgn", "f_opt", 01889 "f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark", 01890 "f_rest_arg", "blkarg_mark", "f_block_arg", "opt_f_block_arg", 01891 "singleton", "$@32", "assoc_list", "assocs", "assoc", "operation", 01892 "operation2", "operation3", "dot_or_colon", "opt_terms", "opt_nl", 01893 "rparen", "rbracket", "trailer", "term", "nl", "$@33", "terms", "none", 0 01894 }; 01895 #endif 01896 01897 # ifdef YYPRINT 01898 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to 01899 token YYLEX-NUM. */ 01900 static const yytype_uint16 yytoknum[] = 01901 { 01902 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 01903 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 01904 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 01905 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 01906 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 01907 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 01908 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 01909 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 01910 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 01911 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 01912 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 01913 365, 366, 367, 368, 369, 370, 61, 63, 58, 62, 01914 60, 124, 94, 38, 43, 45, 42, 47, 37, 371, 01915 33, 126, 372, 373, 374, 375, 376, 377, 378, 379, 01916 380, 381, 382, 123, 125, 91, 46, 44, 96, 40, 01917 41, 93, 59, 10 01918 }; 01919 # endif 01920 01921 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 01922 static const yytype_uint16 yyr1[] = 01923 { 01924 0, 154, 156, 155, 157, 158, 158, 158, 158, 159, 01925 160, 159, 161, 162, 163, 163, 163, 163, 165, 164, 01926 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 01927 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 01928 166, 166, 167, 167, 167, 167, 167, 167, 168, 169, 01929 169, 170, 170, 172, 171, 173, 173, 173, 173, 173, 01930 173, 173, 173, 173, 173, 173, 174, 174, 175, 175, 01931 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 01932 177, 177, 178, 178, 179, 179, 180, 180, 180, 180, 01933 180, 180, 180, 180, 181, 181, 181, 181, 181, 181, 01934 181, 181, 182, 182, 183, 183, 183, 184, 184, 184, 01935 184, 184, 185, 185, 186, 187, 186, 188, 188, 188, 01936 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 01937 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 01938 188, 188, 188, 188, 188, 188, 189, 189, 189, 189, 01939 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 01940 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 01941 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 01942 189, 189, 189, 189, 189, 189, 190, 190, 190, 190, 01943 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 01944 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 01945 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 01946 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 01947 191, 192, 192, 192, 192, 193, 194, 194, 195, 195, 01948 195, 195, 195, 196, 196, 196, 196, 196, 198, 197, 01949 199, 200, 200, 201, 201, 201, 201, 201, 201, 202, 01950 202, 202, 203, 203, 203, 203, 203, 203, 203, 203, 01951 204, 203, 205, 206, 203, 207, 203, 203, 203, 203, 01952 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 01953 203, 208, 203, 203, 203, 209, 210, 203, 211, 212, 01954 203, 203, 203, 213, 214, 203, 215, 203, 216, 217, 01955 203, 218, 203, 219, 220, 203, 221, 222, 203, 203, 01956 203, 203, 203, 223, 224, 224, 224, 225, 225, 226, 01957 226, 227, 227, 228, 228, 229, 229, 230, 230, 231, 01958 231, 231, 231, 231, 231, 231, 231, 231, 232, 232, 01959 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 01960 232, 232, 232, 233, 233, 234, 234, 234, 235, 235, 01961 236, 236, 237, 237, 238, 238, 239, 239, 241, 240, 01962 242, 242, 242, 242, 243, 243, 243, 243, 243, 243, 01963 243, 243, 243, 245, 244, 246, 244, 247, 248, 248, 01964 249, 249, 250, 250, 250, 251, 251, 252, 252, 253, 01965 253, 253, 253, 254, 254, 254, 254, 255, 255, 256, 01966 257, 256, 256, 256, 258, 258, 259, 259, 260, 261, 01967 261, 262, 262, 263, 263, 264, 264, 265, 266, 265, 01968 267, 267, 268, 268, 269, 270, 270, 270, 270, 270, 01969 270, 271, 271, 272, 272, 272, 272, 273, 273, 273, 01970 273, 273, 274, 275, 275, 275, 275, 275, 275, 275, 01971 276, 276, 277, 278, 277, 277, 279, 279, 280, 280, 01972 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 01973 280, 280, 280, 281, 281, 281, 281, 282, 282, 283, 01974 283, 284, 284, 285, 286, 287, 288, 288, 289, 289, 01975 290, 290, 291, 291, 292, 292, 293, 294, 294, 295, 01976 296, 295, 297, 297, 298, 298, 299, 299, 300, 300, 01977 300, 301, 301, 301, 301, 302, 302, 302, 303, 303, 01978 304, 304, 305, 305, 306, 307, 308, 308, 308, 309, 01979 309, 311, 310, 312, 312, 313 01980 }; 01981 01982 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ 01983 static const yytype_uint8 yyr2[] = 01984 { 01985 0, 2, 0, 2, 2, 1, 1, 3, 2, 1, 01986 0, 5, 4, 2, 1, 1, 3, 2, 0, 4, 01987 2, 3, 3, 3, 3, 3, 4, 1, 3, 3, 01988 6, 5, 5, 5, 5, 3, 3, 3, 3, 1, 01989 3, 3, 1, 3, 3, 3, 2, 1, 1, 1, 01990 1, 1, 4, 0, 5, 2, 3, 4, 5, 4, 01991 5, 2, 2, 2, 2, 2, 1, 3, 1, 3, 01992 1, 2, 3, 5, 2, 4, 2, 4, 1, 3, 01993 1, 3, 2, 3, 1, 2, 1, 4, 3, 3, 01994 3, 3, 2, 1, 1, 4, 3, 3, 3, 3, 01995 2, 1, 1, 1, 2, 1, 3, 1, 1, 1, 01996 1, 1, 1, 1, 1, 0, 4, 1, 1, 1, 01997 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 01998 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 01999 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 02000 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 02001 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 02002 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 02003 1, 1, 1, 1, 1, 1, 3, 5, 3, 5, 02004 6, 5, 5, 5, 5, 4, 3, 3, 3, 3, 02005 3, 3, 3, 3, 3, 4, 4, 2, 2, 3, 02006 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 02007 3, 3, 2, 2, 3, 3, 3, 3, 6, 1, 02008 1, 1, 2, 4, 2, 3, 1, 1, 1, 1, 02009 2, 4, 2, 1, 2, 2, 4, 1, 0, 2, 02010 2, 2, 1, 1, 2, 3, 4, 4, 5, 3, 02011 4, 2, 1, 1, 1, 1, 1, 1, 1, 1, 02012 0, 4, 0, 0, 5, 0, 3, 3, 3, 2, 02013 3, 3, 1, 4, 3, 1, 4, 3, 2, 1, 02014 2, 0, 4, 6, 6, 0, 0, 7, 0, 0, 02015 7, 5, 4, 0, 0, 9, 0, 6, 0, 0, 02016 8, 0, 5, 0, 0, 7, 0, 0, 9, 1, 02017 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 02018 5, 1, 2, 1, 1, 1, 3, 1, 3, 1, 02019 4, 6, 3, 5, 2, 4, 1, 3, 6, 8, 02020 4, 6, 4, 2, 6, 2, 4, 6, 2, 4, 02021 2, 4, 1, 1, 1, 3, 1, 4, 1, 4, 02022 1, 3, 1, 1, 4, 1, 3, 3, 0, 5, 02023 2, 4, 5, 5, 2, 4, 4, 3, 3, 3, 02024 2, 1, 4, 0, 5, 0, 5, 5, 1, 1, 02025 6, 1, 1, 1, 1, 2, 1, 2, 1, 1, 02026 1, 1, 1, 1, 1, 2, 3, 1, 2, 1, 02027 0, 4, 1, 2, 2, 3, 2, 3, 1, 0, 02028 1, 1, 2, 1, 2, 1, 2, 1, 0, 4, 02029 2, 3, 1, 4, 2, 1, 1, 1, 1, 1, 02030 2, 2, 3, 1, 1, 2, 2, 1, 1, 1, 02031 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 02032 1, 1, 1, 0, 4, 2, 3, 2, 6, 8, 02033 4, 6, 4, 6, 2, 4, 6, 2, 4, 2, 02034 4, 1, 0, 1, 1, 1, 1, 1, 1, 1, 02035 3, 1, 3, 2, 2, 2, 1, 3, 1, 3, 02036 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 02037 0, 4, 1, 2, 1, 3, 3, 2, 1, 1, 02038 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 02039 0, 1, 0, 1, 2, 2, 0, 1, 1, 1, 02040 1, 0, 3, 1, 2, 0 02041 }; 02042 02043 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state 02044 STATE-NUM when YYTABLE doesn't specify something else to do. Zero 02045 means the default is an error. */ 02046 static const yytype_uint16 yydefact[] = 02047 { 02048 2, 0, 0, 1, 0, 0, 0, 0, 270, 0, 02049 0, 295, 298, 0, 0, 540, 319, 320, 321, 322, 02050 282, 248, 248, 465, 464, 466, 467, 542, 0, 10, 02051 0, 469, 468, 457, 530, 459, 458, 461, 460, 453, 02052 454, 413, 414, 470, 471, 0, 0, 0, 0, 272, 02053 555, 555, 78, 291, 0, 0, 0, 0, 0, 0, 02054 428, 0, 0, 0, 3, 540, 6, 9, 27, 39, 02055 42, 50, 49, 0, 66, 0, 70, 80, 0, 47, 02056 229, 0, 51, 289, 262, 263, 264, 265, 266, 411, 02057 410, 442, 412, 409, 463, 0, 267, 268, 248, 5, 02058 8, 319, 320, 282, 285, 391, 0, 102, 103, 0, 02059 0, 0, 0, 105, 0, 323, 0, 463, 268, 0, 02060 311, 156, 166, 157, 153, 182, 183, 184, 185, 164, 02061 179, 172, 162, 161, 177, 160, 159, 155, 180, 154, 02062 167, 171, 173, 165, 158, 174, 181, 176, 175, 168, 02063 178, 163, 152, 170, 169, 151, 149, 150, 146, 147, 02064 148, 107, 109, 108, 141, 142, 138, 120, 121, 122, 02065 129, 126, 128, 123, 124, 143, 144, 130, 131, 135, 02066 125, 127, 117, 118, 119, 132, 133, 134, 136, 137, 02067 139, 140, 145, 520, 313, 110, 111, 519, 0, 0, 02068 0, 48, 0, 0, 0, 463, 0, 268, 0, 0, 02069 0, 0, 334, 333, 0, 0, 463, 268, 175, 168, 02070 178, 163, 146, 147, 107, 108, 0, 112, 114, 20, 02071 113, 549, 551, 540, 0, 553, 550, 541, 0, 0, 02072 0, 0, 243, 230, 253, 64, 247, 555, 555, 524, 02073 65, 63, 542, 62, 0, 555, 390, 61, 542, 0, 02074 543, 18, 0, 0, 207, 0, 208, 279, 0, 0, 02075 0, 540, 15, 542, 68, 14, 0, 542, 0, 546, 02076 546, 231, 0, 0, 546, 522, 0, 0, 76, 0, 02077 86, 93, 492, 447, 446, 448, 449, 0, 445, 444, 02078 426, 420, 419, 422, 0, 0, 417, 440, 0, 451, 02079 0, 415, 0, 424, 0, 455, 456, 46, 222, 223, 02080 4, 541, 0, 0, 0, 0, 0, 0, 0, 378, 02081 380, 0, 82, 0, 74, 71, 0, 0, 0, 0, 02082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02084 0, 0, 0, 0, 555, 0, 539, 538, 0, 395, 02085 393, 290, 0, 0, 384, 55, 288, 308, 102, 103, 02086 104, 455, 456, 0, 473, 306, 472, 0, 555, 0, 02087 0, 0, 314, 316, 0, 555, 279, 325, 0, 324, 02088 0, 0, 555, 0, 0, 0, 0, 0, 0, 279, 02089 0, 555, 0, 303, 0, 115, 429, 0, 0, 0, 02090 554, 527, 254, 250, 0, 0, 244, 252, 0, 245, 02091 542, 0, 284, 249, 542, 239, 555, 555, 238, 542, 02092 287, 45, 0, 0, 0, 0, 0, 0, 17, 542, 02093 277, 13, 541, 67, 273, 276, 280, 548, 232, 547, 02094 548, 234, 281, 523, 92, 84, 0, 79, 0, 0, 02095 555, 0, 498, 495, 494, 493, 496, 0, 511, 515, 02096 514, 510, 492, 0, 375, 497, 499, 501, 555, 0, 02097 508, 555, 513, 555, 0, 491, 450, 0, 0, 433, 02098 438, 437, 423, 431, 0, 435, 427, 418, 441, 452, 02099 416, 425, 0, 0, 7, 21, 22, 23, 24, 25, 02100 43, 44, 555, 0, 28, 37, 0, 38, 542, 0, 02101 72, 83, 41, 40, 0, 186, 253, 36, 204, 212, 02102 217, 218, 219, 214, 216, 226, 227, 220, 221, 197, 02103 198, 224, 225, 542, 213, 215, 209, 210, 211, 199, 02104 200, 201, 202, 203, 531, 536, 532, 537, 389, 248, 02105 387, 542, 531, 533, 532, 534, 388, 248, 531, 532, 02106 248, 555, 555, 29, 188, 35, 196, 53, 56, 0, 02107 475, 0, 0, 102, 103, 106, 0, 542, 555, 0, 02108 542, 492, 0, 271, 555, 555, 401, 555, 326, 186, 02109 535, 532, 542, 531, 532, 555, 328, 296, 327, 299, 02110 535, 278, 542, 531, 532, 0, 0, 552, 430, 0, 02111 0, 302, 526, 0, 255, 251, 0, 555, 525, 283, 02112 544, 235, 240, 242, 286, 19, 0, 26, 195, 69, 02113 16, 542, 546, 85, 77, 89, 91, 542, 531, 532, 02114 503, 498, 0, 346, 337, 339, 542, 335, 542, 0, 02115 0, 292, 0, 484, 518, 504, 0, 487, 512, 0, 02116 489, 516, 443, 0, 0, 432, 434, 436, 205, 206, 02117 366, 542, 0, 364, 363, 261, 0, 81, 75, 0, 02118 0, 0, 0, 0, 0, 386, 59, 0, 392, 0, 02119 0, 237, 385, 57, 236, 381, 52, 0, 0, 0, 02120 555, 309, 0, 0, 392, 312, 521, 492, 0, 0, 02121 317, 402, 403, 555, 404, 0, 555, 331, 0, 0, 02122 329, 0, 0, 392, 0, 0, 0, 0, 0, 392, 02123 0, 116, 301, 0, 0, 256, 0, 257, 246, 555, 02124 11, 274, 233, 87, 542, 0, 344, 0, 500, 0, 02125 368, 0, 0, 502, 555, 555, 517, 555, 509, 555, 02126 555, 421, 0, 542, 0, 555, 0, 506, 555, 555, 02127 362, 0, 0, 259, 73, 187, 0, 34, 193, 33, 02128 194, 60, 545, 0, 31, 191, 32, 192, 58, 382, 02129 383, 0, 0, 189, 0, 0, 474, 307, 542, 0, 02130 477, 492, 0, 0, 406, 332, 0, 12, 408, 0, 02131 293, 0, 294, 0, 0, 304, 255, 555, 258, 241, 02132 336, 347, 0, 342, 338, 374, 0, 377, 376, 0, 02133 480, 0, 482, 0, 488, 0, 485, 490, 439, 0, 02134 365, 353, 355, 0, 505, 0, 358, 0, 360, 379, 02135 260, 228, 30, 190, 396, 394, 0, 0, 476, 315, 02136 0, 0, 405, 0, 94, 101, 0, 407, 0, 297, 02137 300, 0, 398, 399, 397, 0, 345, 0, 340, 372, 02138 542, 370, 373, 555, 555, 555, 555, 367, 555, 555, 02139 279, 0, 555, 507, 555, 555, 54, 310, 0, 100, 02140 0, 555, 0, 555, 555, 0, 343, 0, 0, 369, 02141 481, 0, 478, 483, 486, 0, 350, 0, 352, 535, 02142 278, 359, 0, 356, 361, 318, 535, 99, 542, 531, 02143 532, 400, 330, 305, 341, 371, 555, 555, 555, 555, 02144 555, 392, 479, 351, 0, 348, 354, 357, 555, 349 02145 }; 02146 02147 /* YYDEFGOTO[NTERM-NUM]. */ 02148 static const yytype_int16 yydefgoto[] = 02149 { 02150 -1, 1, 2, 64, 65, 66, 262, 394, 395, 271, 02151 272, 442, 68, 69, 202, 70, 71, 588, 720, 72, 02152 73, 273, 74, 75, 76, 467, 77, 203, 113, 114, 02153 227, 228, 229, 626, 195, 196, 79, 244, 278, 568, 02154 712, 434, 435, 253, 254, 246, 426, 436, 527, 80, 02155 199, 276, 651, 277, 292, 209, 747, 210, 748, 625, 02156 891, 592, 589, 815, 390, 392, 601, 602, 821, 265, 02157 398, 617, 739, 740, 215, 664, 665, 666, 783, 692, 02158 693, 769, 900, 901, 483, 671, 330, 522, 82, 83, 02159 376, 582, 581, 419, 894, 605, 733, 823, 827, 84, 02160 85, 305, 306, 498, 86, 87, 88, 627, 636, 503, 02161 504, 505, 684, 89, 90, 91, 299, 92, 93, 205, 02162 206, 96, 207, 385, 591, 728, 729, 485, 486, 487, 02163 488, 489, 490, 787, 788, 491, 492, 493, 494, 776, 02164 673, 198, 391, 283, 437, 249, 119, 596, 570, 368, 02165 234, 431, 432, 708, 458, 399, 260, 416, 237, 275 02166 }; 02167 02168 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 02169 STATE-NUM. */ 02170 #define YYPACT_NINF -763 02171 static const yytype_int16 yypact[] = 02172 { 02173 -763, 120, 2670, -763, 7298, 9106, 9433, 5605, -763, 8767, 02174 8767, -763, -763, 9215, 6691, 5113, 7976, 7976, -763, -763, 02175 7976, 3331, 2908, -763, -763, -763, -763, 26, 6691, -763, 02176 9, -763, -763, 5736, 3049, -763, -763, 5865, -763, -763, 02177 -763, -763, -763, -763, -763, 8880, 8880, 90, 4462, -22, 02178 8089, 8315, 6967, -763, 6399, 584, 717, 907, 943, 659, 02179 -763, 272, 8993, 8880, -763, 197, -763, 1023, -763, 519, 02180 -763, -763, 119, 45, -763, 11, 9324, -763, 115, 3169, 02181 173, 228, 28, 81, -763, -763, -763, -763, -763, -763, 02182 -763, -763, -763, -763, 398, 87, -763, 439, 44, -763, 02183 -763, -763, -763, -763, 21, 85, 100, 350, 394, 8767, 02184 278, 4597, 540, -763, 58, -763, 271, -763, -763, 44, 02185 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763, 02186 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763, 02187 -763, -763, -763, -763, -763, -763, -763, -763, 38, 49, 02188 54, 61, -763, -763, -763, -763, -763, -763, 97, 198, 02189 -763, 218, -763, 232, -763, -763, -763, -763, -763, -763, 02190 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763, 02191 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763, 02192 -763, -763, -763, -763, -763, -763, -763, -763, 28, 3668, 02193 99, 519, 74, 138, 320, 24, 203, 40, 74, 8767, 02194 8767, 262, -763, -763, 331, 317, 52, 68, -763, -763, 02195 -763, -763, -763, -763, -763, -763, 6545, -763, -763, 225, 02196 -763, -763, -763, 197, 325, -763, -763, 229, 8880, 8880, 02197 8880, 8880, -763, 3169, 292, -763, -763, 243, 250, -763, 02198 -763, -763, 5000, -763, 7976, 7976, -763, -763, 5228, 8767, 02199 -763, -763, 256, 4732, -763, 361, 330, 445, 7524, 4462, 02200 280, 197, 1023, 268, 326, -763, 8767, 268, 304, 174, 02201 179, -763, 292, 319, 179, -763, 415, 9542, 334, 363, 02202 366, 379, 748, -763, -763, -763, -763, 971, -763, -763, 02203 -763, -763, -763, -763, 370, 625, -763, -763, 975, -763, 02204 982, -763, 1039, -763, 733, 419, 421, -763, -763, -763, 02205 -763, 5341, 8767, 8767, 8767, 8767, 7524, 8767, 8767, -763, 02206 -763, 8428, -763, 4462, 7076, 338, 8428, 8880, 8880, 8880, 02207 8880, 8880, 8880, 8880, 8880, 8880, 8880, 8880, 8880, 8880, 02208 8880, 8880, 8880, 8880, 8880, 8880, 8880, 8880, 8880, 8880, 02209 8880, 8880, 8880, 2210, 7976, 9821, -763, -763, 10793, -763, 02210 -763, -763, 8993, 8993, -763, 400, -763, 519, -763, 387, 02211 -763, -763, -763, 197, -763, -763, -763, 9902, 7976, 9983, 02212 3668, 8767, -763, -763, 486, 490, 65, -763, 3807, 497, 02213 8880, 10064, 7976, 10145, 8880, 8880, 4079, 60, 60, 104, 02214 10226, 7976, 10307, -763, 452, -763, 370, 325, 8541, 503, 02215 -763, -763, -763, -763, 8880, 7185, -763, -763, 8202, -763, 02216 268, 371, -763, -763, 268, -763, 376, 389, -763, 129, 02217 -763, -763, 6691, 4194, 382, 10064, 10145, 8880, 1023, 268, 02218 -763, -763, 5455, 391, 519, -763, -763, 7411, -763, -763, 02219 8315, -763, -763, -763, 387, 11, 9542, -763, 9542, 10388, 02220 7976, 10469, 425, -763, -763, -763, -763, 797, -763, -763, 02221 -763, -763, 757, 80, -763, -763, -763, -763, 397, 8880, 02222 -763, 401, 514, 429, 518, -763, -763, 525, 4732, -763, 02223 -763, -763, 370, -763, 480, -763, -763, -763, -763, -763, 02224 -763, -763, 8880, 8880, -763, -763, -763, -763, -763, -763, 02225 -763, -763, 29, 8880, -763, 434, 448, -763, 268, 9542, 02226 453, -763, -763, -763, 509, 2107, -763, -763, 330, 1778, 02227 1778, 1778, 1778, 1278, 1278, 6710, 1338, 1778, 1778, 9758, 02228 9758, 583, 583, 2455, 1278, 1278, 735, 735, 813, 64, 02229 64, 330, 330, 330, 3423, 6123, 3515, 6252, -763, 85, 02230 -763, 268, 524, -763, 537, -763, -763, 3190, -763, -763, 02231 1238, 29, 29, -763, 2887, -763, 3169, -763, -763, 197, 02232 -763, 8767, 3668, 496, 37, -763, 85, 268, 85, 632, 02233 129, 997, 6837, -763, 8654, 618, -763, 674, -763, 3028, 02234 5994, 2767, 268, 279, 294, 618, -763, -763, -763, -763, 02235 140, 147, 268, 132, 151, 8767, 6691, -763, 370, 643, 02236 67, -763, -763, 8880, 292, -763, 7637, 250, -763, -763, 02237 -763, -763, 7185, 8202, -763, -763, 516, -763, 3169, -6, 02238 1023, 268, 179, 338, -763, 496, 37, 268, 238, 309, 02239 -763, -763, 797, 556, -763, 517, 268, -763, 268, 4885, 02240 4732, -763, 757, -763, -763, -763, 757, -763, -763, 877, 02241 -763, -763, -763, 534, 4732, -763, -763, -763, 330, 330, 02242 -763, 837, 4885, -763, -763, 522, 7750, -763, -763, 9542, 02243 8993, 8880, 562, 8993, 8993, -763, 400, 531, 547, 8993, 02244 8993, -763, -763, 400, -763, 81, 119, 4885, 4732, 8880, 02245 29, -763, 197, 673, -763, -763, -763, 757, 3668, 197, 02246 -763, 434, -763, 609, -763, 4347, 688, -763, 8767, 702, 02247 -763, 8880, 8880, 353, 8880, 8880, 704, 4885, 4885, 155, 02248 60, -763, -763, 7863, 3943, -763, 8880, -763, -763, 574, 02249 -763, -763, -763, 315, 268, 896, 575, 1139, -763, 576, 02250 573, 712, 586, -763, 585, 592, -763, 593, -763, 595, 02251 593, -763, 601, 268, 629, 599, 9651, -763, 605, 606, 02252 -763, 739, 8880, 612, -763, 3169, 8880, -763, 3169, -763, 02253 3169, -763, -763, 8993, -763, 3169, -763, 3169, -763, -763, 02254 -763, 741, 616, 3169, 4732, 3668, -763, -763, 268, 747, 02255 -763, 997, 9760, 74, -763, -763, 4885, -763, -763, 74, 02256 -763, 8880, -763, 749, 751, -763, -763, 93, -763, 8202, 02257 -763, 620, 896, 621, -763, -763, 1073, -763, -763, 757, 02258 -763, 877, -763, 877, -763, 877, -763, -763, -763, 655, 02259 -763, 757, -763, 724, 414, 757, -763, 877, -763, -763, 02260 637, 3169, -763, 3169, -763, -763, 641, 773, -763, -763, 02261 3668, 737, -763, 422, 366, 379, 3668, -763, 3807, -763, 02262 -763, 4885, -763, -763, -763, 896, 620, 896, 642, -763, 02263 213, -763, -763, 593, 653, 593, 593, -763, 658, 662, 02264 -763, 10550, 593, -763, 667, 593, -763, -763, 775, 387, 02265 10631, 7976, 10712, 490, 674, 800, 620, 896, 1073, -763, 02266 -763, 877, -763, -763, -763, 757, -763, 877, -763, 668, 02267 670, -763, 877, -763, -763, -763, 128, 37, 268, 84, 02268 103, -763, -763, -763, 620, -763, 593, 593, 669, 593, 02269 593, 118, -763, -763, 877, -763, -763, -763, 593, -763 02270 }; 02271 02272 /* YYPGOTO[NTERM-NUM]. */ 02273 static const yytype_int16 yypgoto[] = 02274 { 02275 -763, -763, -763, 380, -763, 42, -763, -363, -19, -763, 02276 35, -763, -293, 734, 13, -48, -763, -570, -763, -13, 02277 817, -170, 7, -55, -270, -414, -11, 1771, -59, 828, 02278 -1, -20, -763, -763, -241, -763, 1317, 894, -763, -7, 02279 257, -338, 55, -3, -763, -395, -243, 101, -291, 5, 02280 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763, 02281 -763, -763, -763, -763, -763, -763, -763, -763, -763, 295, 02282 -199, -370, -86, -553, -763, -699, -689, 177, -763, -480, 02283 -763, -594, -763, -87, -763, -763, 126, -763, -763, -763, 02284 -82, -763, -763, -401, -763, -69, -763, -763, -763, -763, 02285 -763, 656, 903, -763, -763, -763, -763, -763, -198, -364, 02286 -763, 364, -763, -763, -763, 8, -763, -763, -763, 1109, 02287 1870, 850, 1678, -763, -763, 56, -280, -760, -397, -593, 02288 305, -644, -616, -762, 48, 193, -763, -587, -763, -279, 02289 388, -763, -763, -763, 15, -386, 816, -307, -763, 672, 02290 2, -25, -233, -534, -260, 19, 144, -763, 4, -2 02291 }; 02292 02293 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 02294 positive, shift that token. If negative, reduce the rule which 02295 number is the opposite. If zero, do what YYDEFACT says. 02296 If YYTABLE_NINF, syntax error. */ 02297 #define YYTABLE_NINF -556 02298 static const yytype_int16 yytable[] = 02299 { 02300 99, 371, 259, 242, 242, 429, 194, 242, 261, 406, 02301 115, 115, 484, 495, 317, 256, 629, 466, 115, 257, 02302 461, 335, 230, 208, 463, 440, 571, 599, 233, 270, 02303 635, 248, 248, 635, 235, 248, 230, 67, 619, 67, 02304 453, 288, 638, 532, 455, 537, 100, 786, 281, 285, 02305 597, 380, 736, 298, 654, 274, 569, 115, 577, 383, 02306 778, 580, 746, 724, 612, 280, 284, 320, 844, 321, 02307 369, 245, 250, 622, 638, 251, 841, -94, 743, 773, 02308 667, 115, 598, 397, 235, 775, 902, 616, 749, 779, 02309 397, 374, 270, -101, 569, 375, 577, 784, 256, 449, 02310 -96, 717, 718, 913, 789, 598, 502, 369, 690, 669, 02311 -67, 735, 374, 418, -462, 698, 366, 247, 247, -98, 02312 3, 247, 567, 763, 575, -278, -465, 575, -275, -100, 02313 405, -275, 657, 386, -95, 337, 801, -464, 685, 598, 02314 -94, -81, -466, 808, -97, 267, 567, 329, 575, -467, 02315 691, 279, 263, 896, 396, 447, -101, -96, 332, 236, 02316 567, 331, 575, 528, 598, -97, 327, 328, 902, 567, 02317 252, 575, -99, 913, 367, 258, -98, 372, 384, 232, 02318 -95, -100, -278, -278, -465, -469, -532, 370, 670, 859, 02319 360, 361, 362, 255, 429, -464, 844, 639, 466, -86, 02320 -466, 641, 668, 495, 567, 575, 644, -467, 926, 236, 02321 231, 232, 231, 232, 753, -93, 649, 786, 628, 231, 02322 232, 786, 407, 408, 370, 298, 231, 232, 567, 723, 02323 575, 336, 465, 778, 255, 417, -96, -96, 954, 242, 02324 814, 242, 242, -469, 444, 427, 427, 635, 635, 258, 02325 270, -92, 235, 438, 400, -98, -98, 638, 236, 466, 02326 773, -323, 904, -88, 685, 667, 766, 248, 773, 248, 02327 -95, -95, 685, 451, 909, 452, 274, -531, 914, -88, 02328 -97, -97, 232, 524, 892, 794, -468, -89, 533, -531, 02329 235, 786, 115, 404, -91, 697, -532, 81, -90, 81, 02330 116, 116, -87, 448, 204, 204, -457, 430, 214, 433, 02331 204, 204, 204, 732, 270, 204, 363, 409, -323, -323, 02332 -461, 457, 495, 530, 583, 585, 460, 232, 595, 378, 02333 315, 316, 232, 379, -90, 515, 516, 517, 518, 115, 02334 274, -392, 413, 81, -468, 418, 236, 289, 958, 231, 02335 232, 242, 236, 247, -88, 247, 67, 204, 576, 387, 02336 928, 519, 438, 514, -457, 819, 232, 726, 667, 744, 02337 667, 289, 415, 364, 365, 242, -528, 236, -461, 607, 02338 835, 420, 576, 424, 745, -88, 438, 615, -88, 242, 02339 425, -88, 762, 606, 758, -96, 576, 428, 242, 443, 02340 438, 337, 590, -392, 204, 576, 81, 532, 401, 438, 02341 -98, 653, 790, 465, 961, 236, 388, 389, 761, 410, 02342 -529, 232, 645, 459, 459, -90, 618, 618, 459, 466, 02343 450, 754, 526, 768, 427, 427, 893, 526, -457, 576, 02344 637, 99, -66, 831, 635, 667, 898, 818, 495, 445, 02345 230, 469, 877, 638, -463, 456, -90, 242, -392, -90, 02346 -392, -392, -90, 462, 576, 402, 403, -268, 438, -95, 02347 464, 115, 652, 115, 465, -279, 411, 412, 67, 683, 02348 499, 468, -461, 500, 501, 531, 674, 650, -462, 674, 02349 512, 674, 513, -528, 81, -457, -457, 587, 667, -528, 02350 667, 603, 911, 604, 204, 204, 402, 446, 470, 471, 02351 920, -463, -463, 608, -94, 496, 758, 918, 631, 630, 02352 694, 640, -535, 642, -268, -268, 647, 236, 702, 373, 02353 667, 840, -279, -279, 115, 447, 643, -529, -81, -461, 02354 -461, 660, 495, -529, 672, -86, 707, 204, 676, 204, 02355 204, 236, 236, 204, 204, -101, 327, 328, 81, 388, 02356 389, -100, 705, 81, 81, 678, 706, 921, 922, 681, 02357 711, 204, 707, 711, 713, 714, 679, 716, 714, 694, 02358 694, -253, 289, 948, -535, 878, -93, 707, 682, 705, 02359 686, 711, -92, 500, 501, 696, 714, 707, 381, 382, 02360 699, 730, 734, 737, 722, 737, 751, 661, 721, 473, 02361 474, 475, 476, 737, 709, 598, 81, 204, 204, 204, 02362 204, 81, 204, 204, 886, 700, 204, 710, 81, 289, 02363 888, 204, 707, 809, 230, 427, 735, 803, 750, -535, 02364 -96, -535, -535, 770, 465, -531, 300, 725, 301, 302, 02365 771, 772, 533, -98, 337, 797, 799, 759, 752, 204, 02366 760, 804, 806, -95, 767, 782, 770, 204, 204, -254, 02367 567, -88, 661, 791, 473, 474, 475, 476, 781, 567, 02368 796, 575, 802, 204, -90, 81, 204, 506, 817, 301, 02369 302, 738, 735, 81, -87, 303, 304, 204, 811, 812, 02370 822, 81, 826, 765, 115, 526, 204, 358, 359, 360, 02371 361, 362, 308, 310, 312, 314, 825, 830, 694, 832, 02372 313, 839, 842, 301, 302, 846, 845, 847, 833, 834, 02373 848, 824, 849, 236, 828, 837, 303, 304, 81, 851, 02374 853, 816, 855, 201, 201, 858, 861, 81, 820, 201, 02375 860, 829, 865, 867, 869, 872, 874, 427, 770, -255, 02376 875, 289, 879, 289, 889, 204, 890, 895, 897, 618, 02377 303, 304, 674, 674, 236, 674, 907, 674, 674, 910, 02378 307, 301, 302, 674, -256, 916, 674, 674, 917, 927, 02379 945, 115, 919, 81, 511, 876, 459, 301, 302, 472, 02380 931, 473, 474, 475, 476, 935, 337, 887, 472, 937, 02381 473, 474, 475, 476, 942, 953, 964, -531, 98, -532, 02382 98, 350, 351, 646, 289, 98, 98, 115, 303, 304, 02383 212, 98, 98, 98, 120, 737, 98, 715, 952, 764, 02384 477, 955, 810, 377, 303, 304, 478, 479, 661, 477, 02385 473, 474, 475, 476, 951, 478, 479, 197, 357, 358, 02386 359, 360, 361, 362, 98, 774, 236, 923, 687, 924, 02387 393, 480, 925, 236, 481, 929, 0, 880, 98, 677, 02388 480, 680, 0, 481, 337, 0, 204, 81, 472, 662, 02389 473, 474, 475, 476, 236, 663, 0, 482, 0, 350, 02390 351, 674, 674, 674, 674, 0, 674, 674, 242, 908, 02391 674, 0, 674, 674, 0, 576, 0, 0, 0, 438, 02392 204, 606, 737, 707, 0, 98, 0, 98, 661, 477, 02393 473, 474, 475, 476, 0, 478, 479, 358, 359, 360, 02394 361, 362, 0, 201, 201, 282, 0, 661, 0, 473, 02395 474, 475, 476, 0, 674, 674, 674, 674, 674, 0, 02396 480, 0, 0, 481, 81, 81, 674, 236, 0, 477, 02397 309, 301, 302, 236, 0, 0, 479, 0, 0, 81, 02398 0, 777, 0, 0, 780, 0, 0, 81, 662, 0, 02399 232, 0, 439, 441, 289, 204, 785, 0, 204, 204, 02400 480, 0, 0, 0, 204, 204, 311, 301, 302, 0, 02401 454, 0, 81, 81, 0, 98, 0, 0, 303, 304, 02402 0, 0, 0, 81, 0, 98, 98, 0, 0, 0, 02403 81, 0, 0, 204, 496, 301, 302, 0, 508, 301, 02404 302, 0, 81, 81, 0, 509, 301, 302, 472, 81, 02405 473, 474, 475, 476, 303, 304, 201, 201, 201, 201, 02406 0, 520, 521, 322, 323, 324, 325, 326, 98, 0, 02407 98, 98, 0, 0, 98, 98, 0, 0, 0, 98, 02408 0, 864, 303, 304, 98, 98, 303, 304, 0, 477, 02409 0, 0, 98, 303, 304, 478, 479, 0, 204, 0, 02410 0, 0, 510, 301, 302, 0, 0, 0, 0, 81, 02411 81, 94, 0, 94, 117, 117, 117, 883, 0, 0, 02412 480, 81, 216, 481, 899, 600, 473, 474, 475, 476, 02413 0, 0, 421, 422, 423, 0, 0, 98, 98, 98, 02414 98, 98, 98, 98, 98, 0, 727, 98, 0, 98, 02415 303, 304, 98, 0, 903, 0, 905, 94, 0, 0, 02416 906, 290, 850, 852, 0, 854, 0, 856, 857, 0, 02417 912, 0, 915, 862, 0, 81, 866, 868, 0, 0, 02418 98, 81, 0, 81, 0, 290, 81, 0, 98, 98, 02419 661, 0, 473, 474, 475, 476, 0, 0, 0, 0, 02420 497, 0, 0, 0, 98, 0, 98, 98, 507, 0, 02421 0, 507, 0, 507, 98, 507, 204, 507, 98, 0, 02422 94, 0, 98, 0, 0, 525, 0, 98, 0, 0, 02423 536, 662, 0, 0, 0, 0, 956, 843, -555, 0, 02424 957, 0, 959, 0, 0, 0, 0, 960, 0, 0, 02425 0, -555, -555, -555, -555, -555, -555, 0, -555, 98, 02426 0, 0, 0, 0, -555, -555, 0, 0, 98, 968, 02427 0, 0, 0, 0, 0, -555, -555, 0, -555, -555, 02428 -555, -555, -555, 0, 0, 0, 98, 0, 0, 0, 02429 0, 930, 932, 933, 934, 0, 936, 938, 0, 0, 02430 941, 0, 943, 944, 0, 0, 0, 0, 94, 0, 02431 0, 0, 536, 0, 98, 0, 0, 0, 632, 634, 02432 0, 0, 282, 0, 0, 201, -555, 0, 0, 0, 02433 0, 0, 0, 243, 243, 0, 0, 243, 0, 0, 02434 0, 0, 0, 0, 962, 963, 965, 966, 967, 337, 02435 0, 634, 0, 0, 282, 0, 969, 0, 0, 201, 02436 0, 0, 264, 266, 350, 351, 0, 243, 243, 0, 02437 0, 0, 94, 0, 0, 0, 0, 94, 94, 318, 02438 319, -555, -555, 675, -555, 0, 0, 255, -555, 0, 02439 -555, -555, 0, 0, 0, 0, 290, 0, 0, 355, 02440 356, 357, 358, 359, 360, 361, 362, 98, 98, 337, 02441 338, 339, 340, 341, 342, 343, 344, 695, 346, 347, 02442 0, 0, 0, 0, 350, 351, 0, 0, 0, 0, 02443 94, 0, 0, 0, 0, 94, 0, 0, 0, 0, 02444 0, 98, 94, 290, 0, 0, 0, 0, 0, 0, 02445 0, 0, 0, 0, 0, 0, 0, 353, 354, 355, 02446 356, 357, 358, 359, 360, 361, 362, 0, 0, 0, 02447 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 02448 0, 0, 0, 0, 0, 98, 98, 0, 0, 0, 02449 0, 0, 0, 0, 0, 0, 0, 0, 731, 94, 02450 98, 0, 0, 0, 0, 0, 0, 94, 98, 0, 02451 0, 0, 0, 0, 0, 94, 98, 0, 0, 98, 02452 98, 0, 0, 0, 0, 98, 98, 755, 0, 0, 02453 757, 0, 0, 98, 98, 0, 634, 282, 0, 0, 02454 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 02455 0, 98, 94, 0, 98, 243, 243, 243, 318, 0, 02456 0, 94, 0, 98, 98, 0, 0, 0, 0, 243, 02457 98, 243, 243, 0, 0, 290, 0, 290, 0, 0, 02458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02459 793, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02460 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 02461 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 02462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02463 98, 98, 0, 0, 0, 0, 0, 0, 290, 0, 02464 0, 0, 98, 0, 0, 0, 0, 836, 243, 0, 02465 838, 0, 0, 535, 538, 539, 540, 541, 542, 543, 02466 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 02467 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 02468 97, 243, 97, 118, 118, 0, 870, 0, 0, 584, 02469 586, 217, 0, 0, 0, 0, 98, 0, 0, 0, 02470 0, 94, 98, 0, 98, 243, 0, 98, 0, 0, 02471 0, 0, 0, 0, 0, 0, 0, 609, 0, 243, 02472 0, 584, 586, 0, 0, 0, 97, 0, 243, 0, 02473 291, 0, 0, 282, 0, 243, 0, 98, 0, 0, 02474 0, 243, 243, 0, 0, 243, 0, 0, 0, 0, 02475 0, 0, 0, 0, 291, 0, 0, 0, 0, 0, 02476 0, 0, 0, 0, 648, 0, 0, 0, 0, 0, 02477 0, 0, 0, 78, 243, 78, 0, 243, 94, 94, 02478 0, 0, 0, 0, 213, 0, 0, 243, 0, 97, 02479 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 02480 0, 94, 0, 0, 0, 0, 243, 0, 290, 0, 02481 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 02482 0, 0, 0, 0, 0, 0, 94, 94, 0, 688, 02483 689, 0, 0, 0, 0, 0, 0, 94, 0, 0, 02484 243, 0, 0, 0, 94, 0, 0, 0, 0, 337, 02485 -556, -556, -556, -556, 342, 343, 94, 94, -556, -556, 02486 0, 0, 0, 94, 350, 351, 0, 0, 0, 0, 02487 0, 0, 95, 0, 95, 0, 0, 97, 0, 0, 02488 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 02489 0, 0, 0, 0, 0, 117, 0, 353, 354, 355, 02490 356, 357, 358, 359, 360, 361, 362, 0, 0, 0, 02491 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 02492 0, 243, 0, 94, 94, 0, 0, 0, 0, 0, 02493 0, 884, 0, 0, 0, 94, 0, 0, 0, 0, 02494 0, 97, 0, 0, 0, 0, 97, 97, 0, 0, 02495 243, 0, 0, 243, 0, 0, 0, 0, 0, 243, 02496 243, 0, 0, 0, 0, 291, 0, 0, 0, 0, 02497 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02498 0, 95, 0, 0, 0, 0, 0, 0, 0, 94, 02499 0, 0, 0, 0, 0, 94, 0, 94, 0, 97, 02500 94, 0, 0, 0, 97, 0, 0, 0, 0, 0, 02501 0, 97, 291, 243, 0, 0, 0, 609, 795, 0, 02502 798, 800, 0, 0, 0, 0, 805, 807, 0, 0, 02503 0, 0, 0, 0, 78, 0, 813, 0, 0, 78, 02504 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02505 0, 0, 0, 0, 0, 0, 0, 0, 798, 800, 02506 0, 805, 807, 0, 0, 0, 0, 0, 97, 95, 02507 243, 0, 0, 243, 0, 0, 97, 0, 0, 0, 02508 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 02509 0, 0, 78, 0, 0, 0, 0, 78, 0, 0, 02510 0, 0, 0, 0, 78, 0, 0, 534, 0, 243, 02511 0, 0, 0, 871, 0, 0, 0, 0, 0, 0, 02512 873, 97, 0, 0, 0, 0, 0, 0, 0, 0, 02513 97, 0, 0, 95, 0, 0, 0, 0, 95, 95, 02514 0, 0, 0, 0, 291, 0, 291, 0, 873, 0, 02515 0, 701, 0, 0, 0, 0, 243, 0, 0, 0, 02516 0, 78, 0, 0, 0, 0, 0, 0, 0, 78, 02517 0, 0, 0, 0, 0, 0, 97, 78, 337, 338, 02518 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 02519 349, 95, 0, 350, 351, 0, 95, 0, 0, 0, 02520 0, 0, 0, 95, 0, 0, 0, 291, 0, 0, 02521 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 02522 0, 0, 0, 78, 352, 0, 353, 354, 355, 356, 02523 357, 358, 359, 360, 361, 362, 0, 0, 243, 0, 02524 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02525 0, 0, 0, 0, -230, 0, 0, 0, 0, 0, 02526 95, 564, 565, 0, 0, 566, 0, 0, 95, 78, 02527 97, 0, 0, 0, 0, 0, 95, 0, 0, 164, 02528 165, 166, 167, 168, 169, 170, 171, 172, 0, 0, 02529 173, 174, 0, 0, 175, 176, 177, 178, 0, 0, 02530 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 02531 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 02532 0, 0, 95, 0, 0, 0, 0, 0, 0, 180, 02533 181, 182, 183, 184, 185, 186, 187, 188, 189, 0, 02534 190, 191, 0, 0, 0, 0, 0, 97, 97, 0, 02535 0, 0, 0, 0, 0, 0, 0, 0, 192, 255, 02536 0, 0, 97, 78, 0, 0, 0, 0, 95, 0, 02537 97, 0, 0, 0, 0, 0, 0, 291, 0, 0, 02538 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02539 0, 0, 0, 0, 0, 97, 97, 0, 0, 0, 02540 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 02541 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 02542 0, 0, 0, 0, 0, 97, 97, 0, 0, 0, 02543 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 02544 78, 78, 0, 0, 0, 0, 0, 0, 0, 0, 02545 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 02546 0, 0, 95, 78, 118, 0, 0, 0, 0, 0, 02547 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, 02548 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 02549 0, 0, 97, 97, 0, 0, 0, 0, 0, 78, 02550 885, 0, 0, 0, 97, 0, 78, 0, 0, 0, 02551 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 02552 0, 0, 0, 0, 0, 78, 337, 338, 339, 340, 02553 341, 342, 343, 344, 345, 346, 347, 348, 349, 95, 02554 95, 350, 351, 0, 0, 0, 0, 0, 0, 0, 02555 0, 0, 0, 0, 95, 0, 0, 0, 97, 0, 02556 0, 0, 95, 0, 97, 0, 97, 0, 0, 97, 02557 0, 0, 352, 0, 353, 354, 355, 356, 357, 358, 02558 359, 360, 361, 362, 0, 78, 78, 95, 95, 0, 02559 0, 0, 0, 882, 0, 0, 0, 78, 95, 0, 02560 0, 0, 0, 0, 0, 95, 0, 0, 232, 0, 02561 0, 0, 0, 0, 0, 0, 0, 95, 95, 0, 02562 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 02563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02565 0, 78, 0, 0, 0, 0, 0, 78, 0, 78, 02566 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 02567 -555, 4, 0, 5, 6, 7, 8, 9, 10, 11, 02568 12, 13, 14, 0, 95, 95, 0, 0, 0, 15, 02569 0, 16, 17, 18, 19, 0, 95, 0, 0, 0, 02570 20, 21, 22, 23, 24, 25, 26, 0, 0, 27, 02571 0, 0, 0, 0, 0, 28, 29, 30, 31, 32, 02572 0, 33, 34, 35, 36, 37, 38, 0, 39, 40, 02573 41, 0, 0, 42, 0, 0, 43, 44, 0, 45, 02574 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02575 95, 0, 0, 0, 0, 0, 95, 0, 95, 47, 02576 0, 95, 48, 49, 0, 50, 51, -278, 52, 0, 02577 53, 54, 55, 56, 57, 58, 59, 0, 0, 60, 02578 -278, -278, -278, -278, -278, -278, 0, -278, 0, 0, 02579 0, 0, 0, 0, -278, -278, -278, 0, 0, 61, 02580 62, 63, 0, 0, -278, -278, 0, -278, -278, -278, 02581 -278, -278, 0, 0, 0, 0, 0, 0, 0, 0, 02582 0, 0, -555, -555, 0, 0, 0, 0, 0, 0, 02583 0, 0, 0, 0, 0, 0, 0, 0, -278, -278, 02584 -278, -278, -278, -278, -278, -278, -278, -278, -278, -278, 02585 -278, 0, 0, -278, -278, -278, 0, 742, -278, 0, 02586 0, 0, 0, 0, -278, 0, 0, 0, 0, 0, 02587 0, 0, 0, 0, 0, -278, 0, 0, 0, 0, 02588 0, 0, 0, -99, -278, -278, -278, -278, -278, -278, 02589 -278, -278, -278, -278, -278, -278, 0, 0, 0, 0, 02590 0, 0, 0, 0, 0, 0, 0, 0, -391, 0, 02591 0, -278, -278, -278, -278, 0, 0, -278, -278, -278, 02592 -278, -391, -391, -391, -391, -391, -391, 0, -391, 0, 02593 0, 719, 0, 0, -391, -391, -391, 0, 0, 0, 02594 0, 0, 0, 0, 0, -391, -391, 0, -391, -391, 02595 -391, -391, -391, 0, 0, 0, 0, 0, 337, 338, 02596 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 02597 349, 0, 0, 350, 351, 0, 0, 0, 0, -391, 02598 -391, -391, -391, -391, -391, -391, -391, -391, -391, -391, 02599 -391, -391, 0, 0, -391, -391, -391, 0, 0, -391, 02600 0, 0, 0, 0, 352, -391, 353, 354, 355, 356, 02601 357, 358, 359, 360, 361, 362, 0, 0, 0, 0, 02602 0, 0, 0, 0, 0, -391, 0, -391, -391, -391, 02603 -391, -391, -391, -391, -391, -391, -391, 0, 0, 0, 02604 0, 0, 0, 0, 0, 0, 0, 0, 0, -269, 02605 0, -391, -391, -391, -391, -391, 0, 255, -391, -391, 02606 -391, -391, -269, -269, -269, -269, -269, -269, 0, -269, 02607 0, 0, 701, 0, 0, 0, -269, -269, -269, 0, 02608 0, 0, 0, 0, 0, 0, -269, -269, 0, -269, 02609 -269, -269, -269, -269, 0, 0, 0, 0, 0, 337, 02610 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 02611 348, 349, 0, 0, 350, 351, 0, 0, 0, 0, 02612 -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, 02613 -269, -269, -269, 0, 0, -269, -269, -269, 0, 0, 02614 -269, 0, 0, 0, 0, 352, -269, 353, 354, 355, 02615 356, 357, 358, 359, 360, 361, 362, -269, 0, 0, 02616 0, 0, 0, 0, 0, 0, -269, -269, -269, -269, 02617 -269, -269, -269, -269, -269, -269, -269, -269, 0, 0, 02618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02619 -555, 0, 0, -269, -269, -269, -269, 0, 0, -269, 02620 -269, -269, -269, -555, -555, -555, -555, -555, -555, 0, 02621 -555, 0, 0, 0, 0, 0, -555, -555, -555, 0, 02622 0, 0, 0, 0, 0, 0, 0, -555, -555, 0, 02623 -555, -555, -555, -555, -555, 0, 0, 0, 0, 0, 02624 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 02625 347, 348, 349, 0, 0, 350, 351, 0, 0, 0, 02626 0, -555, -555, -555, -555, -555, -555, -555, -555, -555, 02627 -555, -555, -555, -555, 0, 0, -555, -555, -555, 0, 02628 0, -555, 0, 0, 0, 0, 352, -555, 353, 354, 02629 355, 356, 357, 358, 359, 360, 361, 362, 0, 0, 02630 0, 0, 0, 0, 0, 0, 0, -555, 0, -555, 02631 -555, -555, -555, -555, -555, -555, -555, -555, -555, 0, 02632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02633 0, -285, 0, -555, -555, -555, -555, -555, 0, 255, 02634 -555, -555, -555, -555, -285, -285, -285, -285, -285, -285, 02635 0, -285, 0, 0, 0, 0, 0, 0, -285, -285, 02636 0, 0, 0, 0, 0, 0, 0, 0, -285, -285, 02637 0, -285, -285, -285, -285, -285, 0, 0, 0, 0, 02638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02640 0, 0, -285, -285, -285, -285, -285, -285, -285, -285, 02641 -285, -285, -285, -285, -285, 0, 0, -285, -285, -285, 02642 0, 0, -285, -535, 0, 0, 0, 0, -285, 0, 02643 0, 0, 0, 0, 0, 0, -535, -535, -535, 0, 02644 -535, -535, 0, -535, 0, 0, 0, 0, -285, -535, 02645 -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, 02646 -535, -535, 0, -535, -535, -535, -535, -535, 0, 0, 02647 0, 0, 0, 0, 0, -285, -285, -285, -285, 0, 02648 252, -285, -285, -285, -285, 0, 0, 0, 0, 0, 02649 0, 0, 0, 0, -535, -535, -535, -535, -535, -535, 02650 -535, -535, -535, -535, -535, -535, -535, 0, 0, -535, 02651 -535, -535, 0, 703, 0, -278, 0, 0, 0, 0, 02652 0, 0, 0, 0, 0, 0, 0, 0, -278, -278, 02653 -278, 0, -278, -278, 0, -278, 0, 0, 0, -97, 02654 -535, 0, -535, -535, -535, -535, -535, -535, -535, -535, 02655 -535, -535, -278, -278, 0, -278, -278, -278, -278, -278, 02656 0, 0, 0, 0, 0, 0, -535, -535, -535, -535, 02657 -89, 0, 0, -535, 0, -535, -535, 0, 0, 0, 02658 0, 0, 0, 0, 0, 0, -278, -278, -278, -278, 02659 -278, -278, -278, -278, -278, -278, -278, -278, -278, 0, 02660 0, -278, -278, -278, 0, 704, 0, 0, 0, 0, 02661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02663 0, -99, -278, 0, -278, -278, -278, -278, -278, -278, 02664 -278, -278, -278, -278, 0, 0, 0, 0, 0, 0, 02665 0, 0, 0, 0, 0, 0, 0, 0, 0, -278, 02666 -278, -278, -91, 0, 0, -278, 0, -278, -278, 268, 02667 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 02668 14, -555, -555, -555, 0, 0, -555, 15, 0, 16, 02669 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 02670 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 02671 0, 0, 0, 28, 0, 30, 31, 32, 0, 33, 02672 34, 35, 36, 37, 38, 0, 39, 40, 41, 0, 02673 0, 42, 0, 0, 43, 44, 0, 45, 46, 0, 02674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02675 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 02676 48, 49, 0, 50, 51, 0, 52, 0, 53, 54, 02677 55, 56, 57, 58, 59, 0, 0, 60, 0, 0, 02678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02679 0, 0, 0, 0, 0, 0, 0, 61, 62, 63, 02680 0, 0, 0, 0, 0, 0, 0, 0, 268, 0, 02681 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 02682 -555, -555, -555, 0, -555, -555, 15, 0, 16, 17, 02683 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 02684 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 02685 0, 0, 28, 0, 30, 31, 32, 0, 33, 34, 02686 35, 36, 37, 38, 0, 39, 40, 41, 0, 0, 02687 42, 0, 0, 43, 44, 0, 45, 46, 0, 0, 02688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02689 0, 0, 0, 0, 0, 0, 47, 0, 0, 48, 02690 49, 0, 50, 51, 0, 52, 0, 53, 54, 55, 02691 56, 57, 58, 59, 0, 0, 60, 0, 0, 0, 02692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02693 0, 0, 0, 0, 0, 0, 61, 62, 63, 0, 02694 0, 0, 0, 0, 268, 0, 5, 6, 7, 8, 02695 9, 10, 11, 12, 13, 14, 0, 0, -555, -555, 02696 -555, -555, 15, -555, 16, 17, 18, 19, 0, 0, 02697 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 02698 0, 0, 27, 0, 0, 0, 0, 0, 28, 0, 02699 30, 31, 32, 0, 33, 34, 35, 36, 37, 38, 02700 0, 39, 40, 41, 0, 0, 42, 0, 0, 43, 02701 44, 0, 45, 46, 0, 0, 0, 0, 0, 0, 02702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02703 0, 0, 47, 0, 0, 48, 49, 0, 50, 51, 02704 0, 52, 0, 53, 54, 55, 56, 57, 58, 59, 02705 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 02706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02707 0, 0, 61, 62, 63, 0, 0, 0, 0, 0, 02708 268, 0, 5, 6, 7, 8, 9, 10, 11, 12, 02709 13, 14, 0, 0, -555, -555, -555, -555, 15, 0, 02710 16, 17, 18, 19, 0, 0, 0, 0, 0, 20, 02711 21, 22, 23, 24, 25, 26, 0, 0, 27, 0, 02712 0, 0, 0, 0, 28, 0, 30, 31, 32, 0, 02713 33, 34, 35, 36, 37, 38, 0, 39, 40, 41, 02714 0, 0, 42, 0, 0, 43, 44, 0, 45, 46, 02715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02716 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 02717 0, 48, 49, 0, 50, 51, 0, 52, 0, 53, 02718 54, 55, 56, 57, 58, 59, 0, 0, 60, 0, 02719 0, 0, 0, 0, 0, 4, 0, 5, 6, 7, 02720 8, 9, 10, 11, 12, 13, 14, 0, 61, 62, 02721 63, 0, 0, 15, 0, 16, 17, 18, 19, 0, 02722 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 02723 26, -555, -555, 27, 0, 0, 0, 0, 0, 28, 02724 29, 30, 31, 32, 0, 33, 34, 35, 36, 37, 02725 38, 0, 39, 40, 41, 0, 0, 42, 0, 0, 02726 43, 44, 0, 45, 46, 0, 0, 0, 0, 0, 02727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02728 0, 0, 0, 47, 0, 0, 48, 49, 0, 50, 02729 51, 0, 52, 0, 53, 54, 55, 56, 57, 58, 02730 59, 0, 0, 60, 0, 0, 0, 0, 0, 0, 02731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02732 0, 0, 0, 61, 62, 63, 0, 0, 0, 0, 02733 0, 0, 0, 0, 0, 0, 0, 0, -555, 0, 02734 0, 0, 0, 0, 0, 0, -555, -555, 268, 0, 02735 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 02736 0, -555, -555, 0, 0, 0, 15, 0, 16, 17, 02737 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 02738 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 02739 0, 0, 28, 0, 30, 31, 32, 0, 33, 34, 02740 35, 36, 37, 38, 0, 39, 40, 41, 0, 0, 02741 42, 0, 0, 43, 44, 0, 45, 46, 0, 0, 02742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02743 0, 0, 0, 0, 0, 0, 47, 0, 0, 48, 02744 49, 0, 50, 51, 0, 52, 0, 53, 54, 55, 02745 56, 57, 58, 59, 0, 0, 60, 0, 0, 0, 02746 0, 0, 0, 268, 0, 5, 6, 7, 8, 9, 02747 10, 11, 12, 13, 14, 0, 61, 62, 63, 0, 02748 0, 15, 0, 16, 17, 18, 19, 0, 0, 0, 02749 0, 0, 20, 21, 22, 23, 24, 25, 26, -555, 02750 -555, 27, 0, 0, 0, 0, 0, 28, 0, 30, 02751 31, 32, 0, 33, 34, 35, 36, 37, 38, 0, 02752 39, 40, 41, 0, 0, 42, 0, 0, 43, 44, 02753 0, 45, 46, 0, 0, 0, 0, 0, 0, 0, 02754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02755 0, 47, 0, 0, 269, 49, 0, 50, 51, 0, 02756 52, 0, 53, 54, 55, 56, 57, 58, 59, 0, 02757 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 02758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02759 0, 61, 62, 63, 0, 0, 0, 0, 268, 0, 02760 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 02761 0, 0, -555, 0, -555, -555, 15, 0, 16, 17, 02762 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 02763 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 02764 0, 0, 28, 0, 30, 31, 32, 0, 33, 34, 02765 35, 36, 37, 38, 0, 39, 40, 41, 0, 0, 02766 42, 0, 0, 43, 44, 0, 45, 46, 0, 0, 02767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02768 0, 0, 0, 0, 0, 0, 47, 0, 0, 48, 02769 49, 0, 50, 51, 0, 52, 0, 53, 54, 55, 02770 56, 57, 58, 59, 0, 0, 60, 0, 0, 0, 02771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02772 0, 0, 0, 0, 0, 0, 61, 62, 63, 0, 02773 0, 0, 0, 268, 0, 5, 6, 7, 8, 9, 02774 10, 11, 12, 13, 14, 0, 0, -555, 0, -555, 02775 -555, 15, 0, 16, 17, 18, 19, 0, 0, 0, 02776 0, 0, 20, 21, 22, 23, 24, 25, 26, 0, 02777 0, 27, 0, 0, 0, 0, 0, 28, 0, 30, 02778 31, 32, 0, 33, 34, 35, 36, 37, 38, 0, 02779 39, 40, 41, 0, 0, 42, 0, 0, 43, 44, 02780 0, 45, 46, 0, 0, 0, 0, 0, 0, 0, 02781 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02782 0, 47, 0, 0, 48, 49, 0, 50, 51, 0, 02783 52, 0, 53, 54, 55, 56, 57, 58, 59, 0, 02784 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 02785 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02786 0, 61, 62, 63, 0, 0, 0, 0, 0, 0, 02787 0, 0, 0, 0, 0, 0, -555, 0, 0, 0, 02788 0, 0, 0, 0, -555, -555, 268, 0, 5, 6, 02789 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 02790 -555, 0, 0, 0, 15, 0, 16, 17, 18, 19, 02791 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 02792 25, 26, 0, 0, 27, 0, 0, 0, 0, 0, 02793 28, 0, 30, 31, 32, 0, 33, 34, 35, 36, 02794 37, 38, 0, 39, 40, 41, 0, 0, 42, 0, 02795 0, 43, 44, 0, 45, 46, 0, 0, 0, 0, 02796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02797 0, 0, 0, 0, 47, 0, 0, 48, 49, 0, 02798 50, 51, 0, 52, 0, 53, 54, 55, 56, 57, 02799 58, 59, 0, 0, 60, 0, 0, 0, 0, 0, 02800 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, 02801 12, 13, 0, 0, 61, 62, 63, 0, 0, 15, 02802 0, 16, 17, 18, 19, 0, 0, 0, 0, 0, 02803 20, 21, 22, 23, 24, 25, 26, -555, -555, 106, 02804 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 02805 0, 33, 34, 35, 36, 37, 38, 238, 39, 40, 02806 41, 0, 0, 42, 0, 0, 43, 44, 0, 45, 02807 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02808 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 02809 0, 0, 111, 49, 0, 50, 51, 0, 239, 240, 02810 53, 54, 55, 56, 57, 58, 59, 0, 0, 60, 02811 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, 02812 9, 10, 11, 12, 13, 0, 0, 0, 0, 61, 02813 241, 63, 15, 0, 16, 17, 18, 19, 0, 0, 02814 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 02815 0, 0, 27, 232, 0, 0, 0, 0, 0, 0, 02816 0, 31, 32, 0, 33, 34, 35, 36, 37, 38, 02817 0, 39, 40, 41, 0, 0, 42, 0, 0, 43, 02818 44, 0, 45, 46, 0, 0, 0, 0, 0, 0, 02819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02820 0, 0, 200, 0, 0, 111, 49, 0, 50, 51, 02821 0, 0, 0, 53, 54, 55, 56, 57, 58, 59, 02822 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 02823 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 02824 0, 0, 61, 62, 63, 0, 0, 15, 0, 16, 02825 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 02826 22, 23, 24, 25, 26, 231, 232, 27, 0, 0, 02827 0, 0, 0, 0, 0, 0, 31, 32, 0, 33, 02828 34, 35, 36, 37, 38, 0, 39, 40, 41, 0, 02829 0, 42, 0, 0, 43, 44, 0, 45, 46, 0, 02830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02831 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 02832 111, 49, 0, 50, 51, 0, 0, 0, 53, 54, 02833 55, 56, 57, 58, 59, 0, 0, 60, 0, 0, 02834 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 02835 11, 12, 13, 14, 0, 0, 0, 61, 62, 63, 02836 15, 0, 16, 17, 18, 19, 0, 0, 0, 0, 02837 0, 20, 21, 22, 23, 24, 25, 26, 0, 0, 02838 27, 232, 0, 0, 0, 0, 28, 29, 30, 31, 02839 32, 0, 33, 34, 35, 36, 37, 38, 0, 39, 02840 40, 41, 0, 0, 42, 0, 0, 43, 44, 0, 02841 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 02842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02843 47, 0, 0, 48, 49, 0, 50, 51, 0, 52, 02844 0, 53, 54, 55, 56, 57, 58, 59, 0, 0, 02845 60, 0, 0, 0, 0, 0, 0, 0, 5, 6, 02846 7, 8, 9, 10, 11, 12, 13, 14, 0, 0, 02847 61, 62, 63, 0, 15, 0, 16, 17, 18, 19, 02848 0, 0, 0, 0, 0, 20, 21, 22, 23, 24, 02849 25, 26, 0, 420, 27, 0, 0, 0, 0, 0, 02850 28, 0, 30, 31, 32, 0, 33, 34, 35, 36, 02851 37, 38, 0, 39, 40, 41, 0, 0, 42, 0, 02852 0, 43, 44, 0, 45, 46, 0, 0, 0, 0, 02853 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02854 0, 0, 0, 0, 47, 0, 0, 48, 49, 0, 02855 50, 51, 0, 52, 0, 53, 54, 55, 56, 57, 02856 58, 59, 0, 0, 60, 0, 0, 0, 0, 0, 02857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02858 0, 0, 0, 0, 61, 62, 63, 0, 0, 0, 02859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02860 0, 0, 0, 0, 0, 0, 0, 420, 121, 122, 02861 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 02862 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 02863 143, 144, 0, 0, 0, 145, 146, 147, 148, 149, 02864 150, 151, 152, 153, 154, 0, 0, 0, 0, 0, 02865 155, 156, 157, 158, 159, 160, 161, 162, 35, 36, 02866 163, 38, 0, 0, 0, 0, 0, 0, 0, 0, 02867 0, 0, 0, 0, 164, 165, 166, 167, 168, 169, 02868 170, 171, 172, 0, 0, 173, 174, 0, 0, 175, 02869 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, 02870 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 02871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02872 0, 0, 0, 0, 180, 181, 182, 183, 184, 185, 02873 186, 187, 188, 189, 0, 190, 191, 0, 0, -528, 02874 -528, -528, -528, -528, -528, -528, -528, -528, 0, 0, 02875 0, 0, 0, 192, 193, -528, 0, -528, -528, -528, 02876 -528, 0, -528, 0, 0, 0, -528, -528, -528, -528, 02877 -528, -528, -528, 0, 0, -528, 0, 0, 0, 0, 02878 0, 0, 0, 0, -528, -528, 0, -528, -528, -528, 02879 -528, -528, -528, -528, -528, -528, -528, 0, 0, -528, 02880 0, 0, -528, -528, 0, -528, -528, 0, 0, 0, 02881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02882 0, 0, 0, 0, 0, -528, 0, 0, -528, -528, 02883 0, -528, -528, 0, -528, -528, -528, -528, -528, -528, 02884 -528, -528, -528, 0, 0, -528, 0, 0, 0, 0, 02885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02886 0, 0, 0, 0, 0, -528, -528, -528, -529, -529, 02887 -529, -529, -529, -529, -529, -529, -529, 0, 0, -528, 02888 0, 0, 0, 0, -529, -528, -529, -529, -529, -529, 02889 0, -529, 0, 0, 0, -529, -529, -529, -529, -529, 02890 -529, -529, 0, 0, -529, 0, 0, 0, 0, 0, 02891 0, 0, 0, -529, -529, 0, -529, -529, -529, -529, 02892 -529, -529, -529, -529, -529, -529, 0, 0, -529, 0, 02893 0, -529, -529, 0, -529, -529, 0, 0, 0, 0, 02894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02895 0, 0, 0, 0, -529, 0, 0, -529, -529, 0, 02896 -529, -529, 0, -529, -529, -529, -529, -529, -529, -529, 02897 -529, -529, 0, 0, -529, 0, 0, 0, 0, 0, 02898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02899 0, 0, 0, 0, -529, -529, -529, -531, -531, -531, 02900 -531, -531, -531, -531, -531, -531, 0, 0, -529, 0, 02901 0, 0, 0, -531, -529, -531, -531, -531, -531, 0, 02902 0, 0, 0, 0, -531, -531, -531, -531, -531, -531, 02903 -531, 0, 0, -531, 0, 0, 0, 0, 0, 0, 02904 0, 0, -531, -531, 0, -531, -531, -531, -531, -531, 02905 -531, -531, -531, -531, -531, 0, 0, -531, 0, 0, 02906 -531, -531, 0, -531, -531, 0, 0, 0, 0, 0, 02907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02908 0, 0, 0, -531, 741, 0, -531, -531, 0, -531, 02909 -531, 0, -531, -531, -531, -531, -531, -531, -531, -531, 02910 -531, 0, 0, -531, 0, 0, 0, 0, 0, 0, 02911 -97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02912 0, 0, 0, -531, -531, -531, -533, -533, -533, -533, 02913 -533, -533, -533, -533, -533, 0, 0, 0, 0, 0, 02914 0, 0, -533, -531, -533, -533, -533, -533, 0, 0, 02915 0, 0, 0, -533, -533, -533, -533, -533, -533, -533, 02916 0, 0, -533, 0, 0, 0, 0, 0, 0, 0, 02917 0, -533, -533, 0, -533, -533, -533, -533, -533, -533, 02918 -533, -533, -533, -533, 0, 0, -533, 0, 0, -533, 02919 -533, 0, -533, -533, 0, 0, 0, 0, 0, 0, 02920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02921 0, 0, -533, 0, 0, -533, -533, 0, -533, -533, 02922 0, -533, -533, -533, -533, -533, -533, -533, -533, -533, 02923 0, 0, -533, 0, 0, 0, 0, 0, 0, 0, 02924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02925 0, 0, -533, -533, -533, -534, -534, -534, -534, -534, 02926 -534, -534, -534, -534, 0, 0, 0, 0, 0, 0, 02927 0, -534, -533, -534, -534, -534, -534, 0, 0, 0, 02928 0, 0, -534, -534, -534, -534, -534, -534, -534, 0, 02929 0, -534, 0, 0, 0, 0, 0, 0, 0, 0, 02930 -534, -534, 0, -534, -534, -534, -534, -534, -534, -534, 02931 -534, -534, -534, 0, 0, -534, 0, 0, -534, -534, 02932 0, -534, -534, 0, 0, 0, 0, 0, 0, 0, 02933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02934 0, -534, 0, 0, -534, -534, 0, -534, -534, 0, 02935 -534, -534, -534, -534, -534, -534, -534, -534, -534, 0, 02936 0, -534, 0, 0, 0, 0, 0, 0, 0, 0, 02937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02938 0, -534, -534, -534, 0, 0, 0, 0, 0, 0, 02939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02940 0, -534, 121, 122, 123, 124, 125, 126, 127, 128, 02941 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 02942 139, 140, 141, 142, 143, 144, 0, 0, 0, 145, 02943 146, 147, 218, 219, 220, 221, 152, 153, 154, 0, 02944 0, 0, 0, 0, 155, 156, 157, 222, 223, 160, 02945 224, 162, 293, 294, 225, 295, 0, 0, 0, 0, 02946 0, 0, 296, 0, 0, 0, 0, 0, 164, 165, 02947 166, 167, 168, 169, 170, 171, 172, 0, 0, 173, 02948 174, 0, 0, 175, 176, 177, 178, 0, 0, 0, 02949 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 02950 0, 0, 0, 0, 297, 0, 0, 0, 0, 0, 02951 0, 0, 0, 0, 0, 0, 0, 0, 180, 181, 02952 182, 183, 184, 185, 186, 187, 188, 189, 0, 190, 02953 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02954 0, 0, 0, 0, 0, 0, 0, 192, 121, 122, 02955 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 02956 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 02957 143, 144, 0, 0, 0, 145, 146, 147, 218, 219, 02958 220, 221, 152, 153, 154, 0, 0, 0, 0, 0, 02959 155, 156, 157, 222, 223, 160, 224, 162, 293, 294, 02960 225, 295, 0, 0, 0, 0, 0, 0, 296, 0, 02961 0, 0, 0, 0, 164, 165, 166, 167, 168, 169, 02962 170, 171, 172, 0, 0, 173, 174, 0, 0, 175, 02963 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, 02964 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 02965 414, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02966 0, 0, 0, 0, 180, 181, 182, 183, 184, 185, 02967 186, 187, 188, 189, 0, 190, 191, 0, 0, 0, 02968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02969 0, 0, 0, 192, 121, 122, 123, 124, 125, 126, 02970 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 02971 137, 138, 139, 140, 141, 142, 143, 144, 0, 0, 02972 0, 145, 146, 147, 218, 219, 220, 221, 152, 153, 02973 154, 0, 0, 0, 0, 0, 155, 156, 157, 222, 02974 223, 160, 224, 162, 0, 0, 225, 0, 0, 0, 02975 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02976 164, 165, 166, 167, 168, 169, 170, 171, 172, 0, 02977 0, 173, 174, 0, 0, 175, 176, 177, 178, 0, 02978 0, 337, 338, 339, 340, 341, 342, 343, 0, 179, 02979 346, 347, 226, 0, 0, 0, 350, 351, 0, 0, 02980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02981 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 02982 0, 190, 191, 0, 0, 0, 0, 0, 0, 353, 02983 354, 355, 356, 357, 358, 359, 360, 361, 362, 192, 02984 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 02985 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 02986 141, 142, 143, 144, 0, 0, 0, 145, 146, 147, 02987 218, 219, 220, 221, 152, 153, 154, 0, 0, 0, 02988 0, 0, 155, 156, 157, 222, 223, 160, 224, 162, 02989 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, 02990 0, 0, 0, 0, 0, 0, 164, 165, 166, 167, 02991 168, 169, 170, 171, 172, 0, 0, 173, 174, 0, 02992 0, 175, 176, 177, 178, 0, 0, 0, 0, 0, 02993 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 02994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02995 0, 0, 0, 0, 0, 0, 180, 181, 182, 183, 02996 184, 185, 186, 187, 188, 189, 0, 190, 191, 0, 02997 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 02998 0, 0, 0, 0, 0, 192, 15, 0, 101, 102, 02999 18, 19, 0, 0, 0, 0, 0, 103, 104, 105, 03000 23, 24, 25, 26, 0, 0, 106, 0, 0, 0, 03001 0, 0, 0, 0, 0, 31, 32, 0, 33, 34, 03002 35, 36, 37, 38, 0, 39, 40, 41, 0, 0, 03003 42, 0, 0, 43, 44, 0, 0, 0, 0, 0, 03004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03005 0, 0, 0, 0, 0, 0, 286, 0, 0, 111, 03006 49, 0, 50, 51, 0, 0, 0, 53, 54, 55, 03007 56, 57, 58, 59, 0, 0, 60, 0, 0, 5, 03008 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 03009 0, 0, 0, 0, 0, 15, 112, 101, 102, 18, 03010 19, 0, 0, 0, 0, 0, 103, 104, 105, 23, 03011 24, 25, 26, 0, 287, 106, 0, 0, 0, 0, 03012 0, 0, 0, 0, 31, 32, 0, 33, 34, 35, 03013 36, 37, 38, 0, 39, 40, 41, 0, 0, 42, 03014 0, 0, 43, 44, 0, 0, 0, 0, 0, 0, 03015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03016 0, 0, 0, 0, 0, 286, 0, 0, 111, 49, 03017 0, 50, 51, 0, 0, 0, 53, 54, 55, 56, 03018 57, 58, 59, 0, 0, 60, 0, 0, 5, 6, 03019 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 03020 0, 0, 0, 0, 15, 112, 101, 102, 18, 19, 03021 0, 0, 0, 0, 0, 103, 104, 105, 23, 24, 03022 25, 26, 0, 529, 106, 0, 0, 0, 0, 0, 03023 0, 0, 0, 31, 32, 0, 33, 34, 35, 36, 03024 37, 38, 238, 39, 40, 41, 0, 0, 42, 0, 03025 0, 43, 44, 0, 45, 46, 0, 0, 0, 0, 03026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03027 0, 0, 0, 0, 200, 0, 0, 111, 49, 0, 03028 50, 51, 0, 633, 240, 53, 54, 55, 56, 57, 03029 58, 59, 0, 0, 60, 499, 0, 0, 500, 501, 03030 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 03031 14, 0, 0, 0, 61, 241, 63, 15, 0, 16, 03032 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 03033 22, 23, 24, 25, 26, 0, 0, 27, 0, 0, 03034 0, 0, 0, 28, 29, 30, 31, 32, 0, 33, 03035 34, 35, 36, 37, 38, 0, 39, 40, 41, 0, 03036 0, 42, 0, 0, 43, 44, 0, 45, 46, 0, 03037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03038 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 03039 48, 49, 0, 50, 51, 0, 52, 0, 53, 54, 03040 55, 56, 57, 58, 59, 0, 0, 60, 0, 0, 03041 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 03042 11, 12, 13, 0, 0, 0, 0, 61, 62, 63, 03043 15, 0, 101, 102, 18, 19, 0, 0, 0, 0, 03044 0, 103, 104, 105, 23, 24, 25, 26, 0, 0, 03045 106, 0, 0, 0, 0, 0, 0, 0, 0, 31, 03046 32, 0, 33, 34, 35, 36, 37, 38, 238, 39, 03047 40, 41, 0, 0, 42, 0, 0, 43, 44, 0, 03048 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 03049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03050 200, 0, 0, 111, 49, 0, 50, 51, 0, 633, 03051 0, 53, 54, 55, 56, 57, 58, 59, 0, 0, 03052 60, 499, 0, 0, 500, 501, 0, 5, 6, 7, 03053 8, 9, 10, 11, 12, 13, 14, 0, 0, 0, 03054 61, 241, 63, 15, 0, 16, 17, 18, 19, 0, 03055 0, 0, 0, 0, 20, 21, 22, 23, 24, 25, 03056 26, 0, 0, 27, 0, 0, 0, 0, 0, 28, 03057 0, 30, 31, 32, 0, 33, 34, 35, 36, 37, 03058 38, 0, 39, 40, 41, 0, 0, 42, 0, 0, 03059 43, 44, 0, 45, 46, 0, 0, 0, 0, 0, 03060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03061 0, 0, 0, 47, 0, 0, 48, 49, 0, 50, 03062 51, 0, 52, 0, 53, 54, 55, 56, 57, 58, 03063 59, 0, 0, 60, 0, 0, 0, 0, 0, 0, 03064 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 03065 0, 0, 0, 61, 62, 63, 15, 0, 101, 102, 03066 18, 19, 0, 0, 0, 0, 0, 103, 104, 105, 03067 23, 24, 25, 26, 0, 0, 106, 0, 0, 0, 03068 0, 0, 0, 0, 0, 31, 32, 0, 33, 34, 03069 35, 36, 37, 38, 0, 39, 40, 41, 0, 0, 03070 42, 0, 0, 43, 44, 0, 45, 46, 0, 0, 03071 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03072 0, 0, 0, 0, 0, 0, 200, 0, 0, 111, 03073 49, 0, 50, 51, 0, 756, 0, 53, 54, 55, 03074 56, 57, 58, 59, 0, 0, 60, 499, 0, 0, 03075 500, 501, 0, 5, 6, 7, 8, 9, 10, 11, 03076 12, 13, 0, 0, 0, 0, 61, 241, 63, 15, 03077 0, 101, 102, 18, 19, 0, 0, 0, 0, 0, 03078 103, 104, 105, 23, 24, 25, 26, 0, 0, 106, 03079 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 03080 0, 33, 34, 35, 36, 37, 38, 0, 39, 40, 03081 41, 0, 0, 42, 0, 0, 43, 44, 0, 45, 03082 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03083 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 03084 0, 0, 111, 49, 0, 50, 51, 0, 792, 0, 03085 53, 54, 55, 56, 57, 58, 59, 0, 0, 60, 03086 499, 0, 0, 500, 501, 0, 5, 6, 7, 8, 03087 9, 10, 11, 12, 13, 0, 0, 0, 0, 61, 03088 241, 63, 15, 0, 101, 102, 18, 19, 0, 0, 03089 0, 0, 0, 103, 104, 105, 23, 24, 25, 26, 03090 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 03091 0, 31, 32, 0, 33, 34, 35, 36, 37, 38, 03092 0, 39, 40, 41, 0, 0, 42, 0, 0, 43, 03093 44, 0, 45, 46, 0, 0, 0, 0, 0, 0, 03094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03095 0, 0, 200, 0, 0, 111, 49, 0, 50, 51, 03096 0, 633, 0, 53, 54, 55, 56, 57, 58, 59, 03097 0, 0, 60, 499, 0, 0, 500, 501, 0, 5, 03098 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 03099 0, 0, 61, 241, 63, 15, 0, 16, 17, 18, 03100 19, 0, 0, 0, 0, 0, 20, 21, 22, 23, 03101 24, 25, 26, 0, 0, 106, 0, 0, 0, 0, 03102 0, 0, 0, 0, 31, 32, 0, 33, 34, 35, 03103 36, 37, 38, 238, 39, 40, 41, 0, 0, 42, 03104 0, 0, 43, 44, 0, 45, 46, 0, 0, 0, 03105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03106 0, 0, 0, 0, 0, 200, 0, 0, 111, 49, 03107 0, 50, 51, 0, 239, 240, 53, 54, 55, 56, 03108 57, 58, 59, 0, 0, 60, 0, 0, 0, 0, 03109 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 03110 13, 0, 0, 0, 0, 61, 241, 63, 15, 0, 03111 101, 102, 18, 19, 0, 0, 0, 0, 0, 103, 03112 104, 105, 23, 24, 25, 26, 0, 0, 106, 0, 03113 0, 0, 0, 0, 0, 0, 0, 31, 32, 0, 03114 33, 34, 35, 36, 37, 38, 238, 39, 40, 41, 03115 0, 0, 42, 0, 0, 43, 44, 0, 45, 46, 03116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03117 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 03118 0, 111, 49, 0, 50, 51, 0, 239, 0, 53, 03119 54, 55, 56, 57, 58, 59, 0, 0, 60, 0, 03120 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, 03121 10, 11, 12, 13, 0, 0, 0, 0, 61, 241, 03122 63, 15, 0, 101, 102, 18, 19, 0, 0, 0, 03123 0, 0, 103, 104, 105, 23, 24, 25, 26, 0, 03124 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 03125 31, 32, 0, 33, 34, 35, 36, 37, 38, 238, 03126 39, 40, 41, 0, 0, 42, 0, 0, 43, 44, 03127 0, 45, 46, 0, 0, 0, 0, 0, 0, 0, 03128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03129 0, 200, 0, 0, 111, 49, 0, 50, 51, 0, 03130 0, 240, 53, 54, 55, 56, 57, 58, 59, 0, 03131 0, 60, 0, 0, 0, 0, 0, 0, 5, 6, 03132 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 03133 0, 61, 241, 63, 15, 0, 101, 102, 18, 19, 03134 0, 0, 0, 0, 0, 103, 104, 105, 23, 24, 03135 25, 26, 0, 0, 106, 0, 0, 0, 0, 0, 03136 0, 0, 0, 31, 32, 0, 33, 34, 35, 36, 03137 37, 38, 238, 39, 40, 41, 0, 0, 42, 0, 03138 0, 43, 44, 0, 45, 46, 0, 0, 0, 0, 03139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03140 0, 0, 0, 0, 200, 0, 0, 111, 49, 0, 03141 50, 51, 0, 0, 0, 53, 54, 55, 56, 57, 03142 58, 59, 0, 0, 60, 0, 0, 0, 0, 0, 03143 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 03144 0, 0, 0, 0, 61, 241, 63, 15, 0, 16, 03145 17, 18, 19, 0, 0, 0, 0, 0, 20, 21, 03146 22, 23, 24, 25, 26, 0, 0, 106, 0, 0, 03147 0, 0, 0, 0, 0, 0, 31, 32, 0, 33, 03148 34, 35, 36, 37, 38, 0, 39, 40, 41, 0, 03149 0, 42, 0, 0, 43, 44, 0, 45, 46, 0, 03150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03151 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 03152 111, 49, 0, 50, 51, 0, 523, 0, 53, 54, 03153 55, 56, 57, 58, 59, 0, 0, 60, 0, 0, 03154 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 03155 11, 12, 13, 0, 0, 0, 0, 61, 241, 63, 03156 15, 0, 101, 102, 18, 19, 0, 0, 0, 0, 03157 0, 103, 104, 105, 23, 24, 25, 26, 0, 0, 03158 106, 0, 0, 0, 0, 0, 0, 0, 0, 31, 03159 32, 0, 33, 34, 35, 36, 37, 38, 0, 39, 03160 40, 41, 0, 0, 42, 0, 0, 43, 44, 0, 03161 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 03162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03163 200, 0, 0, 111, 49, 0, 50, 51, 0, 239, 03164 0, 53, 54, 55, 56, 57, 58, 59, 0, 0, 03165 60, 0, 0, 0, 0, 0, 0, 5, 6, 7, 03166 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 03167 61, 241, 63, 15, 0, 101, 102, 18, 19, 0, 03168 0, 0, 0, 0, 103, 104, 105, 23, 24, 25, 03169 26, 0, 0, 106, 0, 0, 0, 0, 0, 0, 03170 0, 0, 31, 32, 0, 33, 34, 35, 36, 37, 03171 38, 0, 39, 40, 41, 0, 0, 42, 0, 0, 03172 43, 44, 0, 45, 46, 0, 0, 0, 0, 0, 03173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03174 0, 0, 0, 200, 0, 0, 111, 49, 0, 50, 03175 51, 0, 523, 0, 53, 54, 55, 56, 57, 58, 03176 59, 0, 0, 60, 0, 0, 0, 0, 0, 0, 03177 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 03178 0, 0, 0, 61, 241, 63, 15, 0, 16, 17, 03179 18, 19, 0, 0, 0, 0, 0, 20, 21, 22, 03180 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, 03181 0, 0, 0, 0, 0, 31, 32, 0, 33, 34, 03182 35, 36, 37, 38, 0, 39, 40, 41, 0, 0, 03183 42, 0, 0, 43, 44, 0, 45, 46, 0, 0, 03184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03185 0, 0, 0, 0, 0, 0, 200, 0, 0, 111, 03186 49, 0, 50, 51, 0, 0, 0, 53, 54, 55, 03187 56, 57, 58, 59, 0, 0, 60, 0, 0, 0, 03188 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, 03189 12, 13, 0, 0, 0, 0, 61, 62, 63, 15, 03190 0, 101, 102, 18, 19, 0, 0, 0, 0, 0, 03191 103, 104, 105, 23, 24, 25, 26, 0, 0, 106, 03192 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 03193 0, 33, 34, 35, 36, 37, 38, 0, 39, 40, 03194 41, 0, 0, 42, 0, 0, 43, 44, 0, 45, 03195 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03196 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 03197 0, 0, 111, 49, 0, 50, 51, 0, 0, 0, 03198 53, 54, 55, 56, 57, 58, 59, 0, 0, 60, 03199 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, 03200 9, 10, 11, 12, 13, 0, 0, 0, 0, 61, 03201 241, 63, 15, 0, 16, 17, 18, 19, 0, 0, 03202 0, 0, 0, 20, 21, 22, 23, 24, 25, 26, 03203 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 03204 0, 31, 32, 0, 33, 34, 35, 36, 37, 38, 03205 0, 39, 40, 41, 0, 0, 42, 0, 0, 43, 03206 44, 0, 45, 46, 0, 0, 0, 0, 0, 0, 03207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03208 0, 0, 200, 0, 0, 111, 49, 0, 50, 51, 03209 0, 0, 0, 53, 54, 55, 56, 57, 58, 59, 03210 0, 0, 60, 0, 0, 0, 0, 0, 0, 5, 03211 6, 7, 8, 9, 10, 11, 12, 13, 0, 0, 03212 0, 0, 61, 241, 63, 15, 0, 101, 102, 18, 03213 19, 0, 0, 0, 0, 0, 103, 104, 105, 23, 03214 24, 25, 26, 0, 0, 106, 0, 0, 0, 0, 03215 0, 0, 0, 0, 31, 32, 0, 107, 34, 35, 03216 36, 108, 38, 0, 39, 40, 41, 0, 0, 42, 03217 0, 0, 43, 44, 0, 0, 0, 0, 0, 0, 03218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03219 0, 0, 109, 0, 0, 110, 0, 0, 111, 49, 03220 0, 50, 51, 0, 0, 0, 53, 54, 55, 56, 03221 57, 58, 59, 0, 0, 60, 0, 0, 5, 6, 03222 7, 8, 9, 10, 11, 12, 13, 0, 0, 0, 03223 0, 0, 0, 0, 15, 112, 101, 102, 18, 19, 03224 0, 0, 0, 0, 0, 103, 104, 105, 23, 24, 03225 25, 26, 0, 0, 106, 0, 0, 0, 0, 0, 03226 0, 0, 0, 31, 32, 0, 33, 34, 35, 36, 03227 37, 38, 0, 39, 40, 41, 0, 0, 42, 0, 03228 0, 43, 44, 0, 0, 0, 0, 0, 0, 0, 03229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03230 0, 0, 0, 0, 211, 0, 0, 48, 49, 0, 03231 50, 51, 0, 52, 0, 53, 54, 55, 56, 57, 03232 58, 59, 0, 0, 60, 0, 0, 5, 6, 7, 03233 8, 9, 10, 11, 12, 13, 0, 0, 0, 0, 03234 0, 0, 0, 15, 112, 101, 102, 18, 19, 0, 03235 0, 0, 0, 0, 103, 104, 105, 23, 24, 25, 03236 26, 0, 0, 106, 0, 0, 0, 0, 0, 0, 03237 0, 0, 31, 32, 0, 33, 34, 35, 36, 37, 03238 38, 0, 39, 40, 41, 0, 0, 42, 0, 0, 03239 43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 03240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03241 0, 0, 0, 286, 0, 0, 333, 49, 0, 50, 03242 51, 0, 334, 0, 53, 54, 55, 56, 57, 58, 03243 59, 0, 0, 60, 0, 0, 5, 6, 7, 8, 03244 9, 10, 11, 12, 13, 0, 0, 0, 0, 0, 03245 0, 0, 15, 112, 101, 102, 18, 19, 0, 0, 03246 0, 0, 0, 103, 104, 105, 23, 24, 25, 26, 03247 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 03248 0, 31, 32, 0, 107, 34, 35, 36, 108, 38, 03249 0, 39, 40, 41, 0, 0, 42, 0, 0, 43, 03250 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03252 0, 0, 110, 0, 0, 111, 49, 0, 50, 51, 03253 0, 0, 0, 53, 54, 55, 56, 57, 58, 59, 03254 0, 0, 60, 0, 0, 5, 6, 7, 8, 9, 03255 10, 11, 12, 13, 0, 0, 0, 0, 0, 0, 03256 0, 15, 112, 101, 102, 18, 19, 0, 0, 0, 03257 0, 0, 103, 104, 105, 23, 24, 25, 26, 0, 03258 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 03259 31, 32, 0, 33, 34, 35, 36, 37, 38, 0, 03260 39, 40, 41, 0, 0, 42, 0, 0, 43, 44, 03261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03263 0, 286, 0, 0, 333, 49, 0, 50, 51, 0, 03264 0, 0, 53, 54, 55, 56, 57, 58, 59, 0, 03265 0, 60, 0, 0, 5, 6, 7, 8, 9, 10, 03266 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 03267 15, 112, 101, 102, 18, 19, 0, 0, 0, 0, 03268 0, 103, 104, 105, 23, 24, 25, 26, 0, 0, 03269 106, 0, 0, 0, 0, 0, 0, 0, 0, 31, 03270 32, 0, 33, 34, 35, 36, 37, 38, 0, 39, 03271 40, 41, 0, 0, 42, 0, 0, 43, 44, 0, 03272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03274 863, 0, 0, 111, 49, 0, 50, 51, 0, 0, 03275 0, 53, 54, 55, 56, 57, 58, 59, 0, 0, 03276 60, 0, 0, 5, 6, 7, 8, 9, 10, 11, 03277 12, 13, 0, 0, 0, 0, 0, 0, 0, 15, 03278 112, 101, 102, 18, 19, 0, 0, 0, 0, 0, 03279 103, 104, 105, 23, 24, 25, 26, 0, 0, 106, 03280 0, 0, 0, 0, 0, 0, 0, 0, 31, 32, 03281 0, 33, 34, 35, 36, 37, 38, 0, 39, 40, 03282 41, 0, 0, 42, 0, 0, 43, 44, 0, 337, 03283 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 03284 -556, -556, 0, 0, 350, 351, 0, 0, 0, 881, 03285 0, 0, 111, 49, 0, 50, 51, 0, 0, 0, 03286 53, 54, 55, 56, 57, 58, 59, 0, 0, 60, 03287 0, 0, 572, 573, 0, 0, 574, 353, 354, 355, 03288 356, 357, 358, 359, 360, 361, 362, 0, 0, 112, 03289 164, 165, 166, 167, 168, 169, 170, 171, 172, 0, 03290 0, 173, 174, 0, 0, 175, 176, 177, 178, 0, 03291 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 03292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03293 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03294 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 03295 0, 190, 191, 593, 565, 0, 0, 594, 0, 0, 03296 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 03297 255, 164, 165, 166, 167, 168, 169, 170, 171, 172, 03298 0, 0, 173, 174, 0, 0, 175, 176, 177, 178, 03299 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03300 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03302 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 03303 189, 0, 190, 191, 578, 573, 0, 0, 579, 0, 03304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03305 192, 255, 164, 165, 166, 167, 168, 169, 170, 171, 03306 172, 0, 0, 173, 174, 0, 0, 175, 176, 177, 03307 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03308 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 03309 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03310 0, 0, 180, 181, 182, 183, 184, 185, 186, 187, 03311 188, 189, 0, 190, 191, 610, 565, 0, 0, 611, 03312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03313 0, 192, 255, 164, 165, 166, 167, 168, 169, 170, 03314 171, 172, 0, 0, 173, 174, 0, 0, 175, 176, 03315 177, 178, 0, 0, 0, 0, 0, 0, 0, 0, 03316 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 03317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03318 0, 0, 0, 180, 181, 182, 183, 184, 185, 186, 03319 187, 188, 189, 0, 190, 191, 613, 573, 0, 0, 03320 614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03321 0, 0, 192, 255, 164, 165, 166, 167, 168, 169, 03322 170, 171, 172, 0, 0, 173, 174, 0, 0, 175, 03323 176, 177, 178, 0, 0, 0, 0, 0, 0, 0, 03324 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 03325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03326 0, 0, 0, 0, 180, 181, 182, 183, 184, 185, 03327 186, 187, 188, 189, 0, 190, 191, 620, 565, 0, 03328 0, 621, 0, 0, 0, 0, 0, 0, 0, 0, 03329 0, 0, 0, 192, 255, 164, 165, 166, 167, 168, 03330 169, 170, 171, 172, 0, 0, 173, 174, 0, 0, 03331 175, 176, 177, 178, 0, 0, 0, 0, 0, 0, 03332 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 03333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03334 0, 0, 0, 0, 0, 180, 181, 182, 183, 184, 03335 185, 186, 187, 188, 189, 0, 190, 191, 623, 573, 03336 0, 0, 624, 0, 0, 0, 0, 0, 0, 0, 03337 0, 0, 0, 0, 192, 255, 164, 165, 166, 167, 03338 168, 169, 170, 171, 172, 0, 0, 173, 174, 0, 03339 0, 175, 176, 177, 178, 0, 0, 0, 0, 0, 03340 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 03341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03342 0, 0, 0, 0, 0, 0, 180, 181, 182, 183, 03343 184, 185, 186, 187, 188, 189, 0, 190, 191, 655, 03344 565, 0, 0, 656, 0, 0, 0, 0, 0, 0, 03345 0, 0, 0, 0, 0, 192, 255, 164, 165, 166, 03346 167, 168, 169, 170, 171, 172, 0, 0, 173, 174, 03347 0, 0, 175, 176, 177, 178, 0, 0, 0, 0, 03348 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 03349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03350 0, 0, 0, 0, 0, 0, 0, 180, 181, 182, 03351 183, 184, 185, 186, 187, 188, 189, 0, 190, 191, 03352 658, 573, 0, 0, 659, 0, 0, 0, 0, 0, 03353 0, 0, 0, 0, 0, 0, 192, 255, 164, 165, 03354 166, 167, 168, 169, 170, 171, 172, 0, 0, 173, 03355 174, 0, 0, 175, 176, 177, 178, 0, 0, 0, 03356 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 03357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03358 0, 0, 0, 0, 0, 0, 0, 0, 180, 181, 03359 182, 183, 184, 185, 186, 187, 188, 189, 0, 190, 03360 191, 939, 565, 0, 0, 940, 0, 0, 0, 0, 03361 0, 0, 0, 0, 0, 0, 0, 192, 255, 164, 03362 165, 166, 167, 168, 169, 170, 171, 172, 0, 0, 03363 173, 174, 0, 0, 175, 176, 177, 178, 0, 0, 03364 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 03365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03366 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 03367 181, 182, 183, 184, 185, 186, 187, 188, 189, 0, 03368 190, 191, 946, 565, 0, 0, 947, 0, 0, 0, 03369 0, 0, 0, 0, 0, 0, 0, 0, 192, 255, 03370 164, 165, 166, 167, 168, 169, 170, 171, 172, 0, 03371 0, 173, 174, 0, 0, 175, 176, 177, 178, 0, 03372 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 03373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03375 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 03376 0, 190, 191, 949, 573, 0, 0, 950, 0, 0, 03377 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 03378 255, 164, 165, 166, 167, 168, 169, 170, 171, 172, 03379 0, 0, 173, 174, 0, 0, 175, 176, 177, 178, 03380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03381 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03383 0, 180, 181, 182, 183, 184, 185, 186, 187, 188, 03384 189, 0, 190, 191, 578, 573, 0, 0, 579, 0, 03385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03386 192, 255, 164, 165, 166, 167, 168, 169, 170, 171, 03387 172, 0, 0, 173, 174, 0, 0, 175, 176, 177, 03388 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03389 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 03390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03391 0, 0, 180, 181, 182, 183, 184, 185, 186, 187, 03392 188, 189, 0, 190, 191, 0, 0, 0, 0, 0, 03393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 03394 0, 192 03395 }; 03396 03397 static const yytype_int16 yycheck[] = 03398 { 03399 2, 83, 27, 16, 17, 248, 7, 20, 28, 208, 03400 5, 6, 292, 292, 62, 22, 417, 287, 13, 22, 03401 280, 76, 14, 10, 284, 258, 364, 390, 15, 48, 03402 425, 16, 17, 428, 15, 20, 28, 2, 408, 4, 03403 273, 52, 428, 336, 277, 336, 4, 691, 50, 51, 03404 388, 110, 605, 54, 468, 48, 363, 52, 365, 1, 03405 676, 368, 615, 597, 402, 50, 51, 65, 767, 65, 03406 26, 16, 17, 411, 460, 20, 765, 25, 612, 672, 03407 477, 76, 389, 16, 65, 672, 846, 27, 622, 676, 03408 16, 98, 111, 25, 401, 98, 403, 691, 105, 269, 03409 16, 581, 582, 865, 691, 412, 304, 26, 79, 29, 03410 116, 18, 119, 20, 90, 529, 88, 16, 17, 16, 03411 0, 20, 363, 657, 365, 88, 88, 368, 150, 25, 03412 90, 153, 470, 114, 16, 71, 706, 88, 502, 446, 03413 116, 147, 88, 713, 16, 55, 387, 28, 389, 88, 03414 121, 50, 143, 842, 55, 90, 116, 25, 147, 15, 03415 401, 116, 403, 333, 471, 25, 37, 38, 928, 410, 03416 149, 412, 25, 935, 146, 149, 25, 90, 120, 153, 03417 25, 116, 145, 146, 146, 88, 149, 143, 108, 783, 03418 126, 127, 128, 149, 437, 146, 895, 430, 468, 147, 03419 146, 434, 482, 482, 445, 446, 439, 146, 897, 65, 03420 152, 153, 152, 153, 147, 147, 449, 861, 416, 152, 03421 153, 865, 209, 210, 143, 226, 152, 153, 469, 592, 03422 471, 116, 287, 849, 149, 233, 152, 153, 927, 252, 03423 720, 254, 255, 146, 263, 247, 248, 642, 643, 149, 03424 269, 147, 233, 255, 116, 152, 153, 643, 114, 529, 03425 853, 88, 849, 25, 628, 662, 663, 252, 861, 254, 03426 152, 153, 636, 271, 861, 271, 269, 149, 865, 147, 03427 152, 153, 153, 331, 837, 699, 88, 147, 336, 149, 03428 271, 935, 287, 90, 147, 528, 149, 2, 147, 4, 03429 5, 6, 147, 268, 9, 10, 88, 252, 13, 254, 03430 15, 16, 17, 604, 333, 20, 88, 55, 145, 146, 03431 88, 147, 601, 334, 372, 373, 147, 153, 387, 51, 03432 58, 59, 153, 55, 25, 322, 323, 324, 325, 334, 03433 333, 26, 25, 48, 146, 20, 202, 52, 935, 152, 03434 153, 364, 208, 252, 116, 254, 321, 62, 365, 88, 03435 147, 326, 364, 321, 146, 728, 153, 600, 765, 90, 03436 767, 76, 147, 145, 146, 388, 26, 233, 146, 398, 03437 750, 152, 389, 91, 90, 147, 388, 406, 150, 402, 03438 147, 153, 652, 395, 637, 116, 403, 147, 411, 143, 03439 402, 71, 383, 88, 109, 412, 111, 700, 88, 411, 03440 116, 466, 691, 468, 948, 271, 145, 146, 651, 88, 03441 26, 153, 442, 279, 280, 116, 407, 408, 284, 699, 03442 150, 630, 331, 666, 436, 437, 837, 336, 88, 446, 03443 425, 443, 116, 90, 839, 842, 843, 727, 727, 88, 03444 442, 88, 815, 839, 88, 151, 147, 470, 143, 150, 03445 145, 146, 153, 144, 471, 145, 146, 88, 470, 116, 03446 55, 466, 457, 468, 529, 88, 145, 146, 443, 498, 03447 110, 147, 88, 113, 114, 147, 488, 452, 90, 491, 03448 71, 493, 71, 143, 199, 145, 146, 97, 895, 149, 03449 897, 15, 88, 13, 209, 210, 145, 146, 145, 146, 03450 88, 145, 146, 16, 116, 63, 759, 880, 15, 418, 03451 522, 150, 26, 147, 145, 146, 144, 383, 553, 90, 03452 927, 764, 145, 146, 529, 90, 147, 143, 147, 145, 03453 146, 116, 821, 149, 147, 147, 571, 252, 147, 254, 03454 255, 407, 408, 258, 259, 116, 37, 38, 263, 145, 03455 146, 116, 569, 268, 269, 51, 569, 145, 146, 51, 03456 577, 276, 597, 580, 577, 577, 147, 580, 580, 581, 03457 582, 147, 287, 921, 88, 818, 147, 612, 63, 596, 03458 110, 598, 147, 113, 114, 147, 598, 622, 58, 59, 03459 147, 602, 604, 605, 591, 607, 626, 51, 589, 53, 03460 54, 55, 56, 615, 90, 922, 321, 322, 323, 324, 03461 325, 326, 327, 328, 823, 116, 331, 90, 333, 334, 03462 829, 336, 657, 715, 626, 637, 18, 90, 625, 143, 03463 116, 145, 146, 668, 699, 149, 62, 15, 64, 65, 03464 669, 670, 700, 116, 71, 703, 704, 642, 15, 364, 03465 144, 709, 710, 116, 147, 684, 691, 372, 373, 147, 03466 911, 147, 51, 692, 53, 54, 55, 56, 144, 920, 03467 118, 922, 151, 388, 147, 390, 391, 62, 15, 64, 03468 65, 17, 18, 398, 147, 111, 112, 402, 717, 718, 03469 91, 406, 14, 147, 699, 604, 411, 124, 125, 126, 03470 127, 128, 56, 57, 58, 59, 735, 15, 720, 15, 03471 61, 147, 147, 64, 65, 152, 150, 15, 747, 748, 03472 144, 733, 147, 589, 736, 754, 111, 112, 443, 147, 03473 147, 722, 147, 9, 10, 144, 147, 452, 729, 15, 03474 121, 738, 147, 147, 15, 803, 15, 759, 783, 147, 03475 144, 466, 15, 468, 15, 470, 15, 147, 147, 750, 03476 111, 112, 774, 775, 630, 777, 121, 779, 780, 55, 03477 63, 64, 65, 785, 147, 144, 788, 789, 15, 147, 03478 15, 786, 55, 498, 61, 814, 652, 64, 65, 51, 03479 147, 53, 54, 55, 56, 147, 71, 826, 51, 147, 03480 53, 54, 55, 56, 147, 15, 147, 149, 2, 149, 03481 4, 86, 87, 443, 529, 9, 10, 822, 111, 112, 03482 13, 15, 16, 17, 6, 837, 20, 580, 924, 662, 03483 92, 928, 716, 109, 111, 112, 98, 99, 51, 92, 03484 53, 54, 55, 56, 923, 98, 99, 7, 123, 124, 03485 125, 126, 127, 128, 48, 672, 722, 886, 504, 888, 03486 198, 123, 891, 729, 126, 900, -1, 821, 62, 491, 03487 123, 493, -1, 126, 71, -1, 591, 592, 51, 92, 03488 53, 54, 55, 56, 750, 98, -1, 149, -1, 86, 03489 87, 903, 904, 905, 906, -1, 908, 909, 921, 861, 03490 912, -1, 914, 915, -1, 922, -1, -1, -1, 921, 03491 625, 923, 924, 948, -1, 109, -1, 111, 51, 92, 03492 53, 54, 55, 56, -1, 98, 99, 124, 125, 126, 03493 127, 128, -1, 209, 210, 51, -1, 51, -1, 53, 03494 54, 55, 56, -1, 956, 957, 958, 959, 960, -1, 03495 123, -1, -1, 126, 669, 670, 968, 823, -1, 92, 03496 63, 64, 65, 829, -1, -1, 99, -1, -1, 684, 03497 -1, 676, -1, -1, 679, -1, -1, 692, 92, -1, 03498 153, -1, 258, 259, 699, 700, 691, -1, 703, 704, 03499 123, -1, -1, -1, 709, 710, 63, 64, 65, -1, 03500 276, -1, 717, 718, -1, 199, -1, -1, 111, 112, 03501 -1, -1, -1, 728, -1, 209, 210, -1, -1, -1, 03502 735, -1, -1, 738, 63, 64, 65, -1, 63, 64, 03503 65, -1, 747, 748, -1, 63, 64, 65, 51, 754, 03504 53, 54, 55, 56, 111, 112, 322, 323, 324, 325, 03505 -1, 327, 328, 40, 41, 42, 43, 44, 252, -1, 03506 254, 255, -1, -1, 258, 259, -1, -1, -1, 263, 03507 -1, 786, 111, 112, 268, 269, 111, 112, -1, 92, 03508 -1, -1, 276, 111, 112, 98, 99, -1, 803, -1, 03509 -1, -1, 63, 64, 65, -1, -1, -1, -1, 814, 03510 815, 2, -1, 4, 5, 6, 7, 822, -1, -1, 03511 123, 826, 13, 126, 51, 391, 53, 54, 55, 56, 03512 -1, -1, 238, 239, 240, -1, -1, 321, 322, 323, 03513 324, 325, 326, 327, 328, -1, 149, 331, -1, 333, 03514 111, 112, 336, -1, 849, -1, 851, 48, -1, -1, 03515 855, 52, 774, 775, -1, 777, -1, 779, 780, -1, 03516 865, -1, 867, 785, -1, 880, 788, 789, -1, -1, 03517 364, 886, -1, 888, -1, 76, 891, -1, 372, 373, 03518 51, -1, 53, 54, 55, 56, -1, -1, -1, -1, 03519 297, -1, -1, -1, 388, -1, 390, 391, 305, -1, 03520 -1, 308, -1, 310, 398, 312, 921, 314, 402, -1, 03521 111, -1, 406, -1, -1, 331, -1, 411, -1, -1, 03522 336, 92, -1, -1, -1, -1, 931, 98, 0, -1, 03523 935, -1, 937, -1, -1, -1, -1, 942, -1, -1, 03524 -1, 13, 14, 15, 16, 17, 18, -1, 20, 443, 03525 -1, -1, -1, -1, 26, 27, -1, -1, 452, 964, 03526 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 03527 42, 43, 44, -1, -1, -1, 470, -1, -1, -1, 03528 -1, 903, 904, 905, 906, -1, 908, 909, -1, -1, 03529 912, -1, 914, 915, -1, -1, -1, -1, 199, -1, 03530 -1, -1, 418, -1, 498, -1, -1, -1, 424, 425, 03531 -1, -1, 428, -1, -1, 591, 88, -1, -1, -1, 03532 -1, -1, -1, 16, 17, -1, -1, 20, -1, -1, 03533 -1, -1, -1, -1, 956, 957, 958, 959, 960, 71, 03534 -1, 457, -1, -1, 460, -1, 968, -1, -1, 625, 03535 -1, -1, 45, 46, 86, 87, -1, 50, 51, -1, 03536 -1, -1, 263, -1, -1, -1, -1, 268, 269, 62, 03537 63, 143, 144, 489, 146, -1, -1, 149, 150, -1, 03538 152, 153, -1, -1, -1, -1, 287, -1, -1, 121, 03539 122, 123, 124, 125, 126, 127, 128, 591, 592, 71, 03540 72, 73, 74, 75, 76, 77, 78, 523, 80, 81, 03541 -1, -1, -1, -1, 86, 87, -1, -1, -1, -1, 03542 321, -1, -1, -1, -1, 326, -1, -1, -1, -1, 03543 -1, 625, 333, 334, -1, -1, -1, -1, -1, -1, 03544 -1, -1, -1, -1, -1, -1, -1, 119, 120, 121, 03545 122, 123, 124, 125, 126, 127, 128, -1, -1, -1, 03546 -1, -1, 738, -1, -1, -1, -1, -1, -1, -1, 03547 -1, -1, -1, -1, -1, 669, 670, -1, -1, -1, 03548 -1, -1, -1, -1, -1, -1, -1, -1, 604, 390, 03549 684, -1, -1, -1, -1, -1, -1, 398, 692, -1, 03550 -1, -1, -1, -1, -1, 406, 700, -1, -1, 703, 03551 704, -1, -1, -1, -1, 709, 710, 633, -1, -1, 03552 636, -1, -1, 717, 718, -1, 642, 643, -1, -1, 03553 -1, -1, -1, -1, 728, -1, -1, -1, -1, -1, 03554 -1, 735, 443, -1, 738, 238, 239, 240, 241, -1, 03555 -1, 452, -1, 747, 748, -1, -1, -1, -1, 252, 03556 754, 254, 255, -1, -1, 466, -1, 468, -1, -1, 03557 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03558 696, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03559 -1, -1, -1, -1, -1, -1, -1, 498, -1, -1, 03560 -1, -1, -1, -1, -1, -1, -1, -1, -1, 803, 03561 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03562 814, 815, -1, -1, -1, -1, -1, -1, 529, -1, 03563 -1, -1, 826, -1, -1, -1, -1, 753, 331, -1, 03564 756, -1, -1, 336, 337, 338, 339, 340, 341, 342, 03565 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 03566 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 03567 2, 364, 4, 5, 6, -1, 792, -1, -1, 372, 03568 373, 13, -1, -1, -1, -1, 880, -1, -1, -1, 03569 -1, 592, 886, -1, 888, 388, -1, 891, -1, -1, 03570 -1, -1, -1, -1, -1, -1, -1, 400, -1, 402, 03571 -1, 404, 405, -1, -1, -1, 48, -1, 411, -1, 03572 52, -1, -1, 839, -1, 418, -1, 921, -1, -1, 03573 -1, 424, 425, -1, -1, 428, -1, -1, -1, -1, 03574 -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, 03575 -1, -1, -1, -1, 447, -1, -1, -1, -1, -1, 03576 -1, -1, -1, 2, 457, 4, -1, 460, 669, 670, 03577 -1, -1, -1, -1, 13, -1, -1, 470, -1, 111, 03578 -1, -1, -1, 684, -1, -1, -1, -1, -1, -1, 03579 -1, 692, -1, -1, -1, -1, 489, -1, 699, -1, 03580 -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, 03581 -1, -1, -1, -1, -1, -1, 717, 718, -1, 512, 03582 513, -1, -1, -1, -1, -1, -1, 728, -1, -1, 03583 523, -1, -1, -1, 735, -1, -1, -1, -1, 71, 03584 72, 73, 74, 75, 76, 77, 747, 748, 80, 81, 03585 -1, -1, -1, 754, 86, 87, -1, -1, -1, -1, 03586 -1, -1, 2, -1, 4, -1, -1, 199, -1, -1, 03587 -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, 03588 -1, -1, -1, -1, -1, 786, -1, 119, 120, 121, 03589 122, 123, 124, 125, 126, 127, 128, -1, -1, -1, 03590 -1, -1, -1, -1, -1, -1, -1, -1, 48, -1, 03591 -1, 604, -1, 814, 815, -1, -1, -1, -1, -1, 03592 -1, 822, -1, -1, -1, 826, -1, -1, -1, -1, 03593 -1, 263, -1, -1, -1, -1, 268, 269, -1, -1, 03594 633, -1, -1, 636, -1, -1, -1, -1, -1, 642, 03595 643, -1, -1, -1, -1, 287, -1, -1, -1, -1, 03596 199, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03597 -1, 111, -1, -1, -1, -1, -1, -1, -1, 880, 03598 -1, -1, -1, -1, -1, 886, -1, 888, -1, 321, 03599 891, -1, -1, -1, 326, -1, -1, -1, -1, -1, 03600 -1, 333, 334, 696, -1, -1, -1, 700, 701, -1, 03601 703, 704, -1, -1, -1, -1, 709, 710, -1, -1, 03602 -1, -1, -1, -1, 263, -1, 719, -1, -1, 268, 03603 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03604 -1, -1, -1, -1, -1, -1, -1, -1, 741, 742, 03605 -1, 744, 745, -1, -1, -1, -1, -1, 390, 199, 03606 753, -1, -1, 756, -1, -1, 398, -1, -1, -1, 03607 -1, -1, -1, -1, 406, -1, -1, -1, -1, -1, 03608 -1, -1, 321, -1, -1, -1, -1, 326, -1, -1, 03609 -1, -1, -1, -1, 333, -1, -1, 336, -1, 792, 03610 -1, -1, -1, 796, -1, -1, -1, -1, -1, -1, 03611 803, 443, -1, -1, -1, -1, -1, -1, -1, -1, 03612 452, -1, -1, 263, -1, -1, -1, -1, 268, 269, 03613 -1, -1, -1, -1, 466, -1, 468, -1, 831, -1, 03614 -1, 44, -1, -1, -1, -1, 839, -1, -1, -1, 03615 -1, 390, -1, -1, -1, -1, -1, -1, -1, 398, 03616 -1, -1, -1, -1, -1, -1, 498, 406, 71, 72, 03617 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 03618 83, 321, -1, 86, 87, -1, 326, -1, -1, -1, 03619 -1, -1, -1, 333, -1, -1, -1, 529, -1, -1, 03620 -1, -1, -1, -1, 443, -1, -1, -1, -1, -1, 03621 -1, -1, -1, 452, 117, -1, 119, 120, 121, 122, 03622 123, 124, 125, 126, 127, 128, -1, -1, 921, -1, 03623 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03624 -1, -1, -1, -1, 147, -1, -1, -1, -1, -1, 03625 390, 51, 52, -1, -1, 55, -1, -1, 398, 498, 03626 592, -1, -1, -1, -1, -1, 406, -1, -1, 69, 03627 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, 03628 80, 81, -1, -1, 84, 85, 86, 87, -1, -1, 03629 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, 03630 -1, -1, -1, 443, -1, -1, -1, -1, -1, -1, 03631 -1, -1, 452, -1, -1, -1, -1, -1, -1, 119, 03632 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, 03633 130, 131, -1, -1, -1, -1, -1, 669, 670, -1, 03634 -1, -1, -1, -1, -1, -1, -1, -1, 148, 149, 03635 -1, -1, 684, 592, -1, -1, -1, -1, 498, -1, 03636 692, -1, -1, -1, -1, -1, -1, 699, -1, -1, 03637 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03638 -1, -1, -1, -1, -1, 717, 718, -1, -1, -1, 03639 -1, -1, -1, -1, -1, -1, 728, -1, -1, -1, 03640 -1, -1, -1, 735, -1, -1, -1, -1, -1, -1, 03641 -1, -1, -1, -1, -1, 747, 748, -1, -1, -1, 03642 -1, -1, 754, -1, -1, -1, -1, -1, -1, -1, 03643 669, 670, -1, -1, -1, -1, -1, -1, -1, -1, 03644 -1, -1, -1, -1, -1, 684, -1, -1, -1, -1, 03645 -1, -1, 592, 692, 786, -1, -1, -1, -1, -1, 03646 -1, 700, -1, -1, -1, -1, -1, -1, -1, -1, 03647 -1, -1, -1, -1, -1, -1, -1, -1, 717, 718, 03648 -1, -1, 814, 815, -1, -1, -1, -1, -1, 728, 03649 822, -1, -1, -1, 826, -1, 735, -1, -1, -1, 03650 -1, -1, -1, -1, -1, -1, -1, -1, 747, 748, 03651 -1, -1, -1, -1, -1, 754, 71, 72, 73, 74, 03652 75, 76, 77, 78, 79, 80, 81, 82, 83, 669, 03653 670, 86, 87, -1, -1, -1, -1, -1, -1, -1, 03654 -1, -1, -1, -1, 684, -1, -1, -1, 880, -1, 03655 -1, -1, 692, -1, 886, -1, 888, -1, -1, 891, 03656 -1, -1, 117, -1, 119, 120, 121, 122, 123, 124, 03657 125, 126, 127, 128, -1, 814, 815, 717, 718, -1, 03658 -1, -1, -1, 822, -1, -1, -1, 826, 728, -1, 03659 -1, -1, -1, -1, -1, 735, -1, -1, 153, -1, 03660 -1, -1, -1, -1, -1, -1, -1, 747, 748, -1, 03661 -1, -1, -1, -1, 754, -1, -1, -1, -1, -1, 03662 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03663 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03664 -1, 880, -1, -1, -1, -1, -1, 886, -1, 888, 03665 -1, -1, 891, -1, -1, -1, -1, -1, -1, -1, 03666 0, 1, -1, 3, 4, 5, 6, 7, 8, 9, 03667 10, 11, 12, -1, 814, 815, -1, -1, -1, 19, 03668 -1, 21, 22, 23, 24, -1, 826, -1, -1, -1, 03669 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, 03670 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 03671 -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, 03672 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 03673 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03674 880, -1, -1, -1, -1, -1, 886, -1, 888, 89, 03675 -1, 891, 92, 93, -1, 95, 96, 0, 98, -1, 03676 100, 101, 102, 103, 104, 105, 106, -1, -1, 109, 03677 13, 14, 15, 16, 17, 18, -1, 20, -1, -1, 03678 -1, -1, -1, -1, 27, 28, 29, -1, -1, 129, 03679 130, 131, -1, -1, 37, 38, -1, 40, 41, 42, 03680 43, 44, -1, -1, -1, -1, -1, -1, -1, -1, 03681 -1, -1, 152, 153, -1, -1, -1, -1, -1, -1, 03682 -1, -1, -1, -1, -1, -1, -1, -1, 71, 72, 03683 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 03684 83, -1, -1, 86, 87, 88, -1, 90, 91, -1, 03685 -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, 03686 -1, -1, -1, -1, -1, 108, -1, -1, -1, -1, 03687 -1, -1, -1, 116, 117, 118, 119, 120, 121, 122, 03688 123, 124, 125, 126, 127, 128, -1, -1, -1, -1, 03689 -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 03690 -1, 144, 145, 146, 147, -1, -1, 150, 151, 152, 03691 153, 13, 14, 15, 16, 17, 18, -1, 20, -1, 03692 -1, 44, -1, -1, 26, 27, 28, -1, -1, -1, 03693 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41, 03694 42, 43, 44, -1, -1, -1, -1, -1, 71, 72, 03695 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 03696 83, -1, -1, 86, 87, -1, -1, -1, -1, 71, 03697 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 03698 82, 83, -1, -1, 86, 87, 88, -1, -1, 91, 03699 -1, -1, -1, -1, 117, 97, 119, 120, 121, 122, 03700 123, 124, 125, 126, 127, 128, -1, -1, -1, -1, 03701 -1, -1, -1, -1, -1, 117, -1, 119, 120, 121, 03702 122, 123, 124, 125, 126, 127, 128, -1, -1, -1, 03703 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 03704 -1, 143, 144, 145, 146, 147, -1, 149, 150, 151, 03705 152, 153, 13, 14, 15, 16, 17, 18, -1, 20, 03706 -1, -1, 44, -1, -1, -1, 27, 28, 29, -1, 03707 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40, 03708 41, 42, 43, 44, -1, -1, -1, -1, -1, 71, 03709 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 03710 82, 83, -1, -1, 86, 87, -1, -1, -1, -1, 03711 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 03712 81, 82, 83, -1, -1, 86, 87, 88, -1, -1, 03713 91, -1, -1, -1, -1, 117, 97, 119, 120, 121, 03714 122, 123, 124, 125, 126, 127, 128, 108, -1, -1, 03715 -1, -1, -1, -1, -1, -1, 117, 118, 119, 120, 03716 121, 122, 123, 124, 125, 126, 127, 128, -1, -1, 03717 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03718 0, -1, -1, 144, 145, 146, 147, -1, -1, 150, 03719 151, 152, 153, 13, 14, 15, 16, 17, 18, -1, 03720 20, -1, -1, -1, -1, -1, 26, 27, 28, -1, 03721 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, 03722 40, 41, 42, 43, 44, -1, -1, -1, -1, -1, 03723 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 03724 81, 82, 83, -1, -1, 86, 87, -1, -1, -1, 03725 -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, 03726 80, 81, 82, 83, -1, -1, 86, 87, 88, -1, 03727 -1, 91, -1, -1, -1, -1, 117, 97, 119, 120, 03728 121, 122, 123, 124, 125, 126, 127, 128, -1, -1, 03729 -1, -1, -1, -1, -1, -1, -1, 117, -1, 119, 03730 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, 03731 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03732 -1, 0, -1, 143, 144, 145, 146, 147, -1, 149, 03733 150, 151, 152, 153, 13, 14, 15, 16, 17, 18, 03734 -1, 20, -1, -1, -1, -1, -1, -1, 27, 28, 03735 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38, 03736 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1, 03737 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03738 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03739 -1, -1, 71, 72, 73, 74, 75, 76, 77, 78, 03740 79, 80, 81, 82, 83, -1, -1, 86, 87, 88, 03741 -1, -1, 91, 0, -1, -1, -1, -1, 97, -1, 03742 -1, -1, -1, -1, -1, -1, 13, 14, 15, -1, 03743 17, 18, -1, 20, -1, -1, -1, -1, 117, 26, 03744 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 03745 37, 38, -1, 40, 41, 42, 43, 44, -1, -1, 03746 -1, -1, -1, -1, -1, 144, 145, 146, 147, -1, 03747 149, 150, 151, 152, 153, -1, -1, -1, -1, -1, 03748 -1, -1, -1, -1, 71, 72, 73, 74, 75, 76, 03749 77, 78, 79, 80, 81, 82, 83, -1, -1, 86, 03750 87, 88, -1, 90, -1, 0, -1, -1, -1, -1, 03751 -1, -1, -1, -1, -1, -1, -1, -1, 13, 14, 03752 15, -1, 17, 18, -1, 20, -1, -1, -1, 116, 03753 117, -1, 119, 120, 121, 122, 123, 124, 125, 126, 03754 127, 128, 37, 38, -1, 40, 41, 42, 43, 44, 03755 -1, -1, -1, -1, -1, -1, 143, 144, 145, 146, 03756 147, -1, -1, 150, -1, 152, 153, -1, -1, -1, 03757 -1, -1, -1, -1, -1, -1, 71, 72, 73, 74, 03758 75, 76, 77, 78, 79, 80, 81, 82, 83, -1, 03759 -1, 86, 87, 88, -1, 90, -1, -1, -1, -1, 03760 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03762 -1, 116, 117, -1, 119, 120, 121, 122, 123, 124, 03763 125, 126, 127, 128, -1, -1, -1, -1, -1, -1, 03764 -1, -1, -1, -1, -1, -1, -1, -1, -1, 144, 03765 145, 146, 147, -1, -1, 150, -1, 152, 153, 1, 03766 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 03767 12, 13, 14, 15, -1, -1, 18, 19, -1, 21, 03768 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, 03769 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, 03770 -1, -1, -1, 45, -1, 47, 48, 49, -1, 51, 03771 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, 03772 -1, 63, -1, -1, 66, 67, -1, 69, 70, -1, 03773 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03774 -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, 03775 92, 93, -1, 95, 96, -1, 98, -1, 100, 101, 03776 102, 103, 104, 105, 106, -1, -1, 109, -1, -1, 03777 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03778 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131, 03779 -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 03780 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 03781 152, 153, 15, -1, 17, 18, 19, -1, 21, 22, 03782 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, 03783 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, 03784 -1, -1, 45, -1, 47, 48, 49, -1, 51, 52, 03785 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 03786 63, -1, -1, 66, 67, -1, 69, 70, -1, -1, 03787 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03788 -1, -1, -1, -1, -1, -1, 89, -1, -1, 92, 03789 93, -1, 95, 96, -1, 98, -1, 100, 101, 102, 03790 103, 104, 105, 106, -1, -1, 109, -1, -1, -1, 03791 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03792 -1, -1, -1, -1, -1, -1, 129, 130, 131, -1, 03793 -1, -1, -1, -1, 1, -1, 3, 4, 5, 6, 03794 7, 8, 9, 10, 11, 12, -1, -1, 15, 152, 03795 153, 18, 19, 20, 21, 22, 23, 24, -1, -1, 03796 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 03797 -1, -1, 39, -1, -1, -1, -1, -1, 45, -1, 03798 47, 48, 49, -1, 51, 52, 53, 54, 55, 56, 03799 -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 03800 67, -1, 69, 70, -1, -1, -1, -1, -1, -1, 03801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03802 -1, -1, 89, -1, -1, 92, 93, -1, 95, 96, 03803 -1, 98, -1, 100, 101, 102, 103, 104, 105, 106, 03804 -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, 03805 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03806 -1, -1, 129, 130, 131, -1, -1, -1, -1, -1, 03807 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 03808 11, 12, -1, -1, 15, 152, 153, 18, 19, -1, 03809 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, 03810 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, 03811 -1, -1, -1, -1, 45, -1, 47, 48, 49, -1, 03812 51, 52, 53, 54, 55, 56, -1, 58, 59, 60, 03813 -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 03814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03815 -1, -1, -1, -1, -1, -1, -1, -1, 89, -1, 03816 -1, 92, 93, -1, 95, 96, -1, 98, -1, 100, 03817 101, 102, 103, 104, 105, 106, -1, -1, 109, -1, 03818 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5, 03819 6, 7, 8, 9, 10, 11, 12, -1, 129, 130, 03820 131, -1, -1, 19, -1, 21, 22, 23, 24, -1, 03821 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 03822 36, 152, 153, 39, -1, -1, -1, -1, -1, 45, 03823 46, 47, 48, 49, -1, 51, 52, 53, 54, 55, 03824 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 03825 66, 67, -1, 69, 70, -1, -1, -1, -1, -1, 03826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03827 -1, -1, -1, 89, -1, -1, 92, 93, -1, 95, 03828 96, -1, 98, -1, 100, 101, 102, 103, 104, 105, 03829 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, 03830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03831 -1, -1, -1, 129, 130, 131, -1, -1, -1, -1, 03832 -1, -1, -1, -1, -1, -1, -1, -1, 144, -1, 03833 -1, -1, -1, -1, -1, -1, 152, 153, 1, -1, 03834 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 03835 -1, 14, 15, -1, -1, -1, 19, -1, 21, 22, 03836 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, 03837 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, 03838 -1, -1, 45, -1, 47, 48, 49, -1, 51, 52, 03839 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 03840 63, -1, -1, 66, 67, -1, 69, 70, -1, -1, 03841 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03842 -1, -1, -1, -1, -1, -1, 89, -1, -1, 92, 03843 93, -1, 95, 96, -1, 98, -1, 100, 101, 102, 03844 103, 104, 105, 106, -1, -1, 109, -1, -1, -1, 03845 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7, 03846 8, 9, 10, 11, 12, -1, 129, 130, 131, -1, 03847 -1, 19, -1, 21, 22, 23, 24, -1, -1, -1, 03848 -1, -1, 30, 31, 32, 33, 34, 35, 36, 152, 03849 153, 39, -1, -1, -1, -1, -1, 45, -1, 47, 03850 48, 49, -1, 51, 52, 53, 54, 55, 56, -1, 03851 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, 03852 -1, 69, 70, -1, -1, -1, -1, -1, -1, -1, 03853 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03854 -1, 89, -1, -1, 92, 93, -1, 95, 96, -1, 03855 98, -1, 100, 101, 102, 103, 104, 105, 106, -1, 03856 -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, 03857 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03858 -1, 129, 130, 131, -1, -1, -1, -1, 1, -1, 03859 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 03860 -1, -1, 150, -1, 152, 153, 19, -1, 21, 22, 03861 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, 03862 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, 03863 -1, -1, 45, -1, 47, 48, 49, -1, 51, 52, 03864 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 03865 63, -1, -1, 66, 67, -1, 69, 70, -1, -1, 03866 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03867 -1, -1, -1, -1, -1, -1, 89, -1, -1, 92, 03868 93, -1, 95, 96, -1, 98, -1, 100, 101, 102, 03869 103, 104, 105, 106, -1, -1, 109, -1, -1, -1, 03870 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03871 -1, -1, -1, -1, -1, -1, 129, 130, 131, -1, 03872 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7, 03873 8, 9, 10, 11, 12, -1, -1, 150, -1, 152, 03874 153, 19, -1, 21, 22, 23, 24, -1, -1, -1, 03875 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, 03876 -1, 39, -1, -1, -1, -1, -1, 45, -1, 47, 03877 48, 49, -1, 51, 52, 53, 54, 55, 56, -1, 03878 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, 03879 -1, 69, 70, -1, -1, -1, -1, -1, -1, -1, 03880 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03881 -1, 89, -1, -1, 92, 93, -1, 95, 96, -1, 03882 98, -1, 100, 101, 102, 103, 104, 105, 106, -1, 03883 -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, 03884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03885 -1, 129, 130, 131, -1, -1, -1, -1, -1, -1, 03886 -1, -1, -1, -1, -1, -1, 144, -1, -1, -1, 03887 -1, -1, -1, -1, 152, 153, 1, -1, 3, 4, 03888 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 03889 15, -1, -1, -1, 19, -1, 21, 22, 23, 24, 03890 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 03891 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, 03892 45, -1, 47, 48, 49, -1, 51, 52, 53, 54, 03893 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, 03894 -1, 66, 67, -1, 69, 70, -1, -1, -1, -1, 03895 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03896 -1, -1, -1, -1, 89, -1, -1, 92, 93, -1, 03897 95, 96, -1, 98, -1, 100, 101, 102, 103, 104, 03898 105, 106, -1, -1, 109, -1, -1, -1, -1, -1, 03899 -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, 03900 10, 11, -1, -1, 129, 130, 131, -1, -1, 19, 03901 -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, 03902 30, 31, 32, 33, 34, 35, 36, 152, 153, 39, 03903 -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, 03904 -1, 51, 52, 53, 54, 55, 56, 57, 58, 59, 03905 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 03906 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03907 -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 03908 -1, -1, 92, 93, -1, 95, 96, -1, 98, 99, 03909 100, 101, 102, 103, 104, 105, 106, -1, -1, 109, 03910 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 03911 7, 8, 9, 10, 11, -1, -1, -1, -1, 129, 03912 130, 131, 19, -1, 21, 22, 23, 24, -1, -1, 03913 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 03914 -1, -1, 39, 153, -1, -1, -1, -1, -1, -1, 03915 -1, 48, 49, -1, 51, 52, 53, 54, 55, 56, 03916 -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 03917 67, -1, 69, 70, -1, -1, -1, -1, -1, -1, 03918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03919 -1, -1, 89, -1, -1, 92, 93, -1, 95, 96, 03920 -1, -1, -1, 100, 101, 102, 103, 104, 105, 106, 03921 -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, 03922 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 03923 -1, -1, 129, 130, 131, -1, -1, 19, -1, 21, 03924 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, 03925 32, 33, 34, 35, 36, 152, 153, 39, -1, -1, 03926 -1, -1, -1, -1, -1, -1, 48, 49, -1, 51, 03927 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, 03928 -1, 63, -1, -1, 66, 67, -1, 69, 70, -1, 03929 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03930 -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, 03931 92, 93, -1, 95, 96, -1, -1, -1, 100, 101, 03932 102, 103, 104, 105, 106, -1, -1, 109, -1, -1, 03933 -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 03934 9, 10, 11, 12, -1, -1, -1, 129, 130, 131, 03935 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, 03936 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 03937 39, 153, -1, -1, -1, -1, 45, 46, 47, 48, 03938 49, -1, 51, 52, 53, 54, 55, 56, -1, 58, 03939 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 03940 69, 70, -1, -1, -1, -1, -1, -1, -1, -1, 03941 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03942 89, -1, -1, 92, 93, -1, 95, 96, -1, 98, 03943 -1, 100, 101, 102, 103, 104, 105, 106, -1, -1, 03944 109, -1, -1, -1, -1, -1, -1, -1, 3, 4, 03945 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, 03946 129, 130, 131, -1, 19, -1, 21, 22, 23, 24, 03947 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 03948 35, 36, -1, 152, 39, -1, -1, -1, -1, -1, 03949 45, -1, 47, 48, 49, -1, 51, 52, 53, 54, 03950 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, 03951 -1, 66, 67, -1, 69, 70, -1, -1, -1, -1, 03952 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03953 -1, -1, -1, -1, 89, -1, -1, 92, 93, -1, 03954 95, 96, -1, 98, -1, 100, 101, 102, 103, 104, 03955 105, 106, -1, -1, 109, -1, -1, -1, -1, -1, 03956 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03957 -1, -1, -1, -1, 129, 130, 131, -1, -1, -1, 03958 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03959 -1, -1, -1, -1, -1, -1, -1, 152, 3, 4, 03960 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 03961 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 03962 25, 26, -1, -1, -1, 30, 31, 32, 33, 34, 03963 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, 03964 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 03965 55, 56, -1, -1, -1, -1, -1, -1, -1, -1, 03966 -1, -1, -1, -1, 69, 70, 71, 72, 73, 74, 03967 75, 76, 77, -1, -1, 80, 81, -1, -1, 84, 03968 85, 86, 87, -1, -1, -1, -1, -1, -1, -1, 03969 -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, 03970 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03971 -1, -1, -1, -1, 119, 120, 121, 122, 123, 124, 03972 125, 126, 127, 128, -1, 130, 131, -1, -1, 3, 03973 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, 03974 -1, -1, -1, 148, 149, 19, -1, 21, 22, 23, 03975 24, -1, 26, -1, -1, -1, 30, 31, 32, 33, 03976 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, 03977 -1, -1, -1, -1, 48, 49, -1, 51, 52, 53, 03978 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, 03979 -1, -1, 66, 67, -1, 69, 70, -1, -1, -1, 03980 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03981 -1, -1, -1, -1, -1, 89, -1, -1, 92, 93, 03982 -1, 95, 96, -1, 98, 99, 100, 101, 102, 103, 03983 104, 105, 106, -1, -1, 109, -1, -1, -1, -1, 03984 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03985 -1, -1, -1, -1, -1, 129, 130, 131, 3, 4, 03986 5, 6, 7, 8, 9, 10, 11, -1, -1, 143, 03987 -1, -1, -1, -1, 19, 149, 21, 22, 23, 24, 03988 -1, 26, -1, -1, -1, 30, 31, 32, 33, 34, 03989 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, 03990 -1, -1, -1, 48, 49, -1, 51, 52, 53, 54, 03991 55, 56, 57, 58, 59, 60, -1, -1, 63, -1, 03992 -1, 66, 67, -1, 69, 70, -1, -1, -1, -1, 03993 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03994 -1, -1, -1, -1, 89, -1, -1, 92, 93, -1, 03995 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 03996 105, 106, -1, -1, 109, -1, -1, -1, -1, -1, 03997 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 03998 -1, -1, -1, -1, 129, 130, 131, 3, 4, 5, 03999 6, 7, 8, 9, 10, 11, -1, -1, 143, -1, 04000 -1, -1, -1, 19, 149, 21, 22, 23, 24, -1, 04001 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 04002 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, 04003 -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, 04004 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, 04005 66, 67, -1, 69, 70, -1, -1, -1, -1, -1, 04006 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04007 -1, -1, -1, 89, 90, -1, 92, 93, -1, 95, 04008 96, -1, 98, 99, 100, 101, 102, 103, 104, 105, 04009 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, 04010 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04011 -1, -1, -1, 129, 130, 131, 3, 4, 5, 6, 04012 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, 04013 -1, -1, 19, 149, 21, 22, 23, 24, -1, -1, 04014 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 04015 -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 04016 -1, 48, 49, -1, 51, 52, 53, 54, 55, 56, 04017 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, 04018 67, -1, 69, 70, -1, -1, -1, -1, -1, -1, 04019 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04020 -1, -1, 89, -1, -1, 92, 93, -1, 95, 96, 04021 -1, 98, 99, 100, 101, 102, 103, 104, 105, 106, 04022 -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, 04023 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04024 -1, -1, 129, 130, 131, 3, 4, 5, 6, 7, 04025 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 04026 -1, 19, 149, 21, 22, 23, 24, -1, -1, -1, 04027 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, 04028 -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, 04029 48, 49, -1, 51, 52, 53, 54, 55, 56, 57, 04030 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, 04031 -1, 69, 70, -1, -1, -1, -1, -1, -1, -1, 04032 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04033 -1, 89, -1, -1, 92, 93, -1, 95, 96, -1, 04034 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, 04035 -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, 04036 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04037 -1, 129, 130, 131, -1, -1, -1, -1, -1, -1, 04038 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04039 -1, 149, 3, 4, 5, 6, 7, 8, 9, 10, 04040 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 04041 21, 22, 23, 24, 25, 26, -1, -1, -1, 30, 04042 31, 32, 33, 34, 35, 36, 37, 38, 39, -1, 04043 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 04044 51, 52, 53, 54, 55, 56, -1, -1, -1, -1, 04045 -1, -1, 63, -1, -1, -1, -1, -1, 69, 70, 04046 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, 04047 81, -1, -1, 84, 85, 86, 87, -1, -1, -1, 04048 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, 04049 -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, 04050 -1, -1, -1, -1, -1, -1, -1, -1, 119, 120, 04051 121, 122, 123, 124, 125, 126, 127, 128, -1, 130, 04052 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04053 -1, -1, -1, -1, -1, -1, -1, 148, 3, 4, 04054 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 04055 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 04056 25, 26, -1, -1, -1, 30, 31, 32, 33, 34, 04057 35, 36, 37, 38, 39, -1, -1, -1, -1, -1, 04058 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 04059 55, 56, -1, -1, -1, -1, -1, -1, 63, -1, 04060 -1, -1, -1, -1, 69, 70, 71, 72, 73, 74, 04061 75, 76, 77, -1, -1, 80, 81, -1, -1, 84, 04062 85, 86, 87, -1, -1, -1, -1, -1, -1, -1, 04063 -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, 04064 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04065 -1, -1, -1, -1, 119, 120, 121, 122, 123, 124, 04066 125, 126, 127, 128, -1, 130, 131, -1, -1, -1, 04067 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04068 -1, -1, -1, 148, 3, 4, 5, 6, 7, 8, 04069 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 04070 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, 04071 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 04072 39, -1, -1, -1, -1, -1, 45, 46, 47, 48, 04073 49, 50, 51, 52, -1, -1, 55, -1, -1, -1, 04074 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04075 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, 04076 -1, 80, 81, -1, -1, 84, 85, 86, 87, -1, 04077 -1, 71, 72, 73, 74, 75, 76, 77, -1, 98, 04078 80, 81, 101, -1, -1, -1, 86, 87, -1, -1, 04079 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04080 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 04081 -1, 130, 131, -1, -1, -1, -1, -1, -1, 119, 04082 120, 121, 122, 123, 124, 125, 126, 127, 128, 148, 04083 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 04084 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 04085 23, 24, 25, 26, -1, -1, -1, 30, 31, 32, 04086 33, 34, 35, 36, 37, 38, 39, -1, -1, -1, 04087 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, 04088 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, 04089 -1, -1, -1, -1, -1, -1, 69, 70, 71, 72, 04090 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, 04091 -1, 84, 85, 86, 87, -1, -1, -1, -1, -1, 04092 -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, 04093 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04094 -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, 04095 123, 124, 125, 126, 127, 128, -1, 130, 131, -1, 04096 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, 04097 -1, -1, -1, -1, -1, 148, 19, -1, 21, 22, 04098 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, 04099 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, 04100 -1, -1, -1, -1, -1, 48, 49, -1, 51, 52, 04101 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 04102 63, -1, -1, 66, 67, -1, -1, -1, -1, -1, 04103 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04104 -1, -1, -1, -1, -1, -1, 89, -1, -1, 92, 04105 93, -1, 95, 96, -1, -1, -1, 100, 101, 102, 04106 103, 104, 105, 106, -1, -1, 109, -1, -1, 3, 04107 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, 04108 -1, -1, -1, -1, -1, 19, 129, 21, 22, 23, 04109 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, 04110 34, 35, 36, -1, 147, 39, -1, -1, -1, -1, 04111 -1, -1, -1, -1, 48, 49, -1, 51, 52, 53, 04112 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, 04113 -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, 04114 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04115 -1, -1, -1, -1, -1, 89, -1, -1, 92, 93, 04116 -1, 95, 96, -1, -1, -1, 100, 101, 102, 103, 04117 104, 105, 106, -1, -1, 109, -1, -1, 3, 4, 04118 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, 04119 -1, -1, -1, -1, 19, 129, 21, 22, 23, 24, 04120 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 04121 35, 36, -1, 147, 39, -1, -1, -1, -1, -1, 04122 -1, -1, -1, 48, 49, -1, 51, 52, 53, 54, 04123 55, 56, 57, 58, 59, 60, -1, -1, 63, -1, 04124 -1, 66, 67, -1, 69, 70, -1, -1, -1, -1, 04125 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04126 -1, -1, -1, -1, 89, -1, -1, 92, 93, -1, 04127 95, 96, -1, 98, 99, 100, 101, 102, 103, 104, 04128 105, 106, -1, -1, 109, 110, -1, -1, 113, 114, 04129 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 04130 12, -1, -1, -1, 129, 130, 131, 19, -1, 21, 04131 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, 04132 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, 04133 -1, -1, -1, 45, 46, 47, 48, 49, -1, 51, 04134 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, 04135 -1, 63, -1, -1, 66, 67, -1, 69, 70, -1, 04136 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04137 -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, 04138 92, 93, -1, 95, 96, -1, 98, -1, 100, 101, 04139 102, 103, 104, 105, 106, -1, -1, 109, -1, -1, 04140 -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 04141 9, 10, 11, -1, -1, -1, -1, 129, 130, 131, 04142 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, 04143 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 04144 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, 04145 49, -1, 51, 52, 53, 54, 55, 56, 57, 58, 04146 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 04147 69, 70, -1, -1, -1, -1, -1, -1, -1, -1, 04148 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04149 89, -1, -1, 92, 93, -1, 95, 96, -1, 98, 04150 -1, 100, 101, 102, 103, 104, 105, 106, -1, -1, 04151 109, 110, -1, -1, 113, 114, -1, 3, 4, 5, 04152 6, 7, 8, 9, 10, 11, 12, -1, -1, -1, 04153 129, 130, 131, 19, -1, 21, 22, 23, 24, -1, 04154 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 04155 36, -1, -1, 39, -1, -1, -1, -1, -1, 45, 04156 -1, 47, 48, 49, -1, 51, 52, 53, 54, 55, 04157 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 04158 66, 67, -1, 69, 70, -1, -1, -1, -1, -1, 04159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04160 -1, -1, -1, 89, -1, -1, 92, 93, -1, 95, 04161 96, -1, 98, -1, 100, 101, 102, 103, 104, 105, 04162 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, 04163 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, 04164 -1, -1, -1, 129, 130, 131, 19, -1, 21, 22, 04165 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, 04166 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, 04167 -1, -1, -1, -1, -1, 48, 49, -1, 51, 52, 04168 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 04169 63, -1, -1, 66, 67, -1, 69, 70, -1, -1, 04170 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04171 -1, -1, -1, -1, -1, -1, 89, -1, -1, 92, 04172 93, -1, 95, 96, -1, 98, -1, 100, 101, 102, 04173 103, 104, 105, 106, -1, -1, 109, 110, -1, -1, 04174 113, 114, -1, 3, 4, 5, 6, 7, 8, 9, 04175 10, 11, -1, -1, -1, -1, 129, 130, 131, 19, 04176 -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, 04177 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, 04178 -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, 04179 -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, 04180 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 04181 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04182 -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 04183 -1, -1, 92, 93, -1, 95, 96, -1, 98, -1, 04184 100, 101, 102, 103, 104, 105, 106, -1, -1, 109, 04185 110, -1, -1, 113, 114, -1, 3, 4, 5, 6, 04186 7, 8, 9, 10, 11, -1, -1, -1, -1, 129, 04187 130, 131, 19, -1, 21, 22, 23, 24, -1, -1, 04188 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 04189 -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 04190 -1, 48, 49, -1, 51, 52, 53, 54, 55, 56, 04191 -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 04192 67, -1, 69, 70, -1, -1, -1, -1, -1, -1, 04193 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04194 -1, -1, 89, -1, -1, 92, 93, -1, 95, 96, 04195 -1, 98, -1, 100, 101, 102, 103, 104, 105, 106, 04196 -1, -1, 109, 110, -1, -1, 113, 114, -1, 3, 04197 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, 04198 -1, -1, 129, 130, 131, 19, -1, 21, 22, 23, 04199 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, 04200 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, 04201 -1, -1, -1, -1, 48, 49, -1, 51, 52, 53, 04202 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, 04203 -1, -1, 66, 67, -1, 69, 70, -1, -1, -1, 04204 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04205 -1, -1, -1, -1, -1, 89, -1, -1, 92, 93, 04206 -1, 95, 96, -1, 98, 99, 100, 101, 102, 103, 04207 104, 105, 106, -1, -1, 109, -1, -1, -1, -1, 04208 -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 04209 11, -1, -1, -1, -1, 129, 130, 131, 19, -1, 04210 21, 22, 23, 24, -1, -1, -1, -1, -1, 30, 04211 31, 32, 33, 34, 35, 36, -1, -1, 39, -1, 04212 -1, -1, -1, -1, -1, -1, -1, 48, 49, -1, 04213 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 04214 -1, -1, 63, -1, -1, 66, 67, -1, 69, 70, 04215 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04216 -1, -1, -1, -1, -1, -1, -1, -1, 89, -1, 04217 -1, 92, 93, -1, 95, 96, -1, 98, -1, 100, 04218 101, 102, 103, 104, 105, 106, -1, -1, 109, -1, 04219 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, 04220 8, 9, 10, 11, -1, -1, -1, -1, 129, 130, 04221 131, 19, -1, 21, 22, 23, 24, -1, -1, -1, 04222 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, 04223 -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, 04224 48, 49, -1, 51, 52, 53, 54, 55, 56, 57, 04225 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, 04226 -1, 69, 70, -1, -1, -1, -1, -1, -1, -1, 04227 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04228 -1, 89, -1, -1, 92, 93, -1, 95, 96, -1, 04229 -1, 99, 100, 101, 102, 103, 104, 105, 106, -1, 04230 -1, 109, -1, -1, -1, -1, -1, -1, 3, 4, 04231 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, 04232 -1, 129, 130, 131, 19, -1, 21, 22, 23, 24, 04233 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 04234 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, 04235 -1, -1, -1, 48, 49, -1, 51, 52, 53, 54, 04236 55, 56, 57, 58, 59, 60, -1, -1, 63, -1, 04237 -1, 66, 67, -1, 69, 70, -1, -1, -1, -1, 04238 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04239 -1, -1, -1, -1, 89, -1, -1, 92, 93, -1, 04240 95, 96, -1, -1, -1, 100, 101, 102, 103, 104, 04241 105, 106, -1, -1, 109, -1, -1, -1, -1, -1, 04242 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 04243 -1, -1, -1, -1, 129, 130, 131, 19, -1, 21, 04244 22, 23, 24, -1, -1, -1, -1, -1, 30, 31, 04245 32, 33, 34, 35, 36, -1, -1, 39, -1, -1, 04246 -1, -1, -1, -1, -1, -1, 48, 49, -1, 51, 04247 52, 53, 54, 55, 56, -1, 58, 59, 60, -1, 04248 -1, 63, -1, -1, 66, 67, -1, 69, 70, -1, 04249 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04250 -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, 04251 92, 93, -1, 95, 96, -1, 98, -1, 100, 101, 04252 102, 103, 104, 105, 106, -1, -1, 109, -1, -1, 04253 -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 04254 9, 10, 11, -1, -1, -1, -1, 129, 130, 131, 04255 19, -1, 21, 22, 23, 24, -1, -1, -1, -1, 04256 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 04257 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, 04258 49, -1, 51, 52, 53, 54, 55, 56, -1, 58, 04259 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 04260 69, 70, -1, -1, -1, -1, -1, -1, -1, -1, 04261 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04262 89, -1, -1, 92, 93, -1, 95, 96, -1, 98, 04263 -1, 100, 101, 102, 103, 104, 105, 106, -1, -1, 04264 109, -1, -1, -1, -1, -1, -1, 3, 4, 5, 04265 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, 04266 129, 130, 131, 19, -1, 21, 22, 23, 24, -1, 04267 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 04268 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, 04269 -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, 04270 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 04271 66, 67, -1, 69, 70, -1, -1, -1, -1, -1, 04272 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04273 -1, -1, -1, 89, -1, -1, 92, 93, -1, 95, 04274 96, -1, 98, -1, 100, 101, 102, 103, 104, 105, 04275 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, 04276 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, 04277 -1, -1, -1, 129, 130, 131, 19, -1, 21, 22, 04278 23, 24, -1, -1, -1, -1, -1, 30, 31, 32, 04279 33, 34, 35, 36, -1, -1, 39, -1, -1, -1, 04280 -1, -1, -1, -1, -1, 48, 49, -1, 51, 52, 04281 53, 54, 55, 56, -1, 58, 59, 60, -1, -1, 04282 63, -1, -1, 66, 67, -1, 69, 70, -1, -1, 04283 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04284 -1, -1, -1, -1, -1, -1, 89, -1, -1, 92, 04285 93, -1, 95, 96, -1, -1, -1, 100, 101, 102, 04286 103, 104, 105, 106, -1, -1, 109, -1, -1, -1, 04287 -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, 04288 10, 11, -1, -1, -1, -1, 129, 130, 131, 19, 04289 -1, 21, 22, 23, 24, -1, -1, -1, -1, -1, 04290 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, 04291 -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, 04292 -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, 04293 60, -1, -1, 63, -1, -1, 66, 67, -1, 69, 04294 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04295 -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 04296 -1, -1, 92, 93, -1, 95, 96, -1, -1, -1, 04297 100, 101, 102, 103, 104, 105, 106, -1, -1, 109, 04298 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, 04299 7, 8, 9, 10, 11, -1, -1, -1, -1, 129, 04300 130, 131, 19, -1, 21, 22, 23, 24, -1, -1, 04301 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 04302 -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 04303 -1, 48, 49, -1, 51, 52, 53, 54, 55, 56, 04304 -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 04305 67, -1, 69, 70, -1, -1, -1, -1, -1, -1, 04306 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04307 -1, -1, 89, -1, -1, 92, 93, -1, 95, 96, 04308 -1, -1, -1, 100, 101, 102, 103, 104, 105, 106, 04309 -1, -1, 109, -1, -1, -1, -1, -1, -1, 3, 04310 4, 5, 6, 7, 8, 9, 10, 11, -1, -1, 04311 -1, -1, 129, 130, 131, 19, -1, 21, 22, 23, 04312 24, -1, -1, -1, -1, -1, 30, 31, 32, 33, 04313 34, 35, 36, -1, -1, 39, -1, -1, -1, -1, 04314 -1, -1, -1, -1, 48, 49, -1, 51, 52, 53, 04315 54, 55, 56, -1, 58, 59, 60, -1, -1, 63, 04316 -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, 04317 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04318 -1, -1, 86, -1, -1, 89, -1, -1, 92, 93, 04319 -1, 95, 96, -1, -1, -1, 100, 101, 102, 103, 04320 104, 105, 106, -1, -1, 109, -1, -1, 3, 4, 04321 5, 6, 7, 8, 9, 10, 11, -1, -1, -1, 04322 -1, -1, -1, -1, 19, 129, 21, 22, 23, 24, 04323 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34, 04324 35, 36, -1, -1, 39, -1, -1, -1, -1, -1, 04325 -1, -1, -1, 48, 49, -1, 51, 52, 53, 54, 04326 55, 56, -1, 58, 59, 60, -1, -1, 63, -1, 04327 -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, 04328 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04329 -1, -1, -1, -1, 89, -1, -1, 92, 93, -1, 04330 95, 96, -1, 98, -1, 100, 101, 102, 103, 104, 04331 105, 106, -1, -1, 109, -1, -1, 3, 4, 5, 04332 6, 7, 8, 9, 10, 11, -1, -1, -1, -1, 04333 -1, -1, -1, 19, 129, 21, 22, 23, 24, -1, 04334 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35, 04335 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, 04336 -1, -1, 48, 49, -1, 51, 52, 53, 54, 55, 04337 56, -1, 58, 59, 60, -1, -1, 63, -1, -1, 04338 66, 67, -1, -1, -1, -1, -1, -1, -1, -1, 04339 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04340 -1, -1, -1, 89, -1, -1, 92, 93, -1, 95, 04341 96, -1, 98, -1, 100, 101, 102, 103, 104, 105, 04342 106, -1, -1, 109, -1, -1, 3, 4, 5, 6, 04343 7, 8, 9, 10, 11, -1, -1, -1, -1, -1, 04344 -1, -1, 19, 129, 21, 22, 23, 24, -1, -1, 04345 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36, 04346 -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 04347 -1, 48, 49, -1, 51, 52, 53, 54, 55, 56, 04348 -1, 58, 59, 60, -1, -1, 63, -1, -1, 66, 04349 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04350 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04351 -1, -1, 89, -1, -1, 92, 93, -1, 95, 96, 04352 -1, -1, -1, 100, 101, 102, 103, 104, 105, 106, 04353 -1, -1, 109, -1, -1, 3, 4, 5, 6, 7, 04354 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, 04355 -1, 19, 129, 21, 22, 23, 24, -1, -1, -1, 04356 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1, 04357 -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, 04358 48, 49, -1, 51, 52, 53, 54, 55, 56, -1, 04359 58, 59, 60, -1, -1, 63, -1, -1, 66, 67, 04360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04362 -1, 89, -1, -1, 92, 93, -1, 95, 96, -1, 04363 -1, -1, 100, 101, 102, 103, 104, 105, 106, -1, 04364 -1, 109, -1, -1, 3, 4, 5, 6, 7, 8, 04365 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, 04366 19, 129, 21, 22, 23, 24, -1, -1, -1, -1, 04367 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1, 04368 39, -1, -1, -1, -1, -1, -1, -1, -1, 48, 04369 49, -1, 51, 52, 53, 54, 55, 56, -1, 58, 04370 59, 60, -1, -1, 63, -1, -1, 66, 67, -1, 04371 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04372 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04373 89, -1, -1, 92, 93, -1, 95, 96, -1, -1, 04374 -1, 100, 101, 102, 103, 104, 105, 106, -1, -1, 04375 109, -1, -1, 3, 4, 5, 6, 7, 8, 9, 04376 10, 11, -1, -1, -1, -1, -1, -1, -1, 19, 04377 129, 21, 22, 23, 24, -1, -1, -1, -1, -1, 04378 30, 31, 32, 33, 34, 35, 36, -1, -1, 39, 04379 -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, 04380 -1, 51, 52, 53, 54, 55, 56, -1, 58, 59, 04381 60, -1, -1, 63, -1, -1, 66, 67, -1, 71, 04382 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 04383 82, 83, -1, -1, 86, 87, -1, -1, -1, 89, 04384 -1, -1, 92, 93, -1, 95, 96, -1, -1, -1, 04385 100, 101, 102, 103, 104, 105, 106, -1, -1, 109, 04386 -1, -1, 51, 52, -1, -1, 55, 119, 120, 121, 04387 122, 123, 124, 125, 126, 127, 128, -1, -1, 129, 04388 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, 04389 -1, 80, 81, -1, -1, 84, 85, 86, 87, -1, 04390 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, 04391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04392 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04393 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 04394 -1, 130, 131, 51, 52, -1, -1, 55, -1, -1, 04395 -1, -1, -1, -1, -1, -1, -1, -1, -1, 148, 04396 149, 69, 70, 71, 72, 73, 74, 75, 76, 77, 04397 -1, -1, 80, 81, -1, -1, 84, 85, 86, 87, 04398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04399 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04401 -1, 119, 120, 121, 122, 123, 124, 125, 126, 127, 04402 128, -1, 130, 131, 51, 52, -1, -1, 55, -1, 04403 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04404 148, 149, 69, 70, 71, 72, 73, 74, 75, 76, 04405 77, -1, -1, 80, 81, -1, -1, 84, 85, 86, 04406 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04407 -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, 04408 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04409 -1, -1, 119, 120, 121, 122, 123, 124, 125, 126, 04410 127, 128, -1, 130, 131, 51, 52, -1, -1, 55, 04411 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04412 -1, 148, 149, 69, 70, 71, 72, 73, 74, 75, 04413 76, 77, -1, -1, 80, 81, -1, -1, 84, 85, 04414 86, 87, -1, -1, -1, -1, -1, -1, -1, -1, 04415 -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, 04416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04417 -1, -1, -1, 119, 120, 121, 122, 123, 124, 125, 04418 126, 127, 128, -1, 130, 131, 51, 52, -1, -1, 04419 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04420 -1, -1, 148, 149, 69, 70, 71, 72, 73, 74, 04421 75, 76, 77, -1, -1, 80, 81, -1, -1, 84, 04422 85, 86, 87, -1, -1, -1, -1, -1, -1, -1, 04423 -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, 04424 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04425 -1, -1, -1, -1, 119, 120, 121, 122, 123, 124, 04426 125, 126, 127, 128, -1, 130, 131, 51, 52, -1, 04427 -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, 04428 -1, -1, -1, 148, 149, 69, 70, 71, 72, 73, 04429 74, 75, 76, 77, -1, -1, 80, 81, -1, -1, 04430 84, 85, 86, 87, -1, -1, -1, -1, -1, -1, 04431 -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, 04432 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04433 -1, -1, -1, -1, -1, 119, 120, 121, 122, 123, 04434 124, 125, 126, 127, 128, -1, 130, 131, 51, 52, 04435 -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, 04436 -1, -1, -1, -1, 148, 149, 69, 70, 71, 72, 04437 73, 74, 75, 76, 77, -1, -1, 80, 81, -1, 04438 -1, 84, 85, 86, 87, -1, -1, -1, -1, -1, 04439 -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, 04440 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04441 -1, -1, -1, -1, -1, -1, 119, 120, 121, 122, 04442 123, 124, 125, 126, 127, 128, -1, 130, 131, 51, 04443 52, -1, -1, 55, -1, -1, -1, -1, -1, -1, 04444 -1, -1, -1, -1, -1, 148, 149, 69, 70, 71, 04445 72, 73, 74, 75, 76, 77, -1, -1, 80, 81, 04446 -1, -1, 84, 85, 86, 87, -1, -1, -1, -1, 04447 -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, 04448 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04449 -1, -1, -1, -1, -1, -1, -1, 119, 120, 121, 04450 122, 123, 124, 125, 126, 127, 128, -1, 130, 131, 04451 51, 52, -1, -1, 55, -1, -1, -1, -1, -1, 04452 -1, -1, -1, -1, -1, -1, 148, 149, 69, 70, 04453 71, 72, 73, 74, 75, 76, 77, -1, -1, 80, 04454 81, -1, -1, 84, 85, 86, 87, -1, -1, -1, 04455 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, 04456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04457 -1, -1, -1, -1, -1, -1, -1, -1, 119, 120, 04458 121, 122, 123, 124, 125, 126, 127, 128, -1, 130, 04459 131, 51, 52, -1, -1, 55, -1, -1, -1, -1, 04460 -1, -1, -1, -1, -1, -1, -1, 148, 149, 69, 04461 70, 71, 72, 73, 74, 75, 76, 77, -1, -1, 04462 80, 81, -1, -1, 84, 85, 86, 87, -1, -1, 04463 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, 04464 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04465 -1, -1, -1, -1, -1, -1, -1, -1, -1, 119, 04466 120, 121, 122, 123, 124, 125, 126, 127, 128, -1, 04467 130, 131, 51, 52, -1, -1, 55, -1, -1, -1, 04468 -1, -1, -1, -1, -1, -1, -1, -1, 148, 149, 04469 69, 70, 71, 72, 73, 74, 75, 76, 77, -1, 04470 -1, 80, 81, -1, -1, 84, 85, 86, 87, -1, 04471 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, 04472 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04473 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04474 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 04475 -1, 130, 131, 51, 52, -1, -1, 55, -1, -1, 04476 -1, -1, -1, -1, -1, -1, -1, -1, -1, 148, 04477 149, 69, 70, 71, 72, 73, 74, 75, 76, 77, 04478 -1, -1, 80, 81, -1, -1, 84, 85, 86, 87, 04479 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04480 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04481 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04482 -1, 119, 120, 121, 122, 123, 124, 125, 126, 127, 04483 128, -1, 130, 131, 51, 52, -1, -1, 55, -1, 04484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04485 148, 149, 69, 70, 71, 72, 73, 74, 75, 76, 04486 77, -1, -1, 80, 81, -1, -1, 84, 85, 86, 04487 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04488 -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, 04489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04490 -1, -1, 119, 120, 121, 122, 123, 124, 125, 126, 04491 127, 128, -1, 130, 131, -1, -1, -1, -1, -1, 04492 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 04493 -1, 148 04494 }; 04495 04496 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 04497 symbol of state STATE-NUM. */ 04498 static const yytype_uint16 yystos[] = 04499 { 04500 0, 155, 156, 0, 1, 3, 4, 5, 6, 7, 04501 8, 9, 10, 11, 12, 19, 21, 22, 23, 24, 04502 30, 31, 32, 33, 34, 35, 36, 39, 45, 46, 04503 47, 48, 49, 51, 52, 53, 54, 55, 56, 58, 04504 59, 60, 63, 66, 67, 69, 70, 89, 92, 93, 04505 95, 96, 98, 100, 101, 102, 103, 104, 105, 106, 04506 109, 129, 130, 131, 157, 158, 159, 164, 166, 167, 04507 169, 170, 173, 174, 176, 177, 178, 180, 181, 190, 04508 203, 223, 242, 243, 253, 254, 258, 259, 260, 267, 04509 268, 269, 271, 272, 273, 274, 275, 276, 300, 313, 04510 159, 21, 22, 30, 31, 32, 39, 51, 55, 86, 04511 89, 92, 129, 182, 183, 203, 223, 273, 276, 300, 04512 183, 3, 4, 5, 6, 7, 8, 9, 10, 11, 04513 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 04514 22, 23, 24, 25, 26, 30, 31, 32, 33, 34, 04515 35, 36, 37, 38, 39, 45, 46, 47, 48, 49, 04516 50, 51, 52, 55, 69, 70, 71, 72, 73, 74, 04517 75, 76, 77, 80, 81, 84, 85, 86, 87, 98, 04518 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 04519 130, 131, 148, 149, 184, 188, 189, 275, 295, 204, 04520 89, 167, 168, 181, 223, 273, 274, 276, 168, 209, 04521 211, 89, 174, 181, 223, 228, 273, 276, 33, 34, 04522 35, 36, 48, 49, 51, 55, 101, 184, 185, 186, 04523 269, 152, 153, 168, 304, 309, 310, 312, 57, 98, 04524 99, 130, 173, 190, 191, 196, 199, 201, 298, 299, 04525 196, 196, 149, 197, 198, 149, 193, 197, 149, 305, 04526 310, 185, 160, 143, 190, 223, 190, 55, 1, 92, 04527 162, 163, 164, 175, 176, 313, 205, 207, 192, 201, 04528 298, 313, 191, 297, 298, 313, 89, 147, 180, 223, 04529 273, 276, 208, 53, 54, 56, 63, 105, 184, 270, 04530 62, 64, 65, 111, 112, 255, 256, 63, 255, 63, 04531 255, 63, 255, 61, 255, 58, 59, 169, 190, 190, 04532 304, 312, 40, 41, 42, 43, 44, 37, 38, 28, 04533 240, 116, 147, 92, 98, 177, 116, 71, 72, 73, 04534 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 04535 86, 87, 117, 119, 120, 121, 122, 123, 124, 125, 04536 126, 127, 128, 88, 145, 146, 88, 146, 303, 26, 04537 143, 244, 90, 90, 193, 197, 244, 167, 51, 55, 04538 182, 58, 59, 1, 120, 277, 309, 88, 145, 146, 04539 218, 296, 219, 303, 161, 162, 55, 16, 224, 309, 04540 116, 88, 145, 146, 90, 90, 224, 168, 168, 55, 04541 88, 145, 146, 25, 105, 147, 311, 304, 20, 247, 04542 152, 191, 191, 191, 91, 147, 200, 313, 147, 200, 04543 196, 305, 306, 196, 195, 196, 201, 298, 313, 167, 04544 306, 167, 165, 143, 162, 88, 146, 90, 164, 175, 04545 150, 304, 312, 306, 167, 306, 151, 147, 308, 310, 04546 147, 308, 144, 308, 55, 177, 178, 179, 147, 88, 04547 145, 146, 51, 53, 54, 55, 56, 92, 98, 99, 04548 123, 126, 149, 238, 280, 281, 282, 283, 284, 285, 04549 286, 289, 290, 291, 292, 293, 63, 256, 257, 110, 04550 113, 114, 262, 263, 264, 265, 62, 256, 63, 63, 04551 63, 61, 71, 71, 159, 168, 168, 168, 168, 164, 04552 167, 167, 241, 98, 169, 191, 201, 202, 175, 147, 04553 180, 147, 166, 169, 181, 190, 191, 202, 190, 190, 04554 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 04555 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 04556 190, 190, 190, 190, 51, 52, 55, 188, 193, 301, 04557 302, 195, 51, 52, 55, 188, 193, 301, 51, 55, 04558 301, 246, 245, 169, 190, 169, 190, 97, 171, 216, 04559 309, 278, 215, 51, 55, 182, 301, 195, 301, 161, 04560 167, 220, 221, 15, 13, 249, 313, 162, 16, 190, 04561 51, 55, 195, 51, 55, 162, 27, 225, 309, 225, 04562 51, 55, 195, 51, 55, 213, 187, 261, 262, 247, 04563 201, 15, 191, 98, 191, 199, 262, 298, 299, 306, 04564 150, 306, 147, 147, 306, 185, 157, 144, 190, 306, 04565 164, 206, 298, 177, 179, 51, 55, 195, 51, 55, 04566 116, 51, 92, 98, 229, 230, 231, 282, 280, 29, 04567 108, 239, 147, 294, 313, 191, 147, 294, 51, 147, 04568 294, 51, 63, 162, 266, 263, 110, 265, 190, 190, 04569 79, 121, 233, 234, 313, 191, 147, 306, 179, 147, 04570 116, 44, 305, 90, 90, 193, 197, 305, 307, 90, 04571 90, 193, 194, 197, 313, 194, 197, 233, 233, 44, 04572 172, 309, 168, 161, 307, 15, 306, 149, 279, 280, 04573 184, 191, 202, 250, 313, 18, 227, 313, 17, 226, 04574 227, 90, 90, 307, 90, 90, 227, 210, 212, 307, 04575 168, 185, 15, 147, 224, 191, 98, 191, 200, 298, 04576 144, 306, 308, 307, 231, 147, 282, 147, 306, 235, 04577 305, 162, 162, 283, 289, 291, 293, 284, 286, 291, 04578 284, 144, 162, 232, 235, 284, 285, 287, 288, 291, 04579 293, 162, 98, 191, 179, 190, 118, 169, 190, 169, 04580 190, 171, 151, 90, 169, 190, 169, 190, 171, 244, 04581 240, 162, 162, 190, 233, 217, 309, 15, 280, 161, 04582 309, 222, 91, 251, 313, 162, 14, 252, 313, 168, 04583 15, 90, 15, 162, 162, 225, 191, 162, 191, 147, 04584 306, 230, 147, 98, 229, 150, 152, 15, 144, 147, 04585 294, 147, 294, 147, 294, 147, 294, 294, 144, 235, 04586 121, 147, 294, 89, 223, 147, 294, 147, 294, 15, 04587 191, 190, 169, 190, 15, 144, 162, 161, 306, 15, 04588 279, 89, 181, 223, 273, 276, 224, 162, 224, 15, 04589 15, 214, 227, 247, 248, 147, 230, 147, 282, 51, 04590 236, 237, 281, 284, 291, 284, 284, 121, 288, 291, 04591 55, 88, 284, 287, 291, 284, 144, 15, 161, 55, 04592 88, 145, 146, 162, 162, 162, 230, 147, 147, 305, 04593 294, 147, 294, 294, 294, 147, 294, 147, 294, 51, 04594 55, 294, 147, 294, 294, 15, 51, 55, 195, 51, 04595 55, 249, 226, 15, 230, 237, 284, 284, 291, 284, 04596 284, 307, 294, 294, 147, 294, 294, 294, 284, 294 04597 }; 04598 04599 #define yyerrok (yyerrstatus = 0) 04600 #define yyclearin (yychar = YYEMPTY) 04601 #define YYEMPTY (-2) 04602 #define YYEOF 0 04603 04604 #define YYACCEPT goto yyacceptlab 04605 #define YYABORT goto yyabortlab 04606 #define YYERROR goto yyerrorlab 04607 04608 04609 /* Like YYERROR except do call yyerror. This remains here temporarily 04610 to ease the transition to the new meaning of YYERROR, for GCC. 04611 Once GCC version 2 has supplanted version 1, this can go. However, 04612 YYFAIL appears to be in use. Nevertheless, it is formally deprecated 04613 in Bison 2.4.2's NEWS entry, where a plan to phase it out is 04614 discussed. */ 04615 04616 #define YYFAIL goto yyerrlab 04617 #if defined YYFAIL 04618 /* This is here to suppress warnings from the GCC cpp's 04619 -Wunused-macros. Normally we don't worry about that warning, but 04620 some users do, and we want to make it easy for users to remove 04621 YYFAIL uses, which will produce warnings from Bison 2.5. */ 04622 #endif 04623 04624 #define YYRECOVERING() (!!yyerrstatus) 04625 04626 #define YYBACKUP(Token, Value) \ 04627 do \ 04628 if (yychar == YYEMPTY && yylen == 1) \ 04629 { \ 04630 yychar = (Token); \ 04631 yylval = (Value); \ 04632 yytoken = YYTRANSLATE (yychar); \ 04633 YYPOPSTACK (1); \ 04634 goto yybackup; \ 04635 } \ 04636 else \ 04637 { \ 04638 yyerror (p, YY_("syntax error: cannot back up")); \ 04639 YYERROR; \ 04640 } \ 04641 while (YYID (0)) 04642 04643 04644 #define YYTERROR 1 04645 #define YYERRCODE 256 04646 04647 04648 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. 04649 If N is 0, then set CURRENT to the empty location which ends 04650 the previous symbol: RHS[0] (always defined). */ 04651 04652 #define YYRHSLOC(Rhs, K) ((Rhs)[K]) 04653 #ifndef YYLLOC_DEFAULT 04654 # define YYLLOC_DEFAULT(Current, Rhs, N) \ 04655 do \ 04656 if (YYID (N)) \ 04657 { \ 04658 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ 04659 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ 04660 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ 04661 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ 04662 } \ 04663 else \ 04664 { \ 04665 (Current).first_line = (Current).last_line = \ 04666 YYRHSLOC (Rhs, 0).last_line; \ 04667 (Current).first_column = (Current).last_column = \ 04668 YYRHSLOC (Rhs, 0).last_column; \ 04669 } \ 04670 while (YYID (0)) 04671 #endif 04672 04673 04674 /* YY_LOCATION_PRINT -- Print the location on the stream. 04675 This macro was not mandated originally: define only if we know 04676 we won't break user code: when these are the locations we know. */ 04677 04678 #ifndef YY_LOCATION_PRINT 04679 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL 04680 # define YY_LOCATION_PRINT(File, Loc) \ 04681 fprintf (File, "%d.%d-%d.%d", \ 04682 (Loc).first_line, (Loc).first_column, \ 04683 (Loc).last_line, (Loc).last_column) 04684 # else 04685 # define YY_LOCATION_PRINT(File, Loc) ((void) 0) 04686 # endif 04687 #endif 04688 04689 04690 /* YYLEX -- calling `yylex' with the right arguments. */ 04691 04692 #ifdef YYLEX_PARAM 04693 # define YYLEX yylex (&yylval, YYLEX_PARAM) 04694 #else 04695 # define YYLEX yylex (&yylval, p) 04696 #endif 04697 04698 /* Enable debugging if requested. */ 04699 #if YYDEBUG 04700 04701 # ifndef YYFPRINTF 04702 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */ 04703 # define YYFPRINTF fprintf 04704 # endif 04705 04706 # define YYDPRINTF(Args) \ 04707 do { \ 04708 if (yydebug) \ 04709 YYFPRINTF Args; \ 04710 } while (YYID (0)) 04711 04712 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ 04713 do { \ 04714 if (yydebug) \ 04715 { \ 04716 YYFPRINTF (stderr, "%s ", Title); \ 04717 yy_symbol_print (stderr, \ 04718 Type, Value, p); \ 04719 YYFPRINTF (stderr, "\n"); \ 04720 } \ 04721 } while (YYID (0)) 04722 04723 04724 /*--------------------------------. 04725 | Print this symbol on YYOUTPUT. | 04726 `--------------------------------*/ 04727 04728 /*ARGSUSED*/ 04729 #if (defined __STDC__ || defined __C99__FUNC__ \ 04730 || defined __cplusplus || defined _MSC_VER) 04731 static void 04732 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_state *p) 04733 #else 04734 static void 04735 yy_symbol_value_print (yyoutput, yytype, yyvaluep, p) 04736 FILE *yyoutput; 04737 int yytype; 04738 YYSTYPE const * const yyvaluep; 04739 parser_state *p; 04740 #endif 04741 { 04742 if (!yyvaluep) 04743 return; 04744 YYUSE (p); 04745 # ifdef YYPRINT 04746 if (yytype < YYNTOKENS) 04747 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); 04748 # else 04749 YYUSE (yyoutput); 04750 # endif 04751 switch (yytype) 04752 { 04753 default: 04754 break; 04755 } 04756 } 04757 04758 04759 /*--------------------------------. 04760 | Print this symbol on YYOUTPUT. | 04761 `--------------------------------*/ 04762 04763 #if (defined __STDC__ || defined __C99__FUNC__ \ 04764 || defined __cplusplus || defined _MSC_VER) 04765 static void 04766 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_state *p) 04767 #else 04768 static void 04769 yy_symbol_print (yyoutput, yytype, yyvaluep, p) 04770 FILE *yyoutput; 04771 int yytype; 04772 YYSTYPE const * const yyvaluep; 04773 parser_state *p; 04774 #endif 04775 { 04776 if (yytype < YYNTOKENS) 04777 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); 04778 else 04779 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); 04780 04781 yy_symbol_value_print (yyoutput, yytype, yyvaluep, p); 04782 YYFPRINTF (yyoutput, ")"); 04783 } 04784 04785 /*------------------------------------------------------------------. 04786 | yy_stack_print -- Print the state stack from its BOTTOM up to its | 04787 | TOP (included). | 04788 `------------------------------------------------------------------*/ 04789 04790 #if (defined __STDC__ || defined __C99__FUNC__ \ 04791 || defined __cplusplus || defined _MSC_VER) 04792 static void 04793 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) 04794 #else 04795 static void 04796 yy_stack_print (yybottom, yytop) 04797 yytype_int16 *yybottom; 04798 yytype_int16 *yytop; 04799 #endif 04800 { 04801 YYFPRINTF (stderr, "Stack now"); 04802 for (; yybottom <= yytop; yybottom++) 04803 { 04804 int yybot = *yybottom; 04805 YYFPRINTF (stderr, " %d", yybot); 04806 } 04807 YYFPRINTF (stderr, "\n"); 04808 } 04809 04810 # define YY_STACK_PRINT(Bottom, Top) \ 04811 do { \ 04812 if (yydebug) \ 04813 yy_stack_print ((Bottom), (Top)); \ 04814 } while (YYID (0)) 04815 04816 04817 /*------------------------------------------------. 04818 | Report that the YYRULE is going to be reduced. | 04819 `------------------------------------------------*/ 04820 04821 #if (defined __STDC__ || defined __C99__FUNC__ \ 04822 || defined __cplusplus || defined _MSC_VER) 04823 static void 04824 yy_reduce_print (YYSTYPE *yyvsp, int yyrule, parser_state *p) 04825 #else 04826 static void 04827 yy_reduce_print (yyvsp, yyrule, p) 04828 YYSTYPE *yyvsp; 04829 int yyrule; 04830 parser_state *p; 04831 #endif 04832 { 04833 int yynrhs = yyr2[yyrule]; 04834 int yyi; 04835 unsigned long int yylno = yyrline[yyrule]; 04836 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", 04837 yyrule - 1, yylno); 04838 /* The symbols being reduced. */ 04839 for (yyi = 0; yyi < yynrhs; yyi++) 04840 { 04841 YYFPRINTF (stderr, " $%d = ", yyi + 1); 04842 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], 04843 &(yyvsp[(yyi + 1) - (yynrhs)]) 04844 , p); 04845 YYFPRINTF (stderr, "\n"); 04846 } 04847 } 04848 04849 # define YY_REDUCE_PRINT(Rule) \ 04850 do { \ 04851 if (yydebug) \ 04852 yy_reduce_print (yyvsp, Rule, p); \ 04853 } while (YYID (0)) 04854 04855 /* Nonzero means print parse trace. It is left uninitialized so that 04856 multiple parsers can coexist. */ 04857 int yydebug; 04858 #else /* !YYDEBUG */ 04859 # define YYDPRINTF(Args) 04860 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) 04861 # define YY_STACK_PRINT(Bottom, Top) 04862 # define YY_REDUCE_PRINT(Rule) 04863 #endif /* !YYDEBUG */ 04864 04865 04866 /* YYINITDEPTH -- initial size of the parser's stacks. */ 04867 #ifndef YYINITDEPTH 04868 # define YYINITDEPTH 200 04869 #endif 04870 04871 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only 04872 if the built-in stack extension method is used). 04873 04874 Do not make this value too large; the results are undefined if 04875 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) 04876 evaluated with infinite-precision integer arithmetic. */ 04877 04878 #ifndef YYMAXDEPTH 04879 # define YYMAXDEPTH 10000 04880 #endif 04881 04882 04883 04884 #if YYERROR_VERBOSE 04885 04886 # ifndef yystrlen 04887 # if defined __GLIBC__ && defined _STRING_H 04888 # define yystrlen strlen 04889 # else 04890 /* Return the length of YYSTR. */ 04891 #if (defined __STDC__ || defined __C99__FUNC__ \ 04892 || defined __cplusplus || defined _MSC_VER) 04893 static YYSIZE_T 04894 yystrlen (const char *yystr) 04895 #else 04896 static YYSIZE_T 04897 yystrlen (yystr) 04898 const char *yystr; 04899 #endif 04900 { 04901 YYSIZE_T yylen; 04902 for (yylen = 0; yystr[yylen]; yylen++) 04903 continue; 04904 return yylen; 04905 } 04906 # endif 04907 # endif 04908 04909 # ifndef yystpcpy 04910 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE 04911 # define yystpcpy stpcpy 04912 # else 04913 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in 04914 YYDEST. */ 04915 #if (defined __STDC__ || defined __C99__FUNC__ \ 04916 || defined __cplusplus || defined _MSC_VER) 04917 static char * 04918 yystpcpy (char *yydest, const char *yysrc) 04919 #else 04920 static char * 04921 yystpcpy (yydest, yysrc) 04922 char *yydest; 04923 const char *yysrc; 04924 #endif 04925 { 04926 char *yyd = yydest; 04927 const char *yys = yysrc; 04928 04929 while ((*yyd++ = *yys++) != '\0') 04930 continue; 04931 04932 return yyd - 1; 04933 } 04934 # endif 04935 # endif 04936 04937 # ifndef yytnamerr 04938 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary 04939 quotes and backslashes, so that it's suitable for yyerror. The 04940 heuristic is that double-quoting is unnecessary unless the string 04941 contains an apostrophe, a comma, or backslash (other than 04942 backslash-backslash). YYSTR is taken from yytname. If YYRES is 04943 null, do not copy; instead, return the length of what the result 04944 would have been. */ 04945 static YYSIZE_T 04946 yytnamerr (char *yyres, const char *yystr) 04947 { 04948 if (*yystr == '"') 04949 { 04950 YYSIZE_T yyn = 0; 04951 char const *yyp = yystr; 04952 04953 for (;;) 04954 switch (*++yyp) 04955 { 04956 case '\'': 04957 case ',': 04958 goto do_not_strip_quotes; 04959 04960 case '\\': 04961 if (*++yyp != '\\') 04962 goto do_not_strip_quotes; 04963 /* Fall through. */ 04964 default: 04965 if (yyres) 04966 yyres[yyn] = *yyp; 04967 yyn++; 04968 break; 04969 04970 case '"': 04971 if (yyres) 04972 yyres[yyn] = '\0'; 04973 return yyn; 04974 } 04975 do_not_strip_quotes: ; 04976 } 04977 04978 if (! yyres) 04979 return yystrlen (yystr); 04980 04981 return yystpcpy (yyres, yystr) - yyres; 04982 } 04983 # endif 04984 04985 /* Copy into YYRESULT an error message about the unexpected token 04986 YYCHAR while in state YYSTATE. Return the number of bytes copied, 04987 including the terminating null byte. If YYRESULT is null, do not 04988 copy anything; just return the number of bytes that would be 04989 copied. As a special case, return 0 if an ordinary "syntax error" 04990 message will do. Return YYSIZE_MAXIMUM if overflow occurs during 04991 size calculation. */ 04992 static YYSIZE_T 04993 yysyntax_error (char *yyresult, int yystate, int yychar) 04994 { 04995 int yyn = yypact[yystate]; 04996 04997 if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) 04998 return 0; 04999 else 05000 { 05001 int yytype = YYTRANSLATE (yychar); 05002 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); 05003 YYSIZE_T yysize = yysize0; 05004 YYSIZE_T yysize1; 05005 int yysize_overflow = 0; 05006 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; 05007 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; 05008 int yyx; 05009 05010 # if 0 05011 /* This is so xgettext sees the translatable formats that are 05012 constructed on the fly. */ 05013 YY_("syntax error, unexpected %s"); 05014 YY_("syntax error, unexpected %s, expecting %s"); 05015 YY_("syntax error, unexpected %s, expecting %s or %s"); 05016 YY_("syntax error, unexpected %s, expecting %s or %s or %s"); 05017 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); 05018 # endif 05019 char *yyfmt; 05020 char const *yyf; 05021 static char const yyunexpected[] = "syntax error, unexpected %s"; 05022 static char const yyexpecting[] = ", expecting %s"; 05023 static char const yyor[] = " or %s"; 05024 char yyformat[sizeof yyunexpected 05025 + sizeof yyexpecting - 1 05026 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) 05027 * (sizeof yyor - 1))]; 05028 char const *yyprefix = yyexpecting; 05029 05030 /* Start YYX at -YYN if negative to avoid negative indexes in 05031 YYCHECK. */ 05032 int yyxbegin = yyn < 0 ? -yyn : 0; 05033 05034 /* Stay within bounds of both yycheck and yytname. */ 05035 int yychecklim = YYLAST - yyn + 1; 05036 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; 05037 int yycount = 1; 05038 05039 yyarg[0] = yytname[yytype]; 05040 yyfmt = yystpcpy (yyformat, yyunexpected); 05041 05042 for (yyx = yyxbegin; yyx < yyxend; ++yyx) 05043 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) 05044 { 05045 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) 05046 { 05047 yycount = 1; 05048 yysize = yysize0; 05049 yyformat[sizeof yyunexpected - 1] = '\0'; 05050 break; 05051 } 05052 yyarg[yycount++] = yytname[yyx]; 05053 yysize1 = yysize + yytnamerr (0, yytname[yyx]); 05054 yysize_overflow |= (yysize1 < yysize); 05055 yysize = yysize1; 05056 yyfmt = yystpcpy (yyfmt, yyprefix); 05057 yyprefix = yyor; 05058 } 05059 05060 yyf = YY_(yyformat); 05061 yysize1 = yysize + yystrlen (yyf); 05062 yysize_overflow |= (yysize1 < yysize); 05063 yysize = yysize1; 05064 05065 if (yysize_overflow) 05066 return YYSIZE_MAXIMUM; 05067 05068 if (yyresult) 05069 { 05070 /* Avoid sprintf, as that infringes on the user's name space. 05071 Don't have undefined behavior even if the translation 05072 produced a string with the wrong number of "%s"s. */ 05073 char *yyp = yyresult; 05074 int yyi = 0; 05075 while ((*yyp = *yyf) != '\0') 05076 { 05077 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) 05078 { 05079 yyp += yytnamerr (yyp, yyarg[yyi++]); 05080 yyf += 2; 05081 } 05082 else 05083 { 05084 yyp++; 05085 yyf++; 05086 } 05087 } 05088 } 05089 return yysize; 05090 } 05091 } 05092 #endif /* YYERROR_VERBOSE */ 05093 05094 05095 /*-----------------------------------------------. 05096 | Release the memory associated to this symbol. | 05097 `-----------------------------------------------*/ 05098 05099 /*ARGSUSED*/ 05100 #if (defined __STDC__ || defined __C99__FUNC__ \ 05101 || defined __cplusplus || defined _MSC_VER) 05102 static void 05103 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_state *p) 05104 #else 05105 static void 05106 yydestruct (yymsg, yytype, yyvaluep, p) 05107 const char *yymsg; 05108 int yytype; 05109 YYSTYPE *yyvaluep; 05110 parser_state *p; 05111 #endif 05112 { 05113 YYUSE (yyvaluep); 05114 YYUSE (p); 05115 05116 if (!yymsg) 05117 yymsg = "Deleting"; 05118 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); 05119 05120 switch (yytype) 05121 { 05122 05123 default: 05124 break; 05125 } 05126 } 05127 05128 /* Prevent warnings from -Wmissing-prototypes. */ 05129 #ifdef YYPARSE_PARAM 05130 #if defined __STDC__ || defined __cplusplus 05131 int yyparse (void *YYPARSE_PARAM); 05132 #else 05133 int yyparse (); 05134 #endif 05135 #else /* ! YYPARSE_PARAM */ 05136 #if defined __STDC__ || defined __cplusplus 05137 int yyparse (parser_state *p); 05138 #else 05139 int yyparse (); 05140 #endif 05141 #endif /* ! YYPARSE_PARAM */ 05142 05143 05144 05145 05146 05147 /*-------------------------. 05148 | yyparse or yypush_parse. | 05149 `-------------------------*/ 05150 05151 #ifdef YYPARSE_PARAM 05152 #if (defined __STDC__ || defined __C99__FUNC__ \ 05153 || defined __cplusplus || defined _MSC_VER) 05154 int 05155 yyparse (void *YYPARSE_PARAM) 05156 #else 05157 int 05158 yyparse (YYPARSE_PARAM) 05159 void *YYPARSE_PARAM; 05160 #endif 05161 #else /* ! YYPARSE_PARAM */ 05162 #if (defined __STDC__ || defined __C99__FUNC__ \ 05163 || defined __cplusplus || defined _MSC_VER) 05164 int 05165 yyparse (parser_state *p) 05166 #else 05167 int 05168 yyparse (p) 05169 parser_state *p; 05170 #endif 05171 #endif 05172 { 05173 /* The lookahead symbol. */ 05174 int yychar; 05175 05176 /* The semantic value of the lookahead symbol. */ 05177 YYSTYPE yylval; 05178 05179 /* Number of syntax errors so far. */ 05180 int yynerrs; 05181 05182 int yystate; 05183 /* Number of tokens to shift before error messages enabled. */ 05184 int yyerrstatus; 05185 05186 /* The stacks and their tools: 05187 `yyss': related to states. 05188 `yyvs': related to semantic values. 05189 05190 Refer to the stacks thru separate pointers, to allow yyoverflow 05191 to reallocate them elsewhere. */ 05192 05193 /* The state stack. */ 05194 yytype_int16 yyssa[YYINITDEPTH]; 05195 yytype_int16 *yyss; 05196 yytype_int16 *yyssp; 05197 05198 /* The semantic value stack. */ 05199 YYSTYPE yyvsa[YYINITDEPTH]; 05200 YYSTYPE *yyvs; 05201 YYSTYPE *yyvsp; 05202 05203 YYSIZE_T yystacksize; 05204 05205 int yyn; 05206 int yyresult; 05207 /* Lookahead token as an internal (translated) token number. */ 05208 int yytoken; 05209 /* The variables used to return semantic value and location from the 05210 action routines. */ 05211 YYSTYPE yyval; 05212 05213 #if YYERROR_VERBOSE 05214 /* Buffer for error messages, and its allocated size. */ 05215 char yymsgbuf[128]; 05216 char *yymsg = yymsgbuf; 05217 YYSIZE_T yymsg_alloc = sizeof yymsgbuf; 05218 #endif 05219 05220 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) 05221 05222 /* The number of symbols on the RHS of the reduced rule. 05223 Keep to zero when no symbol should be popped. */ 05224 int yylen = 0; 05225 05226 yytoken = 0; 05227 yyss = yyssa; 05228 yyvs = yyvsa; 05229 yystacksize = YYINITDEPTH; 05230 05231 YYDPRINTF ((stderr, "Starting parse\n")); 05232 05233 yystate = 0; 05234 yyerrstatus = 0; 05235 yynerrs = 0; 05236 yychar = YYEMPTY; /* Cause a token to be read. */ 05237 05238 /* Initialize stack pointers. 05239 Waste one element of value and location stack 05240 so that they stay on the same level as the state stack. 05241 The wasted elements are never initialized. */ 05242 yyssp = yyss; 05243 yyvsp = yyvs; 05244 05245 goto yysetstate; 05246 05247 /*------------------------------------------------------------. 05248 | yynewstate -- Push a new state, which is found in yystate. | 05249 `------------------------------------------------------------*/ 05250 yynewstate: 05251 /* In all cases, when you get here, the value and location stacks 05252 have just been pushed. So pushing a state here evens the stacks. */ 05253 yyssp++; 05254 05255 yysetstate: 05256 *yyssp = yystate; 05257 05258 if (yyss + yystacksize - 1 <= yyssp) 05259 { 05260 /* Get the current used size of the three stacks, in elements. */ 05261 YYSIZE_T yysize = yyssp - yyss + 1; 05262 05263 #ifdef yyoverflow 05264 { 05265 /* Give user a chance to reallocate the stack. Use copies of 05266 these so that the &'s don't force the real ones into 05267 memory. */ 05268 YYSTYPE *yyvs1 = yyvs; 05269 yytype_int16 *yyss1 = yyss; 05270 05271 /* Each stack pointer address is followed by the size of the 05272 data in use in that stack, in bytes. This used to be a 05273 conditional around just the two extra args, but that might 05274 be undefined if yyoverflow is a macro. */ 05275 yyoverflow (YY_("memory exhausted"), 05276 &yyss1, yysize * sizeof (*yyssp), 05277 &yyvs1, yysize * sizeof (*yyvsp), 05278 &yystacksize); 05279 05280 yyss = yyss1; 05281 yyvs = yyvs1; 05282 } 05283 #else /* no yyoverflow */ 05284 # ifndef YYSTACK_RELOCATE 05285 goto yyexhaustedlab; 05286 # else 05287 /* Extend the stack our own way. */ 05288 if (YYMAXDEPTH <= yystacksize) 05289 goto yyexhaustedlab; 05290 yystacksize *= 2; 05291 if (YYMAXDEPTH < yystacksize) 05292 yystacksize = YYMAXDEPTH; 05293 05294 { 05295 yytype_int16 *yyss1 = yyss; 05296 union yyalloc *yyptr = 05297 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); 05298 if (! yyptr) 05299 goto yyexhaustedlab; 05300 YYSTACK_RELOCATE (yyss_alloc, yyss); 05301 YYSTACK_RELOCATE (yyvs_alloc, yyvs); 05302 # undef YYSTACK_RELOCATE 05303 if (yyss1 != yyssa) 05304 YYSTACK_FREE (yyss1); 05305 } 05306 # endif 05307 #endif /* no yyoverflow */ 05308 05309 yyssp = yyss + yysize - 1; 05310 yyvsp = yyvs + yysize - 1; 05311 05312 YYDPRINTF ((stderr, "Stack size increased to %lu\n", 05313 (unsigned long int) yystacksize)); 05314 05315 if (yyss + yystacksize - 1 <= yyssp) 05316 YYABORT; 05317 } 05318 05319 YYDPRINTF ((stderr, "Entering state %d\n", yystate)); 05320 05321 if (yystate == YYFINAL) 05322 YYACCEPT; 05323 05324 goto yybackup; 05325 05326 /*-----------. 05327 | yybackup. | 05328 `-----------*/ 05329 yybackup: 05330 05331 /* Do appropriate processing given the current state. Read a 05332 lookahead token if we need one and don't already have one. */ 05333 05334 /* First try to decide what to do without reference to lookahead token. */ 05335 yyn = yypact[yystate]; 05336 if (yyn == YYPACT_NINF) 05337 goto yydefault; 05338 05339 /* Not known => get a lookahead token if don't already have one. */ 05340 05341 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ 05342 if (yychar == YYEMPTY) 05343 { 05344 YYDPRINTF ((stderr, "Reading a token: ")); 05345 yychar = YYLEX; 05346 } 05347 05348 if (yychar <= YYEOF) 05349 { 05350 yychar = yytoken = YYEOF; 05351 YYDPRINTF ((stderr, "Now at end of input.\n")); 05352 } 05353 else 05354 { 05355 yytoken = YYTRANSLATE (yychar); 05356 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); 05357 } 05358 05359 /* If the proper action on seeing token YYTOKEN is to reduce or to 05360 detect an error, take that action. */ 05361 yyn += yytoken; 05362 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) 05363 goto yydefault; 05364 yyn = yytable[yyn]; 05365 if (yyn <= 0) 05366 { 05367 if (yyn == 0 || yyn == YYTABLE_NINF) 05368 goto yyerrlab; 05369 yyn = -yyn; 05370 goto yyreduce; 05371 } 05372 05373 /* Count tokens shifted since error; after three, turn off error 05374 status. */ 05375 if (yyerrstatus) 05376 yyerrstatus--; 05377 05378 /* Shift the lookahead token. */ 05379 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); 05380 05381 /* Discard the shifted token. */ 05382 yychar = YYEMPTY; 05383 05384 yystate = yyn; 05385 *++yyvsp = yylval; 05386 05387 goto yynewstate; 05388 05389 05390 /*-----------------------------------------------------------. 05391 | yydefault -- do the default action for the current state. | 05392 `-----------------------------------------------------------*/ 05393 yydefault: 05394 yyn = yydefact[yystate]; 05395 if (yyn == 0) 05396 goto yyerrlab; 05397 goto yyreduce; 05398 05399 05400 /*-----------------------------. 05401 | yyreduce -- Do a reduction. | 05402 `-----------------------------*/ 05403 yyreduce: 05404 /* yyn is the number of a rule to reduce with. */ 05405 yylen = yyr2[yyn]; 05406 05407 /* If YYLEN is nonzero, implement the default value of the action: 05408 `$$ = $1'. 05409 05410 Otherwise, the following line sets YYVAL to garbage. 05411 This behavior is undocumented and Bison 05412 users should not rely upon it. Assigning to YYVAL 05413 unconditionally makes the parser a bit smaller, and it avoids a 05414 GCC warning that YYVAL may be used uninitialized. */ 05415 yyval = yyvsp[1-yylen]; 05416 05417 05418 YY_REDUCE_PRINT (yyn); 05419 switch (yyn) 05420 { 05421 case 2: 05422 05423 /* Line 1464 of yacc.c */ 05424 #line 1166 "src/parse.y" 05425 { 05426 p->lstate = EXPR_BEG; 05427 if (!p->locals) p->locals = cons(0,0); 05428 ;} 05429 break; 05430 05431 case 3: 05432 05433 /* Line 1464 of yacc.c */ 05434 #line 1171 "src/parse.y" 05435 { 05436 p->tree = new_scope(p, (yyvsp[(2) - (2)].nd)); 05437 NODE_LINENO(p->tree, (yyvsp[(2) - (2)].nd)); 05438 ;} 05439 break; 05440 05441 case 4: 05442 05443 /* Line 1464 of yacc.c */ 05444 #line 1178 "src/parse.y" 05445 { 05446 (yyval.nd) = (yyvsp[(1) - (2)].nd); 05447 ;} 05448 break; 05449 05450 case 5: 05451 05452 /* Line 1464 of yacc.c */ 05453 #line 1184 "src/parse.y" 05454 { 05455 (yyval.nd) = new_begin(p, 0); 05456 ;} 05457 break; 05458 05459 case 6: 05460 05461 /* Line 1464 of yacc.c */ 05462 #line 1188 "src/parse.y" 05463 { 05464 (yyval.nd) = new_begin(p, (yyvsp[(1) - (1)].nd)); 05465 NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd)); 05466 ;} 05467 break; 05468 05469 case 7: 05470 05471 /* Line 1464 of yacc.c */ 05472 #line 1193 "src/parse.y" 05473 { 05474 (yyval.nd) = push((yyvsp[(1) - (3)].nd), newline_node((yyvsp[(3) - (3)].nd))); 05475 ;} 05476 break; 05477 05478 case 8: 05479 05480 /* Line 1464 of yacc.c */ 05481 #line 1197 "src/parse.y" 05482 { 05483 (yyval.nd) = new_begin(p, 0); 05484 ;} 05485 break; 05486 05487 case 10: 05488 05489 /* Line 1464 of yacc.c */ 05490 #line 1204 "src/parse.y" 05491 { 05492 (yyval.nd) = local_switch(p); 05493 ;} 05494 break; 05495 05496 case 11: 05497 05498 /* Line 1464 of yacc.c */ 05499 #line 1208 "src/parse.y" 05500 { 05501 yyerror(p, "BEGIN not supported"); 05502 local_resume(p, (yyvsp[(2) - (5)].nd)); 05503 (yyval.nd) = 0; 05504 ;} 05505 break; 05506 05507 case 12: 05508 05509 /* Line 1464 of yacc.c */ 05510 #line 1219 "src/parse.y" 05511 { 05512 if ((yyvsp[(2) - (4)].nd)) { 05513 (yyval.nd) = new_rescue(p, (yyvsp[(1) - (4)].nd), (yyvsp[(2) - (4)].nd), (yyvsp[(3) - (4)].nd)); 05514 NODE_LINENO((yyval.nd), (yyvsp[(1) - (4)].nd)); 05515 } 05516 else if ((yyvsp[(3) - (4)].nd)) { 05517 yywarn(p, "else without rescue is useless"); 05518 (yyval.nd) = push((yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd)); 05519 } 05520 else { 05521 (yyval.nd) = (yyvsp[(1) - (4)].nd); 05522 } 05523 if ((yyvsp[(4) - (4)].nd)) { 05524 if ((yyval.nd)) { 05525 (yyval.nd) = new_ensure(p, (yyval.nd), (yyvsp[(4) - (4)].nd)); 05526 } 05527 else { 05528 (yyval.nd) = push((yyvsp[(4) - (4)].nd), new_nil(p)); 05529 } 05530 } 05531 ;} 05532 break; 05533 05534 case 13: 05535 05536 /* Line 1464 of yacc.c */ 05537 #line 1243 "src/parse.y" 05538 { 05539 (yyval.nd) = (yyvsp[(1) - (2)].nd); 05540 ;} 05541 break; 05542 05543 case 14: 05544 05545 /* Line 1464 of yacc.c */ 05546 #line 1249 "src/parse.y" 05547 { 05548 (yyval.nd) = new_begin(p, 0); 05549 ;} 05550 break; 05551 05552 case 15: 05553 05554 /* Line 1464 of yacc.c */ 05555 #line 1253 "src/parse.y" 05556 { 05557 (yyval.nd) = new_begin(p, (yyvsp[(1) - (1)].nd)); 05558 NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd)); 05559 ;} 05560 break; 05561 05562 case 16: 05563 05564 /* Line 1464 of yacc.c */ 05565 #line 1258 "src/parse.y" 05566 { 05567 (yyval.nd) = push((yyvsp[(1) - (3)].nd), newline_node((yyvsp[(3) - (3)].nd))); 05568 ;} 05569 break; 05570 05571 case 17: 05572 05573 /* Line 1464 of yacc.c */ 05574 #line 1262 "src/parse.y" 05575 { 05576 (yyval.nd) = new_begin(p, (yyvsp[(2) - (2)].nd)); 05577 ;} 05578 break; 05579 05580 case 18: 05581 05582 /* Line 1464 of yacc.c */ 05583 #line 1267 "src/parse.y" 05584 {p->lstate = EXPR_FNAME;;} 05585 break; 05586 05587 case 19: 05588 05589 /* Line 1464 of yacc.c */ 05590 #line 1268 "src/parse.y" 05591 { 05592 (yyval.nd) = new_alias(p, (yyvsp[(2) - (4)].id), (yyvsp[(4) - (4)].id)); 05593 ;} 05594 break; 05595 05596 case 20: 05597 05598 /* Line 1464 of yacc.c */ 05599 #line 1272 "src/parse.y" 05600 { 05601 (yyval.nd) = (yyvsp[(2) - (2)].nd); 05602 ;} 05603 break; 05604 05605 case 21: 05606 05607 /* Line 1464 of yacc.c */ 05608 #line 1276 "src/parse.y" 05609 { 05610 (yyval.nd) = new_if(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd), 0); 05611 ;} 05612 break; 05613 05614 case 22: 05615 05616 /* Line 1464 of yacc.c */ 05617 #line 1280 "src/parse.y" 05618 { 05619 (yyval.nd) = new_unless(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd), 0); 05620 ;} 05621 break; 05622 05623 case 23: 05624 05625 /* Line 1464 of yacc.c */ 05626 #line 1284 "src/parse.y" 05627 { 05628 (yyval.nd) = new_while(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd)); 05629 ;} 05630 break; 05631 05632 case 24: 05633 05634 /* Line 1464 of yacc.c */ 05635 #line 1288 "src/parse.y" 05636 { 05637 (yyval.nd) = new_until(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd)); 05638 ;} 05639 break; 05640 05641 case 25: 05642 05643 /* Line 1464 of yacc.c */ 05644 #line 1292 "src/parse.y" 05645 { 05646 (yyval.nd) = new_rescue(p, (yyvsp[(1) - (3)].nd), list1(list3(0, 0, (yyvsp[(3) - (3)].nd))), 0); 05647 ;} 05648 break; 05649 05650 case 26: 05651 05652 /* Line 1464 of yacc.c */ 05653 #line 1296 "src/parse.y" 05654 { 05655 yyerror(p, "END not suported"); 05656 (yyval.nd) = new_postexe(p, (yyvsp[(3) - (4)].nd)); 05657 ;} 05658 break; 05659 05660 case 28: 05661 05662 /* Line 1464 of yacc.c */ 05663 #line 1302 "src/parse.y" 05664 { 05665 (yyval.nd) = new_masgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 05666 ;} 05667 break; 05668 05669 case 29: 05670 05671 /* Line 1464 of yacc.c */ 05672 #line 1306 "src/parse.y" 05673 { 05674 (yyval.nd) = new_op_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].nd)); 05675 ;} 05676 break; 05677 05678 case 30: 05679 05680 /* Line 1464 of yacc.c */ 05681 #line 1310 "src/parse.y" 05682 { 05683 (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (6)].nd), intern("[]",2), (yyvsp[(3) - (6)].nd)), (yyvsp[(5) - (6)].id), (yyvsp[(6) - (6)].nd)); 05684 ;} 05685 break; 05686 05687 case 31: 05688 05689 /* Line 1464 of yacc.c */ 05690 #line 1314 "src/parse.y" 05691 { 05692 (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd)); 05693 ;} 05694 break; 05695 05696 case 32: 05697 05698 /* Line 1464 of yacc.c */ 05699 #line 1318 "src/parse.y" 05700 { 05701 (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd)); 05702 ;} 05703 break; 05704 05705 case 33: 05706 05707 /* Line 1464 of yacc.c */ 05708 #line 1322 "src/parse.y" 05709 { 05710 yyerror(p, "constant re-assignment"); 05711 (yyval.nd) = 0; 05712 ;} 05713 break; 05714 05715 case 34: 05716 05717 /* Line 1464 of yacc.c */ 05718 #line 1327 "src/parse.y" 05719 { 05720 (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd)); 05721 ;} 05722 break; 05723 05724 case 35: 05725 05726 /* Line 1464 of yacc.c */ 05727 #line 1331 "src/parse.y" 05728 { 05729 backref_error(p, (yyvsp[(1) - (3)].nd)); 05730 (yyval.nd) = new_begin(p, 0); 05731 ;} 05732 break; 05733 05734 case 36: 05735 05736 /* Line 1464 of yacc.c */ 05737 #line 1336 "src/parse.y" 05738 { 05739 (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), new_array(p, (yyvsp[(3) - (3)].nd))); 05740 ;} 05741 break; 05742 05743 case 37: 05744 05745 /* Line 1464 of yacc.c */ 05746 #line 1340 "src/parse.y" 05747 { 05748 (yyval.nd) = new_masgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 05749 ;} 05750 break; 05751 05752 case 38: 05753 05754 /* Line 1464 of yacc.c */ 05755 #line 1344 "src/parse.y" 05756 { 05757 (yyval.nd) = new_masgn(p, (yyvsp[(1) - (3)].nd), new_array(p, (yyvsp[(3) - (3)].nd))); 05758 ;} 05759 break; 05760 05761 case 40: 05762 05763 /* Line 1464 of yacc.c */ 05764 #line 1351 "src/parse.y" 05765 { 05766 (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 05767 ;} 05768 break; 05769 05770 case 41: 05771 05772 /* Line 1464 of yacc.c */ 05773 #line 1355 "src/parse.y" 05774 { 05775 (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 05776 ;} 05777 break; 05778 05779 case 43: 05780 05781 /* Line 1464 of yacc.c */ 05782 #line 1363 "src/parse.y" 05783 { 05784 (yyval.nd) = new_and(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 05785 ;} 05786 break; 05787 05788 case 44: 05789 05790 /* Line 1464 of yacc.c */ 05791 #line 1367 "src/parse.y" 05792 { 05793 (yyval.nd) = new_or(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 05794 ;} 05795 break; 05796 05797 case 45: 05798 05799 /* Line 1464 of yacc.c */ 05800 #line 1371 "src/parse.y" 05801 { 05802 (yyval.nd) = call_uni_op(p, cond((yyvsp[(3) - (3)].nd)), "!"); 05803 ;} 05804 break; 05805 05806 case 46: 05807 05808 /* Line 1464 of yacc.c */ 05809 #line 1375 "src/parse.y" 05810 { 05811 (yyval.nd) = call_uni_op(p, cond((yyvsp[(2) - (2)].nd)), "!"); 05812 ;} 05813 break; 05814 05815 case 48: 05816 05817 /* Line 1464 of yacc.c */ 05818 #line 1382 "src/parse.y" 05819 { 05820 if (!(yyvsp[(1) - (1)].nd)) (yyval.nd) = new_nil(p); 05821 else (yyval.nd) = (yyvsp[(1) - (1)].nd); 05822 ;} 05823 break; 05824 05825 case 53: 05826 05827 /* Line 1464 of yacc.c */ 05828 #line 1397 "src/parse.y" 05829 { 05830 local_nest(p); 05831 ;} 05832 break; 05833 05834 case 54: 05835 05836 /* Line 1464 of yacc.c */ 05837 #line 1403 "src/parse.y" 05838 { 05839 (yyval.nd) = new_block(p, (yyvsp[(3) - (5)].nd), (yyvsp[(4) - (5)].nd)); 05840 local_unnest(p); 05841 ;} 05842 break; 05843 05844 case 55: 05845 05846 /* Line 1464 of yacc.c */ 05847 #line 1410 "src/parse.y" 05848 { 05849 (yyval.nd) = new_fcall(p, (yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].nd)); 05850 ;} 05851 break; 05852 05853 case 56: 05854 05855 /* Line 1464 of yacc.c */ 05856 #line 1414 "src/parse.y" 05857 { 05858 args_with_block(p, (yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)); 05859 (yyval.nd) = new_fcall(p, (yyvsp[(1) - (3)].id), (yyvsp[(2) - (3)].nd)); 05860 ;} 05861 break; 05862 05863 case 57: 05864 05865 /* Line 1464 of yacc.c */ 05866 #line 1419 "src/parse.y" 05867 { 05868 (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd)); 05869 ;} 05870 break; 05871 05872 case 58: 05873 05874 /* Line 1464 of yacc.c */ 05875 #line 1423 "src/parse.y" 05876 { 05877 args_with_block(p, (yyvsp[(4) - (5)].nd), (yyvsp[(5) - (5)].nd)); 05878 (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd)); 05879 ;} 05880 break; 05881 05882 case 59: 05883 05884 /* Line 1464 of yacc.c */ 05885 #line 1428 "src/parse.y" 05886 { 05887 (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd)); 05888 ;} 05889 break; 05890 05891 case 60: 05892 05893 /* Line 1464 of yacc.c */ 05894 #line 1432 "src/parse.y" 05895 { 05896 args_with_block(p, (yyvsp[(4) - (5)].nd), (yyvsp[(5) - (5)].nd)); 05897 (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd)); 05898 ;} 05899 break; 05900 05901 case 61: 05902 05903 /* Line 1464 of yacc.c */ 05904 #line 1437 "src/parse.y" 05905 { 05906 (yyval.nd) = new_super(p, (yyvsp[(2) - (2)].nd)); 05907 ;} 05908 break; 05909 05910 case 62: 05911 05912 /* Line 1464 of yacc.c */ 05913 #line 1441 "src/parse.y" 05914 { 05915 (yyval.nd) = new_yield(p, (yyvsp[(2) - (2)].nd)); 05916 ;} 05917 break; 05918 05919 case 63: 05920 05921 /* Line 1464 of yacc.c */ 05922 #line 1445 "src/parse.y" 05923 { 05924 (yyval.nd) = new_return(p, ret_args(p, (yyvsp[(2) - (2)].nd))); 05925 ;} 05926 break; 05927 05928 case 64: 05929 05930 /* Line 1464 of yacc.c */ 05931 #line 1449 "src/parse.y" 05932 { 05933 (yyval.nd) = new_break(p, ret_args(p, (yyvsp[(2) - (2)].nd))); 05934 ;} 05935 break; 05936 05937 case 65: 05938 05939 /* Line 1464 of yacc.c */ 05940 #line 1453 "src/parse.y" 05941 { 05942 (yyval.nd) = new_next(p, ret_args(p, (yyvsp[(2) - (2)].nd))); 05943 ;} 05944 break; 05945 05946 case 66: 05947 05948 /* Line 1464 of yacc.c */ 05949 #line 1459 "src/parse.y" 05950 { 05951 (yyval.nd) = (yyvsp[(1) - (1)].nd); 05952 ;} 05953 break; 05954 05955 case 67: 05956 05957 /* Line 1464 of yacc.c */ 05958 #line 1463 "src/parse.y" 05959 { 05960 (yyval.nd) = (yyvsp[(2) - (3)].nd); 05961 ;} 05962 break; 05963 05964 case 69: 05965 05966 /* Line 1464 of yacc.c */ 05967 #line 1470 "src/parse.y" 05968 { 05969 (yyval.nd) = list1((yyvsp[(2) - (3)].nd)); 05970 ;} 05971 break; 05972 05973 case 70: 05974 05975 /* Line 1464 of yacc.c */ 05976 #line 1476 "src/parse.y" 05977 { 05978 (yyval.nd) = list1((yyvsp[(1) - (1)].nd)); 05979 ;} 05980 break; 05981 05982 case 71: 05983 05984 /* Line 1464 of yacc.c */ 05985 #line 1480 "src/parse.y" 05986 { 05987 (yyval.nd) = list1(push((yyvsp[(1) - (2)].nd),(yyvsp[(2) - (2)].nd))); 05988 ;} 05989 break; 05990 05991 case 72: 05992 05993 /* Line 1464 of yacc.c */ 05994 #line 1484 "src/parse.y" 05995 { 05996 (yyval.nd) = list2((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 05997 ;} 05998 break; 05999 06000 case 73: 06001 06002 /* Line 1464 of yacc.c */ 06003 #line 1488 "src/parse.y" 06004 { 06005 (yyval.nd) = list3((yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].nd), (yyvsp[(5) - (5)].nd)); 06006 ;} 06007 break; 06008 06009 case 74: 06010 06011 /* Line 1464 of yacc.c */ 06012 #line 1492 "src/parse.y" 06013 { 06014 (yyval.nd) = list2((yyvsp[(1) - (2)].nd), new_nil(p)); 06015 ;} 06016 break; 06017 06018 case 75: 06019 06020 /* Line 1464 of yacc.c */ 06021 #line 1496 "src/parse.y" 06022 { 06023 (yyval.nd) = list3((yyvsp[(1) - (4)].nd), new_nil(p), (yyvsp[(4) - (4)].nd)); 06024 ;} 06025 break; 06026 06027 case 76: 06028 06029 /* Line 1464 of yacc.c */ 06030 #line 1500 "src/parse.y" 06031 { 06032 (yyval.nd) = list2(0, (yyvsp[(2) - (2)].nd)); 06033 ;} 06034 break; 06035 06036 case 77: 06037 06038 /* Line 1464 of yacc.c */ 06039 #line 1504 "src/parse.y" 06040 { 06041 (yyval.nd) = list3(0, (yyvsp[(2) - (4)].nd), (yyvsp[(4) - (4)].nd)); 06042 ;} 06043 break; 06044 06045 case 78: 06046 06047 /* Line 1464 of yacc.c */ 06048 #line 1508 "src/parse.y" 06049 { 06050 (yyval.nd) = list2(0, new_nil(p)); 06051 ;} 06052 break; 06053 06054 case 79: 06055 06056 /* Line 1464 of yacc.c */ 06057 #line 1512 "src/parse.y" 06058 { 06059 (yyval.nd) = list3(0, new_nil(p), (yyvsp[(3) - (3)].nd)); 06060 ;} 06061 break; 06062 06063 case 81: 06064 06065 /* Line 1464 of yacc.c */ 06066 #line 1519 "src/parse.y" 06067 { 06068 (yyval.nd) = (yyvsp[(2) - (3)].nd); 06069 ;} 06070 break; 06071 06072 case 82: 06073 06074 /* Line 1464 of yacc.c */ 06075 #line 1525 "src/parse.y" 06076 { 06077 (yyval.nd) = list1((yyvsp[(1) - (2)].nd)); 06078 ;} 06079 break; 06080 06081 case 83: 06082 06083 /* Line 1464 of yacc.c */ 06084 #line 1529 "src/parse.y" 06085 { 06086 (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(2) - (3)].nd)); 06087 ;} 06088 break; 06089 06090 case 84: 06091 06092 /* Line 1464 of yacc.c */ 06093 #line 1535 "src/parse.y" 06094 { 06095 (yyval.nd) = list1((yyvsp[(1) - (1)].nd)); 06096 ;} 06097 break; 06098 06099 case 85: 06100 06101 /* Line 1464 of yacc.c */ 06102 #line 1539 "src/parse.y" 06103 { 06104 (yyval.nd) = push((yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd)); 06105 ;} 06106 break; 06107 06108 case 86: 06109 06110 /* Line 1464 of yacc.c */ 06111 #line 1545 "src/parse.y" 06112 { 06113 assignable(p, (yyvsp[(1) - (1)].nd)); 06114 ;} 06115 break; 06116 06117 case 87: 06118 06119 /* Line 1464 of yacc.c */ 06120 #line 1549 "src/parse.y" 06121 { 06122 (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), intern("[]",2), (yyvsp[(3) - (4)].nd)); 06123 ;} 06124 break; 06125 06126 case 88: 06127 06128 /* Line 1464 of yacc.c */ 06129 #line 1553 "src/parse.y" 06130 { 06131 (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0); 06132 ;} 06133 break; 06134 06135 case 89: 06136 06137 /* Line 1464 of yacc.c */ 06138 #line 1557 "src/parse.y" 06139 { 06140 (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0); 06141 ;} 06142 break; 06143 06144 case 90: 06145 06146 /* Line 1464 of yacc.c */ 06147 #line 1561 "src/parse.y" 06148 { 06149 (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0); 06150 ;} 06151 break; 06152 06153 case 91: 06154 06155 /* Line 1464 of yacc.c */ 06156 #line 1565 "src/parse.y" 06157 { 06158 if (p->in_def || p->in_single) 06159 yyerror(p, "dynamic constant assignment"); 06160 (yyval.nd) = new_colon2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id)); 06161 ;} 06162 break; 06163 06164 case 92: 06165 06166 /* Line 1464 of yacc.c */ 06167 #line 1571 "src/parse.y" 06168 { 06169 if (p->in_def || p->in_single) 06170 yyerror(p, "dynamic constant assignment"); 06171 (yyval.nd) = new_colon3(p, (yyvsp[(2) - (2)].id)); 06172 ;} 06173 break; 06174 06175 case 93: 06176 06177 /* Line 1464 of yacc.c */ 06178 #line 1577 "src/parse.y" 06179 { 06180 backref_error(p, (yyvsp[(1) - (1)].nd)); 06181 (yyval.nd) = 0; 06182 ;} 06183 break; 06184 06185 case 94: 06186 06187 /* Line 1464 of yacc.c */ 06188 #line 1584 "src/parse.y" 06189 { 06190 assignable(p, (yyvsp[(1) - (1)].nd)); 06191 ;} 06192 break; 06193 06194 case 95: 06195 06196 /* Line 1464 of yacc.c */ 06197 #line 1588 "src/parse.y" 06198 { 06199 (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), intern("[]",2), (yyvsp[(3) - (4)].nd)); 06200 ;} 06201 break; 06202 06203 case 96: 06204 06205 /* Line 1464 of yacc.c */ 06206 #line 1592 "src/parse.y" 06207 { 06208 (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0); 06209 ;} 06210 break; 06211 06212 case 97: 06213 06214 /* Line 1464 of yacc.c */ 06215 #line 1596 "src/parse.y" 06216 { 06217 (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0); 06218 ;} 06219 break; 06220 06221 case 98: 06222 06223 /* Line 1464 of yacc.c */ 06224 #line 1600 "src/parse.y" 06225 { 06226 (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0); 06227 ;} 06228 break; 06229 06230 case 99: 06231 06232 /* Line 1464 of yacc.c */ 06233 #line 1604 "src/parse.y" 06234 { 06235 if (p->in_def || p->in_single) 06236 yyerror(p, "dynamic constant assignment"); 06237 (yyval.nd) = new_colon2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id)); 06238 ;} 06239 break; 06240 06241 case 100: 06242 06243 /* Line 1464 of yacc.c */ 06244 #line 1610 "src/parse.y" 06245 { 06246 if (p->in_def || p->in_single) 06247 yyerror(p, "dynamic constant assignment"); 06248 (yyval.nd) = new_colon3(p, (yyvsp[(2) - (2)].id)); 06249 ;} 06250 break; 06251 06252 case 101: 06253 06254 /* Line 1464 of yacc.c */ 06255 #line 1616 "src/parse.y" 06256 { 06257 backref_error(p, (yyvsp[(1) - (1)].nd)); 06258 (yyval.nd) = 0; 06259 ;} 06260 break; 06261 06262 case 102: 06263 06264 /* Line 1464 of yacc.c */ 06265 #line 1623 "src/parse.y" 06266 { 06267 yyerror(p, "class/module name must be CONSTANT"); 06268 ;} 06269 break; 06270 06271 case 104: 06272 06273 /* Line 1464 of yacc.c */ 06274 #line 1630 "src/parse.y" 06275 { 06276 (yyval.nd) = cons((node*)1, nsym((yyvsp[(2) - (2)].id))); 06277 ;} 06278 break; 06279 06280 case 105: 06281 06282 /* Line 1464 of yacc.c */ 06283 #line 1634 "src/parse.y" 06284 { 06285 (yyval.nd) = cons((node*)0, nsym((yyvsp[(1) - (1)].id))); 06286 ;} 06287 break; 06288 06289 case 106: 06290 06291 /* Line 1464 of yacc.c */ 06292 #line 1638 "src/parse.y" 06293 { 06294 (yyval.nd) = cons((yyvsp[(1) - (3)].nd), nsym((yyvsp[(3) - (3)].id))); 06295 ;} 06296 break; 06297 06298 case 110: 06299 06300 /* Line 1464 of yacc.c */ 06301 #line 1647 "src/parse.y" 06302 { 06303 p->lstate = EXPR_ENDFN; 06304 (yyval.id) = (yyvsp[(1) - (1)].id); 06305 ;} 06306 break; 06307 06308 case 111: 06309 06310 /* Line 1464 of yacc.c */ 06311 #line 1652 "src/parse.y" 06312 { 06313 p->lstate = EXPR_ENDFN; 06314 (yyval.id) = (yyvsp[(1) - (1)].id); 06315 ;} 06316 break; 06317 06318 case 114: 06319 06320 /* Line 1464 of yacc.c */ 06321 #line 1663 "src/parse.y" 06322 { 06323 (yyval.nd) = new_undef(p, (yyvsp[(1) - (1)].id)); 06324 ;} 06325 break; 06326 06327 case 115: 06328 06329 /* Line 1464 of yacc.c */ 06330 #line 1666 "src/parse.y" 06331 {p->lstate = EXPR_FNAME;;} 06332 break; 06333 06334 case 116: 06335 06336 /* Line 1464 of yacc.c */ 06337 #line 1667 "src/parse.y" 06338 { 06339 (yyval.nd) = push((yyvsp[(1) - (4)].nd), nsym((yyvsp[(4) - (4)].id))); 06340 ;} 06341 break; 06342 06343 case 117: 06344 06345 /* Line 1464 of yacc.c */ 06346 #line 1672 "src/parse.y" 06347 { (yyval.id) = intern_c('|'); ;} 06348 break; 06349 06350 case 118: 06351 06352 /* Line 1464 of yacc.c */ 06353 #line 1673 "src/parse.y" 06354 { (yyval.id) = intern_c('^'); ;} 06355 break; 06356 06357 case 119: 06358 06359 /* Line 1464 of yacc.c */ 06360 #line 1674 "src/parse.y" 06361 { (yyval.id) = intern_c('&'); ;} 06362 break; 06363 06364 case 120: 06365 06366 /* Line 1464 of yacc.c */ 06367 #line 1675 "src/parse.y" 06368 { (yyval.id) = intern("<=>",3); ;} 06369 break; 06370 06371 case 121: 06372 06373 /* Line 1464 of yacc.c */ 06374 #line 1676 "src/parse.y" 06375 { (yyval.id) = intern("==",2); ;} 06376 break; 06377 06378 case 122: 06379 06380 /* Line 1464 of yacc.c */ 06381 #line 1677 "src/parse.y" 06382 { (yyval.id) = intern("===",3); ;} 06383 break; 06384 06385 case 123: 06386 06387 /* Line 1464 of yacc.c */ 06388 #line 1678 "src/parse.y" 06389 { (yyval.id) = intern("=~",2); ;} 06390 break; 06391 06392 case 124: 06393 06394 /* Line 1464 of yacc.c */ 06395 #line 1679 "src/parse.y" 06396 { (yyval.id) = intern("!~",2); ;} 06397 break; 06398 06399 case 125: 06400 06401 /* Line 1464 of yacc.c */ 06402 #line 1680 "src/parse.y" 06403 { (yyval.id) = intern_c('>'); ;} 06404 break; 06405 06406 case 126: 06407 06408 /* Line 1464 of yacc.c */ 06409 #line 1681 "src/parse.y" 06410 { (yyval.id) = intern(">=",2); ;} 06411 break; 06412 06413 case 127: 06414 06415 /* Line 1464 of yacc.c */ 06416 #line 1682 "src/parse.y" 06417 { (yyval.id) = intern_c('<'); ;} 06418 break; 06419 06420 case 128: 06421 06422 /* Line 1464 of yacc.c */ 06423 #line 1683 "src/parse.y" 06424 { (yyval.id) = intern("<=",2); ;} 06425 break; 06426 06427 case 129: 06428 06429 /* Line 1464 of yacc.c */ 06430 #line 1684 "src/parse.y" 06431 { (yyval.id) = intern("!=",2); ;} 06432 break; 06433 06434 case 130: 06435 06436 /* Line 1464 of yacc.c */ 06437 #line 1685 "src/parse.y" 06438 { (yyval.id) = intern("<<",2); ;} 06439 break; 06440 06441 case 131: 06442 06443 /* Line 1464 of yacc.c */ 06444 #line 1686 "src/parse.y" 06445 { (yyval.id) = intern(">>",2); ;} 06446 break; 06447 06448 case 132: 06449 06450 /* Line 1464 of yacc.c */ 06451 #line 1687 "src/parse.y" 06452 { (yyval.id) = intern_c('+'); ;} 06453 break; 06454 06455 case 133: 06456 06457 /* Line 1464 of yacc.c */ 06458 #line 1688 "src/parse.y" 06459 { (yyval.id) = intern_c('-'); ;} 06460 break; 06461 06462 case 134: 06463 06464 /* Line 1464 of yacc.c */ 06465 #line 1689 "src/parse.y" 06466 { (yyval.id) = intern_c('*'); ;} 06467 break; 06468 06469 case 135: 06470 06471 /* Line 1464 of yacc.c */ 06472 #line 1690 "src/parse.y" 06473 { (yyval.id) = intern_c('*'); ;} 06474 break; 06475 06476 case 136: 06477 06478 /* Line 1464 of yacc.c */ 06479 #line 1691 "src/parse.y" 06480 { (yyval.id) = intern_c('/'); ;} 06481 break; 06482 06483 case 137: 06484 06485 /* Line 1464 of yacc.c */ 06486 #line 1692 "src/parse.y" 06487 { (yyval.id) = intern_c('%'); ;} 06488 break; 06489 06490 case 138: 06491 06492 /* Line 1464 of yacc.c */ 06493 #line 1693 "src/parse.y" 06494 { (yyval.id) = intern("**",2); ;} 06495 break; 06496 06497 case 139: 06498 06499 /* Line 1464 of yacc.c */ 06500 #line 1694 "src/parse.y" 06501 { (yyval.id) = intern_c('!'); ;} 06502 break; 06503 06504 case 140: 06505 06506 /* Line 1464 of yacc.c */ 06507 #line 1695 "src/parse.y" 06508 { (yyval.id) = intern_c('~'); ;} 06509 break; 06510 06511 case 141: 06512 06513 /* Line 1464 of yacc.c */ 06514 #line 1696 "src/parse.y" 06515 { (yyval.id) = intern("+@",2); ;} 06516 break; 06517 06518 case 142: 06519 06520 /* Line 1464 of yacc.c */ 06521 #line 1697 "src/parse.y" 06522 { (yyval.id) = intern("-@",2); ;} 06523 break; 06524 06525 case 143: 06526 06527 /* Line 1464 of yacc.c */ 06528 #line 1698 "src/parse.y" 06529 { (yyval.id) = intern("[]",2); ;} 06530 break; 06531 06532 case 144: 06533 06534 /* Line 1464 of yacc.c */ 06535 #line 1699 "src/parse.y" 06536 { (yyval.id) = intern("[]=",3); ;} 06537 break; 06538 06539 case 145: 06540 06541 /* Line 1464 of yacc.c */ 06542 #line 1700 "src/parse.y" 06543 { (yyval.id) = intern_c('`'); ;} 06544 break; 06545 06546 case 186: 06547 06548 /* Line 1464 of yacc.c */ 06549 #line 1718 "src/parse.y" 06550 { 06551 (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 06552 ;} 06553 break; 06554 06555 case 187: 06556 06557 /* Line 1464 of yacc.c */ 06558 #line 1722 "src/parse.y" 06559 { 06560 (yyval.nd) = new_asgn(p, (yyvsp[(1) - (5)].nd), new_rescue(p, (yyvsp[(3) - (5)].nd), list1(list3(0, 0, (yyvsp[(5) - (5)].nd))), 0)); 06561 ;} 06562 break; 06563 06564 case 188: 06565 06566 /* Line 1464 of yacc.c */ 06567 #line 1726 "src/parse.y" 06568 { 06569 (yyval.nd) = new_op_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].nd)); 06570 ;} 06571 break; 06572 06573 case 189: 06574 06575 /* Line 1464 of yacc.c */ 06576 #line 1730 "src/parse.y" 06577 { 06578 (yyval.nd) = new_op_asgn(p, (yyvsp[(1) - (5)].nd), (yyvsp[(2) - (5)].id), new_rescue(p, (yyvsp[(3) - (5)].nd), list1(list3(0, 0, (yyvsp[(5) - (5)].nd))), 0)); 06579 ;} 06580 break; 06581 06582 case 190: 06583 06584 /* Line 1464 of yacc.c */ 06585 #line 1734 "src/parse.y" 06586 { 06587 (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (6)].nd), intern("[]",2), (yyvsp[(3) - (6)].nd)), (yyvsp[(5) - (6)].id), (yyvsp[(6) - (6)].nd)); 06588 ;} 06589 break; 06590 06591 case 191: 06592 06593 /* Line 1464 of yacc.c */ 06594 #line 1738 "src/parse.y" 06595 { 06596 (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd)); 06597 ;} 06598 break; 06599 06600 case 192: 06601 06602 /* Line 1464 of yacc.c */ 06603 #line 1742 "src/parse.y" 06604 { 06605 (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd)); 06606 ;} 06607 break; 06608 06609 case 193: 06610 06611 /* Line 1464 of yacc.c */ 06612 #line 1746 "src/parse.y" 06613 { 06614 (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd)); 06615 ;} 06616 break; 06617 06618 case 194: 06619 06620 /* Line 1464 of yacc.c */ 06621 #line 1750 "src/parse.y" 06622 { 06623 yyerror(p, "constant re-assignment"); 06624 (yyval.nd) = new_begin(p, 0); 06625 ;} 06626 break; 06627 06628 case 195: 06629 06630 /* Line 1464 of yacc.c */ 06631 #line 1755 "src/parse.y" 06632 { 06633 yyerror(p, "constant re-assignment"); 06634 (yyval.nd) = new_begin(p, 0); 06635 ;} 06636 break; 06637 06638 case 196: 06639 06640 /* Line 1464 of yacc.c */ 06641 #line 1760 "src/parse.y" 06642 { 06643 backref_error(p, (yyvsp[(1) - (3)].nd)); 06644 (yyval.nd) = new_begin(p, 0); 06645 ;} 06646 break; 06647 06648 case 197: 06649 06650 /* Line 1464 of yacc.c */ 06651 #line 1765 "src/parse.y" 06652 { 06653 (yyval.nd) = new_dot2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 06654 ;} 06655 break; 06656 06657 case 198: 06658 06659 /* Line 1464 of yacc.c */ 06660 #line 1769 "src/parse.y" 06661 { 06662 (yyval.nd) = new_dot3(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 06663 ;} 06664 break; 06665 06666 case 199: 06667 06668 /* Line 1464 of yacc.c */ 06669 #line 1773 "src/parse.y" 06670 { 06671 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "+", (yyvsp[(3) - (3)].nd)); 06672 ;} 06673 break; 06674 06675 case 200: 06676 06677 /* Line 1464 of yacc.c */ 06678 #line 1777 "src/parse.y" 06679 { 06680 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "-", (yyvsp[(3) - (3)].nd)); 06681 ;} 06682 break; 06683 06684 case 201: 06685 06686 /* Line 1464 of yacc.c */ 06687 #line 1781 "src/parse.y" 06688 { 06689 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "*", (yyvsp[(3) - (3)].nd)); 06690 ;} 06691 break; 06692 06693 case 202: 06694 06695 /* Line 1464 of yacc.c */ 06696 #line 1785 "src/parse.y" 06697 { 06698 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "/", (yyvsp[(3) - (3)].nd)); 06699 ;} 06700 break; 06701 06702 case 203: 06703 06704 /* Line 1464 of yacc.c */ 06705 #line 1789 "src/parse.y" 06706 { 06707 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "%", (yyvsp[(3) - (3)].nd)); 06708 ;} 06709 break; 06710 06711 case 204: 06712 06713 /* Line 1464 of yacc.c */ 06714 #line 1793 "src/parse.y" 06715 { 06716 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "**", (yyvsp[(3) - (3)].nd)); 06717 ;} 06718 break; 06719 06720 case 205: 06721 06722 /* Line 1464 of yacc.c */ 06723 #line 1797 "src/parse.y" 06724 { 06725 (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[(2) - (4)].nd), "**", (yyvsp[(4) - (4)].nd)), "-@"); 06726 ;} 06727 break; 06728 06729 case 206: 06730 06731 /* Line 1464 of yacc.c */ 06732 #line 1801 "src/parse.y" 06733 { 06734 (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[(2) - (4)].nd), "**", (yyvsp[(4) - (4)].nd)), "-@"); 06735 ;} 06736 break; 06737 06738 case 207: 06739 06740 /* Line 1464 of yacc.c */ 06741 #line 1805 "src/parse.y" 06742 { 06743 (yyval.nd) = call_uni_op(p, (yyvsp[(2) - (2)].nd), "+@"); 06744 ;} 06745 break; 06746 06747 case 208: 06748 06749 /* Line 1464 of yacc.c */ 06750 #line 1809 "src/parse.y" 06751 { 06752 (yyval.nd) = call_uni_op(p, (yyvsp[(2) - (2)].nd), "-@"); 06753 ;} 06754 break; 06755 06756 case 209: 06757 06758 /* Line 1464 of yacc.c */ 06759 #line 1813 "src/parse.y" 06760 { 06761 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "|", (yyvsp[(3) - (3)].nd)); 06762 ;} 06763 break; 06764 06765 case 210: 06766 06767 /* Line 1464 of yacc.c */ 06768 #line 1817 "src/parse.y" 06769 { 06770 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "^", (yyvsp[(3) - (3)].nd)); 06771 ;} 06772 break; 06773 06774 case 211: 06775 06776 /* Line 1464 of yacc.c */ 06777 #line 1821 "src/parse.y" 06778 { 06779 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "&", (yyvsp[(3) - (3)].nd)); 06780 ;} 06781 break; 06782 06783 case 212: 06784 06785 /* Line 1464 of yacc.c */ 06786 #line 1825 "src/parse.y" 06787 { 06788 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<=>", (yyvsp[(3) - (3)].nd)); 06789 ;} 06790 break; 06791 06792 case 213: 06793 06794 /* Line 1464 of yacc.c */ 06795 #line 1829 "src/parse.y" 06796 { 06797 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), ">", (yyvsp[(3) - (3)].nd)); 06798 ;} 06799 break; 06800 06801 case 214: 06802 06803 /* Line 1464 of yacc.c */ 06804 #line 1833 "src/parse.y" 06805 { 06806 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), ">=", (yyvsp[(3) - (3)].nd)); 06807 ;} 06808 break; 06809 06810 case 215: 06811 06812 /* Line 1464 of yacc.c */ 06813 #line 1837 "src/parse.y" 06814 { 06815 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<", (yyvsp[(3) - (3)].nd)); 06816 ;} 06817 break; 06818 06819 case 216: 06820 06821 /* Line 1464 of yacc.c */ 06822 #line 1841 "src/parse.y" 06823 { 06824 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<=", (yyvsp[(3) - (3)].nd)); 06825 ;} 06826 break; 06827 06828 case 217: 06829 06830 /* Line 1464 of yacc.c */ 06831 #line 1845 "src/parse.y" 06832 { 06833 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "==", (yyvsp[(3) - (3)].nd)); 06834 ;} 06835 break; 06836 06837 case 218: 06838 06839 /* Line 1464 of yacc.c */ 06840 #line 1849 "src/parse.y" 06841 { 06842 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "===", (yyvsp[(3) - (3)].nd)); 06843 ;} 06844 break; 06845 06846 case 219: 06847 06848 /* Line 1464 of yacc.c */ 06849 #line 1853 "src/parse.y" 06850 { 06851 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "!=", (yyvsp[(3) - (3)].nd)); 06852 ;} 06853 break; 06854 06855 case 220: 06856 06857 /* Line 1464 of yacc.c */ 06858 #line 1857 "src/parse.y" 06859 { 06860 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "=~", (yyvsp[(3) - (3)].nd)); 06861 ;} 06862 break; 06863 06864 case 221: 06865 06866 /* Line 1464 of yacc.c */ 06867 #line 1861 "src/parse.y" 06868 { 06869 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "!~", (yyvsp[(3) - (3)].nd)); 06870 ;} 06871 break; 06872 06873 case 222: 06874 06875 /* Line 1464 of yacc.c */ 06876 #line 1865 "src/parse.y" 06877 { 06878 (yyval.nd) = call_uni_op(p, cond((yyvsp[(2) - (2)].nd)), "!"); 06879 ;} 06880 break; 06881 06882 case 223: 06883 06884 /* Line 1464 of yacc.c */ 06885 #line 1869 "src/parse.y" 06886 { 06887 (yyval.nd) = call_uni_op(p, cond((yyvsp[(2) - (2)].nd)), "~"); 06888 ;} 06889 break; 06890 06891 case 224: 06892 06893 /* Line 1464 of yacc.c */ 06894 #line 1873 "src/parse.y" 06895 { 06896 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<<", (yyvsp[(3) - (3)].nd)); 06897 ;} 06898 break; 06899 06900 case 225: 06901 06902 /* Line 1464 of yacc.c */ 06903 #line 1877 "src/parse.y" 06904 { 06905 (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), ">>", (yyvsp[(3) - (3)].nd)); 06906 ;} 06907 break; 06908 06909 case 226: 06910 06911 /* Line 1464 of yacc.c */ 06912 #line 1881 "src/parse.y" 06913 { 06914 (yyval.nd) = new_and(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 06915 ;} 06916 break; 06917 06918 case 227: 06919 06920 /* Line 1464 of yacc.c */ 06921 #line 1885 "src/parse.y" 06922 { 06923 (yyval.nd) = new_or(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 06924 ;} 06925 break; 06926 06927 case 228: 06928 06929 /* Line 1464 of yacc.c */ 06930 #line 1889 "src/parse.y" 06931 { 06932 (yyval.nd) = new_if(p, cond((yyvsp[(1) - (6)].nd)), (yyvsp[(3) - (6)].nd), (yyvsp[(6) - (6)].nd)); 06933 ;} 06934 break; 06935 06936 case 229: 06937 06938 /* Line 1464 of yacc.c */ 06939 #line 1893 "src/parse.y" 06940 { 06941 (yyval.nd) = (yyvsp[(1) - (1)].nd); 06942 ;} 06943 break; 06944 06945 case 230: 06946 06947 /* Line 1464 of yacc.c */ 06948 #line 1899 "src/parse.y" 06949 { 06950 (yyval.nd) = (yyvsp[(1) - (1)].nd); 06951 if (!(yyval.nd)) (yyval.nd) = new_nil(p); 06952 ;} 06953 break; 06954 06955 case 232: 06956 06957 /* Line 1464 of yacc.c */ 06958 #line 1907 "src/parse.y" 06959 { 06960 (yyval.nd) = (yyvsp[(1) - (2)].nd); 06961 NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd)); 06962 ;} 06963 break; 06964 06965 case 233: 06966 06967 /* Line 1464 of yacc.c */ 06968 #line 1912 "src/parse.y" 06969 { 06970 (yyval.nd) = push((yyvsp[(1) - (4)].nd), new_hash(p, (yyvsp[(3) - (4)].nd))); 06971 ;} 06972 break; 06973 06974 case 234: 06975 06976 /* Line 1464 of yacc.c */ 06977 #line 1916 "src/parse.y" 06978 { 06979 (yyval.nd) = cons(new_hash(p, (yyvsp[(1) - (2)].nd)), 0); 06980 NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd)); 06981 ;} 06982 break; 06983 06984 case 235: 06985 06986 /* Line 1464 of yacc.c */ 06987 #line 1923 "src/parse.y" 06988 { 06989 (yyval.nd) = (yyvsp[(2) - (3)].nd); 06990 ;} 06991 break; 06992 06993 case 240: 06994 06995 /* Line 1464 of yacc.c */ 06996 #line 1935 "src/parse.y" 06997 { 06998 (yyval.nd) = cons((yyvsp[(1) - (2)].nd),0); 06999 NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd)); 07000 ;} 07001 break; 07002 07003 case 241: 07004 07005 /* Line 1464 of yacc.c */ 07006 #line 1940 "src/parse.y" 07007 { 07008 (yyval.nd) = cons(push((yyvsp[(1) - (4)].nd), new_hash(p, (yyvsp[(3) - (4)].nd))), 0); 07009 NODE_LINENO((yyval.nd), (yyvsp[(1) - (4)].nd)); 07010 ;} 07011 break; 07012 07013 case 242: 07014 07015 /* Line 1464 of yacc.c */ 07016 #line 1945 "src/parse.y" 07017 { 07018 (yyval.nd) = cons(list1(new_hash(p, (yyvsp[(1) - (2)].nd))), 0); 07019 NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd)); 07020 ;} 07021 break; 07022 07023 case 243: 07024 07025 /* Line 1464 of yacc.c */ 07026 #line 1952 "src/parse.y" 07027 { 07028 (yyval.nd) = cons(list1((yyvsp[(1) - (1)].nd)), 0); 07029 NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd)); 07030 ;} 07031 break; 07032 07033 case 244: 07034 07035 /* Line 1464 of yacc.c */ 07036 #line 1957 "src/parse.y" 07037 { 07038 (yyval.nd) = cons((yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd)); 07039 NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd)); 07040 ;} 07041 break; 07042 07043 case 245: 07044 07045 /* Line 1464 of yacc.c */ 07046 #line 1962 "src/parse.y" 07047 { 07048 (yyval.nd) = cons(list1(new_hash(p, (yyvsp[(1) - (2)].nd))), (yyvsp[(2) - (2)].nd)); 07049 NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd)); 07050 ;} 07051 break; 07052 07053 case 246: 07054 07055 /* Line 1464 of yacc.c */ 07056 #line 1967 "src/parse.y" 07057 { 07058 (yyval.nd) = cons(push((yyvsp[(1) - (4)].nd), new_hash(p, (yyvsp[(3) - (4)].nd))), (yyvsp[(4) - (4)].nd)); 07059 NODE_LINENO((yyval.nd), (yyvsp[(1) - (4)].nd)); 07060 ;} 07061 break; 07062 07063 case 247: 07064 07065 /* Line 1464 of yacc.c */ 07066 #line 1972 "src/parse.y" 07067 { 07068 (yyval.nd) = cons(0, (yyvsp[(1) - (1)].nd)); 07069 NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd)); 07070 ;} 07071 break; 07072 07073 case 248: 07074 07075 /* Line 1464 of yacc.c */ 07076 #line 1978 "src/parse.y" 07077 { 07078 (yyval.stack) = p->cmdarg_stack; 07079 CMDARG_PUSH(1); 07080 ;} 07081 break; 07082 07083 case 249: 07084 07085 /* Line 1464 of yacc.c */ 07086 #line 1983 "src/parse.y" 07087 { 07088 p->cmdarg_stack = (yyvsp[(1) - (2)].stack); 07089 (yyval.nd) = (yyvsp[(2) - (2)].nd); 07090 ;} 07091 break; 07092 07093 case 250: 07094 07095 /* Line 1464 of yacc.c */ 07096 #line 1990 "src/parse.y" 07097 { 07098 (yyval.nd) = new_block_arg(p, (yyvsp[(2) - (2)].nd)); 07099 ;} 07100 break; 07101 07102 case 251: 07103 07104 /* Line 1464 of yacc.c */ 07105 #line 1996 "src/parse.y" 07106 { 07107 (yyval.nd) = (yyvsp[(2) - (2)].nd); 07108 ;} 07109 break; 07110 07111 case 252: 07112 07113 /* Line 1464 of yacc.c */ 07114 #line 2000 "src/parse.y" 07115 { 07116 (yyval.nd) = 0; 07117 ;} 07118 break; 07119 07120 case 253: 07121 07122 /* Line 1464 of yacc.c */ 07123 #line 2006 "src/parse.y" 07124 { 07125 (yyval.nd) = cons((yyvsp[(1) - (1)].nd), 0); 07126 NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd)); 07127 ;} 07128 break; 07129 07130 case 254: 07131 07132 /* Line 1464 of yacc.c */ 07133 #line 2011 "src/parse.y" 07134 { 07135 (yyval.nd) = cons(new_splat(p, (yyvsp[(2) - (2)].nd)), 0); 07136 NODE_LINENO((yyval.nd), (yyvsp[(2) - (2)].nd)); 07137 ;} 07138 break; 07139 07140 case 255: 07141 07142 /* Line 1464 of yacc.c */ 07143 #line 2016 "src/parse.y" 07144 { 07145 (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 07146 ;} 07147 break; 07148 07149 case 256: 07150 07151 /* Line 1464 of yacc.c */ 07152 #line 2020 "src/parse.y" 07153 { 07154 (yyval.nd) = push((yyvsp[(1) - (4)].nd), new_splat(p, (yyvsp[(4) - (4)].nd))); 07155 ;} 07156 break; 07157 07158 case 257: 07159 07160 /* Line 1464 of yacc.c */ 07161 #line 2024 "src/parse.y" 07162 { 07163 (yyval.nd) = push((yyvsp[(1) - (4)].nd), (yyvsp[(4) - (4)].nd)); 07164 ;} 07165 break; 07166 07167 case 258: 07168 07169 /* Line 1464 of yacc.c */ 07170 #line 2028 "src/parse.y" 07171 { 07172 (yyval.nd) = push((yyvsp[(1) - (5)].nd), new_splat(p, (yyvsp[(5) - (5)].nd))); 07173 ;} 07174 break; 07175 07176 case 259: 07177 07178 /* Line 1464 of yacc.c */ 07179 #line 2034 "src/parse.y" 07180 { 07181 (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 07182 ;} 07183 break; 07184 07185 case 260: 07186 07187 /* Line 1464 of yacc.c */ 07188 #line 2038 "src/parse.y" 07189 { 07190 (yyval.nd) = push((yyvsp[(1) - (4)].nd), new_splat(p, (yyvsp[(4) - (4)].nd))); 07191 ;} 07192 break; 07193 07194 case 261: 07195 07196 /* Line 1464 of yacc.c */ 07197 #line 2042 "src/parse.y" 07198 { 07199 (yyval.nd) = list1(new_splat(p, (yyvsp[(2) - (2)].nd))); 07200 ;} 07201 break; 07202 07203 case 269: 07204 07205 /* Line 1464 of yacc.c */ 07206 #line 2055 "src/parse.y" 07207 { 07208 (yyval.nd) = new_fcall(p, (yyvsp[(1) - (1)].id), 0); 07209 ;} 07210 break; 07211 07212 case 270: 07213 07214 /* Line 1464 of yacc.c */ 07215 #line 2059 "src/parse.y" 07216 { 07217 (yyval.stack) = p->cmdarg_stack; 07218 p->cmdarg_stack = 0; 07219 ;} 07220 break; 07221 07222 case 271: 07223 07224 /* Line 1464 of yacc.c */ 07225 #line 2065 "src/parse.y" 07226 { 07227 p->cmdarg_stack = (yyvsp[(2) - (4)].stack); 07228 (yyval.nd) = (yyvsp[(3) - (4)].nd); 07229 ;} 07230 break; 07231 07232 case 272: 07233 07234 /* Line 1464 of yacc.c */ 07235 #line 2070 "src/parse.y" 07236 { 07237 (yyval.stack) = p->cmdarg_stack; 07238 p->cmdarg_stack = 0; 07239 ;} 07240 break; 07241 07242 case 273: 07243 07244 /* Line 1464 of yacc.c */ 07245 #line 2074 "src/parse.y" 07246 {p->lstate = EXPR_ENDARG;;} 07247 break; 07248 07249 case 274: 07250 07251 /* Line 1464 of yacc.c */ 07252 #line 2075 "src/parse.y" 07253 { 07254 p->cmdarg_stack = (yyvsp[(2) - (5)].stack); 07255 (yyval.nd) = (yyvsp[(3) - (5)].nd); 07256 ;} 07257 break; 07258 07259 case 275: 07260 07261 /* Line 1464 of yacc.c */ 07262 #line 2079 "src/parse.y" 07263 {p->lstate = EXPR_ENDARG;;} 07264 break; 07265 07266 case 276: 07267 07268 /* Line 1464 of yacc.c */ 07269 #line 2080 "src/parse.y" 07270 { 07271 (yyval.nd) = 0; 07272 ;} 07273 break; 07274 07275 case 277: 07276 07277 /* Line 1464 of yacc.c */ 07278 #line 2084 "src/parse.y" 07279 { 07280 (yyval.nd) = (yyvsp[(2) - (3)].nd); 07281 ;} 07282 break; 07283 07284 case 278: 07285 07286 /* Line 1464 of yacc.c */ 07287 #line 2088 "src/parse.y" 07288 { 07289 (yyval.nd) = new_colon2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id)); 07290 ;} 07291 break; 07292 07293 case 279: 07294 07295 /* Line 1464 of yacc.c */ 07296 #line 2092 "src/parse.y" 07297 { 07298 (yyval.nd) = new_colon3(p, (yyvsp[(2) - (2)].id)); 07299 ;} 07300 break; 07301 07302 case 280: 07303 07304 /* Line 1464 of yacc.c */ 07305 #line 2096 "src/parse.y" 07306 { 07307 (yyval.nd) = new_array(p, (yyvsp[(2) - (3)].nd)); 07308 NODE_LINENO((yyval.nd), (yyvsp[(2) - (3)].nd)); 07309 ;} 07310 break; 07311 07312 case 281: 07313 07314 /* Line 1464 of yacc.c */ 07315 #line 2101 "src/parse.y" 07316 { 07317 (yyval.nd) = new_hash(p, (yyvsp[(2) - (3)].nd)); 07318 NODE_LINENO((yyval.nd), (yyvsp[(2) - (3)].nd)); 07319 ;} 07320 break; 07321 07322 case 282: 07323 07324 /* Line 1464 of yacc.c */ 07325 #line 2106 "src/parse.y" 07326 { 07327 (yyval.nd) = new_return(p, 0); 07328 ;} 07329 break; 07330 07331 case 283: 07332 07333 /* Line 1464 of yacc.c */ 07334 #line 2110 "src/parse.y" 07335 { 07336 (yyval.nd) = new_yield(p, (yyvsp[(3) - (4)].nd)); 07337 ;} 07338 break; 07339 07340 case 284: 07341 07342 /* Line 1464 of yacc.c */ 07343 #line 2114 "src/parse.y" 07344 { 07345 (yyval.nd) = new_yield(p, 0); 07346 ;} 07347 break; 07348 07349 case 285: 07350 07351 /* Line 1464 of yacc.c */ 07352 #line 2118 "src/parse.y" 07353 { 07354 (yyval.nd) = new_yield(p, 0); 07355 ;} 07356 break; 07357 07358 case 286: 07359 07360 /* Line 1464 of yacc.c */ 07361 #line 2122 "src/parse.y" 07362 { 07363 (yyval.nd) = call_uni_op(p, cond((yyvsp[(3) - (4)].nd)), "!"); 07364 ;} 07365 break; 07366 07367 case 287: 07368 07369 /* Line 1464 of yacc.c */ 07370 #line 2126 "src/parse.y" 07371 { 07372 (yyval.nd) = call_uni_op(p, new_nil(p), "!"); 07373 ;} 07374 break; 07375 07376 case 288: 07377 07378 /* Line 1464 of yacc.c */ 07379 #line 2130 "src/parse.y" 07380 { 07381 (yyval.nd) = new_fcall(p, (yyvsp[(1) - (2)].id), cons(0, (yyvsp[(2) - (2)].nd))); 07382 ;} 07383 break; 07384 07385 case 290: 07386 07387 /* Line 1464 of yacc.c */ 07388 #line 2135 "src/parse.y" 07389 { 07390 call_with_block(p, (yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd)); 07391 (yyval.nd) = (yyvsp[(1) - (2)].nd); 07392 ;} 07393 break; 07394 07395 case 291: 07396 07397 /* Line 1464 of yacc.c */ 07398 #line 2140 "src/parse.y" 07399 { 07400 local_nest(p); 07401 (yyval.num) = p->lpar_beg; 07402 p->lpar_beg = ++p->paren_nest; 07403 ;} 07404 break; 07405 07406 case 292: 07407 07408 /* Line 1464 of yacc.c */ 07409 #line 2147 "src/parse.y" 07410 { 07411 p->lpar_beg = (yyvsp[(2) - (4)].num); 07412 (yyval.nd) = new_lambda(p, (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].nd)); 07413 local_unnest(p); 07414 ;} 07415 break; 07416 07417 case 293: 07418 07419 /* Line 1464 of yacc.c */ 07420 #line 2156 "src/parse.y" 07421 { 07422 (yyval.nd) = new_if(p, cond((yyvsp[(2) - (6)].nd)), (yyvsp[(4) - (6)].nd), (yyvsp[(5) - (6)].nd)); 07423 SET_LINENO((yyval.nd), (yyvsp[(1) - (6)].num)); 07424 ;} 07425 break; 07426 07427 case 294: 07428 07429 /* Line 1464 of yacc.c */ 07430 #line 2164 "src/parse.y" 07431 { 07432 (yyval.nd) = new_unless(p, cond((yyvsp[(2) - (6)].nd)), (yyvsp[(4) - (6)].nd), (yyvsp[(5) - (6)].nd)); 07433 SET_LINENO((yyval.nd), (yyvsp[(1) - (6)].num)); 07434 ;} 07435 break; 07436 07437 case 295: 07438 07439 /* Line 1464 of yacc.c */ 07440 #line 2168 "src/parse.y" 07441 {COND_PUSH(1);;} 07442 break; 07443 07444 case 296: 07445 07446 /* Line 1464 of yacc.c */ 07447 #line 2168 "src/parse.y" 07448 {COND_POP();;} 07449 break; 07450 07451 case 297: 07452 07453 /* Line 1464 of yacc.c */ 07454 #line 2171 "src/parse.y" 07455 { 07456 (yyval.nd) = new_while(p, cond((yyvsp[(3) - (7)].nd)), (yyvsp[(6) - (7)].nd)); 07457 SET_LINENO((yyval.nd), (yyvsp[(1) - (7)].num)); 07458 ;} 07459 break; 07460 07461 case 298: 07462 07463 /* Line 1464 of yacc.c */ 07464 #line 2175 "src/parse.y" 07465 {COND_PUSH(1);;} 07466 break; 07467 07468 case 299: 07469 07470 /* Line 1464 of yacc.c */ 07471 #line 2175 "src/parse.y" 07472 {COND_POP();;} 07473 break; 07474 07475 case 300: 07476 07477 /* Line 1464 of yacc.c */ 07478 #line 2178 "src/parse.y" 07479 { 07480 (yyval.nd) = new_until(p, cond((yyvsp[(3) - (7)].nd)), (yyvsp[(6) - (7)].nd)); 07481 SET_LINENO((yyval.nd), (yyvsp[(1) - (7)].num)); 07482 ;} 07483 break; 07484 07485 case 301: 07486 07487 /* Line 1464 of yacc.c */ 07488 #line 2185 "src/parse.y" 07489 { 07490 (yyval.nd) = new_case(p, (yyvsp[(2) - (5)].nd), (yyvsp[(4) - (5)].nd)); 07491 ;} 07492 break; 07493 07494 case 302: 07495 07496 /* Line 1464 of yacc.c */ 07497 #line 2189 "src/parse.y" 07498 { 07499 (yyval.nd) = new_case(p, 0, (yyvsp[(3) - (4)].nd)); 07500 ;} 07501 break; 07502 07503 case 303: 07504 07505 /* Line 1464 of yacc.c */ 07506 #line 2193 "src/parse.y" 07507 {COND_PUSH(1);;} 07508 break; 07509 07510 case 304: 07511 07512 /* Line 1464 of yacc.c */ 07513 #line 2195 "src/parse.y" 07514 {COND_POP();;} 07515 break; 07516 07517 case 305: 07518 07519 /* Line 1464 of yacc.c */ 07520 #line 2198 "src/parse.y" 07521 { 07522 (yyval.nd) = new_for(p, (yyvsp[(2) - (9)].nd), (yyvsp[(5) - (9)].nd), (yyvsp[(8) - (9)].nd)); 07523 SET_LINENO((yyval.nd), (yyvsp[(1) - (9)].num)); 07524 ;} 07525 break; 07526 07527 case 306: 07528 07529 /* Line 1464 of yacc.c */ 07530 #line 2204 "src/parse.y" 07531 { 07532 if (p->in_def || p->in_single) 07533 yyerror(p, "class definition in method body"); 07534 (yyval.nd) = local_switch(p); 07535 ;} 07536 break; 07537 07538 case 307: 07539 07540 /* Line 1464 of yacc.c */ 07541 #line 2211 "src/parse.y" 07542 { 07543 (yyval.nd) = new_class(p, (yyvsp[(2) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].nd)); 07544 SET_LINENO((yyval.nd), (yyvsp[(1) - (6)].num)); 07545 local_resume(p, (yyvsp[(4) - (6)].nd)); 07546 ;} 07547 break; 07548 07549 case 308: 07550 07551 /* Line 1464 of yacc.c */ 07552 #line 2218 "src/parse.y" 07553 { 07554 (yyval.num) = p->in_def; 07555 p->in_def = 0; 07556 ;} 07557 break; 07558 07559 case 309: 07560 07561 /* Line 1464 of yacc.c */ 07562 #line 2223 "src/parse.y" 07563 { 07564 (yyval.nd) = cons(local_switch(p), (node*)(intptr_t)p->in_single); 07565 p->in_single = 0; 07566 ;} 07567 break; 07568 07569 case 310: 07570 07571 /* Line 1464 of yacc.c */ 07572 #line 2229 "src/parse.y" 07573 { 07574 (yyval.nd) = new_sclass(p, (yyvsp[(3) - (8)].nd), (yyvsp[(7) - (8)].nd)); 07575 SET_LINENO((yyval.nd), (yyvsp[(1) - (8)].num)); 07576 local_resume(p, (yyvsp[(6) - (8)].nd)->car); 07577 p->in_def = (yyvsp[(4) - (8)].num); 07578 p->in_single = (int)(intptr_t)(yyvsp[(6) - (8)].nd)->cdr; 07579 ;} 07580 break; 07581 07582 case 311: 07583 07584 /* Line 1464 of yacc.c */ 07585 #line 2238 "src/parse.y" 07586 { 07587 if (p->in_def || p->in_single) 07588 yyerror(p, "module definition in method body"); 07589 (yyval.nd) = local_switch(p); 07590 ;} 07591 break; 07592 07593 case 312: 07594 07595 /* Line 1464 of yacc.c */ 07596 #line 2245 "src/parse.y" 07597 { 07598 (yyval.nd) = new_module(p, (yyvsp[(2) - (5)].nd), (yyvsp[(4) - (5)].nd)); 07599 SET_LINENO((yyval.nd), (yyvsp[(1) - (5)].num)); 07600 local_resume(p, (yyvsp[(3) - (5)].nd)); 07601 ;} 07602 break; 07603 07604 case 313: 07605 07606 /* Line 1464 of yacc.c */ 07607 #line 2251 "src/parse.y" 07608 { 07609 (yyval.stack) = p->cmdarg_stack; 07610 p->cmdarg_stack = 0; 07611 ;} 07612 break; 07613 07614 case 314: 07615 07616 /* Line 1464 of yacc.c */ 07617 #line 2255 "src/parse.y" 07618 { 07619 p->in_def++; 07620 (yyval.nd) = local_switch(p); 07621 ;} 07622 break; 07623 07624 case 315: 07625 07626 /* Line 1464 of yacc.c */ 07627 #line 2262 "src/parse.y" 07628 { 07629 (yyval.nd) = new_def(p, (yyvsp[(2) - (7)].id), (yyvsp[(5) - (7)].nd), (yyvsp[(6) - (7)].nd)); 07630 SET_LINENO((yyval.nd), (yyvsp[(1) - (7)].num)); 07631 local_resume(p, (yyvsp[(4) - (7)].nd)); 07632 p->in_def--; 07633 p->cmdarg_stack = (yyvsp[(3) - (7)].stack); 07634 ;} 07635 break; 07636 07637 case 316: 07638 07639 /* Line 1464 of yacc.c */ 07640 #line 2270 "src/parse.y" 07641 { 07642 p->lstate = EXPR_FNAME; 07643 (yyval.stack) = p->cmdarg_stack; 07644 p->cmdarg_stack = 0; 07645 ;} 07646 break; 07647 07648 case 317: 07649 07650 /* Line 1464 of yacc.c */ 07651 #line 2276 "src/parse.y" 07652 { 07653 p->in_single++; 07654 p->lstate = EXPR_ENDFN; /* force for args */ 07655 (yyval.nd) = local_switch(p); 07656 ;} 07657 break; 07658 07659 case 318: 07660 07661 /* Line 1464 of yacc.c */ 07662 #line 2284 "src/parse.y" 07663 { 07664 (yyval.nd) = new_sdef(p, (yyvsp[(2) - (9)].nd), (yyvsp[(5) - (9)].id), (yyvsp[(7) - (9)].nd), (yyvsp[(8) - (9)].nd)); 07665 SET_LINENO((yyval.nd), (yyvsp[(1) - (9)].num)); 07666 local_resume(p, (yyvsp[(6) - (9)].nd)); 07667 p->in_single--; 07668 p->cmdarg_stack = (yyvsp[(4) - (9)].stack); 07669 ;} 07670 break; 07671 07672 case 319: 07673 07674 /* Line 1464 of yacc.c */ 07675 #line 2292 "src/parse.y" 07676 { 07677 (yyval.nd) = new_break(p, 0); 07678 ;} 07679 break; 07680 07681 case 320: 07682 07683 /* Line 1464 of yacc.c */ 07684 #line 2296 "src/parse.y" 07685 { 07686 (yyval.nd) = new_next(p, 0); 07687 ;} 07688 break; 07689 07690 case 321: 07691 07692 /* Line 1464 of yacc.c */ 07693 #line 2300 "src/parse.y" 07694 { 07695 (yyval.nd) = new_redo(p); 07696 ;} 07697 break; 07698 07699 case 322: 07700 07701 /* Line 1464 of yacc.c */ 07702 #line 2304 "src/parse.y" 07703 { 07704 (yyval.nd) = new_retry(p); 07705 ;} 07706 break; 07707 07708 case 323: 07709 07710 /* Line 1464 of yacc.c */ 07711 #line 2310 "src/parse.y" 07712 { 07713 (yyval.nd) = (yyvsp[(1) - (1)].nd); 07714 if (!(yyval.nd)) (yyval.nd) = new_nil(p); 07715 ;} 07716 break; 07717 07718 case 330: 07719 07720 /* Line 1464 of yacc.c */ 07721 #line 2329 "src/parse.y" 07722 { 07723 (yyval.nd) = new_if(p, cond((yyvsp[(2) - (5)].nd)), (yyvsp[(4) - (5)].nd), (yyvsp[(5) - (5)].nd)); 07724 ;} 07725 break; 07726 07727 case 332: 07728 07729 /* Line 1464 of yacc.c */ 07730 #line 2336 "src/parse.y" 07731 { 07732 (yyval.nd) = (yyvsp[(2) - (2)].nd); 07733 ;} 07734 break; 07735 07736 case 333: 07737 07738 /* Line 1464 of yacc.c */ 07739 #line 2342 "src/parse.y" 07740 { 07741 (yyval.nd) = list1(list1((yyvsp[(1) - (1)].nd))); 07742 ;} 07743 break; 07744 07745 case 335: 07746 07747 /* Line 1464 of yacc.c */ 07748 #line 2349 "src/parse.y" 07749 { 07750 (yyval.nd) = new_arg(p, (yyvsp[(1) - (1)].id)); 07751 ;} 07752 break; 07753 07754 case 336: 07755 07756 /* Line 1464 of yacc.c */ 07757 #line 2353 "src/parse.y" 07758 { 07759 (yyval.nd) = new_masgn(p, (yyvsp[(2) - (3)].nd), 0); 07760 ;} 07761 break; 07762 07763 case 337: 07764 07765 /* Line 1464 of yacc.c */ 07766 #line 2359 "src/parse.y" 07767 { 07768 (yyval.nd) = list1((yyvsp[(1) - (1)].nd)); 07769 ;} 07770 break; 07771 07772 case 338: 07773 07774 /* Line 1464 of yacc.c */ 07775 #line 2363 "src/parse.y" 07776 { 07777 (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 07778 ;} 07779 break; 07780 07781 case 339: 07782 07783 /* Line 1464 of yacc.c */ 07784 #line 2369 "src/parse.y" 07785 { 07786 (yyval.nd) = list3((yyvsp[(1) - (1)].nd),0,0); 07787 ;} 07788 break; 07789 07790 case 340: 07791 07792 /* Line 1464 of yacc.c */ 07793 #line 2373 "src/parse.y" 07794 { 07795 (yyval.nd) = list3((yyvsp[(1) - (4)].nd), new_arg(p, (yyvsp[(4) - (4)].id)), 0); 07796 ;} 07797 break; 07798 07799 case 341: 07800 07801 /* Line 1464 of yacc.c */ 07802 #line 2377 "src/parse.y" 07803 { 07804 (yyval.nd) = list3((yyvsp[(1) - (6)].nd), new_arg(p, (yyvsp[(4) - (6)].id)), (yyvsp[(6) - (6)].nd)); 07805 ;} 07806 break; 07807 07808 case 342: 07809 07810 /* Line 1464 of yacc.c */ 07811 #line 2381 "src/parse.y" 07812 { 07813 (yyval.nd) = list3((yyvsp[(1) - (3)].nd), (node*)-1, 0); 07814 ;} 07815 break; 07816 07817 case 343: 07818 07819 /* Line 1464 of yacc.c */ 07820 #line 2385 "src/parse.y" 07821 { 07822 (yyval.nd) = list3((yyvsp[(1) - (5)].nd), (node*)-1, (yyvsp[(5) - (5)].nd)); 07823 ;} 07824 break; 07825 07826 case 344: 07827 07828 /* Line 1464 of yacc.c */ 07829 #line 2389 "src/parse.y" 07830 { 07831 (yyval.nd) = list3(0, new_arg(p, (yyvsp[(2) - (2)].id)), 0); 07832 ;} 07833 break; 07834 07835 case 345: 07836 07837 /* Line 1464 of yacc.c */ 07838 #line 2393 "src/parse.y" 07839 { 07840 (yyval.nd) = list3(0, new_arg(p, (yyvsp[(2) - (4)].id)), (yyvsp[(4) - (4)].nd)); 07841 ;} 07842 break; 07843 07844 case 346: 07845 07846 /* Line 1464 of yacc.c */ 07847 #line 2397 "src/parse.y" 07848 { 07849 (yyval.nd) = list3(0, (node*)-1, 0); 07850 ;} 07851 break; 07852 07853 case 347: 07854 07855 /* Line 1464 of yacc.c */ 07856 #line 2401 "src/parse.y" 07857 { 07858 (yyval.nd) = list3(0, (node*)-1, (yyvsp[(3) - (3)].nd)); 07859 ;} 07860 break; 07861 07862 case 348: 07863 07864 /* Line 1464 of yacc.c */ 07865 #line 2407 "src/parse.y" 07866 { 07867 (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id)); 07868 ;} 07869 break; 07870 07871 case 349: 07872 07873 /* Line 1464 of yacc.c */ 07874 #line 2411 "src/parse.y" 07875 { 07876 (yyval.nd) = new_args(p, (yyvsp[(1) - (8)].nd), (yyvsp[(3) - (8)].nd), (yyvsp[(5) - (8)].id), (yyvsp[(7) - (8)].nd), (yyvsp[(8) - (8)].id)); 07877 ;} 07878 break; 07879 07880 case 350: 07881 07882 /* Line 1464 of yacc.c */ 07883 #line 2415 "src/parse.y" 07884 { 07885 (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd), 0, 0, (yyvsp[(4) - (4)].id)); 07886 ;} 07887 break; 07888 07889 case 351: 07890 07891 /* Line 1464 of yacc.c */ 07892 #line 2419 "src/parse.y" 07893 { 07894 (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), 0, (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id)); 07895 ;} 07896 break; 07897 07898 case 352: 07899 07900 /* Line 1464 of yacc.c */ 07901 #line 2423 "src/parse.y" 07902 { 07903 (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id)); 07904 ;} 07905 break; 07906 07907 case 353: 07908 07909 /* Line 1464 of yacc.c */ 07910 #line 2427 "src/parse.y" 07911 { 07912 (yyval.nd) = new_args(p, (yyvsp[(1) - (2)].nd), 0, 1, 0, 0); 07913 ;} 07914 break; 07915 07916 case 354: 07917 07918 /* Line 1464 of yacc.c */ 07919 #line 2431 "src/parse.y" 07920 { 07921 (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), 0, (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id)); 07922 ;} 07923 break; 07924 07925 case 355: 07926 07927 /* Line 1464 of yacc.c */ 07928 #line 2435 "src/parse.y" 07929 { 07930 (yyval.nd) = new_args(p, (yyvsp[(1) - (2)].nd), 0, 0, 0, (yyvsp[(2) - (2)].id)); 07931 ;} 07932 break; 07933 07934 case 356: 07935 07936 /* Line 1464 of yacc.c */ 07937 #line 2439 "src/parse.y" 07938 { 07939 (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id)); 07940 ;} 07941 break; 07942 07943 case 357: 07944 07945 /* Line 1464 of yacc.c */ 07946 #line 2443 "src/parse.y" 07947 { 07948 (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id)); 07949 ;} 07950 break; 07951 07952 case 358: 07953 07954 /* Line 1464 of yacc.c */ 07955 #line 2447 "src/parse.y" 07956 { 07957 (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (2)].nd), 0, 0, (yyvsp[(2) - (2)].id)); 07958 ;} 07959 break; 07960 07961 case 359: 07962 07963 /* Line 1464 of yacc.c */ 07964 #line 2451 "src/parse.y" 07965 { 07966 (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id)); 07967 ;} 07968 break; 07969 07970 case 360: 07971 07972 /* Line 1464 of yacc.c */ 07973 #line 2455 "src/parse.y" 07974 { 07975 (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (2)].id), 0, (yyvsp[(2) - (2)].id)); 07976 ;} 07977 break; 07978 07979 case 361: 07980 07981 /* Line 1464 of yacc.c */ 07982 #line 2459 "src/parse.y" 07983 { 07984 (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id)); 07985 ;} 07986 break; 07987 07988 case 362: 07989 07990 /* Line 1464 of yacc.c */ 07991 #line 2463 "src/parse.y" 07992 { 07993 (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[(1) - (1)].id)); 07994 ;} 07995 break; 07996 07997 case 364: 07998 07999 /* Line 1464 of yacc.c */ 08000 #line 2470 "src/parse.y" 08001 { 08002 p->cmd_start = TRUE; 08003 (yyval.nd) = (yyvsp[(1) - (1)].nd); 08004 ;} 08005 break; 08006 08007 case 365: 08008 08009 /* Line 1464 of yacc.c */ 08010 #line 2477 "src/parse.y" 08011 { 08012 (yyval.nd) = 0; 08013 ;} 08014 break; 08015 08016 case 366: 08017 08018 /* Line 1464 of yacc.c */ 08019 #line 2481 "src/parse.y" 08020 { 08021 (yyval.nd) = 0; 08022 ;} 08023 break; 08024 08025 case 367: 08026 08027 /* Line 1464 of yacc.c */ 08028 #line 2485 "src/parse.y" 08029 { 08030 (yyval.nd) = (yyvsp[(2) - (4)].nd); 08031 ;} 08032 break; 08033 08034 case 368: 08035 08036 /* Line 1464 of yacc.c */ 08037 #line 2492 "src/parse.y" 08038 { 08039 (yyval.nd) = 0; 08040 ;} 08041 break; 08042 08043 case 369: 08044 08045 /* Line 1464 of yacc.c */ 08046 #line 2496 "src/parse.y" 08047 { 08048 (yyval.nd) = 0; 08049 ;} 08050 break; 08051 08052 case 372: 08053 08054 /* Line 1464 of yacc.c */ 08055 #line 2506 "src/parse.y" 08056 { 08057 local_add_f(p, (yyvsp[(1) - (1)].id)); 08058 new_bv(p, (yyvsp[(1) - (1)].id)); 08059 ;} 08060 break; 08061 08062 case 374: 08063 08064 /* Line 1464 of yacc.c */ 08065 #line 2514 "src/parse.y" 08066 { 08067 (yyval.nd) = (yyvsp[(2) - (4)].nd); 08068 ;} 08069 break; 08070 08071 case 375: 08072 08073 /* Line 1464 of yacc.c */ 08074 #line 2518 "src/parse.y" 08075 { 08076 (yyval.nd) = (yyvsp[(1) - (1)].nd); 08077 ;} 08078 break; 08079 08080 case 376: 08081 08082 /* Line 1464 of yacc.c */ 08083 #line 2524 "src/parse.y" 08084 { 08085 (yyval.nd) = (yyvsp[(2) - (3)].nd); 08086 ;} 08087 break; 08088 08089 case 377: 08090 08091 /* Line 1464 of yacc.c */ 08092 #line 2528 "src/parse.y" 08093 { 08094 (yyval.nd) = (yyvsp[(2) - (3)].nd); 08095 ;} 08096 break; 08097 08098 case 378: 08099 08100 /* Line 1464 of yacc.c */ 08101 #line 2534 "src/parse.y" 08102 { 08103 local_nest(p); 08104 ;} 08105 break; 08106 08107 case 379: 08108 08109 /* Line 1464 of yacc.c */ 08110 #line 2540 "src/parse.y" 08111 { 08112 (yyval.nd) = new_block(p,(yyvsp[(3) - (5)].nd),(yyvsp[(4) - (5)].nd)); 08113 local_unnest(p); 08114 ;} 08115 break; 08116 08117 case 380: 08118 08119 /* Line 1464 of yacc.c */ 08120 #line 2547 "src/parse.y" 08121 { 08122 if ((yyvsp[(1) - (2)].nd)->car == (node*)NODE_YIELD) { 08123 yyerror(p, "block given to yield"); 08124 } 08125 else { 08126 call_with_block(p, (yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd)); 08127 } 08128 (yyval.nd) = (yyvsp[(1) - (2)].nd); 08129 ;} 08130 break; 08131 08132 case 381: 08133 08134 /* Line 1464 of yacc.c */ 08135 #line 2557 "src/parse.y" 08136 { 08137 (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd)); 08138 ;} 08139 break; 08140 08141 case 382: 08142 08143 /* Line 1464 of yacc.c */ 08144 #line 2561 "src/parse.y" 08145 { 08146 (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd)); 08147 call_with_block(p, (yyval.nd), (yyvsp[(5) - (5)].nd)); 08148 ;} 08149 break; 08150 08151 case 383: 08152 08153 /* Line 1464 of yacc.c */ 08154 #line 2566 "src/parse.y" 08155 { 08156 (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd)); 08157 call_with_block(p, (yyval.nd), (yyvsp[(5) - (5)].nd)); 08158 ;} 08159 break; 08160 08161 case 384: 08162 08163 /* Line 1464 of yacc.c */ 08164 #line 2573 "src/parse.y" 08165 { 08166 (yyval.nd) = new_fcall(p, (yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].nd)); 08167 ;} 08168 break; 08169 08170 case 385: 08171 08172 /* Line 1464 of yacc.c */ 08173 #line 2577 "src/parse.y" 08174 { 08175 (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd)); 08176 ;} 08177 break; 08178 08179 case 386: 08180 08181 /* Line 1464 of yacc.c */ 08182 #line 2581 "src/parse.y" 08183 { 08184 (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd)); 08185 ;} 08186 break; 08187 08188 case 387: 08189 08190 /* Line 1464 of yacc.c */ 08191 #line 2585 "src/parse.y" 08192 { 08193 (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0); 08194 ;} 08195 break; 08196 08197 case 388: 08198 08199 /* Line 1464 of yacc.c */ 08200 #line 2589 "src/parse.y" 08201 { 08202 (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), intern("call",4), (yyvsp[(3) - (3)].nd)); 08203 ;} 08204 break; 08205 08206 case 389: 08207 08208 /* Line 1464 of yacc.c */ 08209 #line 2593 "src/parse.y" 08210 { 08211 (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), intern("call",4), (yyvsp[(3) - (3)].nd)); 08212 ;} 08213 break; 08214 08215 case 390: 08216 08217 /* Line 1464 of yacc.c */ 08218 #line 2597 "src/parse.y" 08219 { 08220 (yyval.nd) = new_super(p, (yyvsp[(2) - (2)].nd)); 08221 ;} 08222 break; 08223 08224 case 391: 08225 08226 /* Line 1464 of yacc.c */ 08227 #line 2601 "src/parse.y" 08228 { 08229 (yyval.nd) = new_zsuper(p); 08230 ;} 08231 break; 08232 08233 case 392: 08234 08235 /* Line 1464 of yacc.c */ 08236 #line 2605 "src/parse.y" 08237 { 08238 (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), intern("[]",2), (yyvsp[(3) - (4)].nd)); 08239 ;} 08240 break; 08241 08242 case 393: 08243 08244 /* Line 1464 of yacc.c */ 08245 #line 2611 "src/parse.y" 08246 { 08247 local_nest(p); 08248 (yyval.num) = p->lineno; 08249 ;} 08250 break; 08251 08252 case 394: 08253 08254 /* Line 1464 of yacc.c */ 08255 #line 2617 "src/parse.y" 08256 { 08257 (yyval.nd) = new_block(p,(yyvsp[(3) - (5)].nd),(yyvsp[(4) - (5)].nd)); 08258 SET_LINENO((yyval.nd), (yyvsp[(2) - (5)].num)); 08259 local_unnest(p); 08260 ;} 08261 break; 08262 08263 case 395: 08264 08265 /* Line 1464 of yacc.c */ 08266 #line 2623 "src/parse.y" 08267 { 08268 local_nest(p); 08269 (yyval.num) = p->lineno; 08270 ;} 08271 break; 08272 08273 case 396: 08274 08275 /* Line 1464 of yacc.c */ 08276 #line 2629 "src/parse.y" 08277 { 08278 (yyval.nd) = new_block(p,(yyvsp[(3) - (5)].nd),(yyvsp[(4) - (5)].nd)); 08279 SET_LINENO((yyval.nd), (yyvsp[(2) - (5)].num)); 08280 local_unnest(p); 08281 ;} 08282 break; 08283 08284 case 397: 08285 08286 /* Line 1464 of yacc.c */ 08287 #line 2639 "src/parse.y" 08288 { 08289 (yyval.nd) = cons(cons((yyvsp[(2) - (5)].nd), (yyvsp[(4) - (5)].nd)), (yyvsp[(5) - (5)].nd)); 08290 ;} 08291 break; 08292 08293 case 398: 08294 08295 /* Line 1464 of yacc.c */ 08296 #line 2645 "src/parse.y" 08297 { 08298 if ((yyvsp[(1) - (1)].nd)) { 08299 (yyval.nd) = cons(cons(0, (yyvsp[(1) - (1)].nd)), 0); 08300 } 08301 else { 08302 (yyval.nd) = 0; 08303 } 08304 ;} 08305 break; 08306 08307 case 400: 08308 08309 /* Line 1464 of yacc.c */ 08310 #line 2659 "src/parse.y" 08311 { 08312 (yyval.nd) = list1(list3((yyvsp[(2) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].nd))); 08313 if ((yyvsp[(6) - (6)].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[(6) - (6)].nd)); 08314 ;} 08315 break; 08316 08317 case 402: 08318 08319 /* Line 1464 of yacc.c */ 08320 #line 2667 "src/parse.y" 08321 { 08322 (yyval.nd) = list1((yyvsp[(1) - (1)].nd)); 08323 ;} 08324 break; 08325 08326 case 405: 08327 08328 /* Line 1464 of yacc.c */ 08329 #line 2675 "src/parse.y" 08330 { 08331 (yyval.nd) = (yyvsp[(2) - (2)].nd); 08332 ;} 08333 break; 08334 08335 case 407: 08336 08337 /* Line 1464 of yacc.c */ 08338 #line 2682 "src/parse.y" 08339 { 08340 (yyval.nd) = (yyvsp[(2) - (2)].nd); 08341 ;} 08342 break; 08343 08344 case 415: 08345 08346 /* Line 1464 of yacc.c */ 08347 #line 2697 "src/parse.y" 08348 { 08349 (yyval.nd) = (yyvsp[(2) - (2)].nd); 08350 ;} 08351 break; 08352 08353 case 416: 08354 08355 /* Line 1464 of yacc.c */ 08356 #line 2701 "src/parse.y" 08357 { 08358 (yyval.nd) = new_dstr(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd))); 08359 ;} 08360 break; 08361 08362 case 418: 08363 08364 /* Line 1464 of yacc.c */ 08365 #line 2708 "src/parse.y" 08366 { 08367 (yyval.nd) = append((yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd)); 08368 ;} 08369 break; 08370 08371 case 419: 08372 08373 /* Line 1464 of yacc.c */ 08374 #line 2714 "src/parse.y" 08375 { 08376 (yyval.nd) = list1((yyvsp[(1) - (1)].nd)); 08377 ;} 08378 break; 08379 08380 case 420: 08381 08382 /* Line 1464 of yacc.c */ 08383 #line 2718 "src/parse.y" 08384 { 08385 (yyval.nd) = p->lex_strterm; 08386 p->lex_strterm = NULL; 08387 ;} 08388 break; 08389 08390 case 421: 08391 08392 /* Line 1464 of yacc.c */ 08393 #line 2724 "src/parse.y" 08394 { 08395 p->lex_strterm = (yyvsp[(2) - (4)].nd); 08396 (yyval.nd) = list2((yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd)); 08397 ;} 08398 break; 08399 08400 case 422: 08401 08402 /* Line 1464 of yacc.c */ 08403 #line 2729 "src/parse.y" 08404 { 08405 (yyval.nd) = list1(new_literal_delim(p)); 08406 ;} 08407 break; 08408 08409 case 423: 08410 08411 /* Line 1464 of yacc.c */ 08412 #line 2733 "src/parse.y" 08413 { 08414 (yyval.nd) = list1(new_literal_delim(p)); 08415 ;} 08416 break; 08417 08418 case 424: 08419 08420 /* Line 1464 of yacc.c */ 08421 #line 2739 "src/parse.y" 08422 { 08423 (yyval.nd) = (yyvsp[(2) - (2)].nd); 08424 ;} 08425 break; 08426 08427 case 425: 08428 08429 /* Line 1464 of yacc.c */ 08430 #line 2743 "src/parse.y" 08431 { 08432 (yyval.nd) = new_dxstr(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd))); 08433 ;} 08434 break; 08435 08436 case 426: 08437 08438 /* Line 1464 of yacc.c */ 08439 #line 2749 "src/parse.y" 08440 { 08441 (yyval.nd) = (yyvsp[(2) - (2)].nd); 08442 ;} 08443 break; 08444 08445 case 427: 08446 08447 /* Line 1464 of yacc.c */ 08448 #line 2753 "src/parse.y" 08449 { 08450 (yyval.nd) = new_dregx(p, (yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)); 08451 ;} 08452 break; 08453 08454 case 433: 08455 08456 /* Line 1464 of yacc.c */ 08457 #line 2770 "src/parse.y" 08458 { 08459 parser_heredoc_info * inf = parsing_heredoc_inf(p); 08460 inf->doc = push(inf->doc, new_str(p, "", 0)); 08461 heredoc_end(p); 08462 ;} 08463 break; 08464 08465 case 434: 08466 08467 /* Line 1464 of yacc.c */ 08468 #line 2776 "src/parse.y" 08469 { 08470 heredoc_end(p); 08471 ;} 08472 break; 08473 08474 case 437: 08475 08476 /* Line 1464 of yacc.c */ 08477 #line 2786 "src/parse.y" 08478 { 08479 parser_heredoc_info * inf = parsing_heredoc_inf(p); 08480 inf->doc = push(inf->doc, (yyvsp[(1) - (1)].nd)); 08481 heredoc_treat_nextline(p); 08482 ;} 08483 break; 08484 08485 case 438: 08486 08487 /* Line 1464 of yacc.c */ 08488 #line 2792 "src/parse.y" 08489 { 08490 (yyval.nd) = p->lex_strterm; 08491 p->lex_strterm = NULL; 08492 ;} 08493 break; 08494 08495 case 439: 08496 08497 /* Line 1464 of yacc.c */ 08498 #line 2798 "src/parse.y" 08499 { 08500 parser_heredoc_info * inf = parsing_heredoc_inf(p); 08501 p->lex_strterm = (yyvsp[(2) - (4)].nd); 08502 inf->doc = push(push(inf->doc, (yyvsp[(1) - (4)].nd)), (yyvsp[(3) - (4)].nd)); 08503 ;} 08504 break; 08505 08506 case 440: 08507 08508 /* Line 1464 of yacc.c */ 08509 #line 2806 "src/parse.y" 08510 { 08511 (yyval.nd) = new_words(p, list1((yyvsp[(2) - (2)].nd))); 08512 ;} 08513 break; 08514 08515 case 441: 08516 08517 /* Line 1464 of yacc.c */ 08518 #line 2810 "src/parse.y" 08519 { 08520 (yyval.nd) = new_words(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd))); 08521 ;} 08522 break; 08523 08524 case 442: 08525 08526 /* Line 1464 of yacc.c */ 08527 #line 2817 "src/parse.y" 08528 { 08529 (yyval.nd) = new_sym(p, (yyvsp[(1) - (1)].id)); 08530 ;} 08531 break; 08532 08533 case 443: 08534 08535 /* Line 1464 of yacc.c */ 08536 #line 2821 "src/parse.y" 08537 { 08538 p->lstate = EXPR_END; 08539 (yyval.nd) = new_dsym(p, push((yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].nd))); 08540 ;} 08541 break; 08542 08543 case 444: 08544 08545 /* Line 1464 of yacc.c */ 08546 #line 2828 "src/parse.y" 08547 { 08548 p->lstate = EXPR_END; 08549 (yyval.id) = (yyvsp[(2) - (2)].id); 08550 ;} 08551 break; 08552 08553 case 449: 08554 08555 /* Line 1464 of yacc.c */ 08556 #line 2839 "src/parse.y" 08557 { 08558 (yyval.id) = new_strsym(p, (yyvsp[(1) - (1)].nd)); 08559 ;} 08560 break; 08561 08562 case 450: 08563 08564 /* Line 1464 of yacc.c */ 08565 #line 2843 "src/parse.y" 08566 { 08567 (yyval.id) = new_strsym(p, (yyvsp[(2) - (2)].nd)); 08568 ;} 08569 break; 08570 08571 case 451: 08572 08573 /* Line 1464 of yacc.c */ 08574 #line 2849 "src/parse.y" 08575 { 08576 (yyval.nd) = new_symbols(p, list1((yyvsp[(2) - (2)].nd))); 08577 ;} 08578 break; 08579 08580 case 452: 08581 08582 /* Line 1464 of yacc.c */ 08583 #line 2853 "src/parse.y" 08584 { 08585 (yyval.nd) = new_symbols(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd))); 08586 ;} 08587 break; 08588 08589 case 455: 08590 08591 /* Line 1464 of yacc.c */ 08592 #line 2861 "src/parse.y" 08593 { 08594 (yyval.nd) = negate_lit(p, (yyvsp[(2) - (2)].nd)); 08595 ;} 08596 break; 08597 08598 case 456: 08599 08600 /* Line 1464 of yacc.c */ 08601 #line 2865 "src/parse.y" 08602 { 08603 (yyval.nd) = negate_lit(p, (yyvsp[(2) - (2)].nd)); 08604 ;} 08605 break; 08606 08607 case 457: 08608 08609 /* Line 1464 of yacc.c */ 08610 #line 2871 "src/parse.y" 08611 { 08612 (yyval.nd) = new_lvar(p, (yyvsp[(1) - (1)].id)); 08613 ;} 08614 break; 08615 08616 case 458: 08617 08618 /* Line 1464 of yacc.c */ 08619 #line 2875 "src/parse.y" 08620 { 08621 (yyval.nd) = new_ivar(p, (yyvsp[(1) - (1)].id)); 08622 ;} 08623 break; 08624 08625 case 459: 08626 08627 /* Line 1464 of yacc.c */ 08628 #line 2879 "src/parse.y" 08629 { 08630 (yyval.nd) = new_gvar(p, (yyvsp[(1) - (1)].id)); 08631 ;} 08632 break; 08633 08634 case 460: 08635 08636 /* Line 1464 of yacc.c */ 08637 #line 2883 "src/parse.y" 08638 { 08639 (yyval.nd) = new_cvar(p, (yyvsp[(1) - (1)].id)); 08640 ;} 08641 break; 08642 08643 case 461: 08644 08645 /* Line 1464 of yacc.c */ 08646 #line 2887 "src/parse.y" 08647 { 08648 (yyval.nd) = new_const(p, (yyvsp[(1) - (1)].id)); 08649 ;} 08650 break; 08651 08652 case 462: 08653 08654 /* Line 1464 of yacc.c */ 08655 #line 2893 "src/parse.y" 08656 { 08657 assignable(p, (yyvsp[(1) - (1)].nd)); 08658 ;} 08659 break; 08660 08661 case 463: 08662 08663 /* Line 1464 of yacc.c */ 08664 #line 2899 "src/parse.y" 08665 { 08666 (yyval.nd) = var_reference(p, (yyvsp[(1) - (1)].nd)); 08667 ;} 08668 break; 08669 08670 case 464: 08671 08672 /* Line 1464 of yacc.c */ 08673 #line 2903 "src/parse.y" 08674 { 08675 (yyval.nd) = new_nil(p); 08676 ;} 08677 break; 08678 08679 case 465: 08680 08681 /* Line 1464 of yacc.c */ 08682 #line 2907 "src/parse.y" 08683 { 08684 (yyval.nd) = new_self(p); 08685 ;} 08686 break; 08687 08688 case 466: 08689 08690 /* Line 1464 of yacc.c */ 08691 #line 2911 "src/parse.y" 08692 { 08693 (yyval.nd) = new_true(p); 08694 ;} 08695 break; 08696 08697 case 467: 08698 08699 /* Line 1464 of yacc.c */ 08700 #line 2915 "src/parse.y" 08701 { 08702 (yyval.nd) = new_false(p); 08703 ;} 08704 break; 08705 08706 case 468: 08707 08708 /* Line 1464 of yacc.c */ 08709 #line 2919 "src/parse.y" 08710 { 08711 if (!p->filename) { 08712 p->filename = "(null)"; 08713 } 08714 (yyval.nd) = new_str(p, p->filename, strlen(p->filename)); 08715 ;} 08716 break; 08717 08718 case 469: 08719 08720 /* Line 1464 of yacc.c */ 08721 #line 2926 "src/parse.y" 08722 { 08723 char buf[16]; 08724 08725 snprintf(buf, sizeof(buf), "%d", p->lineno); 08726 (yyval.nd) = new_int(p, buf, 10); 08727 ;} 08728 break; 08729 08730 case 472: 08731 08732 /* Line 1464 of yacc.c */ 08733 #line 2939 "src/parse.y" 08734 { 08735 (yyval.nd) = 0; 08736 ;} 08737 break; 08738 08739 case 473: 08740 08741 /* Line 1464 of yacc.c */ 08742 #line 2943 "src/parse.y" 08743 { 08744 p->lstate = EXPR_BEG; 08745 p->cmd_start = TRUE; 08746 ;} 08747 break; 08748 08749 case 474: 08750 08751 /* Line 1464 of yacc.c */ 08752 #line 2948 "src/parse.y" 08753 { 08754 (yyval.nd) = (yyvsp[(3) - (4)].nd); 08755 ;} 08756 break; 08757 08758 case 475: 08759 08760 /* Line 1464 of yacc.c */ 08761 #line 2952 "src/parse.y" 08762 { 08763 yyerrok; 08764 (yyval.nd) = 0; 08765 ;} 08766 break; 08767 08768 case 476: 08769 08770 /* Line 1464 of yacc.c */ 08771 #line 2959 "src/parse.y" 08772 { 08773 (yyval.nd) = (yyvsp[(2) - (3)].nd); 08774 p->lstate = EXPR_BEG; 08775 p->cmd_start = TRUE; 08776 ;} 08777 break; 08778 08779 case 477: 08780 08781 /* Line 1464 of yacc.c */ 08782 #line 2965 "src/parse.y" 08783 { 08784 (yyval.nd) = (yyvsp[(1) - (2)].nd); 08785 ;} 08786 break; 08787 08788 case 478: 08789 08790 /* Line 1464 of yacc.c */ 08791 #line 2971 "src/parse.y" 08792 { 08793 (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id)); 08794 ;} 08795 break; 08796 08797 case 479: 08798 08799 /* Line 1464 of yacc.c */ 08800 #line 2975 "src/parse.y" 08801 { 08802 (yyval.nd) = new_args(p, (yyvsp[(1) - (8)].nd), (yyvsp[(3) - (8)].nd), (yyvsp[(5) - (8)].id), (yyvsp[(7) - (8)].nd), (yyvsp[(8) - (8)].id)); 08803 ;} 08804 break; 08805 08806 case 480: 08807 08808 /* Line 1464 of yacc.c */ 08809 #line 2979 "src/parse.y" 08810 { 08811 (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd), 0, 0, (yyvsp[(4) - (4)].id)); 08812 ;} 08813 break; 08814 08815 case 481: 08816 08817 /* Line 1464 of yacc.c */ 08818 #line 2983 "src/parse.y" 08819 { 08820 (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), 0, (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id)); 08821 ;} 08822 break; 08823 08824 case 482: 08825 08826 /* Line 1464 of yacc.c */ 08827 #line 2987 "src/parse.y" 08828 { 08829 (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id)); 08830 ;} 08831 break; 08832 08833 case 483: 08834 08835 /* Line 1464 of yacc.c */ 08836 #line 2991 "src/parse.y" 08837 { 08838 (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), 0, (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id)); 08839 ;} 08840 break; 08841 08842 case 484: 08843 08844 /* Line 1464 of yacc.c */ 08845 #line 2995 "src/parse.y" 08846 { 08847 (yyval.nd) = new_args(p, (yyvsp[(1) - (2)].nd), 0, 0, 0, (yyvsp[(2) - (2)].id)); 08848 ;} 08849 break; 08850 08851 case 485: 08852 08853 /* Line 1464 of yacc.c */ 08854 #line 2999 "src/parse.y" 08855 { 08856 (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id)); 08857 ;} 08858 break; 08859 08860 case 486: 08861 08862 /* Line 1464 of yacc.c */ 08863 #line 3003 "src/parse.y" 08864 { 08865 (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id)); 08866 ;} 08867 break; 08868 08869 case 487: 08870 08871 /* Line 1464 of yacc.c */ 08872 #line 3007 "src/parse.y" 08873 { 08874 (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (2)].nd), 0, 0, (yyvsp[(2) - (2)].id)); 08875 ;} 08876 break; 08877 08878 case 488: 08879 08880 /* Line 1464 of yacc.c */ 08881 #line 3011 "src/parse.y" 08882 { 08883 (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id)); 08884 ;} 08885 break; 08886 08887 case 489: 08888 08889 /* Line 1464 of yacc.c */ 08890 #line 3015 "src/parse.y" 08891 { 08892 (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (2)].id), 0, (yyvsp[(2) - (2)].id)); 08893 ;} 08894 break; 08895 08896 case 490: 08897 08898 /* Line 1464 of yacc.c */ 08899 #line 3019 "src/parse.y" 08900 { 08901 (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id)); 08902 ;} 08903 break; 08904 08905 case 491: 08906 08907 /* Line 1464 of yacc.c */ 08908 #line 3023 "src/parse.y" 08909 { 08910 (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[(1) - (1)].id)); 08911 ;} 08912 break; 08913 08914 case 492: 08915 08916 /* Line 1464 of yacc.c */ 08917 #line 3027 "src/parse.y" 08918 { 08919 local_add_f(p, 0); 08920 (yyval.nd) = new_args(p, 0, 0, 0, 0, 0); 08921 ;} 08922 break; 08923 08924 case 493: 08925 08926 /* Line 1464 of yacc.c */ 08927 #line 3034 "src/parse.y" 08928 { 08929 yyerror(p, "formal argument cannot be a constant"); 08930 (yyval.nd) = 0; 08931 ;} 08932 break; 08933 08934 case 494: 08935 08936 /* Line 1464 of yacc.c */ 08937 #line 3039 "src/parse.y" 08938 { 08939 yyerror(p, "formal argument cannot be an instance variable"); 08940 (yyval.nd) = 0; 08941 ;} 08942 break; 08943 08944 case 495: 08945 08946 /* Line 1464 of yacc.c */ 08947 #line 3044 "src/parse.y" 08948 { 08949 yyerror(p, "formal argument cannot be a global variable"); 08950 (yyval.nd) = 0; 08951 ;} 08952 break; 08953 08954 case 496: 08955 08956 /* Line 1464 of yacc.c */ 08957 #line 3049 "src/parse.y" 08958 { 08959 yyerror(p, "formal argument cannot be a class variable"); 08960 (yyval.nd) = 0; 08961 ;} 08962 break; 08963 08964 case 497: 08965 08966 /* Line 1464 of yacc.c */ 08967 #line 3056 "src/parse.y" 08968 { 08969 (yyval.id) = 0; 08970 ;} 08971 break; 08972 08973 case 498: 08974 08975 /* Line 1464 of yacc.c */ 08976 #line 3060 "src/parse.y" 08977 { 08978 local_add_f(p, (yyvsp[(1) - (1)].id)); 08979 (yyval.id) = (yyvsp[(1) - (1)].id); 08980 ;} 08981 break; 08982 08983 case 499: 08984 08985 /* Line 1464 of yacc.c */ 08986 #line 3067 "src/parse.y" 08987 { 08988 (yyval.nd) = new_arg(p, (yyvsp[(1) - (1)].id)); 08989 ;} 08990 break; 08991 08992 case 500: 08993 08994 /* Line 1464 of yacc.c */ 08995 #line 3071 "src/parse.y" 08996 { 08997 (yyval.nd) = new_masgn(p, (yyvsp[(2) - (3)].nd), 0); 08998 ;} 08999 break; 09000 09001 case 501: 09002 09003 /* Line 1464 of yacc.c */ 09004 #line 3077 "src/parse.y" 09005 { 09006 (yyval.nd) = list1((yyvsp[(1) - (1)].nd)); 09007 ;} 09008 break; 09009 09010 case 502: 09011 09012 /* Line 1464 of yacc.c */ 09013 #line 3081 "src/parse.y" 09014 { 09015 (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 09016 ;} 09017 break; 09018 09019 case 503: 09020 09021 /* Line 1464 of yacc.c */ 09022 #line 3087 "src/parse.y" 09023 { 09024 local_add_f(p, (yyvsp[(1) - (2)].id)); 09025 (yyval.id) = (yyvsp[(1) - (2)].id); 09026 ;} 09027 break; 09028 09029 case 504: 09030 09031 /* Line 1464 of yacc.c */ 09032 #line 3094 "src/parse.y" 09033 { 09034 (yyval.nd) = cons(nsym((yyvsp[(1) - (2)].id)), (yyvsp[(2) - (2)].nd)); 09035 ;} 09036 break; 09037 09038 case 505: 09039 09040 /* Line 1464 of yacc.c */ 09041 #line 3100 "src/parse.y" 09042 { 09043 (yyval.nd) = cons(nsym((yyvsp[(1) - (2)].id)), (yyvsp[(2) - (2)].nd)); 09044 ;} 09045 break; 09046 09047 case 506: 09048 09049 /* Line 1464 of yacc.c */ 09050 #line 3106 "src/parse.y" 09051 { 09052 (yyval.nd) = list1((yyvsp[(1) - (1)].nd)); 09053 ;} 09054 break; 09055 09056 case 507: 09057 09058 /* Line 1464 of yacc.c */ 09059 #line 3110 "src/parse.y" 09060 { 09061 (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 09062 ;} 09063 break; 09064 09065 case 508: 09066 09067 /* Line 1464 of yacc.c */ 09068 #line 3116 "src/parse.y" 09069 { 09070 (yyval.nd) = list1((yyvsp[(1) - (1)].nd)); 09071 ;} 09072 break; 09073 09074 case 509: 09075 09076 /* Line 1464 of yacc.c */ 09077 #line 3120 "src/parse.y" 09078 { 09079 (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 09080 ;} 09081 break; 09082 09083 case 512: 09084 09085 /* Line 1464 of yacc.c */ 09086 #line 3130 "src/parse.y" 09087 { 09088 local_add_f(p, (yyvsp[(2) - (2)].id)); 09089 (yyval.id) = (yyvsp[(2) - (2)].id); 09090 ;} 09091 break; 09092 09093 case 513: 09094 09095 /* Line 1464 of yacc.c */ 09096 #line 3135 "src/parse.y" 09097 { 09098 local_add_f(p, 0); 09099 (yyval.id) = -1; 09100 ;} 09101 break; 09102 09103 case 516: 09104 09105 /* Line 1464 of yacc.c */ 09106 #line 3146 "src/parse.y" 09107 { 09108 local_add_f(p, (yyvsp[(2) - (2)].id)); 09109 (yyval.id) = (yyvsp[(2) - (2)].id); 09110 ;} 09111 break; 09112 09113 case 517: 09114 09115 /* Line 1464 of yacc.c */ 09116 #line 3153 "src/parse.y" 09117 { 09118 (yyval.id) = (yyvsp[(2) - (2)].id); 09119 ;} 09120 break; 09121 09122 case 518: 09123 09124 /* Line 1464 of yacc.c */ 09125 #line 3157 "src/parse.y" 09126 { 09127 local_add_f(p, 0); 09128 (yyval.id) = 0; 09129 ;} 09130 break; 09131 09132 case 519: 09133 09134 /* Line 1464 of yacc.c */ 09135 #line 3164 "src/parse.y" 09136 { 09137 (yyval.nd) = (yyvsp[(1) - (1)].nd); 09138 if (!(yyval.nd)) (yyval.nd) = new_nil(p); 09139 ;} 09140 break; 09141 09142 case 520: 09143 09144 /* Line 1464 of yacc.c */ 09145 #line 3168 "src/parse.y" 09146 {p->lstate = EXPR_BEG;;} 09147 break; 09148 09149 case 521: 09150 09151 /* Line 1464 of yacc.c */ 09152 #line 3169 "src/parse.y" 09153 { 09154 if ((yyvsp[(3) - (4)].nd) == 0) { 09155 yyerror(p, "can't define singleton method for ()."); 09156 } 09157 else { 09158 switch ((enum node_type)(int)(intptr_t)(yyvsp[(3) - (4)].nd)->car) { 09159 case NODE_STR: 09160 case NODE_DSTR: 09161 case NODE_XSTR: 09162 case NODE_DXSTR: 09163 case NODE_DREGX: 09164 case NODE_MATCH: 09165 case NODE_FLOAT: 09166 case NODE_ARRAY: 09167 case NODE_HEREDOC: 09168 yyerror(p, "can't define singleton method for literals"); 09169 default: 09170 break; 09171 } 09172 } 09173 (yyval.nd) = (yyvsp[(3) - (4)].nd); 09174 ;} 09175 break; 09176 09177 case 523: 09178 09179 /* Line 1464 of yacc.c */ 09180 #line 3195 "src/parse.y" 09181 { 09182 (yyval.nd) = (yyvsp[(1) - (2)].nd); 09183 ;} 09184 break; 09185 09186 case 524: 09187 09188 /* Line 1464 of yacc.c */ 09189 #line 3201 "src/parse.y" 09190 { 09191 (yyval.nd) = list1((yyvsp[(1) - (1)].nd)); 09192 NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd)); 09193 ;} 09194 break; 09195 09196 case 525: 09197 09198 /* Line 1464 of yacc.c */ 09199 #line 3206 "src/parse.y" 09200 { 09201 (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 09202 ;} 09203 break; 09204 09205 case 526: 09206 09207 /* Line 1464 of yacc.c */ 09208 #line 3212 "src/parse.y" 09209 { 09210 (yyval.nd) = cons((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd)); 09211 ;} 09212 break; 09213 09214 case 527: 09215 09216 /* Line 1464 of yacc.c */ 09217 #line 3216 "src/parse.y" 09218 { 09219 (yyval.nd) = cons(new_sym(p, (yyvsp[(1) - (2)].id)), (yyvsp[(2) - (2)].nd)); 09220 ;} 09221 break; 09222 09223 case 549: 09224 09225 /* Line 1464 of yacc.c */ 09226 #line 3260 "src/parse.y" 09227 {yyerrok;;} 09228 break; 09229 09230 case 551: 09231 09232 /* Line 1464 of yacc.c */ 09233 #line 3265 "src/parse.y" 09234 { 09235 p->lineno++; 09236 p->column = 0; 09237 ;} 09238 break; 09239 09240 case 554: 09241 09242 /* Line 1464 of yacc.c */ 09243 #line 3272 "src/parse.y" 09244 {yyerrok;;} 09245 break; 09246 09247 case 555: 09248 09249 /* Line 1464 of yacc.c */ 09250 #line 3276 "src/parse.y" 09251 { 09252 (yyval.nd) = 0; 09253 ;} 09254 break; 09255 09256 09257 09258 /* Line 1464 of yacc.c */ 09259 #line 9260 "C:/Users/matsuzaki.takuya/work/daily/20150106/mruby-1.1.0/build/ARMCA9/src/y.tab.c" 09260 default: break; 09261 } 09262 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); 09263 09264 YYPOPSTACK (yylen); 09265 yylen = 0; 09266 YY_STACK_PRINT (yyss, yyssp); 09267 09268 *++yyvsp = yyval; 09269 09270 /* Now `shift' the result of the reduction. Determine what state 09271 that goes to, based on the state we popped back to and the rule 09272 number reduced by. */ 09273 09274 yyn = yyr1[yyn]; 09275 09276 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; 09277 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) 09278 yystate = yytable[yystate]; 09279 else 09280 yystate = yydefgoto[yyn - YYNTOKENS]; 09281 09282 goto yynewstate; 09283 09284 09285 /*------------------------------------. 09286 | yyerrlab -- here on detecting error | 09287 `------------------------------------*/ 09288 yyerrlab: 09289 /* If not already recovering from an error, report this error. */ 09290 if (!yyerrstatus) 09291 { 09292 ++yynerrs; 09293 #if ! YYERROR_VERBOSE 09294 yyerror (p, YY_("syntax error")); 09295 #else 09296 { 09297 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); 09298 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) 09299 { 09300 YYSIZE_T yyalloc = 2 * yysize; 09301 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) 09302 yyalloc = YYSTACK_ALLOC_MAXIMUM; 09303 if (yymsg != yymsgbuf) 09304 YYSTACK_FREE (yymsg); 09305 yymsg = (char *) YYSTACK_ALLOC (yyalloc); 09306 if (yymsg) 09307 yymsg_alloc = yyalloc; 09308 else 09309 { 09310 yymsg = yymsgbuf; 09311 yymsg_alloc = sizeof yymsgbuf; 09312 } 09313 } 09314 09315 if (0 < yysize && yysize <= yymsg_alloc) 09316 { 09317 (void) yysyntax_error (yymsg, yystate, yychar); 09318 yyerror (p, yymsg); 09319 } 09320 else 09321 { 09322 yyerror (p, YY_("syntax error")); 09323 if (yysize != 0) 09324 goto yyexhaustedlab; 09325 } 09326 } 09327 #endif 09328 } 09329 09330 09331 09332 if (yyerrstatus == 3) 09333 { 09334 /* If just tried and failed to reuse lookahead token after an 09335 error, discard it. */ 09336 09337 if (yychar <= YYEOF) 09338 { 09339 /* Return failure if at end of input. */ 09340 if (yychar == YYEOF) 09341 YYABORT; 09342 } 09343 else 09344 { 09345 yydestruct ("Error: discarding", 09346 yytoken, &yylval, p); 09347 yychar = YYEMPTY; 09348 } 09349 } 09350 09351 /* Else will try to reuse lookahead token after shifting the error 09352 token. */ 09353 goto yyerrlab1; 09354 09355 09356 /*---------------------------------------------------. 09357 | yyerrorlab -- error raised explicitly by YYERROR. | 09358 `---------------------------------------------------*/ 09359 yyerrorlab: 09360 09361 /* Pacify compilers like GCC when the user code never invokes 09362 YYERROR and the label yyerrorlab therefore never appears in user 09363 code. */ 09364 if (/*CONSTCOND*/ 0) 09365 goto yyerrorlab; 09366 09367 /* Do not reclaim the symbols of the rule which action triggered 09368 this YYERROR. */ 09369 YYPOPSTACK (yylen); 09370 yylen = 0; 09371 YY_STACK_PRINT (yyss, yyssp); 09372 yystate = *yyssp; 09373 goto yyerrlab1; 09374 09375 09376 /*-------------------------------------------------------------. 09377 | yyerrlab1 -- common code for both syntax error and YYERROR. | 09378 `-------------------------------------------------------------*/ 09379 yyerrlab1: 09380 yyerrstatus = 3; /* Each real token shifted decrements this. */ 09381 09382 for (;;) 09383 { 09384 yyn = yypact[yystate]; 09385 if (yyn != YYPACT_NINF) 09386 { 09387 yyn += YYTERROR; 09388 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) 09389 { 09390 yyn = yytable[yyn]; 09391 if (0 < yyn) 09392 break; 09393 } 09394 } 09395 09396 /* Pop the current state because it cannot handle the error token. */ 09397 if (yyssp == yyss) 09398 YYABORT; 09399 09400 09401 yydestruct ("Error: popping", 09402 yystos[yystate], yyvsp, p); 09403 YYPOPSTACK (1); 09404 yystate = *yyssp; 09405 YY_STACK_PRINT (yyss, yyssp); 09406 } 09407 09408 *++yyvsp = yylval; 09409 09410 09411 /* Shift the error token. */ 09412 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); 09413 09414 yystate = yyn; 09415 goto yynewstate; 09416 09417 09418 /*-------------------------------------. 09419 | yyacceptlab -- YYACCEPT comes here. | 09420 `-------------------------------------*/ 09421 yyacceptlab: 09422 yyresult = 0; 09423 goto yyreturn; 09424 09425 /*-----------------------------------. 09426 | yyabortlab -- YYABORT comes here. | 09427 `-----------------------------------*/ 09428 yyabortlab: 09429 yyresult = 1; 09430 goto yyreturn; 09431 09432 #if !defined(yyoverflow) || YYERROR_VERBOSE 09433 /*-------------------------------------------------. 09434 | yyexhaustedlab -- memory exhaustion comes here. | 09435 `-------------------------------------------------*/ 09436 yyexhaustedlab: 09437 yyerror (p, YY_("memory exhausted")); 09438 yyresult = 2; 09439 /* Fall through. */ 09440 #endif 09441 09442 yyreturn: 09443 if (yychar != YYEMPTY) 09444 yydestruct ("Cleanup: discarding lookahead", 09445 yytoken, &yylval, p); 09446 /* Do not reclaim the symbols of the rule which action triggered 09447 this YYABORT or YYACCEPT. */ 09448 YYPOPSTACK (yylen); 09449 YY_STACK_PRINT (yyss, yyssp); 09450 while (yyssp != yyss) 09451 { 09452 yydestruct ("Cleanup: popping", 09453 yystos[*yyssp], yyvsp, p); 09454 YYPOPSTACK (1); 09455 } 09456 #ifndef yyoverflow 09457 if (yyss != yyssa) 09458 YYSTACK_FREE (yyss); 09459 #endif 09460 #if YYERROR_VERBOSE 09461 if (yymsg != yymsgbuf) 09462 YYSTACK_FREE (yymsg); 09463 #endif 09464 /* Make sure YYID is used. */ 09465 return YYID (yyresult); 09466 } 09467 09468 09469 09470 /* Line 1684 of yacc.c */ 09471 #line 3280 "src/parse.y" 09472 09473 #define yylval (*((YYSTYPE*)(p->ylval))) 09474 09475 static void 09476 yyerror(parser_state *p, const char *s) 09477 { 09478 char* c; 09479 int n; 09480 09481 if (! p->capture_errors) { 09482 #ifdef ENABLE_STDIO 09483 if (p->filename) { 09484 fprintf(stderr, "%s:%d:%d: %s\n", p->filename, p->lineno, p->column, s); 09485 } 09486 else { 09487 fprintf(stderr, "line %d:%d: %s\n", p->lineno, p->column, s); 09488 } 09489 #endif 09490 } 09491 else if (p->nerr < sizeof(p->error_buffer) / sizeof(p->error_buffer[0])) { 09492 n = strlen(s); 09493 c = (char *)parser_palloc(p, n + 1); 09494 memcpy(c, s, n + 1); 09495 p->error_buffer[p->nerr].message = c; 09496 p->error_buffer[p->nerr].lineno = p->lineno; 09497 p->error_buffer[p->nerr].column = p->column; 09498 } 09499 p->nerr++; 09500 } 09501 09502 static void 09503 yyerror_i(parser_state *p, const char *fmt, int i) 09504 { 09505 char buf[256]; 09506 09507 snprintf(buf, sizeof(buf), fmt, i); 09508 yyerror(p, buf); 09509 } 09510 09511 static void 09512 yywarn(parser_state *p, const char *s) 09513 { 09514 char* c; 09515 int n; 09516 09517 if (! p->capture_errors) { 09518 #ifdef ENABLE_STDIO 09519 if (p->filename) { 09520 fprintf(stderr, "%s:%d:%d: %s\n", p->filename, p->lineno, p->column, s); 09521 } 09522 else { 09523 fprintf(stderr, "line %d:%d: %s\n", p->lineno, p->column, s); 09524 } 09525 #endif 09526 } 09527 else if (p->nwarn < sizeof(p->warn_buffer) / sizeof(p->warn_buffer[0])) { 09528 n = strlen(s); 09529 c = (char *)parser_palloc(p, n + 1); 09530 memcpy(c, s, n + 1); 09531 p->warn_buffer[p->nwarn].message = c; 09532 p->warn_buffer[p->nwarn].lineno = p->lineno; 09533 p->warn_buffer[p->nwarn].column = p->column; 09534 } 09535 p->nwarn++; 09536 } 09537 09538 static void 09539 yywarning(parser_state *p, const char *s) 09540 { 09541 yywarn(p, s); 09542 } 09543 09544 static void 09545 yywarning_s(parser_state *p, const char *fmt, const char *s) 09546 { 09547 char buf[256]; 09548 09549 snprintf(buf, sizeof(buf), fmt, s); 09550 yywarning(p, buf); 09551 } 09552 09553 static void 09554 backref_error(parser_state *p, node *n) 09555 { 09556 int c; 09557 09558 c = (int)(intptr_t)n->car; 09559 09560 if (c == NODE_NTH_REF) { 09561 yyerror_i(p, "can't set variable $%d", (int)(intptr_t)n->cdr); 09562 } 09563 else if (c == NODE_BACK_REF) { 09564 yyerror_i(p, "can't set variable $%c", (int)(intptr_t)n->cdr); 09565 } 09566 else { 09567 mrb_bug(p->mrb, "Internal error in backref_error() : n=>car == %S", mrb_fixnum_value(c)); 09568 } 09569 } 09570 09571 static void pushback(parser_state *p, int c); 09572 static mrb_bool peeks(parser_state *p, const char *s); 09573 static mrb_bool skips(parser_state *p, const char *s); 09574 09575 static inline int 09576 nextc(parser_state *p) 09577 { 09578 int c; 09579 09580 if (p->pb) { 09581 node *tmp; 09582 09583 c = (int)(intptr_t)p->pb->car; 09584 tmp = p->pb; 09585 p->pb = p->pb->cdr; 09586 cons_free(tmp); 09587 } 09588 else { 09589 #ifdef ENABLE_STDIO 09590 if (p->f) { 09591 if (feof(p->f)) goto eof; 09592 c = fgetc(p->f); 09593 if (c == EOF) goto eof; 09594 } 09595 else 09596 #endif 09597 if (!p->s || p->s >= p->send) { 09598 goto eof; 09599 } 09600 else { 09601 c = (unsigned char)*p->s++; 09602 } 09603 } 09604 if (c >= 0) { 09605 p->column++; 09606 } 09607 if (c == '\r') { 09608 c = nextc(p); 09609 if (c != '\n') { 09610 pushback(p, c); 09611 return '\r'; 09612 } 09613 return c; 09614 } 09615 return c; 09616 09617 eof: 09618 if (!p->cxt) return -1; 09619 else { 09620 if (p->cxt->partial_hook(p) < 0) 09621 return -1; /* end of program(s) */ 09622 return -2; /* end of a file in the program files */ 09623 } 09624 } 09625 09626 static void 09627 pushback(parser_state *p, int c) 09628 { 09629 if (c >= 0) { 09630 p->column--; 09631 } 09632 p->pb = cons((node*)(intptr_t)c, p->pb); 09633 } 09634 09635 static void 09636 skip(parser_state *p, char term) 09637 { 09638 int c; 09639 09640 for (;;) { 09641 c = nextc(p); 09642 if (c < 0) break; 09643 if (c == term) break; 09644 } 09645 } 09646 09647 static int 09648 peekc_n(parser_state *p, int n) 09649 { 09650 node *list = 0; 09651 int c0; 09652 09653 do { 09654 c0 = nextc(p); 09655 if (c0 == -1) return c0; /* do not skip partial EOF */ 09656 list = push(list, (node*)(intptr_t)c0); 09657 } while(n--); 09658 if (p->pb) { 09659 p->pb = append((node*)list, p->pb); 09660 } 09661 else { 09662 p->pb = list; 09663 } 09664 return c0; 09665 } 09666 09667 static mrb_bool 09668 peek_n(parser_state *p, int c, int n) 09669 { 09670 return peekc_n(p, n) == c && c >= 0; 09671 } 09672 #define peek(p,c) peek_n((p), (c), 0) 09673 09674 static mrb_bool 09675 peeks(parser_state *p, const char *s) 09676 { 09677 int len = strlen(s); 09678 09679 #ifdef ENABLE_STDIO 09680 if (p->f) { 09681 int n = 0; 09682 while (*s) { 09683 if (!peek_n(p, *s++, n++)) return FALSE; 09684 } 09685 return TRUE; 09686 } 09687 else 09688 #endif 09689 if (p->s && p->s + len <= p->send) { 09690 if (memcmp(p->s, s, len) == 0) return TRUE; 09691 } 09692 return FALSE; 09693 } 09694 09695 static mrb_bool 09696 skips(parser_state *p, const char *s) 09697 { 09698 int c; 09699 09700 for (;;) { 09701 /* skip until first char */ 09702 for (;;) { 09703 c = nextc(p); 09704 if (c < 0) return c; 09705 if (c == '\n') { 09706 p->lineno++; 09707 p->column = 0; 09708 } 09709 if (c == *s) break; 09710 } 09711 s++; 09712 if (peeks(p, s)) { 09713 int len = strlen(s); 09714 09715 while (len--) { 09716 if (nextc(p) == '\n') { 09717 p->lineno++; 09718 p->column = 0; 09719 } 09720 } 09721 return TRUE; 09722 } 09723 else{ 09724 s--; 09725 } 09726 } 09727 return FALSE; 09728 } 09729 09730 09731 static int 09732 newtok(parser_state *p) 09733 { 09734 p->bidx = 0; 09735 return p->column - 1; 09736 } 09737 09738 static void 09739 tokadd(parser_state *p, int32_t c) 09740 { 09741 char utf8[4]; 09742 unsigned len; 09743 09744 /* mrb_assert(-0x10FFFF <= c && c <= 0xFF); */ 09745 if (c >= 0) { 09746 /* Single byte from source or non-Unicode escape */ 09747 utf8[0] = (char)c; 09748 len = 1; 09749 } 09750 else { 09751 /* Unicode character */ 09752 c = -c; 09753 if (c < 0x80) { 09754 utf8[0] = (char)c; 09755 len = 1; 09756 } 09757 else if (c < 0x800) { 09758 utf8[0] = (char)(0xC0 | (c >> 6)); 09759 utf8[1] = (char)(0x80 | (c & 0x3F)); 09760 len = 2; 09761 } 09762 else if (c < 0x10000) { 09763 utf8[0] = (char)(0xE0 | (c >> 12) ); 09764 utf8[1] = (char)(0x80 | ((c >> 6) & 0x3F)); 09765 utf8[2] = (char)(0x80 | ( c & 0x3F)); 09766 len = 3; 09767 } 09768 else { 09769 utf8[0] = (char)(0xF0 | (c >> 18) ); 09770 utf8[1] = (char)(0x80 | ((c >> 12) & 0x3F)); 09771 utf8[2] = (char)(0x80 | ((c >> 6) & 0x3F)); 09772 utf8[3] = (char)(0x80 | ( c & 0x3F)); 09773 len = 4; 09774 } 09775 } 09776 if (p->bidx+len <= MRB_PARSER_BUF_SIZE) { 09777 unsigned i; 09778 for (i = 0; i < len; i++) { 09779 p->buf[p->bidx++] = utf8[i]; 09780 } 09781 } 09782 } 09783 09784 static int 09785 toklast(parser_state *p) 09786 { 09787 return p->buf[p->bidx-1]; 09788 } 09789 09790 static void 09791 tokfix(parser_state *p) 09792 { 09793 if (p->bidx >= MRB_PARSER_BUF_SIZE) { 09794 yyerror(p, "string too long (truncated)"); 09795 } 09796 p->buf[p->bidx] = '\0'; 09797 } 09798 09799 static const char* 09800 tok(parser_state *p) 09801 { 09802 return p->buf; 09803 } 09804 09805 static int 09806 toklen(parser_state *p) 09807 { 09808 return p->bidx; 09809 } 09810 09811 #define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG) 09812 #define IS_END() (p->lstate == EXPR_END || p->lstate == EXPR_ENDARG || p->lstate == EXPR_ENDFN) 09813 #define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS) 09814 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c)) 09815 #define IS_LABEL_POSSIBLE() ((p->lstate == EXPR_BEG && !cmd_state) || IS_ARG()) 09816 #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1)) 09817 09818 static int 09819 scan_oct(const int *start, int len, int *retlen) 09820 { 09821 const int *s = start; 09822 int retval = 0; 09823 09824 /* mrb_assert(len <= 3) */ 09825 while (len-- && *s >= '0' && *s <= '7') { 09826 retval <<= 3; 09827 retval |= *s++ - '0'; 09828 } 09829 *retlen = s - start; 09830 09831 return retval; 09832 } 09833 09834 static int32_t 09835 scan_hex(const int *start, int len, int *retlen) 09836 { 09837 static const char hexdigit[] = "0123456789abcdef0123456789ABCDEF"; 09838 const int *s = start; 09839 int32_t retval = 0; 09840 char *tmp; 09841 09842 /* mrb_assert(len <= 8) */ 09843 while (len-- && *s && (tmp = (char*)strchr(hexdigit, *s))) { 09844 retval <<= 4; 09845 retval |= (tmp - hexdigit) & 15; 09846 s++; 09847 } 09848 *retlen = s - start; 09849 09850 return retval; 09851 } 09852 09853 /* Return negative to indicate Unicode code point */ 09854 static int32_t 09855 read_escape(parser_state *p) 09856 { 09857 int32_t c; 09858 09859 switch (c = nextc(p)) { 09860 case '\\':/* Backslash */ 09861 return c; 09862 09863 case 'n':/* newline */ 09864 return '\n'; 09865 09866 case 't':/* horizontal tab */ 09867 return '\t'; 09868 09869 case 'r':/* carriage-return */ 09870 return '\r'; 09871 09872 case 'f':/* form-feed */ 09873 return '\f'; 09874 09875 case 'v':/* vertical tab */ 09876 return '\13'; 09877 09878 case 'a':/* alarm(bell) */ 09879 return '\007'; 09880 09881 case 'e':/* escape */ 09882 return 033; 09883 09884 case '0': case '1': case '2': case '3': /* octal constant */ 09885 case '4': case '5': case '6': case '7': 09886 { 09887 int buf[3]; 09888 int i; 09889 09890 buf[0] = c; 09891 for (i=1; i<3; i++) { 09892 buf[i] = nextc(p); 09893 if (buf[i] < 0) goto eof; 09894 if (buf[i] < '0' || '7' < buf[i]) { 09895 pushback(p, buf[i]); 09896 break; 09897 } 09898 } 09899 c = scan_oct(buf, i, &i); 09900 } 09901 return c; 09902 09903 case 'x': /* hex constant */ 09904 { 09905 int buf[2]; 09906 int i; 09907 09908 for (i=0; i<2; i++) { 09909 buf[i] = nextc(p); 09910 if (buf[i] < 0) goto eof; 09911 if (!ISXDIGIT(buf[i])) { 09912 pushback(p, buf[i]); 09913 break; 09914 } 09915 } 09916 c = scan_hex(buf, i, &i); 09917 if (i == 0) { 09918 yyerror(p, "Invalid escape character syntax"); 09919 return 0; 09920 } 09921 } 09922 return c; 09923 09924 case 'u': /* Unicode */ 09925 { 09926 int buf[9]; 09927 int i; 09928 09929 /* Look for opening brace */ 09930 i = 0; 09931 buf[0] = nextc(p); 09932 if (buf[0] < 0) goto eof; 09933 if (buf[0] == '{') { 09934 /* \u{xxxxxxxx} form */ 09935 for (i=0; i<9; i++) { 09936 buf[i] = nextc(p); 09937 if (buf[i] < 0) goto eof; 09938 if (buf[i] == '}') { 09939 break; 09940 } 09941 else if (!ISXDIGIT(buf[i])) { 09942 yyerror(p, "Invalid escape character syntax"); 09943 pushback(p, buf[i]); 09944 return 0; 09945 } 09946 } 09947 } 09948 else if (ISXDIGIT(buf[0])) { 09949 /* \uxxxx form */ 09950 for (i=1; i<4; i++) { 09951 buf[i] = nextc(p); 09952 if (buf[i] < 0) goto eof; 09953 if (!ISXDIGIT(buf[i])) { 09954 pushback(p, buf[i]); 09955 break; 09956 } 09957 } 09958 } 09959 else { 09960 pushback(p, buf[0]); 09961 } 09962 c = scan_hex(buf, i, &i); 09963 if (i == 0) { 09964 yyerror(p, "Invalid escape character syntax"); 09965 return 0; 09966 } 09967 if (c < 0 || c > 0x10FFFF || (c & 0xFFFFF800) == 0xD800) { 09968 yyerror(p, "Invalid Unicode code point"); 09969 return 0; 09970 } 09971 } 09972 return -c; 09973 09974 case 'b':/* backspace */ 09975 return '\010'; 09976 09977 case 's':/* space */ 09978 return ' '; 09979 09980 case 'M': 09981 if ((c = nextc(p)) != '-') { 09982 yyerror(p, "Invalid escape character syntax"); 09983 pushback(p, c); 09984 return '\0'; 09985 } 09986 if ((c = nextc(p)) == '\\') { 09987 return read_escape(p) | 0x80; 09988 } 09989 else if (c < 0) goto eof; 09990 else { 09991 return ((c & 0xff) | 0x80); 09992 } 09993 09994 case 'C': 09995 if ((c = nextc(p)) != '-') { 09996 yyerror(p, "Invalid escape character syntax"); 09997 pushback(p, c); 09998 return '\0'; 09999 } 10000 case 'c': 10001 if ((c = nextc(p))== '\\') { 10002 c = read_escape(p); 10003 } 10004 else if (c == '?') 10005 return 0177; 10006 else if (c < 0) goto eof; 10007 return c & 0x9f; 10008 10009 eof: 10010 case -1: 10011 case -2: /* end of a file */ 10012 yyerror(p, "Invalid escape character syntax"); 10013 return '\0'; 10014 10015 default: 10016 return c; 10017 } 10018 } 10019 10020 static int 10021 parse_string(parser_state *p) 10022 { 10023 int c; 10024 string_type type = (string_type)(intptr_t)p->lex_strterm->car; 10025 int nest_level = (intptr_t)p->lex_strterm->cdr->car; 10026 int beg = (intptr_t)p->lex_strterm->cdr->cdr->car; 10027 int end = (intptr_t)p->lex_strterm->cdr->cdr->cdr; 10028 parser_heredoc_info *hinf = (type & STR_FUNC_HEREDOC) ? parsing_heredoc_inf(p) : NULL; 10029 10030 newtok(p); 10031 while ((c = nextc(p)) != end || nest_level != 0) { 10032 if (hinf && (c == '\n' || c < 0)) { 10033 mrb_bool line_head; 10034 tokadd(p, '\n'); 10035 tokfix(p); 10036 p->lineno++; 10037 p->column = 0; 10038 line_head = hinf->line_head; 10039 hinf->line_head = TRUE; 10040 if (line_head) { 10041 /* check whether end of heredoc */ 10042 const char *s = tok(p); 10043 int len = toklen(p); 10044 if (hinf->allow_indent) { 10045 while (ISSPACE(*s) && len > 0) { 10046 ++s; 10047 --len; 10048 } 10049 } 10050 if ((len-1 == hinf->term_len) && (strncmp(s, hinf->term, len-1) == 0)) { 10051 return tHEREDOC_END; 10052 } 10053 } 10054 if (c < 0) { 10055 char buf[256]; 10056 snprintf(buf, sizeof(buf), "can't find heredoc delimiter \"%s\" anywhere before EOF", hinf->term); 10057 yyerror(p, buf); 10058 return 0; 10059 } 10060 yylval.nd = new_str(p, tok(p), toklen(p)); 10061 return tHD_STRING_MID; 10062 } 10063 if (c < 0) { 10064 yyerror(p, "unterminated string meets end of file"); 10065 return 0; 10066 } 10067 else if (c == beg) { 10068 nest_level++; 10069 p->lex_strterm->cdr->car = (node*)(intptr_t)nest_level; 10070 } 10071 else if (c == end) { 10072 nest_level--; 10073 p->lex_strterm->cdr->car = (node*)(intptr_t)nest_level; 10074 } 10075 else if (c == '\\') { 10076 c = nextc(p); 10077 if (type & STR_FUNC_EXPAND) { 10078 if (c == end || c == beg) { 10079 tokadd(p, c); 10080 } 10081 else if (c == '\n') { 10082 p->lineno++; 10083 p->column = 0; 10084 if (type & STR_FUNC_ARRAY) { 10085 tokadd(p, '\n'); 10086 } 10087 } 10088 else if (type & STR_FUNC_REGEXP) { 10089 tokadd(p, '\\'); 10090 tokadd(p, c); 10091 } 10092 else { 10093 pushback(p, c); 10094 tokadd(p, read_escape(p)); 10095 if (hinf) 10096 hinf->line_head = FALSE; 10097 } 10098 } 10099 else { 10100 if (c != beg && c != end) { 10101 if (c == '\n') { 10102 p->lineno++; 10103 p->column = 0; 10104 } 10105 if (!(c == '\\' || ((type & STR_FUNC_ARRAY) && ISSPACE(c)))) { 10106 tokadd(p, '\\'); 10107 } 10108 } 10109 tokadd(p, c); 10110 } 10111 continue; 10112 } 10113 else if ((c == '#') && (type & STR_FUNC_EXPAND)) { 10114 c = nextc(p); 10115 if (c == '{') { 10116 tokfix(p); 10117 p->lstate = EXPR_BEG; 10118 p->cmd_start = TRUE; 10119 yylval.nd = new_str(p, tok(p), toklen(p)); 10120 if (hinf) { 10121 hinf->line_head = FALSE; 10122 return tHD_STRING_PART; 10123 } 10124 return tSTRING_PART; 10125 } 10126 tokadd(p, '#'); 10127 pushback(p, c); 10128 continue; 10129 } 10130 if ((type & STR_FUNC_ARRAY) && ISSPACE(c)) { 10131 if (toklen(p) == 0) { 10132 do { 10133 if (c == '\n') { 10134 p->lineno++; 10135 p->column = 0; 10136 heredoc_treat_nextline(p); 10137 if (p->parsing_heredoc != NULL) { 10138 return tHD_LITERAL_DELIM; 10139 } 10140 } 10141 c = nextc(p); 10142 } while (ISSPACE(c)); 10143 pushback(p, c); 10144 return tLITERAL_DELIM; 10145 } 10146 else { 10147 pushback(p, c); 10148 tokfix(p); 10149 yylval.nd = new_str(p, tok(p), toklen(p)); 10150 return tSTRING_MID; 10151 } 10152 } 10153 tokadd(p, c); 10154 } 10155 10156 tokfix(p); 10157 p->lstate = EXPR_END; 10158 end_strterm(p); 10159 10160 if (type & STR_FUNC_XQUOTE) { 10161 yylval.nd = new_xstr(p, tok(p), toklen(p)); 10162 return tXSTRING; 10163 } 10164 10165 if (type & STR_FUNC_REGEXP) { 10166 int f = 0; 10167 int re_opt; 10168 char *s = strndup(tok(p), toklen(p)); 10169 char flags[3]; 10170 char *flag = flags; 10171 char *dup; 10172 10173 newtok(p); 10174 while (re_opt = nextc(p), re_opt >= 0 && ISALPHA(re_opt)) { 10175 switch (re_opt) { 10176 case 'i': f |= 1; break; 10177 case 'x': f |= 2; break; 10178 case 'm': f |= 4; break; 10179 default: tokadd(p, re_opt); break; 10180 } 10181 } 10182 pushback(p, re_opt); 10183 if (toklen(p)) { 10184 char msg[128]; 10185 tokfix(p); 10186 snprintf(msg, sizeof(msg), "unknown regexp option%s - %s", 10187 toklen(p) > 1 ? "s" : "", tok(p)); 10188 yyerror(p, msg); 10189 } 10190 if (f != 0) { 10191 if (f & 1) *flag++ = 'i'; 10192 if (f & 2) *flag++ = 'x'; 10193 if (f & 4) *flag++ = 'm'; 10194 dup = strndup(flags, (size_t)(flag - flags)); 10195 } 10196 else { 10197 dup = NULL; 10198 } 10199 yylval.nd = new_regx(p, s, dup); 10200 10201 return tREGEXP; 10202 } 10203 10204 yylval.nd = new_str(p, tok(p), toklen(p)); 10205 return tSTRING; 10206 } 10207 10208 10209 static int 10210 heredoc_identifier(parser_state *p) 10211 { 10212 int c; 10213 int type = str_heredoc; 10214 mrb_bool indent = FALSE; 10215 mrb_bool quote = FALSE; 10216 node *newnode; 10217 parser_heredoc_info *info; 10218 10219 c = nextc(p); 10220 if (ISSPACE(c) || c == '=') { 10221 pushback(p, c); 10222 return 0; 10223 } 10224 if (c == '-') { 10225 indent = TRUE; 10226 c = nextc(p); 10227 } 10228 if (c == '\'' || c == '"') { 10229 int term = c; 10230 if (c == '\'') 10231 quote = TRUE; 10232 newtok(p); 10233 while ((c = nextc(p)) >= 0 && c != term) { 10234 if (c == '\n') { 10235 c = -1; 10236 break; 10237 } 10238 tokadd(p, c); 10239 } 10240 if (c < 0) { 10241 yyerror(p, "unterminated here document identifier"); 10242 return 0; 10243 } 10244 } 10245 else { 10246 if (c < 0) { 10247 return 0; /* missing here document identifier */ 10248 } 10249 if (! identchar(c)) { 10250 pushback(p, c); 10251 if (indent) pushback(p, '-'); 10252 return 0; 10253 } 10254 newtok(p); 10255 do { 10256 tokadd(p, c); 10257 } while ((c = nextc(p)) >= 0 && identchar(c)); 10258 pushback(p, c); 10259 } 10260 tokfix(p); 10261 newnode = new_heredoc(p); 10262 info = (parser_heredoc_info*)newnode->cdr; 10263 info->term = strndup(tok(p), toklen(p)); 10264 info->term_len = toklen(p); 10265 if (! quote) 10266 type |= STR_FUNC_EXPAND; 10267 info->type = (string_type)type; 10268 info->allow_indent = indent; 10269 info->line_head = TRUE; 10270 info->doc = NULL; 10271 p->heredocs_from_nextline = push(p->heredocs_from_nextline, newnode); 10272 p->lstate = EXPR_END; 10273 10274 yylval.nd = newnode; 10275 return tHEREDOC_BEG; 10276 } 10277 10278 static int 10279 arg_ambiguous(parser_state *p) 10280 { 10281 yywarning(p, "ambiguous first argument; put parentheses or even spaces"); 10282 return 1; 10283 } 10284 10285 #include "lex.def" 10286 10287 static int 10288 parser_yylex(parser_state *p) 10289 { 10290 int32_t c; 10291 int space_seen = 0; 10292 int cmd_state; 10293 enum mrb_lex_state_enum last_state; 10294 int token_column; 10295 10296 if (p->lex_strterm) { 10297 if (is_strterm_type(p, STR_FUNC_HEREDOC)) { 10298 if (p->parsing_heredoc != NULL) 10299 return parse_string(p); 10300 } 10301 else 10302 return parse_string(p); 10303 } 10304 cmd_state = p->cmd_start; 10305 p->cmd_start = FALSE; 10306 retry: 10307 last_state = p->lstate; 10308 switch (c = nextc(p)) { 10309 case '\0': /* NUL */ 10310 case '\004': /* ^D */ 10311 case '\032': /* ^Z */ 10312 return 0; 10313 case -1: /* end of script. */ 10314 if (p->heredocs_from_nextline) 10315 goto maybe_heredoc; 10316 return 0; 10317 10318 /* white spaces */ 10319 case ' ': case '\t': case '\f': case '\r': 10320 case '\13': /* '\v' */ 10321 space_seen = 1; 10322 goto retry; 10323 10324 case '#': /* it's a comment */ 10325 skip(p, '\n'); 10326 /* fall through */ 10327 case -2: /* end of a file */ 10328 case '\n': 10329 maybe_heredoc: 10330 heredoc_treat_nextline(p); 10331 switch (p->lstate) { 10332 case EXPR_BEG: 10333 case EXPR_FNAME: 10334 case EXPR_DOT: 10335 case EXPR_CLASS: 10336 case EXPR_VALUE: 10337 p->lineno++; 10338 p->column = 0; 10339 if (p->parsing_heredoc != NULL) { 10340 return parse_string(p); 10341 } 10342 goto retry; 10343 default: 10344 break; 10345 } 10346 if (p->parsing_heredoc != NULL) { 10347 return '\n'; 10348 } 10349 while ((c = nextc(p))) { 10350 switch (c) { 10351 case ' ': case '\t': case '\f': case '\r': 10352 case '\13': /* '\v' */ 10353 space_seen = 1; 10354 break; 10355 case '.': 10356 if ((c = nextc(p)) != '.') { 10357 pushback(p, c); 10358 pushback(p, '.'); 10359 goto retry; 10360 } 10361 case -1: /* EOF */ 10362 case -2: /* end of a file */ 10363 goto normal_newline; 10364 default: 10365 pushback(p, c); 10366 goto normal_newline; 10367 } 10368 } 10369 normal_newline: 10370 p->cmd_start = TRUE; 10371 p->lstate = EXPR_BEG; 10372 return '\n'; 10373 10374 case '*': 10375 if ((c = nextc(p)) == '*') { 10376 if ((c = nextc(p)) == '=') { 10377 yylval.id = intern("**",2); 10378 p->lstate = EXPR_BEG; 10379 return tOP_ASGN; 10380 } 10381 pushback(p, c); 10382 c = tPOW; 10383 } 10384 else { 10385 if (c == '=') { 10386 yylval.id = intern_c('*'); 10387 p->lstate = EXPR_BEG; 10388 return tOP_ASGN; 10389 } 10390 pushback(p, c); 10391 if (IS_SPCARG(c)) { 10392 yywarning(p, "`*' interpreted as argument prefix"); 10393 c = tSTAR; 10394 } 10395 else if (IS_BEG()) { 10396 c = tSTAR; 10397 } 10398 else { 10399 c = '*'; 10400 } 10401 } 10402 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 10403 p->lstate = EXPR_ARG; 10404 } 10405 else { 10406 p->lstate = EXPR_BEG; 10407 } 10408 return c; 10409 10410 case '!': 10411 c = nextc(p); 10412 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 10413 p->lstate = EXPR_ARG; 10414 if (c == '@') { 10415 return '!'; 10416 } 10417 } 10418 else { 10419 p->lstate = EXPR_BEG; 10420 } 10421 if (c == '=') { 10422 return tNEQ; 10423 } 10424 if (c == '~') { 10425 return tNMATCH; 10426 } 10427 pushback(p, c); 10428 return '!'; 10429 10430 case '=': 10431 if (p->column == 1) { 10432 static const char begin[] = "begin"; 10433 static const char end[] = "\n=end"; 10434 if (peeks(p, begin)) { 10435 c = peekc_n(p, sizeof(begin)-1); 10436 if (c < 0 || ISSPACE(c)) { 10437 do { 10438 if (!skips(p, end)) { 10439 yyerror(p, "embedded document meets end of file"); 10440 return 0; 10441 } 10442 c = nextc(p); 10443 } while (!(c < 0 || ISSPACE(c))); 10444 if (c != '\n') skip(p, '\n'); 10445 p->lineno++; 10446 p->column = 0; 10447 goto retry; 10448 } 10449 } 10450 } 10451 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 10452 p->lstate = EXPR_ARG; 10453 } 10454 else { 10455 p->lstate = EXPR_BEG; 10456 } 10457 if ((c = nextc(p)) == '=') { 10458 if ((c = nextc(p)) == '=') { 10459 return tEQQ; 10460 } 10461 pushback(p, c); 10462 return tEQ; 10463 } 10464 if (c == '~') { 10465 return tMATCH; 10466 } 10467 else if (c == '>') { 10468 return tASSOC; 10469 } 10470 pushback(p, c); 10471 return '='; 10472 10473 case '<': 10474 c = nextc(p); 10475 if (c == '<' && 10476 p->lstate != EXPR_DOT && 10477 p->lstate != EXPR_CLASS && 10478 !IS_END() && 10479 (!IS_ARG() || space_seen)) { 10480 int token = heredoc_identifier(p); 10481 if (token) 10482 return token; 10483 } 10484 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 10485 p->lstate = EXPR_ARG; 10486 } 10487 else { 10488 p->lstate = EXPR_BEG; 10489 if (p->lstate == EXPR_CLASS) { 10490 p->cmd_start = TRUE; 10491 } 10492 } 10493 if (c == '=') { 10494 if ((c = nextc(p)) == '>') { 10495 return tCMP; 10496 } 10497 pushback(p, c); 10498 return tLEQ; 10499 } 10500 if (c == '<') { 10501 if ((c = nextc(p)) == '=') { 10502 yylval.id = intern("<<",2); 10503 p->lstate = EXPR_BEG; 10504 return tOP_ASGN; 10505 } 10506 pushback(p, c); 10507 return tLSHFT; 10508 } 10509 pushback(p, c); 10510 return '<'; 10511 10512 case '>': 10513 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 10514 p->lstate = EXPR_ARG; 10515 } 10516 else { 10517 p->lstate = EXPR_BEG; 10518 } 10519 if ((c = nextc(p)) == '=') { 10520 return tGEQ; 10521 } 10522 if (c == '>') { 10523 if ((c = nextc(p)) == '=') { 10524 yylval.id = intern(">>",2); 10525 p->lstate = EXPR_BEG; 10526 return tOP_ASGN; 10527 } 10528 pushback(p, c); 10529 return tRSHFT; 10530 } 10531 pushback(p, c); 10532 return '>'; 10533 10534 case '"': 10535 p->lex_strterm = new_strterm(p, str_dquote, '"', 0); 10536 return tSTRING_BEG; 10537 10538 case '\'': 10539 p->lex_strterm = new_strterm(p, str_squote, '\'', 0); 10540 return parse_string(p); 10541 10542 case '`': 10543 if (p->lstate == EXPR_FNAME) { 10544 p->lstate = EXPR_ENDFN; 10545 return '`'; 10546 } 10547 if (p->lstate == EXPR_DOT) { 10548 if (cmd_state) 10549 p->lstate = EXPR_CMDARG; 10550 else 10551 p->lstate = EXPR_ARG; 10552 return '`'; 10553 } 10554 p->lex_strterm = new_strterm(p, str_xquote, '`', 0); 10555 return tXSTRING_BEG; 10556 10557 case '?': 10558 if (IS_END()) { 10559 p->lstate = EXPR_VALUE; 10560 return '?'; 10561 } 10562 c = nextc(p); 10563 if (c < 0) { 10564 yyerror(p, "incomplete character syntax"); 10565 return 0; 10566 } 10567 if (ISSPACE(c)) { 10568 if (!IS_ARG()) { 10569 int c2; 10570 switch (c) { 10571 case ' ': 10572 c2 = 's'; 10573 break; 10574 case '\n': 10575 c2 = 'n'; 10576 break; 10577 case '\t': 10578 c2 = 't'; 10579 break; 10580 case '\v': 10581 c2 = 'v'; 10582 break; 10583 case '\r': 10584 c2 = 'r'; 10585 break; 10586 case '\f': 10587 c2 = 'f'; 10588 break; 10589 default: 10590 c2 = 0; 10591 break; 10592 } 10593 if (c2) { 10594 char buf[256]; 10595 snprintf(buf, sizeof(buf), "invalid character syntax; use ?\\%c", c2); 10596 yyerror(p, buf); 10597 } 10598 } 10599 ternary: 10600 pushback(p, c); 10601 p->lstate = EXPR_VALUE; 10602 return '?'; 10603 } 10604 newtok(p); 10605 /* need support UTF-8 if configured */ 10606 if ((isalnum(c) || c == '_')) { 10607 int c2 = nextc(p); 10608 pushback(p, c2); 10609 if ((isalnum(c2) || c2 == '_')) { 10610 goto ternary; 10611 } 10612 } 10613 if (c == '\\') { 10614 c = read_escape(p); 10615 tokadd(p, c); 10616 } 10617 else { 10618 tokadd(p, c); 10619 } 10620 tokfix(p); 10621 yylval.nd = new_str(p, tok(p), toklen(p)); 10622 p->lstate = EXPR_END; 10623 return tCHAR; 10624 10625 case '&': 10626 if ((c = nextc(p)) == '&') { 10627 p->lstate = EXPR_BEG; 10628 if ((c = nextc(p)) == '=') { 10629 yylval.id = intern("&&",2); 10630 p->lstate = EXPR_BEG; 10631 return tOP_ASGN; 10632 } 10633 pushback(p, c); 10634 return tANDOP; 10635 } 10636 else if (c == '=') { 10637 yylval.id = intern_c('&'); 10638 p->lstate = EXPR_BEG; 10639 return tOP_ASGN; 10640 } 10641 pushback(p, c); 10642 if (IS_SPCARG(c)) { 10643 yywarning(p, "`&' interpreted as argument prefix"); 10644 c = tAMPER; 10645 } 10646 else if (IS_BEG()) { 10647 c = tAMPER; 10648 } 10649 else { 10650 c = '&'; 10651 } 10652 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 10653 p->lstate = EXPR_ARG; 10654 } 10655 else { 10656 p->lstate = EXPR_BEG; 10657 } 10658 return c; 10659 10660 case '|': 10661 if ((c = nextc(p)) == '|') { 10662 p->lstate = EXPR_BEG; 10663 if ((c = nextc(p)) == '=') { 10664 yylval.id = intern("||",2); 10665 p->lstate = EXPR_BEG; 10666 return tOP_ASGN; 10667 } 10668 pushback(p, c); 10669 return tOROP; 10670 } 10671 if (c == '=') { 10672 yylval.id = intern_c('|'); 10673 p->lstate = EXPR_BEG; 10674 return tOP_ASGN; 10675 } 10676 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 10677 p->lstate = EXPR_ARG; 10678 } 10679 else { 10680 p->lstate = EXPR_BEG; 10681 } 10682 pushback(p, c); 10683 return '|'; 10684 10685 case '+': 10686 c = nextc(p); 10687 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 10688 p->lstate = EXPR_ARG; 10689 if (c == '@') { 10690 return tUPLUS; 10691 } 10692 pushback(p, c); 10693 return '+'; 10694 } 10695 if (c == '=') { 10696 yylval.id = intern_c('+'); 10697 p->lstate = EXPR_BEG; 10698 return tOP_ASGN; 10699 } 10700 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) { 10701 p->lstate = EXPR_BEG; 10702 pushback(p, c); 10703 if (c >= 0 && ISDIGIT(c)) { 10704 c = '+'; 10705 goto start_num; 10706 } 10707 return tUPLUS; 10708 } 10709 p->lstate = EXPR_BEG; 10710 pushback(p, c); 10711 return '+'; 10712 10713 case '-': 10714 c = nextc(p); 10715 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 10716 p->lstate = EXPR_ARG; 10717 if (c == '@') { 10718 return tUMINUS; 10719 } 10720 pushback(p, c); 10721 return '-'; 10722 } 10723 if (c == '=') { 10724 yylval.id = intern_c('-'); 10725 p->lstate = EXPR_BEG; 10726 return tOP_ASGN; 10727 } 10728 if (c == '>') { 10729 p->lstate = EXPR_ENDFN; 10730 return tLAMBDA; 10731 } 10732 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) { 10733 p->lstate = EXPR_BEG; 10734 pushback(p, c); 10735 if (c >= 0 && ISDIGIT(c)) { 10736 return tUMINUS_NUM; 10737 } 10738 return tUMINUS; 10739 } 10740 p->lstate = EXPR_BEG; 10741 pushback(p, c); 10742 return '-'; 10743 10744 case '.': 10745 p->lstate = EXPR_BEG; 10746 if ((c = nextc(p)) == '.') { 10747 if ((c = nextc(p)) == '.') { 10748 return tDOT3; 10749 } 10750 pushback(p, c); 10751 return tDOT2; 10752 } 10753 pushback(p, c); 10754 if (c >= 0 && ISDIGIT(c)) { 10755 yyerror(p, "no .<digit> floating literal anymore; put 0 before dot"); 10756 } 10757 p->lstate = EXPR_DOT; 10758 return '.'; 10759 10760 start_num: 10761 case '0': case '1': case '2': case '3': case '4': 10762 case '5': case '6': case '7': case '8': case '9': 10763 { 10764 int is_float, seen_point, seen_e, nondigit; 10765 10766 is_float = seen_point = seen_e = nondigit = 0; 10767 p->lstate = EXPR_END; 10768 newtok(p); 10769 if (c == '-' || c == '+') { 10770 tokadd(p, c); 10771 c = nextc(p); 10772 } 10773 if (c == '0') { 10774 #define no_digits() do {yyerror(p,"numeric literal without digits"); return 0;} while (0) 10775 int start = toklen(p); 10776 c = nextc(p); 10777 if (c == 'x' || c == 'X') { 10778 /* hexadecimal */ 10779 c = nextc(p); 10780 if (c >= 0 && ISXDIGIT(c)) { 10781 do { 10782 if (c == '_') { 10783 if (nondigit) break; 10784 nondigit = c; 10785 continue; 10786 } 10787 if (!ISXDIGIT(c)) break; 10788 nondigit = 0; 10789 tokadd(p, tolower(c)); 10790 } while ((c = nextc(p)) >= 0); 10791 } 10792 pushback(p, c); 10793 tokfix(p); 10794 if (toklen(p) == start) { 10795 no_digits(); 10796 } 10797 else if (nondigit) goto trailing_uc; 10798 yylval.nd = new_int(p, tok(p), 16); 10799 return tINTEGER; 10800 } 10801 if (c == 'b' || c == 'B') { 10802 /* binary */ 10803 c = nextc(p); 10804 if (c == '0' || c == '1') { 10805 do { 10806 if (c == '_') { 10807 if (nondigit) break; 10808 nondigit = c; 10809 continue; 10810 } 10811 if (c != '0' && c != '1') break; 10812 nondigit = 0; 10813 tokadd(p, c); 10814 } while ((c = nextc(p)) >= 0); 10815 } 10816 pushback(p, c); 10817 tokfix(p); 10818 if (toklen(p) == start) { 10819 no_digits(); 10820 } 10821 else if (nondigit) goto trailing_uc; 10822 yylval.nd = new_int(p, tok(p), 2); 10823 return tINTEGER; 10824 } 10825 if (c == 'd' || c == 'D') { 10826 /* decimal */ 10827 c = nextc(p); 10828 if (c >= 0 && ISDIGIT(c)) { 10829 do { 10830 if (c == '_') { 10831 if (nondigit) break; 10832 nondigit = c; 10833 continue; 10834 } 10835 if (!ISDIGIT(c)) break; 10836 nondigit = 0; 10837 tokadd(p, c); 10838 } while ((c = nextc(p)) >= 0); 10839 } 10840 pushback(p, c); 10841 tokfix(p); 10842 if (toklen(p) == start) { 10843 no_digits(); 10844 } 10845 else if (nondigit) goto trailing_uc; 10846 yylval.nd = new_int(p, tok(p), 10); 10847 return tINTEGER; 10848 } 10849 if (c == '_') { 10850 /* 0_0 */ 10851 goto octal_number; 10852 } 10853 if (c == 'o' || c == 'O') { 10854 /* prefixed octal */ 10855 c = nextc(p); 10856 if (c < 0 || c == '_' || !ISDIGIT(c)) { 10857 no_digits(); 10858 } 10859 } 10860 if (c >= '0' && c <= '7') { 10861 /* octal */ 10862 octal_number: 10863 do { 10864 if (c == '_') { 10865 if (nondigit) break; 10866 nondigit = c; 10867 continue; 10868 } 10869 if (c < '0' || c > '9') break; 10870 if (c > '7') goto invalid_octal; 10871 nondigit = 0; 10872 tokadd(p, c); 10873 } while ((c = nextc(p)) >= 0); 10874 10875 if (toklen(p) > start) { 10876 pushback(p, c); 10877 tokfix(p); 10878 if (nondigit) goto trailing_uc; 10879 yylval.nd = new_int(p, tok(p), 8); 10880 return tINTEGER; 10881 } 10882 if (nondigit) { 10883 pushback(p, c); 10884 goto trailing_uc; 10885 } 10886 } 10887 if (c > '7' && c <= '9') { 10888 invalid_octal: 10889 yyerror(p, "Invalid octal digit"); 10890 } 10891 else if (c == '.' || c == 'e' || c == 'E') { 10892 tokadd(p, '0'); 10893 } 10894 else { 10895 pushback(p, c); 10896 yylval.nd = new_int(p, "0", 10); 10897 return tINTEGER; 10898 } 10899 } 10900 10901 for (;;) { 10902 switch (c) { 10903 case '0': case '1': case '2': case '3': case '4': 10904 case '5': case '6': case '7': case '8': case '9': 10905 nondigit = 0; 10906 tokadd(p, c); 10907 break; 10908 10909 case '.': 10910 if (nondigit) goto trailing_uc; 10911 if (seen_point || seen_e) { 10912 goto decode_num; 10913 } 10914 else { 10915 int c0 = nextc(p); 10916 if (c0 < 0 || !ISDIGIT(c0)) { 10917 pushback(p, c0); 10918 goto decode_num; 10919 } 10920 c = c0; 10921 } 10922 tokadd(p, '.'); 10923 tokadd(p, c); 10924 is_float++; 10925 seen_point++; 10926 nondigit = 0; 10927 break; 10928 10929 case 'e': 10930 case 'E': 10931 if (nondigit) { 10932 pushback(p, c); 10933 c = nondigit; 10934 goto decode_num; 10935 } 10936 if (seen_e) { 10937 goto decode_num; 10938 } 10939 tokadd(p, c); 10940 seen_e++; 10941 is_float++; 10942 nondigit = c; 10943 c = nextc(p); 10944 if (c != '-' && c != '+') continue; 10945 tokadd(p, c); 10946 nondigit = c; 10947 break; 10948 10949 case '_': /* `_' in number just ignored */ 10950 if (nondigit) goto decode_num; 10951 nondigit = c; 10952 break; 10953 10954 default: 10955 goto decode_num; 10956 } 10957 c = nextc(p); 10958 } 10959 10960 decode_num: 10961 pushback(p, c); 10962 if (nondigit) { 10963 trailing_uc: 10964 yyerror_i(p, "trailing `%c' in number", nondigit); 10965 } 10966 tokfix(p); 10967 if (is_float) { 10968 double d; 10969 char *endp; 10970 10971 errno = 0; 10972 d = strtod(tok(p), &endp); 10973 if (d == 0 && endp == tok(p)) { 10974 yywarning_s(p, "corrupted float value %s", tok(p)); 10975 } 10976 else if (errno == ERANGE) { 10977 yywarning_s(p, "float %s out of range", tok(p)); 10978 errno = 0; 10979 } 10980 yylval.nd = new_float(p, tok(p)); 10981 return tFLOAT; 10982 } 10983 yylval.nd = new_int(p, tok(p), 10); 10984 return tINTEGER; 10985 } 10986 10987 case ')': 10988 case ']': 10989 p->paren_nest--; 10990 case '}': 10991 COND_LEXPOP(); 10992 CMDARG_LEXPOP(); 10993 if (c == ')') 10994 p->lstate = EXPR_ENDFN; 10995 else 10996 p->lstate = EXPR_ENDARG; 10997 return c; 10998 10999 case ':': 11000 c = nextc(p); 11001 if (c == ':') { 11002 if (IS_BEG() || p->lstate == EXPR_CLASS || IS_SPCARG(-1)) { 11003 p->lstate = EXPR_BEG; 11004 return tCOLON3; 11005 } 11006 p->lstate = EXPR_DOT; 11007 return tCOLON2; 11008 } 11009 if (IS_END() || ISSPACE(c)) { 11010 pushback(p, c); 11011 p->lstate = EXPR_BEG; 11012 return ':'; 11013 } 11014 pushback(p, c); 11015 p->lstate = EXPR_FNAME; 11016 return tSYMBEG; 11017 11018 case '/': 11019 if (IS_BEG()) { 11020 p->lex_strterm = new_strterm(p, str_regexp, '/', 0); 11021 return tREGEXP_BEG; 11022 } 11023 if ((c = nextc(p)) == '=') { 11024 yylval.id = intern_c('/'); 11025 p->lstate = EXPR_BEG; 11026 return tOP_ASGN; 11027 } 11028 pushback(p, c); 11029 if (IS_SPCARG(c)) { 11030 p->lex_strterm = new_strterm(p, str_regexp, '/', 0); 11031 return tREGEXP_BEG; 11032 } 11033 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 11034 p->lstate = EXPR_ARG; 11035 } 11036 else { 11037 p->lstate = EXPR_BEG; 11038 } 11039 return '/'; 11040 11041 case '^': 11042 if ((c = nextc(p)) == '=') { 11043 yylval.id = intern_c('^'); 11044 p->lstate = EXPR_BEG; 11045 return tOP_ASGN; 11046 } 11047 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 11048 p->lstate = EXPR_ARG; 11049 } 11050 else { 11051 p->lstate = EXPR_BEG; 11052 } 11053 pushback(p, c); 11054 return '^'; 11055 11056 case ';': 11057 p->lstate = EXPR_BEG; 11058 return ';'; 11059 11060 case ',': 11061 p->lstate = EXPR_BEG; 11062 return ','; 11063 11064 case '~': 11065 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 11066 if ((c = nextc(p)) != '@') { 11067 pushback(p, c); 11068 } 11069 p->lstate = EXPR_ARG; 11070 } 11071 else { 11072 p->lstate = EXPR_BEG; 11073 } 11074 return '~'; 11075 11076 case '(': 11077 if (IS_BEG()) { 11078 c = tLPAREN; 11079 } 11080 else if (IS_SPCARG(-1)) { 11081 c = tLPAREN_ARG; 11082 } 11083 p->paren_nest++; 11084 COND_PUSH(0); 11085 CMDARG_PUSH(0); 11086 p->lstate = EXPR_BEG; 11087 return c; 11088 11089 case '[': 11090 p->paren_nest++; 11091 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 11092 p->lstate = EXPR_ARG; 11093 if ((c = nextc(p)) == ']') { 11094 if ((c = nextc(p)) == '=') { 11095 return tASET; 11096 } 11097 pushback(p, c); 11098 return tAREF; 11099 } 11100 pushback(p, c); 11101 return '['; 11102 } 11103 else if (IS_BEG()) { 11104 c = tLBRACK; 11105 } 11106 else if (IS_ARG() && space_seen) { 11107 c = tLBRACK; 11108 } 11109 p->lstate = EXPR_BEG; 11110 COND_PUSH(0); 11111 CMDARG_PUSH(0); 11112 return c; 11113 11114 case '{': 11115 if (p->lpar_beg && p->lpar_beg == p->paren_nest) { 11116 p->lstate = EXPR_BEG; 11117 p->lpar_beg = 0; 11118 p->paren_nest--; 11119 COND_PUSH(0); 11120 CMDARG_PUSH(0); 11121 return tLAMBEG; 11122 } 11123 if (IS_ARG() || p->lstate == EXPR_END || p->lstate == EXPR_ENDFN) 11124 c = '{'; /* block (primary) */ 11125 else if (p->lstate == EXPR_ENDARG) 11126 c = tLBRACE_ARG; /* block (expr) */ 11127 else 11128 c = tLBRACE; /* hash */ 11129 COND_PUSH(0); 11130 CMDARG_PUSH(0); 11131 p->lstate = EXPR_BEG; 11132 return c; 11133 11134 case '\\': 11135 c = nextc(p); 11136 if (c == '\n') { 11137 p->lineno++; 11138 p->column = 0; 11139 space_seen = 1; 11140 goto retry; /* skip \\n */ 11141 } 11142 pushback(p, c); 11143 return '\\'; 11144 11145 case '%': 11146 if (IS_BEG()) { 11147 int term; 11148 int paren; 11149 11150 c = nextc(p); 11151 quotation: 11152 if (c < 0 || !ISALNUM(c)) { 11153 term = c; 11154 c = 'Q'; 11155 } 11156 else { 11157 term = nextc(p); 11158 if (isalnum(term)) { 11159 yyerror(p, "unknown type of %string"); 11160 return 0; 11161 } 11162 } 11163 if (c < 0 || term < 0) { 11164 yyerror(p, "unterminated quoted string meets end of file"); 11165 return 0; 11166 } 11167 paren = term; 11168 if (term == '(') term = ')'; 11169 else if (term == '[') term = ']'; 11170 else if (term == '{') term = '}'; 11171 else if (term == '<') term = '>'; 11172 else paren = 0; 11173 11174 switch (c) { 11175 case 'Q': 11176 p->lex_strterm = new_strterm(p, str_dquote, term, paren); 11177 return tSTRING_BEG; 11178 11179 case 'q': 11180 p->lex_strterm = new_strterm(p, str_squote, term, paren); 11181 return parse_string(p); 11182 11183 case 'W': 11184 p->lex_strterm = new_strterm(p, str_dword, term, paren); 11185 return tWORDS_BEG; 11186 11187 case 'w': 11188 p->lex_strterm = new_strterm(p, str_sword, term, paren); 11189 return tWORDS_BEG; 11190 11191 case 'x': 11192 p->lex_strterm = new_strterm(p, str_xquote, term, paren); 11193 return tXSTRING_BEG; 11194 11195 case 'r': 11196 p->lex_strterm = new_strterm(p, str_regexp, term, paren); 11197 return tREGEXP_BEG; 11198 11199 case 's': 11200 p->lex_strterm = new_strterm(p, str_ssym, term, paren); 11201 return tSYMBEG; 11202 11203 case 'I': 11204 p->lex_strterm = new_strterm(p, str_dsymbols, term, paren); 11205 return tSYMBOLS_BEG; 11206 11207 case 'i': 11208 p->lex_strterm = new_strterm(p, str_ssymbols, term, paren); 11209 return tSYMBOLS_BEG; 11210 11211 default: 11212 yyerror(p, "unknown type of %string"); 11213 return 0; 11214 } 11215 } 11216 if ((c = nextc(p)) == '=') { 11217 yylval.id = intern_c('%'); 11218 p->lstate = EXPR_BEG; 11219 return tOP_ASGN; 11220 } 11221 if (IS_SPCARG(c)) { 11222 goto quotation; 11223 } 11224 if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) { 11225 p->lstate = EXPR_ARG; 11226 } 11227 else { 11228 p->lstate = EXPR_BEG; 11229 } 11230 pushback(p, c); 11231 return '%'; 11232 11233 case '$': 11234 p->lstate = EXPR_END; 11235 token_column = newtok(p); 11236 c = nextc(p); 11237 if (c < 0) { 11238 yyerror(p, "incomplete global variable syntax"); 11239 return 0; 11240 } 11241 switch (c) { 11242 case '_': /* $_: last read line string */ 11243 c = nextc(p); 11244 if (c >= 0 && identchar(c)) { /* if there is more after _ it is a variable */ 11245 tokadd(p, '$'); 11246 tokadd(p, c); 11247 break; 11248 } 11249 pushback(p, c); 11250 c = '_'; 11251 /* fall through */ 11252 case '~': /* $~: match-data */ 11253 case '*': /* $*: argv */ 11254 case '$': /* $$: pid */ 11255 case '?': /* $?: last status */ 11256 case '!': /* $!: error string */ 11257 case '@': /* $@: error position */ 11258 case '/': /* $/: input record separator */ 11259 case '\\': /* $\: output record separator */ 11260 case ';': /* $;: field separator */ 11261 case ',': /* $,: output field separator */ 11262 case '.': /* $.: last read line number */ 11263 case '=': /* $=: ignorecase */ 11264 case ':': /* $:: load path */ 11265 case '<': /* $<: reading filename */ 11266 case '>': /* $>: default output handle */ 11267 case '\"': /* $": already loaded files */ 11268 tokadd(p, '$'); 11269 tokadd(p, c); 11270 tokfix(p); 11271 yylval.id = intern_cstr(tok(p)); 11272 return tGVAR; 11273 11274 case '-': 11275 tokadd(p, '$'); 11276 tokadd(p, c); 11277 c = nextc(p); 11278 pushback(p, c); 11279 gvar: 11280 tokfix(p); 11281 yylval.id = intern_cstr(tok(p)); 11282 return tGVAR; 11283 11284 case '&': /* $&: last match */ 11285 case '`': /* $`: string before last match */ 11286 case '\'': /* $': string after last match */ 11287 case '+': /* $+: string matches last pattern */ 11288 if (last_state == EXPR_FNAME) { 11289 tokadd(p, '$'); 11290 tokadd(p, c); 11291 goto gvar; 11292 } 11293 yylval.nd = new_back_ref(p, c); 11294 return tBACK_REF; 11295 11296 case '1': case '2': case '3': 11297 case '4': case '5': case '6': 11298 case '7': case '8': case '9': 11299 do { 11300 tokadd(p, c); 11301 c = nextc(p); 11302 } while (c >= 0 && isdigit(c)); 11303 pushback(p, c); 11304 if (last_state == EXPR_FNAME) goto gvar; 11305 tokfix(p); 11306 yylval.nd = new_nth_ref(p, atoi(tok(p))); 11307 return tNTH_REF; 11308 11309 default: 11310 if (!identchar(c)) { 11311 pushback(p, c); 11312 return '$'; 11313 } 11314 case '0': 11315 tokadd(p, '$'); 11316 } 11317 break; 11318 11319 case '@': 11320 c = nextc(p); 11321 token_column = newtok(p); 11322 tokadd(p, '@'); 11323 if (c == '@') { 11324 tokadd(p, '@'); 11325 c = nextc(p); 11326 } 11327 if (c < 0) { 11328 if (p->bidx == 1) { 11329 yyerror(p, "incomplete instance variable syntax"); 11330 } 11331 else { 11332 yyerror(p, "incomplete class variable syntax"); 11333 } 11334 return 0; 11335 } 11336 else if (isdigit(c)) { 11337 if (p->bidx == 1) { 11338 yyerror_i(p, "`@%c' is not allowed as an instance variable name", c); 11339 } 11340 else { 11341 yyerror_i(p, "`@@%c' is not allowed as a class variable name", c); 11342 } 11343 return 0; 11344 } 11345 if (!identchar(c)) { 11346 pushback(p, c); 11347 return '@'; 11348 } 11349 break; 11350 11351 case '_': 11352 token_column = newtok(p); 11353 break; 11354 11355 default: 11356 if (!identchar(c)) { 11357 yyerror_i(p, "Invalid char `\\x%02X' in expression", c); 11358 goto retry; 11359 } 11360 11361 token_column = newtok(p); 11362 break; 11363 } 11364 11365 do { 11366 tokadd(p, c); 11367 c = nextc(p); 11368 if (c < 0) break; 11369 } while (identchar(c)); 11370 if (token_column == 0 && toklen(p) == 7 && (c < 0 || c == '\n') && 11371 strncmp(tok(p), "__END__", toklen(p)) == 0) 11372 return -1; 11373 11374 switch (tok(p)[0]) { 11375 case '@': case '$': 11376 pushback(p, c); 11377 break; 11378 default: 11379 if ((c == '!' || c == '?') && !peek(p, '=')) { 11380 tokadd(p, c); 11381 } 11382 else { 11383 pushback(p, c); 11384 } 11385 } 11386 tokfix(p); 11387 { 11388 int result = 0; 11389 11390 switch (tok(p)[0]) { 11391 case '$': 11392 p->lstate = EXPR_END; 11393 result = tGVAR; 11394 break; 11395 case '@': 11396 p->lstate = EXPR_END; 11397 if (tok(p)[1] == '@') 11398 result = tCVAR; 11399 else 11400 result = tIVAR; 11401 break; 11402 11403 default: 11404 if (toklast(p) == '!' || toklast(p) == '?') { 11405 result = tFID; 11406 } 11407 else { 11408 if (p->lstate == EXPR_FNAME) { 11409 if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') && 11410 (!peek(p, '=') || (peek_n(p, '>', 1)))) { 11411 result = tIDENTIFIER; 11412 tokadd(p, c); 11413 tokfix(p); 11414 } 11415 else { 11416 pushback(p, c); 11417 } 11418 } 11419 if (result == 0 && ISUPPER(tok(p)[0])) { 11420 result = tCONSTANT; 11421 } 11422 else { 11423 result = tIDENTIFIER; 11424 } 11425 } 11426 11427 if (IS_LABEL_POSSIBLE()) { 11428 if (IS_LABEL_SUFFIX(0)) { 11429 p->lstate = EXPR_BEG; 11430 nextc(p); 11431 tokfix(p); 11432 yylval.id = intern_cstr(tok(p)); 11433 return tLABEL; 11434 } 11435 } 11436 if (p->lstate != EXPR_DOT) { 11437 const struct kwtable *kw; 11438 11439 /* See if it is a reserved word. */ 11440 kw = mrb_reserved_word(tok(p), toklen(p)); 11441 if (kw) { 11442 enum mrb_lex_state_enum state = p->lstate; 11443 yylval.num = p->lineno; 11444 p->lstate = kw->state; 11445 if (state == EXPR_FNAME) { 11446 yylval.id = intern_cstr(kw->name); 11447 return kw->id[0]; 11448 } 11449 if (p->lstate == EXPR_BEG) { 11450 p->cmd_start = TRUE; 11451 } 11452 if (kw->id[0] == keyword_do) { 11453 if (p->lpar_beg && p->lpar_beg == p->paren_nest) { 11454 p->lpar_beg = 0; 11455 p->paren_nest--; 11456 return keyword_do_LAMBDA; 11457 } 11458 if (COND_P()) return keyword_do_cond; 11459 if (CMDARG_P() && state != EXPR_CMDARG) 11460 return keyword_do_block; 11461 if (state == EXPR_ENDARG || state == EXPR_BEG) 11462 return keyword_do_block; 11463 return keyword_do; 11464 } 11465 if (state == EXPR_BEG || state == EXPR_VALUE) 11466 return kw->id[0]; 11467 else { 11468 if (kw->id[0] != kw->id[1]) 11469 p->lstate = EXPR_BEG; 11470 return kw->id[1]; 11471 } 11472 } 11473 } 11474 11475 if (IS_BEG() || p->lstate == EXPR_DOT || IS_ARG()) { 11476 if (cmd_state) { 11477 p->lstate = EXPR_CMDARG; 11478 } 11479 else { 11480 p->lstate = EXPR_ARG; 11481 } 11482 } 11483 else if (p->lstate == EXPR_FNAME) { 11484 p->lstate = EXPR_ENDFN; 11485 } 11486 else { 11487 p->lstate = EXPR_END; 11488 } 11489 } 11490 { 11491 mrb_sym ident = intern_cstr(tok(p)); 11492 11493 yylval.id = ident; 11494 #if 0 11495 if (last_state != EXPR_DOT && islower(tok(p)[0]) && lvar_defined(ident)) { 11496 p->lstate = EXPR_END; 11497 } 11498 #endif 11499 } 11500 return result; 11501 } 11502 } 11503 11504 static int 11505 yylex(void *lval, parser_state *p) 11506 { 11507 p->ylval = lval; 11508 return parser_yylex(p); 11509 } 11510 11511 static void 11512 parser_init_cxt(parser_state *p, mrbc_context *cxt) 11513 { 11514 if (!cxt) return; 11515 if (cxt->filename) mrb_parser_set_filename(p, cxt->filename); 11516 if (cxt->lineno) p->lineno = cxt->lineno; 11517 if (cxt->syms) { 11518 int i; 11519 11520 p->locals = cons(0,0); 11521 for (i=0; i<cxt->slen; i++) { 11522 local_add_f(p, cxt->syms[i]); 11523 } 11524 } 11525 p->capture_errors = cxt->capture_errors; 11526 p->no_optimize = cxt->no_optimize; 11527 if (cxt->partial_hook) { 11528 p->cxt = cxt; 11529 } 11530 } 11531 11532 static void 11533 parser_update_cxt(parser_state *p, mrbc_context *cxt) 11534 { 11535 node *n, *n0; 11536 int i = 0; 11537 11538 if (!cxt) return; 11539 if ((int)(intptr_t)p->tree->car != NODE_SCOPE) return; 11540 n0 = n = p->tree->cdr->car; 11541 while (n) { 11542 i++; 11543 n = n->cdr; 11544 } 11545 cxt->syms = (mrb_sym *)mrb_realloc(p->mrb, cxt->syms, i*sizeof(mrb_sym)); 11546 cxt->slen = i; 11547 for (i=0, n=n0; n; i++,n=n->cdr) { 11548 cxt->syms[i] = sym(n->car); 11549 } 11550 } 11551 11552 void mrb_codedump_all(mrb_state*, struct RProc*); 11553 void mrb_parser_dump(mrb_state *mrb, node *tree, int offset); 11554 11555 MRB_API void 11556 mrb_parser_parse(parser_state *p, mrbc_context *c) 11557 { 11558 struct mrb_jmpbuf buf; 11559 p->jmp = &buf; 11560 11561 MRB_TRY(p->jmp) { 11562 11563 p->cmd_start = TRUE; 11564 p->in_def = p->in_single = 0; 11565 p->nerr = p->nwarn = 0; 11566 p->lex_strterm = NULL; 11567 11568 parser_init_cxt(p, c); 11569 yyparse(p); 11570 if (!p->tree) { 11571 p->tree = new_nil(p); 11572 } 11573 parser_update_cxt(p, c); 11574 if (c && c->dump_result) { 11575 mrb_parser_dump(p->mrb, p->tree, 0); 11576 } 11577 11578 } 11579 MRB_CATCH(p->jmp) { 11580 yyerror(p, "memory allocation error"); 11581 p->nerr++; 11582 p->tree = 0; 11583 return; 11584 } 11585 MRB_END_EXC(p->jmp); 11586 } 11587 11588 MRB_API parser_state* 11589 mrb_parser_new(mrb_state *mrb) 11590 { 11591 mrb_pool *pool; 11592 parser_state *p; 11593 static const parser_state parser_state_zero = { 0 }; 11594 11595 pool = mrb_pool_open(mrb); 11596 if (!pool) return NULL; 11597 p = (parser_state *)mrb_pool_alloc(pool, sizeof(parser_state)); 11598 if (!p) return NULL; 11599 11600 *p = parser_state_zero; 11601 p->mrb = mrb; 11602 p->pool = pool; 11603 11604 p->s = p->send = NULL; 11605 #ifdef ENABLE_STDIO 11606 p->f = NULL; 11607 #endif 11608 11609 p->cmd_start = TRUE; 11610 p->in_def = p->in_single = 0; 11611 11612 p->capture_errors = FALSE; 11613 p->lineno = 1; 11614 p->column = 0; 11615 #if defined(PARSER_TEST) || defined(PARSER_DEBUG) 11616 yydebug = 1; 11617 #endif 11618 11619 p->lex_strterm = NULL; 11620 p->all_heredocs = p->parsing_heredoc = NULL; 11621 p->lex_strterm_before_heredoc = NULL; 11622 11623 p->current_filename_index = -1; 11624 p->filename_table = NULL; 11625 p->filename_table_length = 0; 11626 11627 return p; 11628 } 11629 11630 MRB_API void 11631 mrb_parser_free(parser_state *p) { 11632 mrb_pool_close(p->pool); 11633 } 11634 11635 MRB_API mrbc_context* 11636 mrbc_context_new(mrb_state *mrb) 11637 { 11638 return (mrbc_context *)mrb_calloc(mrb, 1, sizeof(mrbc_context)); 11639 } 11640 11641 MRB_API void 11642 mrbc_context_free(mrb_state *mrb, mrbc_context *cxt) 11643 { 11644 mrb_free(mrb, cxt->syms); 11645 mrb_free(mrb, cxt); 11646 } 11647 11648 MRB_API const char* 11649 mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s) 11650 { 11651 if (s) { 11652 int len = strlen(s); 11653 char *p = (char *)mrb_alloca(mrb, len + 1); 11654 11655 memcpy(p, s, len + 1); 11656 c->filename = p; 11657 } 11658 return c->filename; 11659 } 11660 11661 MRB_API void 11662 mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*func)(struct mrb_parser_state*), void *data) 11663 { 11664 c->partial_hook = func; 11665 c->partial_data = data; 11666 } 11667 11668 MRB_API void 11669 mrb_parser_set_filename(struct mrb_parser_state *p, const char *f) 11670 { 11671 mrb_sym sym; 11672 size_t i; 11673 mrb_sym* new_table; 11674 11675 sym = mrb_intern_cstr(p->mrb, f); 11676 p->filename = mrb_sym2name_len(p->mrb, sym, NULL); 11677 p->lineno = (p->filename_table_length > 0)? 0 : 1; 11678 11679 for (i = 0; i < p->filename_table_length; ++i) { 11680 if (p->filename_table[i] == sym) { 11681 p->current_filename_index = i; 11682 return; 11683 } 11684 } 11685 11686 p->current_filename_index = p->filename_table_length++; 11687 11688 new_table = (mrb_sym*)parser_palloc(p, sizeof(mrb_sym) * p->filename_table_length); 11689 if (p->filename_table) { 11690 memmove(new_table, p->filename_table, sizeof(mrb_sym) * p->filename_table_length); 11691 } 11692 p->filename_table = new_table; 11693 p->filename_table[p->filename_table_length - 1] = sym; 11694 } 11695 11696 MRB_API char const* 11697 mrb_parser_get_filename(struct mrb_parser_state* p, uint16_t idx) { 11698 if (idx >= p->filename_table_length) { return NULL; } 11699 else { 11700 return mrb_sym2name_len(p->mrb, p->filename_table[idx], NULL); 11701 } 11702 } 11703 11704 #ifdef ENABLE_STDIO 11705 MRB_API parser_state* 11706 mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c) 11707 { 11708 parser_state *p; 11709 11710 p = mrb_parser_new(mrb); 11711 if (!p) return NULL; 11712 p->s = p->send = NULL; 11713 p->f = f; 11714 11715 mrb_parser_parse(p, c); 11716 return p; 11717 } 11718 #endif 11719 11720 MRB_API parser_state* 11721 mrb_parse_nstring(mrb_state *mrb, const char *s, int len, mrbc_context *c) 11722 { 11723 parser_state *p; 11724 11725 p = mrb_parser_new(mrb); 11726 if (!p) return NULL; 11727 p->s = s; 11728 p->send = s + len; 11729 11730 mrb_parser_parse(p, c); 11731 return p; 11732 } 11733 11734 MRB_API parser_state* 11735 mrb_parse_string(mrb_state *mrb, const char *s, mrbc_context *c) 11736 { 11737 return mrb_parse_nstring(mrb, s, strlen(s), c); 11738 } 11739 11740 static mrb_value 11741 load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c) 11742 { 11743 struct RClass *target = mrb->object_class; 11744 struct RProc *proc; 11745 mrb_value v; 11746 unsigned int keep = 0; 11747 11748 if (!p) { 11749 return mrb_undef_value(); 11750 } 11751 if (!p->tree || p->nerr) { 11752 if (p->capture_errors) { 11753 char buf[256]; 11754 int n; 11755 11756 n = snprintf(buf, sizeof(buf), "line %d: %s\n", 11757 p->error_buffer[0].lineno, p->error_buffer[0].message); 11758 mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SYNTAX_ERROR, buf, n)); 11759 mrb_parser_free(p); 11760 return mrb_undef_value(); 11761 } 11762 else { 11763 mrb->exc = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, E_SYNTAX_ERROR, "syntax error")); 11764 mrb_parser_free(p); 11765 return mrb_undef_value(); 11766 } 11767 } 11768 proc = mrb_generate_code(mrb, p); 11769 mrb_parser_free(p); 11770 if (proc == NULL) { 11771 mrb->exc = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, E_SCRIPT_ERROR, "codegen error")); 11772 return mrb_undef_value(); 11773 } 11774 if (c) { 11775 if (c->dump_result) mrb_codedump_all(mrb, proc); 11776 if (c->no_exec) return mrb_obj_value(proc); 11777 if (c->target_class) { 11778 target = c->target_class; 11779 } 11780 if (c->keep_lv) { 11781 keep = c->slen + 1; 11782 } 11783 else { 11784 c->keep_lv = TRUE; 11785 } 11786 } 11787 proc->target_class = target; 11788 if (mrb->c->ci) { 11789 mrb->c->ci->target_class = target; 11790 } 11791 v = mrb_toplevel_run_keep(mrb, proc, keep); 11792 if (mrb->exc) return mrb_nil_value(); 11793 return v; 11794 } 11795 11796 #ifdef ENABLE_STDIO 11797 MRB_API mrb_value 11798 mrb_load_file_cxt(mrb_state *mrb, FILE *f, mrbc_context *c) 11799 { 11800 return load_exec(mrb, mrb_parse_file(mrb, f, c), c); 11801 } 11802 11803 MRB_API mrb_value 11804 mrb_load_file(mrb_state *mrb, FILE *f) 11805 { 11806 return mrb_load_file_cxt(mrb, f, NULL); 11807 } 11808 #endif 11809 11810 MRB_API mrb_value 11811 mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *c) 11812 { 11813 return load_exec(mrb, mrb_parse_nstring(mrb, s, len, c), c); 11814 } 11815 11816 MRB_API mrb_value 11817 mrb_load_nstring(mrb_state *mrb, const char *s, int len) 11818 { 11819 return mrb_load_nstring_cxt(mrb, s, len, NULL); 11820 } 11821 11822 MRB_API mrb_value 11823 mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *c) 11824 { 11825 return mrb_load_nstring_cxt(mrb, s, strlen(s), c); 11826 } 11827 11828 MRB_API mrb_value 11829 mrb_load_string(mrb_state *mrb, const char *s) 11830 { 11831 return mrb_load_string_cxt(mrb, s, NULL); 11832 } 11833 11834 #ifdef ENABLE_STDIO 11835 11836 static void 11837 dump_prefix(node *tree, int offset) 11838 { 11839 printf("%05d ", tree->lineno); 11840 while (offset--) { 11841 putc(' ', stdout); 11842 putc(' ', stdout); 11843 } 11844 } 11845 11846 static void 11847 dump_recur(mrb_state *mrb, node *tree, int offset) 11848 { 11849 while (tree) { 11850 mrb_parser_dump(mrb, tree->car, offset); 11851 tree = tree->cdr; 11852 } 11853 } 11854 11855 #endif 11856 11857 void 11858 mrb_parser_dump(mrb_state *mrb, node *tree, int offset) 11859 { 11860 #ifdef ENABLE_STDIO 11861 int nodetype; 11862 11863 if (!tree) return; 11864 again: 11865 dump_prefix(tree, offset); 11866 nodetype = (int)(intptr_t)tree->car; 11867 tree = tree->cdr; 11868 switch (nodetype) { 11869 case NODE_BEGIN: 11870 printf("NODE_BEGIN:\n"); 11871 dump_recur(mrb, tree, offset+1); 11872 break; 11873 11874 case NODE_RESCUE: 11875 printf("NODE_RESCUE:\n"); 11876 if (tree->car) { 11877 dump_prefix(tree, offset+1); 11878 printf("body:\n"); 11879 mrb_parser_dump(mrb, tree->car, offset+2); 11880 } 11881 tree = tree->cdr; 11882 if (tree->car) { 11883 node *n2 = tree->car; 11884 11885 dump_prefix(n2, offset+1); 11886 printf("rescue:\n"); 11887 while (n2) { 11888 node *n3 = n2->car; 11889 if (n3->car) { 11890 dump_prefix(n2, offset+2); 11891 printf("handle classes:\n"); 11892 dump_recur(mrb, n3->car, offset+3); 11893 } 11894 if (n3->cdr->car) { 11895 dump_prefix(n3, offset+2); 11896 printf("exc_var:\n"); 11897 mrb_parser_dump(mrb, n3->cdr->car, offset+3); 11898 } 11899 if (n3->cdr->cdr->car) { 11900 dump_prefix(n3, offset+2); 11901 printf("rescue body:\n"); 11902 mrb_parser_dump(mrb, n3->cdr->cdr->car, offset+3); 11903 } 11904 n2 = n2->cdr; 11905 } 11906 } 11907 tree = tree->cdr; 11908 if (tree->car) { 11909 dump_prefix(tree, offset+1); 11910 printf("else:\n"); 11911 mrb_parser_dump(mrb, tree->car, offset+2); 11912 } 11913 break; 11914 11915 case NODE_ENSURE: 11916 printf("NODE_ENSURE:\n"); 11917 dump_prefix(tree, offset+1); 11918 printf("body:\n"); 11919 mrb_parser_dump(mrb, tree->car, offset+2); 11920 dump_prefix(tree, offset+1); 11921 printf("ensure:\n"); 11922 mrb_parser_dump(mrb, tree->cdr->cdr, offset+2); 11923 break; 11924 11925 case NODE_LAMBDA: 11926 printf("NODE_BLOCK:\n"); 11927 goto block; 11928 11929 case NODE_BLOCK: 11930 block: 11931 printf("NODE_BLOCK:\n"); 11932 tree = tree->cdr; 11933 if (tree->car) { 11934 node *n = tree->car; 11935 11936 if (n->car) { 11937 dump_prefix(n, offset+1); 11938 printf("mandatory args:\n"); 11939 dump_recur(mrb, n->car, offset+2); 11940 } 11941 n = n->cdr; 11942 if (n->car) { 11943 dump_prefix(n, offset+1); 11944 printf("optional args:\n"); 11945 { 11946 node *n2 = n->car; 11947 11948 while (n2) { 11949 dump_prefix(n2, offset+2); 11950 printf("%s=", mrb_sym2name(mrb, sym(n2->car->car))); 11951 mrb_parser_dump(mrb, n2->car->cdr, 0); 11952 n2 = n2->cdr; 11953 } 11954 } 11955 } 11956 n = n->cdr; 11957 if (n->car) { 11958 dump_prefix(n, offset+1); 11959 printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car))); 11960 } 11961 n = n->cdr; 11962 if (n->car) { 11963 dump_prefix(n, offset+1); 11964 printf("post mandatory args:\n"); 11965 dump_recur(mrb, n->car, offset+2); 11966 } 11967 n = n->cdr; 11968 if (n) { 11969 dump_prefix(n, offset+1); 11970 printf("blk=&%s\n", mrb_sym2name(mrb, sym(n))); 11971 } 11972 } 11973 dump_prefix(tree, offset+1); 11974 printf("body:\n"); 11975 mrb_parser_dump(mrb, tree->cdr->car, offset+2); 11976 break; 11977 11978 case NODE_IF: 11979 printf("NODE_IF:\n"); 11980 dump_prefix(tree, offset+1); 11981 printf("cond:\n"); 11982 mrb_parser_dump(mrb, tree->car, offset+2); 11983 dump_prefix(tree, offset+1); 11984 printf("then:\n"); 11985 mrb_parser_dump(mrb, tree->cdr->car, offset+2); 11986 if (tree->cdr->cdr->car) { 11987 dump_prefix(tree, offset+1); 11988 printf("else:\n"); 11989 mrb_parser_dump(mrb, tree->cdr->cdr->car, offset+2); 11990 } 11991 break; 11992 11993 case NODE_AND: 11994 printf("NODE_AND:\n"); 11995 mrb_parser_dump(mrb, tree->car, offset+1); 11996 mrb_parser_dump(mrb, tree->cdr, offset+1); 11997 break; 11998 11999 case NODE_OR: 12000 printf("NODE_OR:\n"); 12001 mrb_parser_dump(mrb, tree->car, offset+1); 12002 mrb_parser_dump(mrb, tree->cdr, offset+1); 12003 break; 12004 12005 case NODE_CASE: 12006 printf("NODE_CASE:\n"); 12007 if (tree->car) { 12008 mrb_parser_dump(mrb, tree->car, offset+1); 12009 } 12010 tree = tree->cdr; 12011 while (tree) { 12012 dump_prefix(tree, offset+1); 12013 printf("case:\n"); 12014 dump_recur(mrb, tree->car->car, offset+2); 12015 dump_prefix(tree, offset+1); 12016 printf("body:\n"); 12017 mrb_parser_dump(mrb, tree->car->cdr, offset+2); 12018 tree = tree->cdr; 12019 } 12020 break; 12021 12022 case NODE_WHILE: 12023 printf("NODE_WHILE:\n"); 12024 dump_prefix(tree, offset+1); 12025 printf("cond:\n"); 12026 mrb_parser_dump(mrb, tree->car, offset+2); 12027 dump_prefix(tree, offset+1); 12028 printf("body:\n"); 12029 mrb_parser_dump(mrb, tree->cdr, offset+2); 12030 break; 12031 12032 case NODE_UNTIL: 12033 printf("NODE_UNTIL:\n"); 12034 dump_prefix(tree, offset+1); 12035 printf("cond:\n"); 12036 mrb_parser_dump(mrb, tree->car, offset+2); 12037 dump_prefix(tree, offset+1); 12038 printf("body:\n"); 12039 mrb_parser_dump(mrb, tree->cdr, offset+2); 12040 break; 12041 12042 case NODE_FOR: 12043 printf("NODE_FOR:\n"); 12044 dump_prefix(tree, offset+1); 12045 printf("var:\n"); 12046 { 12047 node *n2 = tree->car; 12048 12049 if (n2->car) { 12050 dump_prefix(n2, offset+2); 12051 printf("pre:\n"); 12052 dump_recur(mrb, n2->car, offset+3); 12053 } 12054 n2 = n2->cdr; 12055 if (n2) { 12056 if (n2->car) { 12057 dump_prefix(n2, offset+2); 12058 printf("rest:\n"); 12059 mrb_parser_dump(mrb, n2->car, offset+3); 12060 } 12061 n2 = n2->cdr; 12062 if (n2) { 12063 if (n2->car) { 12064 dump_prefix(n2, offset+2); 12065 printf("post:\n"); 12066 dump_recur(mrb, n2->car, offset+3); 12067 } 12068 } 12069 } 12070 } 12071 tree = tree->cdr; 12072 dump_prefix(tree, offset+1); 12073 printf("in:\n"); 12074 mrb_parser_dump(mrb, tree->car, offset+2); 12075 tree = tree->cdr; 12076 dump_prefix(tree, offset+1); 12077 printf("do:\n"); 12078 mrb_parser_dump(mrb, tree->car, offset+2); 12079 break; 12080 12081 case NODE_SCOPE: 12082 printf("NODE_SCOPE:\n"); 12083 { 12084 node *n2 = tree->car; 12085 mrb_bool first_lval = TRUE; 12086 12087 if (n2 && (n2->car || n2->cdr)) { 12088 dump_prefix(n2, offset+1); 12089 printf("local variables:\n"); 12090 dump_prefix(n2, offset+2); 12091 while (n2) { 12092 if (n2->car) { 12093 if (!first_lval) printf(", "); 12094 printf("%s", mrb_sym2name(mrb, sym(n2->car))); 12095 first_lval = FALSE; 12096 } 12097 n2 = n2->cdr; 12098 } 12099 printf("\n"); 12100 } 12101 } 12102 tree = tree->cdr; 12103 offset++; 12104 goto again; 12105 12106 case NODE_FCALL: 12107 case NODE_CALL: 12108 printf("NODE_CALL:\n"); 12109 mrb_parser_dump(mrb, tree->car, offset+1); 12110 dump_prefix(tree, offset+1); 12111 printf("method='%s' (%d)\n", 12112 mrb_sym2name(mrb, sym(tree->cdr->car)), 12113 (int)(intptr_t)tree->cdr->car); 12114 tree = tree->cdr->cdr->car; 12115 if (tree) { 12116 dump_prefix(tree, offset+1); 12117 printf("args:\n"); 12118 dump_recur(mrb, tree->car, offset+2); 12119 if (tree->cdr) { 12120 dump_prefix(tree, offset+1); 12121 printf("block:\n"); 12122 mrb_parser_dump(mrb, tree->cdr, offset+2); 12123 } 12124 } 12125 break; 12126 12127 case NODE_DOT2: 12128 printf("NODE_DOT2:\n"); 12129 mrb_parser_dump(mrb, tree->car, offset+1); 12130 mrb_parser_dump(mrb, tree->cdr, offset+1); 12131 break; 12132 12133 case NODE_DOT3: 12134 printf("NODE_DOT3:\n"); 12135 mrb_parser_dump(mrb, tree->car, offset+1); 12136 mrb_parser_dump(mrb, tree->cdr, offset+1); 12137 break; 12138 12139 case NODE_COLON2: 12140 printf("NODE_COLON2:\n"); 12141 mrb_parser_dump(mrb, tree->car, offset+1); 12142 dump_prefix(tree, offset+1); 12143 printf("::%s\n", mrb_sym2name(mrb, sym(tree->cdr))); 12144 break; 12145 12146 case NODE_COLON3: 12147 printf("NODE_COLON3:\n"); 12148 dump_prefix(tree, offset+1); 12149 printf("::%s\n", mrb_sym2name(mrb, sym(tree))); 12150 break; 12151 12152 case NODE_ARRAY: 12153 printf("NODE_ARRAY:\n"); 12154 dump_recur(mrb, tree, offset+1); 12155 break; 12156 12157 case NODE_HASH: 12158 printf("NODE_HASH:\n"); 12159 while (tree) { 12160 dump_prefix(tree, offset+1); 12161 printf("key:\n"); 12162 mrb_parser_dump(mrb, tree->car->car, offset+2); 12163 dump_prefix(tree, offset+1); 12164 printf("value:\n"); 12165 mrb_parser_dump(mrb, tree->car->cdr, offset+2); 12166 tree = tree->cdr; 12167 } 12168 break; 12169 12170 case NODE_SPLAT: 12171 printf("NODE_SPLAT:\n"); 12172 mrb_parser_dump(mrb, tree, offset+1); 12173 break; 12174 12175 case NODE_ASGN: 12176 printf("NODE_ASGN:\n"); 12177 dump_prefix(tree, offset+1); 12178 printf("lhs:\n"); 12179 mrb_parser_dump(mrb, tree->car, offset+2); 12180 dump_prefix(tree, offset+1); 12181 printf("rhs:\n"); 12182 mrb_parser_dump(mrb, tree->cdr, offset+2); 12183 break; 12184 12185 case NODE_MASGN: 12186 printf("NODE_MASGN:\n"); 12187 dump_prefix(tree, offset+1); 12188 printf("mlhs:\n"); 12189 { 12190 node *n2 = tree->car; 12191 12192 if (n2->car) { 12193 dump_prefix(tree, offset+2); 12194 printf("pre:\n"); 12195 dump_recur(mrb, n2->car, offset+3); 12196 } 12197 n2 = n2->cdr; 12198 if (n2) { 12199 if (n2->car) { 12200 dump_prefix(n2, offset+2); 12201 printf("rest:\n"); 12202 if (n2->car == (node*)-1) { 12203 dump_prefix(n2, offset+2); 12204 printf("(empty)\n"); 12205 } 12206 else { 12207 mrb_parser_dump(mrb, n2->car, offset+3); 12208 } 12209 } 12210 n2 = n2->cdr; 12211 if (n2) { 12212 if (n2->car) { 12213 dump_prefix(n2, offset+2); 12214 printf("post:\n"); 12215 dump_recur(mrb, n2->car, offset+3); 12216 } 12217 } 12218 } 12219 } 12220 dump_prefix(tree, offset+1); 12221 printf("rhs:\n"); 12222 mrb_parser_dump(mrb, tree->cdr, offset+2); 12223 break; 12224 12225 case NODE_OP_ASGN: 12226 printf("NODE_OP_ASGN:\n"); 12227 dump_prefix(tree, offset+1); 12228 printf("lhs:\n"); 12229 mrb_parser_dump(mrb, tree->car, offset+2); 12230 tree = tree->cdr; 12231 dump_prefix(tree, offset+1); 12232 printf("op='%s' (%d)\n", mrb_sym2name(mrb, sym(tree->car)), (int)(intptr_t)tree->car); 12233 tree = tree->cdr; 12234 mrb_parser_dump(mrb, tree->car, offset+1); 12235 break; 12236 12237 case NODE_SUPER: 12238 printf("NODE_SUPER:\n"); 12239 if (tree) { 12240 dump_prefix(tree, offset+1); 12241 printf("args:\n"); 12242 dump_recur(mrb, tree->car, offset+2); 12243 if (tree->cdr) { 12244 dump_prefix(tree, offset+1); 12245 printf("block:\n"); 12246 mrb_parser_dump(mrb, tree->cdr, offset+2); 12247 } 12248 } 12249 break; 12250 12251 case NODE_ZSUPER: 12252 printf("NODE_ZSUPER\n"); 12253 break; 12254 12255 case NODE_RETURN: 12256 printf("NODE_RETURN:\n"); 12257 mrb_parser_dump(mrb, tree, offset+1); 12258 break; 12259 12260 case NODE_YIELD: 12261 printf("NODE_YIELD:\n"); 12262 dump_recur(mrb, tree, offset+1); 12263 break; 12264 12265 case NODE_BREAK: 12266 printf("NODE_BREAK:\n"); 12267 mrb_parser_dump(mrb, tree, offset+1); 12268 break; 12269 12270 case NODE_NEXT: 12271 printf("NODE_NEXT:\n"); 12272 mrb_parser_dump(mrb, tree, offset+1); 12273 break; 12274 12275 case NODE_REDO: 12276 printf("NODE_REDO\n"); 12277 break; 12278 12279 case NODE_RETRY: 12280 printf("NODE_RETRY\n"); 12281 break; 12282 12283 case NODE_LVAR: 12284 printf("NODE_LVAR %s\n", mrb_sym2name(mrb, sym(tree))); 12285 break; 12286 12287 case NODE_GVAR: 12288 printf("NODE_GVAR %s\n", mrb_sym2name(mrb, sym(tree))); 12289 break; 12290 12291 case NODE_IVAR: 12292 printf("NODE_IVAR %s\n", mrb_sym2name(mrb, sym(tree))); 12293 break; 12294 12295 case NODE_CVAR: 12296 printf("NODE_CVAR %s\n", mrb_sym2name(mrb, sym(tree))); 12297 break; 12298 12299 case NODE_CONST: 12300 printf("NODE_CONST %s\n", mrb_sym2name(mrb, sym(tree))); 12301 break; 12302 12303 case NODE_MATCH: 12304 printf("NODE_MATCH:\n"); 12305 dump_prefix(tree, offset + 1); 12306 printf("lhs:\n"); 12307 mrb_parser_dump(mrb, tree->car, offset + 2); 12308 dump_prefix(tree, offset + 1); 12309 printf("rhs:\n"); 12310 mrb_parser_dump(mrb, tree->cdr, offset + 2); 12311 break; 12312 12313 case NODE_BACK_REF: 12314 printf("NODE_BACK_REF: $%c\n", (int)(intptr_t)tree); 12315 break; 12316 12317 case NODE_NTH_REF: 12318 printf("NODE_NTH_REF: $%d\n", (int)(intptr_t)tree); 12319 break; 12320 12321 case NODE_ARG: 12322 printf("NODE_ARG %s\n", mrb_sym2name(mrb, sym(tree))); 12323 break; 12324 12325 case NODE_BLOCK_ARG: 12326 printf("NODE_BLOCK_ARG:\n"); 12327 mrb_parser_dump(mrb, tree, offset+1); 12328 break; 12329 12330 case NODE_INT: 12331 printf("NODE_INT %s base %d\n", (char*)tree->car, (int)(intptr_t)tree->cdr->car); 12332 break; 12333 12334 case NODE_FLOAT: 12335 printf("NODE_FLOAT %s\n", (char*)tree); 12336 break; 12337 12338 case NODE_NEGATE: 12339 printf("NODE_NEGATE\n"); 12340 mrb_parser_dump(mrb, tree, offset+1); 12341 break; 12342 12343 case NODE_STR: 12344 printf("NODE_STR \"%s\" len %d\n", (char*)tree->car, (int)(intptr_t)tree->cdr); 12345 break; 12346 12347 case NODE_DSTR: 12348 printf("NODE_DSTR\n"); 12349 dump_recur(mrb, tree, offset+1); 12350 break; 12351 12352 case NODE_XSTR: 12353 printf("NODE_XSTR \"%s\" len %d\n", (char*)tree->car, (int)(intptr_t)tree->cdr); 12354 break; 12355 12356 case NODE_DXSTR: 12357 printf("NODE_DXSTR\n"); 12358 dump_recur(mrb, tree, offset+1); 12359 break; 12360 12361 case NODE_REGX: 12362 printf("NODE_REGX /%s/%s\n", (char*)tree->car, (char*)tree->cdr); 12363 break; 12364 12365 case NODE_DREGX: 12366 printf("NODE_DREGX\n"); 12367 dump_recur(mrb, tree->car, offset+1); 12368 dump_prefix(tree, offset); 12369 printf("tail: %s\n", (char*)tree->cdr->cdr->car); 12370 dump_prefix(tree, offset); 12371 printf("opt: %s\n", (char*)tree->cdr->cdr->cdr); 12372 break; 12373 12374 case NODE_SYM: 12375 printf("NODE_SYM :%s\n", mrb_sym2name(mrb, sym(tree))); 12376 break; 12377 12378 case NODE_SELF: 12379 printf("NODE_SELF\n"); 12380 break; 12381 12382 case NODE_NIL: 12383 printf("NODE_NIL\n"); 12384 break; 12385 12386 case NODE_TRUE: 12387 printf("NODE_TRUE\n"); 12388 break; 12389 12390 case NODE_FALSE: 12391 printf("NODE_FALSE\n"); 12392 break; 12393 12394 case NODE_ALIAS: 12395 printf("NODE_ALIAS %s %s:\n", 12396 mrb_sym2name(mrb, sym(tree->car)), 12397 mrb_sym2name(mrb, sym(tree->cdr))); 12398 break; 12399 12400 case NODE_UNDEF: 12401 printf("NODE_UNDEF"); 12402 { 12403 node *t = tree; 12404 while (t) { 12405 printf(" %s", mrb_sym2name(mrb, sym(t->car))); 12406 t = t->cdr; 12407 } 12408 } 12409 printf(":\n"); 12410 break; 12411 12412 case NODE_CLASS: 12413 printf("NODE_CLASS:\n"); 12414 if (tree->car->car == (node*)0) { 12415 dump_prefix(tree, offset+1); 12416 printf(":%s\n", mrb_sym2name(mrb, sym(tree->car->cdr))); 12417 } 12418 else if (tree->car->car == (node*)1) { 12419 dump_prefix(tree, offset+1); 12420 printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr))); 12421 } 12422 else { 12423 mrb_parser_dump(mrb, tree->car->car, offset+1); 12424 dump_prefix(tree, offset+1); 12425 printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr))); 12426 } 12427 if (tree->cdr->car) { 12428 dump_prefix(tree, offset+1); 12429 printf("super:\n"); 12430 mrb_parser_dump(mrb, tree->cdr->car, offset+2); 12431 } 12432 dump_prefix(tree, offset+1); 12433 printf("body:\n"); 12434 mrb_parser_dump(mrb, tree->cdr->cdr->car->cdr, offset+2); 12435 break; 12436 12437 case NODE_MODULE: 12438 printf("NODE_MODULE:\n"); 12439 if (tree->car->car == (node*)0) { 12440 dump_prefix(tree, offset+1); 12441 printf(":%s\n", mrb_sym2name(mrb, sym(tree->car->cdr))); 12442 } 12443 else if (tree->car->car == (node*)1) { 12444 dump_prefix(tree, offset+1); 12445 printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr))); 12446 } 12447 else { 12448 mrb_parser_dump(mrb, tree->car->car, offset+1); 12449 dump_prefix(tree, offset+1); 12450 printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr))); 12451 } 12452 dump_prefix(tree, offset+1); 12453 printf("body:\n"); 12454 mrb_parser_dump(mrb, tree->cdr->car->cdr, offset+2); 12455 break; 12456 12457 case NODE_SCLASS: 12458 printf("NODE_SCLASS:\n"); 12459 mrb_parser_dump(mrb, tree->car, offset+1); 12460 dump_prefix(tree, offset+1); 12461 printf("body:\n"); 12462 mrb_parser_dump(mrb, tree->cdr->car->cdr, offset+2); 12463 break; 12464 12465 case NODE_DEF: 12466 printf("NODE_DEF:\n"); 12467 dump_prefix(tree, offset+1); 12468 printf("%s\n", mrb_sym2name(mrb, sym(tree->car))); 12469 tree = tree->cdr; 12470 { 12471 node *n2 = tree->car; 12472 mrb_bool first_lval = TRUE; 12473 12474 if (n2 && (n2->car || n2->cdr)) { 12475 dump_prefix(n2, offset+1); 12476 printf("local variables:\n"); 12477 dump_prefix(n2, offset+2); 12478 while (n2) { 12479 if (n2->car) { 12480 if (!first_lval) printf(", "); 12481 printf("%s", mrb_sym2name(mrb, sym(n2->car))); 12482 first_lval = FALSE; 12483 } 12484 n2 = n2->cdr; 12485 } 12486 printf("\n"); 12487 } 12488 } 12489 tree = tree->cdr; 12490 if (tree->car) { 12491 node *n = tree->car; 12492 12493 if (n->car) { 12494 dump_prefix(n, offset+1); 12495 printf("mandatory args:\n"); 12496 dump_recur(mrb, n->car, offset+2); 12497 } 12498 n = n->cdr; 12499 if (n->car) { 12500 dump_prefix(n, offset+1); 12501 printf("optional args:\n"); 12502 { 12503 node *n2 = n->car; 12504 12505 while (n2) { 12506 dump_prefix(n2, offset+2); 12507 printf("%s=", mrb_sym2name(mrb, sym(n2->car->car))); 12508 mrb_parser_dump(mrb, n2->car->cdr, 0); 12509 n2 = n2->cdr; 12510 } 12511 } 12512 } 12513 n = n->cdr; 12514 if (n->car) { 12515 dump_prefix(n, offset+1); 12516 printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car))); 12517 } 12518 n = n->cdr; 12519 if (n->car) { 12520 dump_prefix(n, offset+1); 12521 printf("post mandatory args:\n"); 12522 dump_recur(mrb, n->car, offset+2); 12523 } 12524 n = n->cdr; 12525 if (n) { 12526 dump_prefix(n, offset+1); 12527 printf("blk=&%s\n", mrb_sym2name(mrb, sym(n))); 12528 } 12529 } 12530 mrb_parser_dump(mrb, tree->cdr->car, offset+1); 12531 break; 12532 12533 case NODE_SDEF: 12534 printf("NODE_SDEF:\n"); 12535 mrb_parser_dump(mrb, tree->car, offset+1); 12536 tree = tree->cdr; 12537 dump_prefix(tree, offset+1); 12538 printf(":%s\n", mrb_sym2name(mrb, sym(tree->car))); 12539 tree = tree->cdr->cdr; 12540 if (tree->car) { 12541 node *n = tree->car; 12542 12543 if (n->car) { 12544 dump_prefix(n, offset+1); 12545 printf("mandatory args:\n"); 12546 dump_recur(mrb, n->car, offset+2); 12547 } 12548 n = n->cdr; 12549 if (n->car) { 12550 dump_prefix(n, offset+1); 12551 printf("optional args:\n"); 12552 { 12553 node *n2 = n->car; 12554 12555 while (n2) { 12556 dump_prefix(n2, offset+2); 12557 printf("%s=", mrb_sym2name(mrb, sym(n2->car->car))); 12558 mrb_parser_dump(mrb, n2->car->cdr, 0); 12559 n2 = n2->cdr; 12560 } 12561 } 12562 } 12563 n = n->cdr; 12564 if (n->car) { 12565 dump_prefix(n, offset+1); 12566 printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car))); 12567 } 12568 n = n->cdr; 12569 if (n->car) { 12570 dump_prefix(n, offset+1); 12571 printf("post mandatory args:\n"); 12572 dump_recur(mrb, n->car, offset+2); 12573 } 12574 n = n->cdr; 12575 if (n) { 12576 dump_prefix(n, offset+1); 12577 printf("blk=&%s\n", mrb_sym2name(mrb, sym(n))); 12578 } 12579 } 12580 tree = tree->cdr; 12581 mrb_parser_dump(mrb, tree->car, offset+1); 12582 break; 12583 12584 case NODE_POSTEXE: 12585 printf("NODE_POSTEXE:\n"); 12586 mrb_parser_dump(mrb, tree, offset+1); 12587 break; 12588 12589 case NODE_HEREDOC: 12590 printf("NODE_HEREDOC:\n"); 12591 mrb_parser_dump(mrb, ((parser_heredoc_info*)tree)->doc, offset+1); 12592 break; 12593 12594 default: 12595 printf("node type: %d (0x%x)\n", nodetype, (unsigned)nodetype); 12596 break; 12597 } 12598 #endif 12599 } 12600 12601
Generated on Tue Jul 12 2022 18:00:35 by 1.7.2