Groonga 3.0.9 Source Code Document
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
parse.c
Go to the documentation of this file.
1 /* A Bison parser, made by GNU Bison 2.7.12-4996. */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5  Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6 
7  This program is free software: you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation, either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 
20 /* As a special exception, you may create a larger work that contains
21  part or all of the Bison parser skeleton and distribute that work
22  under terms of your choice, so long as that work isn't itself a
23  parser generator using the skeleton or a modified version thereof
24  as a parser skeleton. Alternatively, if you modify or redistribute
25  the parser skeleton itself, you may (at your option) remove this
26  special exception, which will cause the skeleton and the resulting
27  Bison output files to be licensed under the GNU General Public
28  License without this special exception.
29 
30  This special exception was added by the Free Software Foundation in
31  version 2.2 of Bison. */
32 
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34  simplifying the original so-called "semantic" parser. */
35 
36 /* All symbols defined below should begin with yy or YY, to avoid
37  infringing on user name space. This should be done even for local
38  variables, as they might otherwise be expanded by user macros.
39  There are some unavoidable exceptions within include files to
40  define necessary library symbols; they are noted "INFRINGES ON
41  USER NAME SPACE" below. */
42 
43 /* Identify Bison output. */
44 #define YYBISON 1
45 
46 /* Bison version. */
47 #define YYBISON_VERSION "2.7.12-4996"
48 
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51 
52 /* Pure parsers. */
53 #define YYPURE 1
54 
55 /* Push parsers. */
56 #define YYPUSH 0
57 
58 /* Pull parsers. */
59 #define YYPULL 1
60 
61 
62 
63 
64 /* Copy the first part of user declarations. */
65 /* Line 371 of yacc.c */
66 #line 7 "src/parse.y"
67 
68 #undef PARSER_DEBUG
69 
70 #define YYDEBUG 1
71 #define YYERROR_VERBOSE 1
72 /*
73  * Force yacc to use our memory management. This is a little evil because
74  * the macros assume that "parser_state *p" is in scope
75  */
76 #define YYMALLOC(n) mrb_malloc(p->mrb, (n))
77 #define YYFREE(o) mrb_free(p->mrb, (o))
78 #define YYSTACK_USE_ALLOCA 0
79 
80 #include <ctype.h>
81 #include <errno.h>
82 #include <stdlib.h>
83 #include <string.h>
84 #include "mruby.h"
85 #include "mruby/compile.h"
86 #include "mruby/proc.h"
87 #include "node.h"
88 
89 #define YYLEX_PARAM p
90 
94 
95 static int yylex(void *lval, parser_state *p);
96 static void yyerror(parser_state *p, const char *s);
97 static void yywarn(parser_state *p, const char *s);
98 static void yywarning(parser_state *p, const char *s);
99 static void backref_error(parser_state *p, node *n);
100 
101 #ifndef isascii
102 #define isascii(c) (((c) & ~0x7f) == 0)
103 #endif
104 
105 #define identchar(c) (isalnum(c) || (c) == '_' || !isascii(c))
106 
107 typedef unsigned int stack_type;
108 
109 #define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
110 #define BITSTACK_POP(stack) ((stack) = (stack) >> 1)
111 #define BITSTACK_LEXPOP(stack) ((stack) = ((stack) >> 1) | ((stack) & 1))
112 #define BITSTACK_SET_P(stack) ((stack)&1)
113 
114 #define COND_PUSH(n) BITSTACK_PUSH(p->cond_stack, (n))
115 #define COND_POP() BITSTACK_POP(p->cond_stack)
116 #define COND_LEXPOP() BITSTACK_LEXPOP(p->cond_stack)
117 #define COND_P() BITSTACK_SET_P(p->cond_stack)
118 
119 #define CMDARG_PUSH(n) BITSTACK_PUSH(p->cmdarg_stack, (n))
120 #define CMDARG_POP() BITSTACK_POP(p->cmdarg_stack)
121 #define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack)
122 #define CMDARG_P() BITSTACK_SET_P(p->cmdarg_stack)
123 
124 #define sym(x) ((mrb_sym)(intptr_t)(x))
125 #define nsym(x) ((node*)(intptr_t)(x))
126 
127 static inline mrb_sym
128 intern_gen(parser_state *p, const char *s)
129 {
130  return mrb_intern(p->mrb, s);
131 }
132 #define intern(s) intern_gen(p,(s))
133 
134 static inline mrb_sym
135 intern_gen2(parser_state *p, const char *s, size_t len)
136 {
137  return mrb_intern2(p->mrb, s, len);
138 }
139 #define intern2(s,len) intern_gen2(p,(s),(len))
140 
141 static inline mrb_sym
142 intern_gen_c(parser_state *p, const char c)
143 {
144  return mrb_intern2(p->mrb, &c, 1);
145 }
146 #define intern_c(c) intern_gen_c(p,(c))
147 
148 static void
149 cons_free_gen(parser_state *p, node *cons)
150 {
151  cons->cdr = p->cells;
152  p->cells = cons;
153 }
154 #define cons_free(c) cons_free_gen(p, (c))
155 
156 static void*
157 parser_palloc(parser_state *p, size_t size)
158 {
159  void *m = mrb_pool_alloc(p->pool, size);
160 
161  if (!m) {
162  longjmp(p->jmp, 1);
163  }
164  return m;
165 }
166 
167 static node*
168 cons_gen(parser_state *p, node *car, node *cdr)
169 {
170  node *c;
171 
172  if (p->cells) {
173  c = p->cells;
174  p->cells = p->cells->cdr;
175  }
176  else {
177  c = (node *)parser_palloc(p, sizeof(mrb_ast_node));
178  }
179 
180  c->car = car;
181  c->cdr = cdr;
182  c->lineno = p->lineno;
184  return c;
185 }
186 #define cons(a,b) cons_gen(p,(a),(b))
187 
188 static node*
189 list1_gen(parser_state *p, node *a)
190 {
191  return cons(a, 0);
192 }
193 #define list1(a) list1_gen(p, (a))
194 
195 static node*
196 list2_gen(parser_state *p, node *a, node *b)
197 {
198  return cons(a, cons(b,0));
199 }
200 #define list2(a,b) list2_gen(p, (a),(b))
201 
202 static node*
203 list3_gen(parser_state *p, node *a, node *b, node *c)
204 {
205  return cons(a, cons(b, cons(c,0)));
206 }
207 #define list3(a,b,c) list3_gen(p, (a),(b),(c))
208 
209 static node*
210 list4_gen(parser_state *p, node *a, node *b, node *c, node *d)
211 {
212  return cons(a, cons(b, cons(c, cons(d, 0))));
213 }
214 #define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d))
215 
216 static node*
217 list5_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e)
218 {
219  return cons(a, cons(b, cons(c, cons(d, cons(e, 0)))));
220 }
221 #define list5(a,b,c,d,e) list5_gen(p, (a),(b),(c),(d),(e))
222 
223 static node*
224 list6_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e, node *f)
225 {
226  return cons(a, cons(b, cons(c, cons(d, cons(e, cons(f, 0))))));
227 }
228 #define list6(a,b,c,d,e,f) list6_gen(p, (a),(b),(c),(d),(e),(f))
229 
230 static node*
231 append_gen(parser_state *p, node *a, node *b)
232 {
233  node *c = a;
234 
235  if (!a) return b;
236  while (c->cdr) {
237  c = c->cdr;
238  }
239  if (b) {
240  c->cdr = b;
241  }
242  return a;
243 }
244 #define append(a,b) append_gen(p,(a),(b))
245 #define push(a,b) append_gen(p,(a),list1(b))
246 
247 static char*
248 parser_strndup(parser_state *p, const char *s, size_t len)
249 {
250  char *b = (char *)parser_palloc(p, len+1);
251 
252  memcpy(b, s, len);
253  b[len] = '\0';
254  return b;
255 }
256 #define strndup(s,len) parser_strndup(p, s, len)
257 
258 static char*
259 parser_strdup(parser_state *p, const char *s)
260 {
261  return parser_strndup(p, s, strlen(s));
262 }
263 #undef strdup
264 #define strdup(s) parser_strdup(p, s)
265 
266 // xxx -----------------------------
267 
268 static node*
269 local_switch(parser_state *p)
270 {
271  node *prev = p->locals;
272 
273  p->locals = cons(0, 0);
274  return prev;
275 }
276 
277 static void
278 local_resume(parser_state *p, node *prev)
279 {
280  p->locals = prev;
281 }
282 
283 static void
284 local_nest(parser_state *p)
285 {
286  p->locals = cons(0, p->locals);
287 }
288 
289 static void
290 local_unnest(parser_state *p)
291 {
292  p->locals = p->locals->cdr;
293 }
294 
295 static int
296 local_var_p(parser_state *p, mrb_sym sym)
297 {
298  node *l = p->locals;
299 
300  while (l) {
301  node *n = l->car;
302  while (n) {
303  if (sym(n->car) == sym) return 1;
304  n = n->cdr;
305  }
306  l = l->cdr;
307  }
308  return 0;
309 }
310 
311 static void
312 local_add_f(parser_state *p, mrb_sym sym)
313 {
314  p->locals->car = push(p->locals->car, nsym(sym));
315 }
316 
317 static void
318 local_add(parser_state *p, mrb_sym sym)
319 {
320  if (!local_var_p(p, sym)) {
321  local_add_f(p, sym);
322  }
323 }
324 
325 // (:scope (vars..) (prog...))
326 static node*
327 new_scope(parser_state *p, node *body)
328 {
329  return cons((node*)NODE_SCOPE, cons(p->locals->car, body));
330 }
331 
332 // (:begin prog...)
333 static node*
334 new_begin(parser_state *p, node *body)
335 {
336  if (body)
337  return list2((node*)NODE_BEGIN, body);
338  return cons((node*)NODE_BEGIN, 0);
339 }
340 
341 #define newline_node(n) (n)
342 
343 // (:rescue body rescue else)
344 static node*
345 new_rescue(parser_state *p, node *body, node *resq, node *els)
346 {
347  return list4((node*)NODE_RESCUE, body, resq, els);
348 }
349 
350 // (:ensure body ensure)
351 static node*
352 new_ensure(parser_state *p, node *a, node *b)
353 {
354  return cons((node*)NODE_ENSURE, cons(a, cons(0, b)));
355 }
356 
357 // (:nil)
358 static node*
359 new_nil(parser_state *p)
360 {
361  return list1((node*)NODE_NIL);
362 }
363 
364 // (:true)
365 static node*
366 new_true(parser_state *p)
367 {
368  return list1((node*)NODE_TRUE);
369 }
370 
371 // (:false)
372 static node*
373 new_false(parser_state *p)
374 {
375  return list1((node*)NODE_FALSE);
376 }
377 
378 // (:alias new old)
379 static node*
380 new_alias(parser_state *p, mrb_sym a, mrb_sym b)
381 {
382  return cons((node*)NODE_ALIAS, cons(nsym(a), nsym(b)));
383 }
384 
385 // (:if cond then else)
386 static node*
387 new_if(parser_state *p, node *a, node *b, node *c)
388 {
389  return list4((node*)NODE_IF, a, b, c);
390 }
391 
392 // (:unless cond then else)
393 static node*
394 new_unless(parser_state *p, node *a, node *b, node *c)
395 {
396  return list4((node*)NODE_IF, a, c, b);
397 }
398 
399 // (:while cond body)
400 static node*
401 new_while(parser_state *p, node *a, node *b)
402 {
403  return cons((node*)NODE_WHILE, cons(a, b));
404 }
405 
406 // (:until cond body)
407 static node*
408 new_until(parser_state *p, node *a, node *b)
409 {
410  return cons((node*)NODE_UNTIL, cons(a, b));
411 }
412 
413 // (:for var obj body)
414 static node*
415 new_for(parser_state *p, node *v, node *o, node *b)
416 {
417  return list4((node*)NODE_FOR, v, o, b);
418 }
419 
420 // (:case a ((when ...) body) ((when...) body))
421 static node*
422 new_case(parser_state *p, node *a, node *b)
423 {
424  node *n = list2((node*)NODE_CASE, a);
425  node *n2 = n;
426 
427  while (n2->cdr) {
428  n2 = n2->cdr;
429  }
430  n2->cdr = b;
431  return n;
432 }
433 
434 // (:postexe a)
435 static node*
436 new_postexe(parser_state *p, node *a)
437 {
438  return cons((node*)NODE_POSTEXE, a);
439 }
440 
441 // (:self)
442 static node*
443 new_self(parser_state *p)
444 {
445  return list1((node*)NODE_SELF);
446 }
447 
448 // (:call a b c)
449 static node*
450 new_call(parser_state *p, node *a, mrb_sym b, node *c)
451 {
452  return list4((node*)NODE_CALL, a, nsym(b), c);
453 }
454 
455 // (:fcall self mid args)
456 static node*
457 new_fcall(parser_state *p, mrb_sym b, node *c)
458 {
459  return list4((node*)NODE_FCALL, new_self(p), nsym(b), c);
460 }
461 
462 // (:super . c)
463 static node*
464 new_super(parser_state *p, node *c)
465 {
466  return cons((node*)NODE_SUPER, c);
467 }
468 
469 // (:zsuper)
470 static node*
471 new_zsuper(parser_state *p)
472 {
473  return list1((node*)NODE_ZSUPER);
474 }
475 
476 // (:yield . c)
477 static node*
478 new_yield(parser_state *p, node *c)
479 {
480  if (c) {
481  if (c->cdr) {
482  yyerror(p, "both block arg and actual block given");
483  }
484  return cons((node*)NODE_YIELD, c->car);
485  }
486  return cons((node*)NODE_YIELD, 0);
487 }
488 
489 // (:return . c)
490 static node*
491 new_return(parser_state *p, node *c)
492 {
493  return cons((node*)NODE_RETURN, c);
494 }
495 
496 // (:break . c)
497 static node*
498 new_break(parser_state *p, node *c)
499 {
500  return cons((node*)NODE_BREAK, c);
501 }
502 
503 // (:next . c)
504 static node*
505 new_next(parser_state *p, node *c)
506 {
507  return cons((node*)NODE_NEXT, c);
508 }
509 
510 // (:redo)
511 static node*
512 new_redo(parser_state *p)
513 {
514  return list1((node*)NODE_REDO);
515 }
516 
517 // (:retry)
518 static node*
519 new_retry(parser_state *p)
520 {
521  return list1((node*)NODE_RETRY);
522 }
523 
524 // (:dot2 a b)
525 static node*
526 new_dot2(parser_state *p, node *a, node *b)
527 {
528  return cons((node*)NODE_DOT2, cons(a, b));
529 }
530 
531 // (:dot3 a b)
532 static node*
533 new_dot3(parser_state *p, node *a, node *b)
534 {
535  return cons((node*)NODE_DOT3, cons(a, b));
536 }
537 
538 // (:colon2 b c)
539 static node*
540 new_colon2(parser_state *p, node *b, mrb_sym c)
541 {
542  return cons((node*)NODE_COLON2, cons(b, nsym(c)));
543 }
544 
545 // (:colon3 . c)
546 static node*
547 new_colon3(parser_state *p, mrb_sym c)
548 {
549  return cons((node*)NODE_COLON3, nsym(c));
550 }
551 
552 // (:and a b)
553 static node*
554 new_and(parser_state *p, node *a, node *b)
555 {
556  return cons((node*)NODE_AND, cons(a, b));
557 }
558 
559 // (:or a b)
560 static node*
561 new_or(parser_state *p, node *a, node *b)
562 {
563  return cons((node*)NODE_OR, cons(a, b));
564 }
565 
566 // (:array a...)
567 static node*
568 new_array(parser_state *p, node *a)
569 {
570  return cons((node*)NODE_ARRAY, a);
571 }
572 
573 // (:splat . a)
574 static node*
575 new_splat(parser_state *p, node *a)
576 {
577  return cons((node*)NODE_SPLAT, a);
578 }
579 
580 // (:hash (k . v) (k . v)...)
581 static node*
582 new_hash(parser_state *p, node *a)
583 {
584  return cons((node*)NODE_HASH, a);
585 }
586 
587 // (:sym . a)
588 static node*
589 new_sym(parser_state *p, mrb_sym sym)
590 {
591  return cons((node*)NODE_SYM, nsym(sym));
592 }
593 
594 static mrb_sym
595 new_strsym(parser_state *p, node* str)
596 {
597  const char *s = (const char*)str->cdr->car;
598  size_t len = (size_t)str->cdr->cdr;
599 
600  return mrb_intern2(p->mrb, s, len);
601 }
602 
603 // (:lvar . a)
604 static node*
605 new_lvar(parser_state *p, mrb_sym sym)
606 {
607  return cons((node*)NODE_LVAR, nsym(sym));
608 }
609 
610 // (:gvar . a)
611 static node*
612 new_gvar(parser_state *p, mrb_sym sym)
613 {
614  return cons((node*)NODE_GVAR, nsym(sym));
615 }
616 
617 // (:ivar . a)
618 static node*
619 new_ivar(parser_state *p, mrb_sym sym)
620 {
621  return cons((node*)NODE_IVAR, nsym(sym));
622 }
623 
624 // (:cvar . a)
625 static node*
626 new_cvar(parser_state *p, mrb_sym sym)
627 {
628  return cons((node*)NODE_CVAR, nsym(sym));
629 }
630 
631 // (:const . a)
632 static node*
633 new_const(parser_state *p, mrb_sym sym)
634 {
635  return cons((node*)NODE_CONST, nsym(sym));
636 }
637 
638 // (:undef a...)
639 static node*
640 new_undef(parser_state *p, mrb_sym sym)
641 {
642  return list2((node*)NODE_UNDEF, nsym(sym));
643 }
644 
645 // (:class class super body)
646 static node*
647 new_class(parser_state *p, node *c, node *s, node *b)
648 {
649  return list4((node*)NODE_CLASS, c, s, cons(p->locals->car, b));
650 }
651 
652 // (:sclass obj body)
653 static node*
654 new_sclass(parser_state *p, node *o, node *b)
655 {
656  return list3((node*)NODE_SCLASS, o, cons(p->locals->car, b));
657 }
658 
659 // (:module module body)
660 static node*
661 new_module(parser_state *p, node *m, node *b)
662 {
663  return list3((node*)NODE_MODULE, m, cons(p->locals->car, b));
664 }
665 
666 // (:def m lv (arg . body))
667 static node*
668 new_def(parser_state *p, mrb_sym m, node *a, node *b)
669 {
670  return list5((node*)NODE_DEF, nsym(m), p->locals->car, a, b);
671 }
672 
673 // (:sdef obj m lv (arg . body))
674 static node*
675 new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b)
676 {
677  return list6((node*)NODE_SDEF, o, nsym(m), p->locals->car, a, b);
678 }
679 
680 // (:arg . sym)
681 static node*
682 new_arg(parser_state *p, mrb_sym sym)
683 {
684  return cons((node*)NODE_ARG, nsym(sym));
685 }
686 
687 // (m o r m2 b)
688 // m: (a b c)
689 // o: ((a . e1) (b . e2))
690 // r: a
691 // m2: (a b c)
692 // b: a
693 static node*
694 new_args(parser_state *p, node *m, node *opt, mrb_sym rest, node *m2, mrb_sym blk)
695 {
696  node *n;
697 
698  n = cons(m2, nsym(blk));
699  n = cons(nsym(rest), n);
700  n = cons(opt, n);
701  return cons(m, n);
702 }
703 
704 // (:block_arg . a)
705 static node*
706 new_block_arg(parser_state *p, node *a)
707 {
708  return cons((node*)NODE_BLOCK_ARG, a);
709 }
710 
711 // (:block arg body)
712 static node*
713 new_block(parser_state *p, node *a, node *b)
714 {
715  return list4((node*)NODE_BLOCK, p->locals->car, a, b);
716 }
717 
718 // (:lambda arg body)
719 static node*
720 new_lambda(parser_state *p, node *a, node *b)
721 {
722  return list4((node*)NODE_LAMBDA, p->locals->car, a, b);
723 }
724 
725 // (:asgn lhs rhs)
726 static node*
727 new_asgn(parser_state *p, node *a, node *b)
728 {
729  return cons((node*)NODE_ASGN, cons(a, b));
730 }
731 
732 // (:masgn mlhs=(pre rest post) mrhs)
733 static node*
734 new_masgn(parser_state *p, node *a, node *b)
735 {
736  return cons((node*)NODE_MASGN, cons(a, b));
737 }
738 
739 // (:asgn lhs rhs)
740 static node*
741 new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b)
742 {
743  return list4((node*)NODE_OP_ASGN, a, nsym(op), b);
744 }
745 
746 // (:int . i)
747 static node*
748 new_int(parser_state *p, const char *s, int base)
749 {
750  return list3((node*)NODE_INT, (node*)strdup(s), (node*)(intptr_t)base);
751 }
752 
753 // (:float . i)
754 static node*
755 new_float(parser_state *p, const char *s)
756 {
757  return cons((node*)NODE_FLOAT, (node*)strdup(s));
758 }
759 
760 // (:str . (s . len))
761 static node*
762 new_str(parser_state *p, const char *s, int len)
763 {
764  return cons((node*)NODE_STR, cons((node*)strndup(s, len), (node*)(intptr_t)len));
765 }
766 
767 // (:dstr . a)
768 static node*
769 new_dstr(parser_state *p, node *a)
770 {
771  return cons((node*)NODE_DSTR, a);
772 }
773 
774 // (:str . (s . len))
775 static node*
776 new_xstr(parser_state *p, const char *s, int len)
777 {
778  return cons((node*)NODE_XSTR, cons((node*)strndup(s, len), (node*)(intptr_t)len));
779 }
780 
781 // (:xstr . a)
782 static node*
783 new_dxstr(parser_state *p, node *a)
784 {
785  return cons((node*)NODE_DXSTR, a);
786 }
787 
788 // (:dsym . a)
789 static node*
790 new_dsym(parser_state *p, node *a)
791 {
792  return cons((node*)NODE_DSYM, new_dstr(p, a));
793 }
794 
795 // (:str . (a . a))
796 static node*
797 new_regx(parser_state *p, const char *p1, const char* p2)
798 {
799  return cons((node*)NODE_REGX, cons((node*)p1, (node*)p2));
800 }
801 
802 // (:dregx . a)
803 static node*
804 new_dregx(parser_state *p, node *a, node *b)
805 {
806  return cons((node*)NODE_DREGX, cons(a, b));
807 }
808 
809 // (:backref . n)
810 static node*
811 new_back_ref(parser_state *p, int n)
812 {
813  return cons((node*)NODE_BACK_REF, (node*)(intptr_t)n);
814 }
815 
816 // (:nthref . n)
817 static node*
818 new_nth_ref(parser_state *p, int n)
819 {
820  return cons((node*)NODE_NTH_REF, (node*)(intptr_t)n);
821 }
822 
823 // (:heredoc . a)
824 static node*
825 new_heredoc(parser_state *p)
826 {
827  parser_heredoc_info *inf = (parser_heredoc_info *)parser_palloc(p, sizeof(parser_heredoc_info));
828  return cons((node*)NODE_HEREDOC, (node*)inf);
829 }
830 
831 static void
832 new_bv(parser_state *p, mrb_sym id)
833 {
834 }
835 
836 static node*
837 new_literal_delim(parser_state *p)
838 {
839  return cons((node*)NODE_LITERAL_DELIM, 0);
840 }
841 
842 // (:words . a)
843 static node*
844 new_words(parser_state *p, node *a)
845 {
846  return cons((node*)NODE_WORDS, a);
847 }
848 
849 // (:symbols . a)
850 static node*
851 new_symbols(parser_state *p, node *a)
852 {
853  return cons((node*)NODE_SYMBOLS, a);
854 }
855 
856 // xxx -----------------------------
857 
858 // (:call a op)
859 static node*
860 call_uni_op(parser_state *p, node *recv, char *m)
861 {
862  return new_call(p, recv, intern(m), 0);
863 }
864 
865 // (:call a op b)
866 static node*
867 call_bin_op(parser_state *p, node *recv, char *m, node *arg1)
868 {
869  return new_call(p, recv, intern(m), list1(list1(arg1)));
870 }
871 
872 static void
873 args_with_block(parser_state *p, node *a, node *b)
874 {
875  if (b) {
876  if (a->cdr) {
877  yyerror(p, "both block arg and actual block given");
878  }
879  a->cdr = b;
880  }
881 }
882 
883 static void
884 call_with_block(parser_state *p, node *a, node *b)
885 {
886  node *n;
887 
888  if (a->car == (node*)NODE_SUPER ||
889  a->car == (node*)NODE_ZSUPER) {
890  if (!a->cdr) a->cdr = cons(0, b);
891  else {
892  args_with_block(p, a->cdr, b);
893  }
894  }
895  else {
896  n = a->cdr->cdr->cdr;
897  if (!n->car) n->car = cons(0, b);
898  else {
899  args_with_block(p, n->car, b);
900  }
901  }
902 }
903 
904 static node*
905 negate_lit(parser_state *p, node *n)
906 {
907  return cons((node*)NODE_NEGATE, n);
908 }
909 
910 static node*
911 cond(node *n)
912 {
913  return n;
914 }
915 
916 static node*
917 ret_args(parser_state *p, node *n)
918 {
919  if (n->cdr) {
920  yyerror(p, "block argument should not be given");
921  return NULL;
922  }
923  if (!n->car->cdr) return n->car->car;
924  return new_array(p, n->car);
925 }
926 
927 static void
928 assignable(parser_state *p, node *lhs)
929 {
930  if ((int)(intptr_t)lhs->car == NODE_LVAR) {
931  local_add(p, sym(lhs->cdr));
932  }
933 }
934 
935 static node*
936 var_reference(parser_state *p, node *lhs)
937 {
938  node *n;
939 
940  if ((int)(intptr_t)lhs->car == NODE_LVAR) {
941  if (!local_var_p(p, sym(lhs->cdr))) {
942  n = new_fcall(p, sym(lhs->cdr), 0);
943  cons_free(lhs);
944  return n;
945  }
946  }
947 
948  return lhs;
949 }
950 
952 
953 static node*
954 new_strterm(parser_state *p, string_type type, int term, int paren)
955 {
956  return cons((node*)(intptr_t)type, cons((node*)0, cons((node*)(intptr_t)paren, (node*)(intptr_t)term)));
957 }
958 
959 static void
960 end_strterm(parser_state *p)
961 {
965  p->lex_strterm = NULL;
966 }
967 
970 {
971  node *nd = p->parsing_heredoc;
972  if (nd == NULL)
973  return NULL;
974  /* mrb_assert(nd->car->car == NODE_HEREDOC); */
975  return (parser_heredoc_info*)nd->car->cdr;
976 }
977 
978 static void
979 heredoc_end(parser_state *p)
980 {
982  if (p->parsing_heredoc == NULL) {
983  p->lstate = EXPR_BEG;
984  p->cmd_start = TRUE;
985  end_strterm(p);
986  p->heredoc_end_now = TRUE;
987  } else {
988  /* next heredoc */
989  p->lex_strterm->car = (node*)(intptr_t)parsing_heredoc_inf(p)->type;
990  }
991 }
992 #define is_strterm_type(p,str_func) ((int)(intptr_t)((p)->lex_strterm->car) & (str_func))
993 
994 // xxx -----------------------------
995 
996 
997 /* Line 371 of yacc.c */
998 #line 999 "/home/kou/work/c/groonga.central/vendor/mruby/mruby.master/build/host/src/y.tab.c"
999 
1000 # ifndef YY_NULL
1001 # if defined __cplusplus && 201103L <= __cplusplus
1002 # define YY_NULL nullptr
1003 # else
1004 # define YY_NULL 0
1005 # endif
1006 # endif
1007 
1008 /* Enabling verbose error messages. */
1009 #ifdef YYERROR_VERBOSE
1010 # undef YYERROR_VERBOSE
1011 # define YYERROR_VERBOSE 1
1012 #else
1013 # define YYERROR_VERBOSE 0
1014 #endif
1015 
1016 
1017 /* Enabling traces. */
1018 #ifndef YYDEBUG
1019 # define YYDEBUG 0
1020 #endif
1021 #if YYDEBUG
1022 extern int yydebug;
1023 #endif
1024 
1025 /* Tokens. */
1026 #ifndef YYTOKENTYPE
1027 # define YYTOKENTYPE
1028  /* Put the tokens into the symbol table, so that GDB and other debuggers
1029  know about them. */
1039  keyword_if = 266,
1053  keyword_in = 280,
1054  keyword_do = 281,
1066  keyword_or = 293,
1080  tFID = 307,
1081  tGVAR = 308,
1082  tIVAR = 309,
1083  tCONSTANT = 310,
1084  tCVAR = 311,
1085  tLABEL = 312,
1086  tINTEGER = 313,
1087  tFLOAT = 314,
1088  tCHAR = 315,
1089  tXSTRING = 316,
1090  tREGEXP = 317,
1091  tSTRING = 318,
1094  tNTH_REF = 321,
1095  tBACK_REF = 322,
1097  tUPLUS = 324,
1098  tUMINUS = 325,
1099  tPOW = 326,
1100  tCMP = 327,
1101  tEQ = 328,
1102  tEQQ = 329,
1103  tNEQ = 330,
1104  tGEQ = 331,
1105  tLEQ = 332,
1106  tANDOP = 333,
1107  tOROP = 334,
1108  tMATCH = 335,
1109  tNMATCH = 336,
1110  tDOT2 = 337,
1111  tDOT3 = 338,
1112  tAREF = 339,
1113  tASET = 340,
1114  tLSHFT = 341,
1115  tRSHFT = 342,
1116  tCOLON2 = 343,
1117  tCOLON3 = 344,
1118  tOP_ASGN = 345,
1119  tASSOC = 346,
1120  tLPAREN = 347,
1122  tRPAREN = 349,
1123  tLBRACK = 350,
1124  tLBRACE = 351,
1126  tSTAR = 353,
1127  tAMPER = 354,
1128  tLAMBDA = 355,
1129  tSYMBEG = 356,
1131  tWORDS_BEG = 358,
1136  tLAMBEG = 363,
1140  tLOWEST = 367,
1142  idNULL = 369,
1144  idIFUNC = 371,
1145  idCFUNC = 372,
1153  };
1154 #endif
1155 
1156 
1157 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1158 typedef union YYSTYPE
1159 {
1160 /* Line 387 of yacc.c */
1161 #line 942 "src/parse.y"
1162 
1165  int num;
1166  unsigned int stack;
1167  const struct vtable *vars;
1168 
1169 
1170 /* Line 387 of yacc.c */
1171 #line 1172 "/home/kou/work/c/groonga.central/vendor/mruby/mruby.master/build/host/src/y.tab.c"
1172 } YYSTYPE;
1173 # define YYSTYPE_IS_TRIVIAL 1
1174 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
1175 # define YYSTYPE_IS_DECLARED 1
1176 #endif
1177 
1178 
1179 #ifdef YYPARSE_PARAM
1180 #if defined __STDC__ || defined __cplusplus
1181 int yyparse (void *YYPARSE_PARAM);
1182 #else
1183 int yyparse ();
1184 #endif
1185 #else /* ! YYPARSE_PARAM */
1186 #if defined __STDC__ || defined __cplusplus
1187 int yyparse (parser_state *p);
1188 #else
1189 int yyparse ();
1190 #endif
1191 #endif /* ! YYPARSE_PARAM */
1192 
1193 
1194 
1195 /* Copy the second part of user declarations. */
1196 
1197 /* Line 390 of yacc.c */
1198 #line 1199 "/home/kou/work/c/groonga.central/vendor/mruby/mruby.master/build/host/src/y.tab.c"
1199 
1200 #ifdef short
1201 # undef short
1202 #endif
1203 
1204 #ifdef YYTYPE_UINT8
1205 typedef YYTYPE_UINT8 yytype_uint8;
1206 #else
1207 typedef unsigned char yytype_uint8;
1208 #endif
1209 
1210 #ifdef YYTYPE_INT8
1211 typedef YYTYPE_INT8 yytype_int8;
1212 #elif (defined __STDC__ || defined __C99__FUNC__ \
1213  || defined __cplusplus || defined _MSC_VER)
1214 typedef signed char yytype_int8;
1215 #else
1216 typedef short int yytype_int8;
1217 #endif
1218 
1219 #ifdef YYTYPE_UINT16
1220 typedef YYTYPE_UINT16 yytype_uint16;
1221 #else
1222 typedef unsigned short int yytype_uint16;
1223 #endif
1224 
1225 #ifdef YYTYPE_INT16
1226 typedef YYTYPE_INT16 yytype_int16;
1227 #else
1228 typedef short int yytype_int16;
1229 #endif
1230 
1231 #ifndef YYSIZE_T
1232 # ifdef __SIZE_TYPE__
1233 # define YYSIZE_T __SIZE_TYPE__
1234 # elif defined size_t
1235 # define YYSIZE_T size_t
1236 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
1237  || defined __cplusplus || defined _MSC_VER)
1238 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1239 # define YYSIZE_T size_t
1240 # else
1241 # define YYSIZE_T unsigned int
1242 # endif
1243 #endif
1244 
1245 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
1246 
1247 #ifndef YY_
1248 # if defined YYENABLE_NLS && YYENABLE_NLS
1249 # if ENABLE_NLS
1250 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1251 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1252 # endif
1253 # endif
1254 # ifndef YY_
1255 # define YY_(Msgid) Msgid
1256 # endif
1257 #endif
1258 
1259 #ifndef __attribute__
1260 /* This feature is available in gcc versions 2.5 and later. */
1261 # if (! defined __GNUC__ || __GNUC__ < 2 \
1262  || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
1263 # define __attribute__(Spec) /* empty */
1264 # endif
1265 #endif
1266 
1267 /* Suppress unused-variable warnings by "using" E. */
1268 #if ! defined lint || defined __GNUC__
1269 # define YYUSE(E) ((void) (E))
1270 #else
1271 # define YYUSE(E) /* empty */
1272 #endif
1273 
1274 
1275 /* Identity function, used to suppress warnings about constant conditions. */
1276 #ifndef lint
1277 # define YYID(N) (N)
1278 #else
1279 #if (defined __STDC__ || defined __C99__FUNC__ \
1280  || defined __cplusplus || defined _MSC_VER)
1281 static int
1282 YYID (int yyi)
1283 #else
1284 static int
1285 YYID (yyi)
1286  int yyi;
1287 #endif
1288 {
1289  return yyi;
1290 }
1291 #endif
1292 
1293 #if ! defined yyoverflow || YYERROR_VERBOSE
1294 
1295 /* The parser invokes alloca or malloc; define the necessary symbols. */
1296 
1297 # ifdef YYSTACK_USE_ALLOCA
1298 # if YYSTACK_USE_ALLOCA
1299 # ifdef __GNUC__
1300 # define YYSTACK_ALLOC __builtin_alloca
1301 # elif defined __BUILTIN_VA_ARG_INCR
1302 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1303 # elif defined _AIX
1304 # define YYSTACK_ALLOC __alloca
1305 # elif defined _MSC_VER
1306 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1307 # define alloca _alloca
1308 # else
1309 # define YYSTACK_ALLOC alloca
1310 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1311  || defined __cplusplus || defined _MSC_VER)
1312 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1313  /* Use EXIT_SUCCESS as a witness for stdlib.h. */
1314 # ifndef EXIT_SUCCESS
1315 # define EXIT_SUCCESS 0
1316 # endif
1317 # endif
1318 # endif
1319 # endif
1320 # endif
1321 
1322 # ifdef YYSTACK_ALLOC
1323  /* Pacify GCC's `empty if-body' warning. */
1324 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
1325 # ifndef YYSTACK_ALLOC_MAXIMUM
1326  /* The OS might guarantee only one guard page at the bottom of the stack,
1327  and a page size can be as small as 4096 bytes. So we cannot safely
1328  invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
1329  to allow for a few compiler-allocated temporary stack slots. */
1330 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1331 # endif
1332 # else
1333 # define YYSTACK_ALLOC YYMALLOC
1334 # define YYSTACK_FREE YYFREE
1335 # ifndef YYSTACK_ALLOC_MAXIMUM
1336 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1337 # endif
1338 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1339  && ! ((defined YYMALLOC || defined malloc) \
1340  && (defined YYFREE || defined free)))
1341 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1342 # ifndef EXIT_SUCCESS
1343 # define EXIT_SUCCESS 0
1344 # endif
1345 # endif
1346 # ifndef YYMALLOC
1347 # define YYMALLOC malloc
1348 # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1349  || defined __cplusplus || defined _MSC_VER)
1350 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1351 # endif
1352 # endif
1353 # ifndef YYFREE
1354 # define YYFREE free
1355 # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
1356  || defined __cplusplus || defined _MSC_VER)
1357 void free (void *); /* INFRINGES ON USER NAME SPACE */
1358 # endif
1359 # endif
1360 # endif
1361 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
1362 
1363 
1364 #if (! defined yyoverflow \
1365  && (! defined __cplusplus \
1366  || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1367 
1368 /* A type that is properly aligned for any stack member. */
1369 union yyalloc
1370 {
1371  yytype_int16 yyss_alloc;
1373 };
1374 
1375 /* The size of the maximum gap between one aligned stack and the next. */
1376 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
1377 
1378 /* The size of an array large to enough to hold all stacks, each with
1379  N elements. */
1380 # define YYSTACK_BYTES(N) \
1381  ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
1382  + YYSTACK_GAP_MAXIMUM)
1383 
1384 # define YYCOPY_NEEDED 1
1385 
1386 /* Relocate STACK from its old location to the new one. The
1387  local variables YYSIZE and YYSTACKSIZE give the old and new number of
1388  elements in the stack, and YYPTR gives the new location of the
1389  stack. Advance YYPTR to a properly aligned location for the next
1390  stack. */
1391 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1392  do \
1393  { \
1394  YYSIZE_T yynewbytes; \
1395  YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1396  Stack = &yyptr->Stack_alloc; \
1397  yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
1398  yyptr += yynewbytes / sizeof (*yyptr); \
1399  } \
1400  while (YYID (0))
1401 
1402 #endif
1403 
1404 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1405 /* Copy COUNT objects from SRC to DST. The source and destination do
1406  not overlap. */
1407 # ifndef YYCOPY
1408 # if defined __GNUC__ && 1 < __GNUC__
1409 # define YYCOPY(Dst, Src, Count) \
1410  __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
1411 # else
1412 # define YYCOPY(Dst, Src, Count) \
1413  do \
1414  { \
1415  YYSIZE_T yyi; \
1416  for (yyi = 0; yyi < (Count); yyi++) \
1417  (Dst)[yyi] = (Src)[yyi]; \
1418  } \
1419  while (YYID (0))
1420 # endif
1421 # endif
1422 #endif /* !YYCOPY_NEEDED */
1423 
1424 /* YYFINAL -- State number of the termination state. */
1425 #define YYFINAL 3
1426 /* YYLAST -- Last index in YYTABLE. */
1427 #define YYLAST 10895
1428 
1429 /* YYNTOKENS -- Number of terminals. */
1430 #define YYNTOKENS 151
1431 /* YYNNTS -- Number of nonterminals. */
1432 #define YYNNTS 154
1433 /* YYNRULES -- Number of rules. */
1434 #define YYNRULES 544
1435 /* YYNRULES -- Number of states. */
1436 #define YYNSTATES 956
1437 
1438 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
1439 #define YYUNDEFTOK 2
1440 #define YYMAXUTOK 379
1441 
1442 #define YYTRANSLATE(YYX) \
1443  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1444 
1445 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
1446 static const yytype_uint8 yytranslate[] =
1447 {
1448  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1449  150, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1450  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1451  2, 2, 2, 127, 2, 2, 2, 125, 120, 2,
1452  146, 147, 123, 121, 144, 122, 143, 124, 2, 2,
1453  2, 2, 2, 2, 2, 2, 2, 2, 115, 149,
1454  117, 113, 116, 114, 2, 2, 2, 2, 2, 2,
1455  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1456  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1457  2, 142, 2, 148, 119, 2, 145, 2, 2, 2,
1458  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1459  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1460  2, 2, 2, 140, 118, 141, 128, 2, 2, 2,
1461  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1462  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1463  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1464  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1465  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1466  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1467  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1468  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1469  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1470  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1471  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1472  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1473  2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1474  5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1475  15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1476  25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1477  35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1478  45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1479  55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1480  65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1481  75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1482  85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1483  95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1484  105, 106, 107, 108, 109, 110, 111, 112, 126, 129,
1485  130, 131, 132, 133, 134, 135, 136, 137, 138, 139
1486 };
1487 
1488 #if YYDEBUG
1489 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1490  YYRHS. */
1491 static const yytype_uint16 yyprhs[] =
1492 {
1493  0, 0, 3, 4, 7, 10, 12, 14, 18, 21,
1494  23, 24, 30, 35, 38, 40, 42, 46, 49, 50,
1495  55, 58, 62, 66, 70, 74, 78, 83, 85, 89,
1496  93, 100, 106, 112, 118, 124, 128, 132, 136, 140,
1497  142, 146, 150, 152, 156, 160, 164, 167, 169, 171,
1498  173, 175, 177, 182, 183, 189, 192, 196, 201, 207,
1499  212, 218, 221, 224, 227, 230, 233, 235, 239, 241,
1500  245, 247, 250, 254, 260, 263, 268, 271, 276, 278,
1501  282, 284, 288, 291, 295, 297, 300, 302, 307, 311,
1502  315, 319, 323, 326, 328, 330, 335, 339, 343, 347,
1503  351, 354, 356, 358, 360, 363, 365, 369, 371, 373,
1504  375, 377, 379, 381, 383, 385, 386, 391, 393, 395,
1505  397, 399, 401, 403, 405, 407, 409, 411, 413, 415,
1506  417, 419, 421, 423, 425, 427, 429, 431, 433, 435,
1507  437, 439, 441, 443, 445, 447, 449, 451, 453, 455,
1508  457, 459, 461, 463, 465, 467, 469, 471, 473, 475,
1509  477, 479, 481, 483, 485, 487, 489, 491, 493, 495,
1510  497, 499, 501, 503, 505, 507, 509, 511, 513, 515,
1511  517, 519, 521, 523, 525, 527, 529, 533, 539, 543,
1512  549, 556, 562, 568, 574, 580, 585, 589, 593, 597,
1513  601, 605, 609, 613, 617, 621, 626, 631, 634, 637,
1514  641, 645, 649, 653, 657, 661, 665, 669, 673, 677,
1515  681, 685, 689, 692, 695, 699, 703, 707, 711, 718,
1516  720, 722, 724, 727, 732, 735, 739, 741, 743, 745,
1517  747, 750, 755, 758, 760, 763, 766, 771, 773, 774,
1518  777, 780, 783, 785, 787, 790, 794, 799, 803, 808,
1519  811, 813, 815, 817, 819, 821, 823, 825, 827, 828,
1520  833, 834, 839, 840, 844, 848, 852, 855, 859, 863,
1521  865, 870, 874, 876, 881, 885, 888, 890, 893, 894,
1522  899, 906, 913, 914, 915, 923, 924, 925, 933, 939,
1523  944, 945, 946, 956, 957, 964, 965, 966, 975, 976,
1524  982, 983, 990, 991, 992, 1002, 1004, 1006, 1008, 1010,
1525  1012, 1014, 1016, 1019, 1021, 1023, 1025, 1031, 1033, 1036,
1526  1038, 1040, 1042, 1046, 1048, 1052, 1054, 1059, 1066, 1070,
1527  1076, 1079, 1084, 1086, 1090, 1097, 1106, 1111, 1118, 1123,
1528  1126, 1133, 1136, 1141, 1148, 1151, 1156, 1159, 1164, 1166,
1529  1168, 1170, 1174, 1176, 1181, 1183, 1188, 1190, 1194, 1196,
1530  1198, 1203, 1205, 1209, 1213, 1214, 1220, 1223, 1228, 1234,
1531  1240, 1243, 1248, 1253, 1257, 1261, 1265, 1268, 1270, 1275,
1532  1276, 1282, 1283, 1289, 1295, 1297, 1299, 1306, 1308, 1310,
1533  1312, 1314, 1317, 1319, 1322, 1324, 1326, 1328, 1330, 1332,
1534  1334, 1336, 1339, 1343, 1345, 1348, 1350, 1351, 1356, 1358,
1535  1361, 1365, 1368, 1372, 1374, 1376, 1378, 1380, 1383, 1385,
1536  1388, 1391, 1395, 1397, 1402, 1405, 1407, 1409, 1411, 1413,
1537  1415, 1418, 1421, 1425, 1427, 1429, 1432, 1435, 1437, 1439,
1538  1441, 1443, 1445, 1447, 1449, 1451, 1453, 1455, 1457, 1459,
1539  1461, 1463, 1465, 1467, 1468, 1473, 1476, 1480, 1483, 1490,
1540  1499, 1504, 1511, 1516, 1523, 1526, 1531, 1538, 1541, 1546,
1541  1549, 1554, 1556, 1557, 1559, 1561, 1563, 1565, 1567, 1569,
1542  1571, 1575, 1577, 1581, 1585, 1589, 1591, 1595, 1597, 1601,
1543  1603, 1605, 1608, 1610, 1612, 1614, 1617, 1620, 1622, 1624,
1544  1625, 1630, 1632, 1635, 1637, 1641, 1645, 1648, 1650, 1652,
1545  1654, 1656, 1658, 1660, 1662, 1664, 1666, 1668, 1670, 1672,
1546  1673, 1675, 1676, 1678, 1681, 1684, 1685, 1687, 1689, 1691,
1547  1693, 1694, 1698, 1700, 1703
1548 };
1549 
1550 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
1551 static const yytype_int16 yyrhs[] =
1552 {
1553  152, 0, -1, -1, 153, 154, -1, 155, 295, -1,
1554  304, -1, 156, -1, 155, 303, 156, -1, 1, 156,
1555  -1, 161, -1, -1, 46, 157, 140, 154, 141, -1,
1556  159, 244, 222, 247, -1, 160, 295, -1, 304, -1,
1557  161, -1, 160, 303, 161, -1, 1, 161, -1, -1,
1558  45, 182, 162, 182, -1, 6, 183, -1, 161, 40,
1559  165, -1, 161, 41, 165, -1, 161, 42, 165, -1,
1560  161, 43, 165, -1, 161, 44, 161, -1, 47, 140,
1561  159, 141, -1, 163, -1, 171, 113, 166, -1, 266,
1562  90, 166, -1, 218, 142, 192, 298, 90, 166, -1,
1563  218, 143, 51, 90, 166, -1, 218, 143, 55, 90,
1564  166, -1, 218, 88, 55, 90, 166, -1, 218, 88,
1565  51, 90, 166, -1, 268, 90, 166, -1, 178, 113,
1566  199, -1, 171, 113, 188, -1, 171, 113, 199, -1,
1567  164, -1, 178, 113, 166, -1, 178, 113, 163, -1,
1568  166, -1, 164, 37, 164, -1, 164, 38, 164, -1,
1569  39, 296, 164, -1, 127, 166, -1, 187, -1, 164,
1570  -1, 170, -1, 167, -1, 237, -1, 237, 294, 292,
1571  194, -1, -1, 97, 169, 228, 159, 141, -1, 291,
1572  194, -1, 291, 194, 168, -1, 218, 143, 292, 194,
1573  -1, 218, 143, 292, 194, 168, -1, 218, 88, 292,
1574  194, -1, 218, 88, 292, 194, 168, -1, 32, 194,
1575  -1, 31, 194, -1, 30, 193, -1, 21, 193, -1,
1576  22, 193, -1, 173, -1, 92, 172, 297, -1, 173,
1577  -1, 92, 172, 297, -1, 175, -1, 175, 174, -1,
1578  175, 98, 177, -1, 175, 98, 177, 144, 176, -1,
1579  175, 98, -1, 175, 98, 144, 176, -1, 98, 177,
1580  -1, 98, 177, 144, 176, -1, 98, -1, 98, 144,
1581  176, -1, 177, -1, 92, 172, 297, -1, 174, 144,
1582  -1, 175, 174, 144, -1, 174, -1, 175, 174, -1,
1583  265, -1, 218, 142, 192, 298, -1, 218, 143, 51,
1584  -1, 218, 88, 51, -1, 218, 143, 55, -1, 218,
1585  88, 55, -1, 89, 55, -1, 268, -1, 265, -1,
1586  218, 142, 192, 298, -1, 218, 143, 51, -1, 218,
1587  88, 51, -1, 218, 143, 55, -1, 218, 88, 55,
1588  -1, 89, 55, -1, 268, -1, 51, -1, 55, -1,
1589  89, 179, -1, 179, -1, 218, 88, 179, -1, 51,
1590  -1, 55, -1, 52, -1, 185, -1, 186, -1, 181,
1591  -1, 261, -1, 182, -1, -1, 183, 144, 184, 182,
1592  -1, 118, -1, 119, -1, 120, -1, 72, -1, 73,
1593  -1, 74, -1, 80, -1, 81, -1, 116, -1, 76,
1594  -1, 117, -1, 77, -1, 75, -1, 86, -1, 87,
1595  -1, 121, -1, 122, -1, 123, -1, 98, -1, 124,
1596  -1, 125, -1, 71, -1, 127, -1, 128, -1, 69,
1597  -1, 70, -1, 84, -1, 85, -1, 145, -1, 48,
1598  -1, 49, -1, 50, -1, 46, -1, 47, -1, 45,
1599  -1, 37, -1, 7, -1, 21, -1, 16, -1, 3,
1600  -1, 5, -1, 26, -1, 15, -1, 14, -1, 10,
1601  -1, 9, -1, 36, -1, 20, -1, 25, -1, 4,
1602  -1, 22, -1, 34, -1, 39, -1, 38, -1, 23,
1603  -1, 8, -1, 24, -1, 30, -1, 33, -1, 32,
1604  -1, 13, -1, 35, -1, 6, -1, 17, -1, 31,
1605  -1, 11, -1, 12, -1, 18, -1, 19, -1, 178,
1606  113, 187, -1, 178, 113, 187, 44, 187, -1, 266,
1607  90, 187, -1, 266, 90, 187, 44, 187, -1, 218,
1608  142, 192, 298, 90, 187, -1, 218, 143, 51, 90,
1609  187, -1, 218, 143, 55, 90, 187, -1, 218, 88,
1610  51, 90, 187, -1, 218, 88, 55, 90, 187, -1,
1611  89, 55, 90, 187, -1, 268, 90, 187, -1, 187,
1612  82, 187, -1, 187, 83, 187, -1, 187, 121, 187,
1613  -1, 187, 122, 187, -1, 187, 123, 187, -1, 187,
1614  124, 187, -1, 187, 125, 187, -1, 187, 71, 187,
1615  -1, 126, 58, 71, 187, -1, 126, 59, 71, 187,
1616  -1, 69, 187, -1, 70, 187, -1, 187, 118, 187,
1617  -1, 187, 119, 187, -1, 187, 120, 187, -1, 187,
1618  72, 187, -1, 187, 116, 187, -1, 187, 76, 187,
1619  -1, 187, 117, 187, -1, 187, 77, 187, -1, 187,
1620  73, 187, -1, 187, 74, 187, -1, 187, 75, 187,
1621  -1, 187, 80, 187, -1, 187, 81, 187, -1, 127,
1622  187, -1, 128, 187, -1, 187, 86, 187, -1, 187,
1623  87, 187, -1, 187, 78, 187, -1, 187, 79, 187,
1624  -1, 187, 114, 187, 296, 115, 187, -1, 200, -1,
1625  187, -1, 304, -1, 198, 299, -1, 198, 144, 289,
1626  299, -1, 289, 299, -1, 146, 192, 297, -1, 304,
1627  -1, 190, -1, 304, -1, 193, -1, 198, 144, -1,
1628  198, 144, 289, 144, -1, 289, 144, -1, 170, -1,
1629  198, 197, -1, 289, 197, -1, 198, 144, 289, 197,
1630  -1, 196, -1, -1, 195, 193, -1, 99, 188, -1,
1631  144, 196, -1, 304, -1, 188, -1, 98, 188, -1,
1632  198, 144, 188, -1, 198, 144, 98, 188, -1, 198,
1633  144, 188, -1, 198, 144, 98, 188, -1, 98, 188,
1634  -1, 248, -1, 249, -1, 253, -1, 254, -1, 255,
1635  -1, 267, -1, 268, -1, 52, -1, -1, 7, 201,
1636  158, 10, -1, -1, 93, 164, 202, 297, -1, -1,
1637  93, 203, 297, -1, 92, 159, 147, -1, 218, 88,
1638  55, -1, 89, 55, -1, 95, 189, 148, -1, 96,
1639  288, 141, -1, 30, -1, 31, 146, 193, 297, -1,
1640  31, 146, 297, -1, 31, -1, 39, 146, 164, 297,
1641  -1, 39, 146, 297, -1, 291, 239, -1, 238, -1,
1642  238, 239, -1, -1, 100, 204, 233, 234, -1, 11,
1643  165, 219, 159, 221, 10, -1, 12, 165, 219, 159,
1644  222, 10, -1, -1, -1, 18, 205, 165, 220, 206,
1645  159, 10, -1, -1, -1, 19, 207, 165, 220, 208,
1646  159, 10, -1, 16, 165, 295, 242, 10, -1, 16,
1647  295, 242, 10, -1, -1, -1, 20, 223, 25, 209,
1648  165, 220, 210, 159, 10, -1, -1, 3, 180, 269,
1649  211, 158, 10, -1, -1, -1, 3, 86, 164, 212,
1650  300, 213, 158, 10, -1, -1, 4, 180, 214, 158,
1651  10, -1, -1, 5, 181, 215, 271, 158, 10, -1,
1652  -1, -1, 5, 286, 294, 216, 181, 217, 271, 158,
1653  10, -1, 21, -1, 22, -1, 23, -1, 24, -1,
1654  200, -1, 300, -1, 13, -1, 300, 13, -1, 300,
1655  -1, 27, -1, 222, -1, 14, 165, 219, 159, 221,
1656  -1, 304, -1, 15, 159, -1, 178, -1, 171, -1,
1657  274, -1, 92, 226, 297, -1, 224, -1, 225, 144,
1658  224, -1, 225, -1, 225, 144, 98, 274, -1, 225,
1659  144, 98, 274, 144, 225, -1, 225, 144, 98, -1,
1660  225, 144, 98, 144, 225, -1, 98, 274, -1, 98,
1661  274, 144, 225, -1, 98, -1, 98, 144, 225, -1,
1662  276, 144, 279, 144, 282, 285, -1, 276, 144, 279,
1663  144, 282, 144, 276, 285, -1, 276, 144, 279, 285,
1664  -1, 276, 144, 279, 144, 276, 285, -1, 276, 144,
1665  282, 285, -1, 276, 144, -1, 276, 144, 282, 144,
1666  276, 285, -1, 276, 285, -1, 279, 144, 282, 285,
1667  -1, 279, 144, 282, 144, 276, 285, -1, 279, 285,
1668  -1, 279, 144, 276, 285, -1, 282, 285, -1, 282,
1669  144, 276, 285, -1, 284, -1, 304, -1, 229, -1,
1670  118, 230, 118, -1, 79, -1, 118, 227, 230, 118,
1671  -1, 296, -1, 296, 149, 231, 296, -1, 232, -1,
1672  231, 144, 232, -1, 51, -1, 273, -1, 146, 272,
1673  230, 147, -1, 272, -1, 108, 159, 141, -1, 29,
1674  159, 10, -1, -1, 28, 236, 228, 159, 10, -1,
1675  170, 235, -1, 237, 294, 292, 191, -1, 237, 294,
1676  292, 191, 239, -1, 237, 294, 292, 194, 235, -1,
1677  291, 190, -1, 218, 143, 292, 191, -1, 218, 88,
1678  292, 190, -1, 218, 88, 293, -1, 218, 143, 190,
1679  -1, 218, 88, 190, -1, 32, 190, -1, 32, -1,
1680  218, 142, 192, 298, -1, -1, 140, 240, 228, 159,
1681  141, -1, -1, 26, 241, 228, 159, 10, -1, 17,
1682  198, 219, 159, 243, -1, 222, -1, 242, -1, 8,
1683  245, 246, 219, 159, 244, -1, 304, -1, 188, -1,
1684  199, -1, 304, -1, 91, 178, -1, 304, -1, 9,
1685  159, -1, 304, -1, 264, -1, 260, -1, 259, -1,
1686  263, -1, 60, -1, 63, -1, 105, 63, -1, 105,
1687  250, 63, -1, 251, -1, 250, 251, -1, 65, -1,
1688  -1, 64, 252, 159, 141, -1, 111, -1, 106, 61,
1689  -1, 106, 250, 61, -1, 102, 62, -1, 102, 250,
1690  62, -1, 109, -1, 304, -1, 257, -1, 258, -1,
1691  257, 258, -1, 110, -1, 250, 110, -1, 103, 63,
1692  -1, 103, 250, 63, -1, 261, -1, 101, 105, 251,
1693  63, -1, 101, 262, -1, 181, -1, 54, -1, 53,
1694  -1, 56, -1, 63, -1, 105, 63, -1, 104, 63,
1695  -1, 104, 250, 63, -1, 58, -1, 59, -1, 126,
1696  58, -1, 126, 59, -1, 51, -1, 54, -1, 53,
1697  -1, 56, -1, 55, -1, 265, -1, 265, -1, 34,
1698  -1, 33, -1, 35, -1, 36, -1, 49, -1, 48,
1699  -1, 66, -1, 67, -1, 300, -1, -1, 117, 270,
1700  165, 300, -1, 1, 300, -1, 146, 272, 297, -1,
1701  272, 300, -1, 276, 144, 280, 144, 282, 285, -1,
1702  276, 144, 280, 144, 282, 144, 276, 285, -1, 276,
1703  144, 280, 285, -1, 276, 144, 280, 144, 276, 285,
1704  -1, 276, 144, 282, 285, -1, 276, 144, 282, 144,
1705  276, 285, -1, 276, 285, -1, 280, 144, 282, 285,
1706  -1, 280, 144, 282, 144, 276, 285, -1, 280, 285,
1707  -1, 280, 144, 276, 285, -1, 282, 285, -1, 282,
1708  144, 276, 285, -1, 284, -1, -1, 55, -1, 54,
1709  -1, 53, -1, 56, -1, 273, -1, 51, -1, 274,
1710  -1, 92, 226, 297, -1, 275, -1, 276, 144, 275,
1711  -1, 51, 113, 188, -1, 51, 113, 218, -1, 278,
1712  -1, 279, 144, 278, -1, 277, -1, 280, 144, 277,
1713  -1, 123, -1, 98, -1, 281, 51, -1, 281, -1,
1714  120, -1, 99, -1, 283, 51, -1, 144, 284, -1,
1715  304, -1, 267, -1, -1, 146, 287, 164, 297, -1,
1716  304, -1, 289, 299, -1, 290, -1, 289, 144, 290,
1717  -1, 188, 91, 188, -1, 57, 188, -1, 51, -1,
1718  55, -1, 52, -1, 51, -1, 55, -1, 52, -1,
1719  185, -1, 51, -1, 52, -1, 185, -1, 143, -1,
1720  88, -1, -1, 303, -1, -1, 301, -1, 296, 147,
1721  -1, 296, 148, -1, -1, 301, -1, 144, -1, 149,
1722  -1, 301, -1, -1, 150, 302, 256, -1, 300, -1,
1723  303, 149, -1, -1
1724 };
1725 
1726 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
1727 static const yytype_uint16 yyrline[] =
1728 {
1729  0, 1100, 1100, 1100, 1110, 1116, 1120, 1124, 1128, 1134,
1730  1136, 1135, 1147, 1173, 1179, 1183, 1187, 1191, 1197, 1197,
1731  1201, 1205, 1209, 1213, 1217, 1221, 1225, 1230, 1231, 1235,
1732  1239, 1243, 1247, 1251, 1256, 1260, 1265, 1269, 1273, 1277,
1733  1280, 1284, 1291, 1292, 1296, 1300, 1304, 1308, 1311, 1318,
1734  1319, 1322, 1323, 1327, 1326, 1339, 1343, 1348, 1352, 1357,
1735  1361, 1366, 1370, 1374, 1378, 1382, 1388, 1392, 1398, 1399,
1736  1405, 1409, 1413, 1417, 1421, 1425, 1429, 1433, 1437, 1441,
1737  1447, 1448, 1454, 1458, 1464, 1468, 1474, 1478, 1482, 1486,
1738  1490, 1494, 1500, 1506, 1513, 1517, 1521, 1525, 1529, 1533,
1739  1539, 1545, 1552, 1556, 1559, 1563, 1567, 1573, 1574, 1575,
1740  1576, 1581, 1588, 1589, 1592, 1596, 1596, 1602, 1603, 1604,
1741  1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614,
1742  1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624,
1743  1625, 1626, 1627, 1628, 1629, 1630, 1633, 1633, 1633, 1634,
1744  1634, 1635, 1635, 1635, 1636, 1636, 1636, 1636, 1637, 1637,
1745  1637, 1638, 1638, 1638, 1639, 1639, 1639, 1639, 1640, 1640,
1746  1640, 1640, 1641, 1641, 1641, 1641, 1642, 1642, 1642, 1642,
1747  1643, 1643, 1643, 1643, 1644, 1644, 1647, 1651, 1655, 1659,
1748  1663, 1667, 1671, 1675, 1679, 1684, 1689, 1694, 1698, 1702,
1749  1706, 1710, 1714, 1718, 1722, 1726, 1730, 1734, 1738, 1742,
1750  1746, 1750, 1754, 1758, 1762, 1766, 1770, 1774, 1778, 1782,
1751  1786, 1790, 1794, 1798, 1802, 1806, 1810, 1814, 1818, 1822,
1752  1828, 1835, 1836, 1840, 1844, 1850, 1856, 1857, 1860, 1861,
1753  1862, 1866, 1870, 1876, 1880, 1884, 1888, 1892, 1898, 1898,
1754  1909, 1915, 1919, 1925, 1929, 1933, 1937, 1943, 1947, 1951,
1755  1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1969, 1968,
1756  1979, 1979, 1983, 1983, 1987, 1991, 1995, 1999, 2003, 2007,
1757  2011, 2015, 2019, 2023, 2027, 2031, 2035, 2036, 2042, 2041,
1758  2054, 2061, 2068, 2068, 2068, 2074, 2074, 2074, 2080, 2086,
1759  2091, 2093, 2090, 2100, 2099, 2112, 2117, 2111, 2130, 2129,
1760  2142, 2141, 2154, 2155, 2154, 2168, 2172, 2176, 2180, 2186,
1761  2193, 2194, 2195, 2198, 2199, 2202, 2203, 2211, 2212, 2218,
1762  2222, 2225, 2229, 2235, 2239, 2245, 2249, 2253, 2257, 2261,
1763  2265, 2269, 2273, 2277, 2283, 2287, 2291, 2295, 2299, 2303,
1764  2307, 2311, 2315, 2319, 2323, 2327, 2331, 2335, 2339, 2345,
1765  2346, 2353, 2358, 2363, 2370, 2374, 2380, 2381, 2384, 2389,
1766  2392, 2396, 2402, 2406, 2413, 2412, 2425, 2435, 2439, 2444,
1767  2451, 2455, 2459, 2463, 2467, 2471, 2475, 2479, 2483, 2490,
1768  2489, 2500, 2499, 2511, 2519, 2528, 2531, 2538, 2541, 2545,
1769  2546, 2549, 2553, 2556, 2560, 2563, 2564, 2565, 2566, 2569,
1770  2570, 2571, 2575, 2581, 2582, 2588, 2593, 2592, 2603, 2609,
1771  2613, 2619, 2623, 2629, 2632, 2633, 2636, 2637, 2640, 2645,
1772  2652, 2656, 2663, 2667, 2674, 2681, 2682, 2683, 2684, 2685,
1773  2689, 2695, 2699, 2705, 2706, 2707, 2711, 2717, 2721, 2725,
1774  2729, 2733, 2739, 2745, 2749, 2753, 2757, 2761, 2765, 2772,
1775  2781, 2782, 2785, 2790, 2789, 2798, 2805, 2811, 2817, 2821,
1776  2825, 2829, 2833, 2837, 2841, 2845, 2849, 2853, 2857, 2861,
1777  2865, 2869, 2874, 2880, 2885, 2890, 2895, 2902, 2906, 2913,
1778  2917, 2923, 2927, 2933, 2940, 2947, 2951, 2957, 2961, 2967,
1779  2968, 2971, 2976, 2983, 2984, 2987, 2994, 2998, 3005, 3010,
1780  3010, 3035, 3036, 3042, 3046, 3052, 3056, 3062, 3063, 3064,
1781  3067, 3068, 3069, 3070, 3073, 3074, 3075, 3078, 3079, 3082,
1782  3083, 3086, 3087, 3090, 3093, 3096, 3097, 3098, 3101, 3102,
1783  3106, 3105, 3112, 3113, 3117
1784 };
1785 #endif
1786 
1787 #if YYDEBUG || YYERROR_VERBOSE || 0
1788 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1789  First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1790 static const char *const yytname[] =
1791 {
1792  "$end", "error", "$undefined", "keyword_class", "keyword_module",
1793  "keyword_def", "keyword_undef", "keyword_begin", "keyword_rescue",
1794  "keyword_ensure", "keyword_end", "keyword_if", "keyword_unless",
1795  "keyword_then", "keyword_elsif", "keyword_else", "keyword_case",
1796  "keyword_when", "keyword_while", "keyword_until", "keyword_for",
1797  "keyword_break", "keyword_next", "keyword_redo", "keyword_retry",
1798  "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block",
1799  "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super",
1800  "keyword_self", "keyword_nil", "keyword_true", "keyword_false",
1801  "keyword_and", "keyword_or", "keyword_not", "modifier_if",
1802  "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue",
1803  "keyword_alias", "keyword_BEGIN", "keyword_END", "keyword__LINE__",
1804  "keyword__FILE__", "keyword__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR",
1805  "tIVAR", "tCONSTANT", "tCVAR", "tLABEL", "tINTEGER", "tFLOAT", "tCHAR",
1806  "tXSTRING", "tREGEXP", "tSTRING", "tSTRING_PART", "tSTRING_MID",
1807  "tNTH_REF", "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW",
1808  "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP",
1809  "tMATCH", "tNMATCH", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT",
1810  "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN",
1811  "tLPAREN_ARG", "tRPAREN", "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR",
1812  "tAMPER", "tLAMBDA", "tSYMBEG", "tREGEXP_BEG", "tWORDS_BEG",
1813  "tSYMBOLS_BEG", "tSTRING_BEG", "tXSTRING_BEG", "tSTRING_DVAR", "tLAMBEG",
1814  "tHEREDOC_BEG", "tHEREDOC_END", "tLITERAL_DELIM", "tLOWEST", "'='",
1815  "'?'", "':'", "'>'", "'<'", "'|'", "'^'", "'&'", "'+'", "'-'", "'*'",
1816  "'/'", "'%'", "tUMINUS_NUM", "'!'", "'~'", "idNULL", "idRespond_to",
1817  "idIFUNC", "idCFUNC", "id_core_set_method_alias",
1818  "id_core_set_variable_alias", "id_core_undef_method",
1819  "id_core_define_method", "id_core_define_singleton_method",
1820  "id_core_set_postexe", "tLAST_TOKEN", "'{'", "'}'", "'['", "'.'", "','",
1821  "'`'", "'('", "')'", "']'", "';'", "'\\n'", "$accept", "program", "$@1",
1822  "top_compstmt", "top_stmts", "top_stmt", "@2", "bodystmt", "compstmt",
1823  "stmts", "stmt", "$@3", "command_asgn", "expr", "expr_value",
1824  "command_call", "block_command", "cmd_brace_block", "$@4", "command",
1825  "mlhs", "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_list",
1826  "mlhs_post", "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym",
1827  "undef_list", "$@5", "op", "reswords", "arg", "arg_value", "aref_args",
1828  "paren_args", "opt_paren_args", "opt_call_args", "call_args",
1829  "command_args", "@6", "block_arg", "opt_block_arg", "args", "mrhs",
1830  "primary", "$@7", "$@8", "$@9", "@10", "$@11", "$@12", "$@13", "$@14",
1831  "$@15", "$@16", "@17", "@18", "@19", "@20", "@21", "$@22", "@23",
1832  "primary_value", "then", "do", "if_tail", "opt_else", "for_var",
1833  "f_marg", "f_marg_list", "f_margs", "block_param", "opt_block_param",
1834  "block_param_def", "opt_bv_decl", "bv_decls", "bvar", "f_larglist",
1835  "lambda_body", "do_block", "$@24", "block_call", "method_call",
1836  "brace_block", "$@25", "$@26", "case_body", "cases", "opt_rescue",
1837  "exc_list", "exc_var", "opt_ensure", "literal", "string", "string_rep",
1838  "string_interp", "@27", "xstring", "regexp", "heredoc",
1839  "opt_heredoc_bodies", "heredoc_bodies", "heredoc_body", "words",
1840  "symbol", "basic_symbol", "sym", "symbols", "numeric", "variable",
1841  "var_lhs", "var_ref", "backref", "superclass", "$@28", "f_arglist",
1842  "f_args", "f_bad_arg", "f_norm_arg", "f_arg_item", "f_arg", "f_opt",
1843  "f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark",
1844  "f_rest_arg", "blkarg_mark", "f_block_arg", "opt_f_block_arg",
1845  "singleton", "$@29", "assoc_list", "assocs", "assoc", "operation",
1846  "operation2", "operation3", "dot_or_colon", "opt_terms", "opt_nl",
1847  "rparen", "rbracket", "trailer", "term", "nl", "$@30", "terms", "none", YY_NULL
1848 };
1849 #endif
1850 
1851 # ifdef YYPRINT
1852 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1853  token YYLEX-NUM. */
1854 static const yytype_uint16 yytoknum[] =
1855 {
1856  0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1857  265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1858  275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1859  285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1860  295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1861  305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1862  315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1863  325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1864  335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1865  345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1866  355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1867  365, 366, 367, 61, 63, 58, 62, 60, 124, 94,
1868  38, 43, 45, 42, 47, 37, 368, 33, 126, 369,
1869  370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
1870  123, 125, 91, 46, 44, 96, 40, 41, 93, 59,
1871  10
1872 };
1873 # endif
1874 
1875 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1876 static const yytype_uint16 yyr1[] =
1877 {
1878  0, 151, 153, 152, 154, 155, 155, 155, 155, 156,
1879  157, 156, 158, 159, 160, 160, 160, 160, 162, 161,
1880  161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1881  161, 161, 161, 161, 161, 161, 161, 161, 161, 161,
1882  163, 163, 164, 164, 164, 164, 164, 164, 165, 166,
1883  166, 167, 167, 169, 168, 170, 170, 170, 170, 170,
1884  170, 170, 170, 170, 170, 170, 171, 171, 172, 172,
1885  173, 173, 173, 173, 173, 173, 173, 173, 173, 173,
1886  174, 174, 175, 175, 176, 176, 177, 177, 177, 177,
1887  177, 177, 177, 177, 178, 178, 178, 178, 178, 178,
1888  178, 178, 179, 179, 180, 180, 180, 181, 181, 181,
1889  181, 181, 182, 182, 183, 184, 183, 185, 185, 185,
1890  185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
1891  185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
1892  185, 185, 185, 185, 185, 185, 186, 186, 186, 186,
1893  186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1894  186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1895  186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1896  186, 186, 186, 186, 186, 186, 187, 187, 187, 187,
1897  187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
1898  187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
1899  187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
1900  187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
1901  188, 189, 189, 189, 189, 190, 191, 191, 192, 192,
1902  192, 192, 192, 193, 193, 193, 193, 193, 195, 194,
1903  196, 197, 197, 198, 198, 198, 198, 199, 199, 199,
1904  200, 200, 200, 200, 200, 200, 200, 200, 201, 200,
1905  202, 200, 203, 200, 200, 200, 200, 200, 200, 200,
1906  200, 200, 200, 200, 200, 200, 200, 200, 204, 200,
1907  200, 200, 205, 206, 200, 207, 208, 200, 200, 200,
1908  209, 210, 200, 211, 200, 212, 213, 200, 214, 200,
1909  215, 200, 216, 217, 200, 200, 200, 200, 200, 218,
1910  219, 219, 219, 220, 220, 221, 221, 222, 222, 223,
1911  223, 224, 224, 225, 225, 226, 226, 226, 226, 226,
1912  226, 226, 226, 226, 227, 227, 227, 227, 227, 227,
1913  227, 227, 227, 227, 227, 227, 227, 227, 227, 228,
1914  228, 229, 229, 229, 230, 230, 231, 231, 232, 232,
1915  233, 233, 234, 234, 236, 235, 237, 237, 237, 237,
1916  238, 238, 238, 238, 238, 238, 238, 238, 238, 240,
1917  239, 241, 239, 242, 243, 243, 244, 244, 245, 245,
1918  245, 246, 246, 247, 247, 248, 248, 248, 248, 249,
1919  249, 249, 249, 250, 250, 251, 252, 251, 251, 253,
1920  253, 254, 254, 255, 256, 256, 257, 257, 258, 258,
1921  259, 259, 260, 260, 261, 262, 262, 262, 262, 262,
1922  262, 263, 263, 264, 264, 264, 264, 265, 265, 265,
1923  265, 265, 266, 267, 267, 267, 267, 267, 267, 267,
1924  268, 268, 269, 270, 269, 269, 271, 271, 272, 272,
1925  272, 272, 272, 272, 272, 272, 272, 272, 272, 272,
1926  272, 272, 272, 273, 273, 273, 273, 274, 274, 275,
1927  275, 276, 276, 277, 278, 279, 279, 280, 280, 281,
1928  281, 282, 282, 283, 283, 284, 285, 285, 286, 287,
1929  286, 288, 288, 289, 289, 290, 290, 291, 291, 291,
1930  292, 292, 292, 292, 293, 293, 293, 294, 294, 295,
1931  295, 296, 296, 297, 298, 299, 299, 299, 300, 300,
1932  302, 301, 303, 303, 304
1933 };
1934 
1935 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1936 static const yytype_uint8 yyr2[] =
1937 {
1938  0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
1939  0, 5, 4, 2, 1, 1, 3, 2, 0, 4,
1940  2, 3, 3, 3, 3, 3, 4, 1, 3, 3,
1941  6, 5, 5, 5, 5, 3, 3, 3, 3, 1,
1942  3, 3, 1, 3, 3, 3, 2, 1, 1, 1,
1943  1, 1, 4, 0, 5, 2, 3, 4, 5, 4,
1944  5, 2, 2, 2, 2, 2, 1, 3, 1, 3,
1945  1, 2, 3, 5, 2, 4, 2, 4, 1, 3,
1946  1, 3, 2, 3, 1, 2, 1, 4, 3, 3,
1947  3, 3, 2, 1, 1, 4, 3, 3, 3, 3,
1948  2, 1, 1, 1, 2, 1, 3, 1, 1, 1,
1949  1, 1, 1, 1, 1, 0, 4, 1, 1, 1,
1950  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1951  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1952  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1953  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1954  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1955  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1956  1, 1, 1, 1, 1, 1, 3, 5, 3, 5,
1957  6, 5, 5, 5, 5, 4, 3, 3, 3, 3,
1958  3, 3, 3, 3, 3, 4, 4, 2, 2, 3,
1959  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1960  3, 3, 2, 2, 3, 3, 3, 3, 6, 1,
1961  1, 1, 2, 4, 2, 3, 1, 1, 1, 1,
1962  2, 4, 2, 1, 2, 2, 4, 1, 0, 2,
1963  2, 2, 1, 1, 2, 3, 4, 3, 4, 2,
1964  1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
1965  0, 4, 0, 3, 3, 3, 2, 3, 3, 1,
1966  4, 3, 1, 4, 3, 2, 1, 2, 0, 4,
1967  6, 6, 0, 0, 7, 0, 0, 7, 5, 4,
1968  0, 0, 9, 0, 6, 0, 0, 8, 0, 5,
1969  0, 6, 0, 0, 9, 1, 1, 1, 1, 1,
1970  1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
1971  1, 1, 3, 1, 3, 1, 4, 6, 3, 5,
1972  2, 4, 1, 3, 6, 8, 4, 6, 4, 2,
1973  6, 2, 4, 6, 2, 4, 2, 4, 1, 1,
1974  1, 3, 1, 4, 1, 4, 1, 3, 1, 1,
1975  4, 1, 3, 3, 0, 5, 2, 4, 5, 5,
1976  2, 4, 4, 3, 3, 3, 2, 1, 4, 0,
1977  5, 0, 5, 5, 1, 1, 6, 1, 1, 1,
1978  1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
1979  1, 2, 3, 1, 2, 1, 0, 4, 1, 2,
1980  3, 2, 3, 1, 1, 1, 1, 2, 1, 2,
1981  2, 3, 1, 4, 2, 1, 1, 1, 1, 1,
1982  2, 2, 3, 1, 1, 2, 2, 1, 1, 1,
1983  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1984  1, 1, 1, 0, 4, 2, 3, 2, 6, 8,
1985  4, 6, 4, 6, 2, 4, 6, 2, 4, 2,
1986  4, 1, 0, 1, 1, 1, 1, 1, 1, 1,
1987  3, 1, 3, 3, 3, 1, 3, 1, 3, 1,
1988  1, 2, 1, 1, 1, 2, 2, 1, 1, 0,
1989  4, 1, 2, 1, 3, 3, 2, 1, 1, 1,
1990  1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1991  1, 0, 1, 2, 2, 0, 1, 1, 1, 1,
1992  0, 3, 1, 2, 0
1993 };
1994 
1995 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
1996  Performed when YYTABLE doesn't specify something else to do. Zero
1997  means the default is an error. */
1998 static const yytype_uint16 yydefact[] =
1999 {
2000  2, 0, 0, 1, 0, 0, 0, 0, 0, 268,
2001  0, 0, 529, 292, 295, 0, 315, 316, 317, 318,
2002  279, 248, 248, 455, 454, 456, 457, 531, 0, 10,
2003  0, 459, 458, 447, 519, 449, 448, 451, 450, 443,
2004  444, 409, 410, 460, 461, 0, 0, 0, 0, 272,
2005  544, 544, 78, 288, 0, 0, 0, 0, 0, 0,
2006  423, 0, 0, 0, 3, 529, 6, 9, 27, 39,
2007  42, 50, 49, 0, 66, 0, 70, 80, 0, 47,
2008  229, 0, 51, 286, 260, 261, 262, 263, 264, 407,
2009  406, 432, 408, 405, 453, 0, 265, 266, 248, 5,
2010  8, 315, 316, 279, 282, 387, 0, 102, 103, 0,
2011  0, 0, 0, 105, 0, 319, 0, 453, 266, 0,
2012  308, 156, 166, 157, 179, 153, 172, 162, 161, 182,
2013  183, 177, 160, 159, 155, 180, 184, 185, 164, 154,
2014  167, 171, 173, 165, 158, 174, 181, 176, 175, 168,
2015  178, 163, 152, 170, 169, 151, 149, 150, 146, 147,
2016  148, 107, 109, 108, 141, 142, 138, 120, 121, 122,
2017  129, 126, 128, 123, 124, 143, 144, 130, 131, 135,
2018  125, 127, 117, 118, 119, 132, 133, 134, 136, 137,
2019  139, 140, 145, 509, 310, 110, 111, 508, 0, 175,
2020  168, 178, 163, 146, 147, 107, 108, 0, 112, 114,
2021  20, 113, 0, 0, 48, 0, 0, 0, 453, 0,
2022  266, 0, 538, 540, 529, 0, 542, 539, 530, 0,
2023  0, 0, 330, 329, 0, 0, 453, 266, 0, 0,
2024  0, 0, 243, 230, 253, 64, 247, 544, 544, 513,
2025  65, 63, 531, 62, 0, 544, 386, 61, 531, 0,
2026  532, 18, 0, 0, 207, 0, 208, 276, 0, 0,
2027  0, 529, 15, 531, 68, 14, 270, 531, 0, 535,
2028  535, 231, 0, 0, 535, 511, 0, 0, 76, 0,
2029  86, 93, 482, 437, 436, 438, 439, 0, 435, 434,
2030  421, 416, 415, 418, 0, 413, 430, 0, 441, 0,
2031  411, 0, 419, 0, 445, 446, 46, 222, 223, 4,
2032  530, 0, 0, 0, 0, 0, 0, 0, 374, 376,
2033  0, 82, 0, 74, 71, 0, 0, 0, 0, 0,
2034  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2035  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2036  0, 0, 0, 544, 0, 528, 527, 0, 391, 389,
2037  287, 0, 0, 380, 55, 285, 305, 102, 103, 104,
2038  445, 446, 0, 463, 303, 462, 0, 544, 0, 0,
2039  0, 482, 312, 0, 115, 0, 544, 276, 321, 0,
2040  320, 0, 0, 544, 0, 0, 0, 0, 544, 0,
2041  0, 0, 543, 0, 0, 276, 0, 544, 0, 300,
2042  516, 254, 250, 0, 0, 244, 252, 0, 245, 531,
2043  0, 281, 249, 531, 239, 544, 544, 238, 531, 284,
2044  45, 0, 0, 0, 0, 0, 0, 17, 531, 274,
2045  13, 530, 67, 531, 273, 277, 537, 232, 536, 537,
2046  234, 278, 512, 92, 84, 0, 79, 0, 0, 544,
2047  0, 488, 485, 484, 483, 486, 0, 500, 504, 503,
2048  499, 482, 0, 371, 487, 489, 491, 544, 497, 544,
2049  502, 544, 0, 481, 440, 0, 0, 422, 414, 431,
2050  442, 412, 420, 0, 0, 7, 21, 22, 23, 24,
2051  25, 43, 44, 544, 0, 28, 37, 0, 38, 531,
2052  0, 72, 83, 41, 40, 0, 186, 253, 36, 204,
2053  212, 217, 218, 219, 214, 216, 226, 227, 220, 221,
2054  197, 198, 224, 225, 531, 213, 215, 209, 210, 211,
2055  199, 200, 201, 202, 203, 520, 525, 521, 526, 385,
2056  248, 383, 531, 520, 522, 521, 523, 384, 248, 520,
2057  521, 248, 544, 544, 29, 188, 35, 196, 53, 56,
2058  0, 465, 0, 0, 102, 103, 106, 0, 531, 544,
2059  0, 531, 482, 0, 0, 0, 0, 269, 544, 544,
2060  397, 544, 322, 186, 524, 521, 531, 520, 521, 544,
2061  428, 0, 541, 425, 426, 424, 0, 0, 299, 324,
2062  293, 323, 296, 524, 275, 531, 520, 521, 0, 515,
2063  0, 255, 251, 544, 514, 280, 533, 235, 240, 242,
2064  283, 19, 0, 26, 195, 69, 16, 271, 535, 85,
2065  77, 89, 91, 531, 520, 521, 0, 488, 0, 342,
2066  333, 335, 531, 331, 531, 0, 0, 289, 0, 474,
2067  507, 0, 477, 501, 0, 479, 505, 433, 0, 205,
2068  206, 362, 531, 0, 360, 359, 259, 0, 81, 75,
2069  0, 0, 0, 0, 0, 0, 382, 59, 0, 388,
2070  0, 0, 237, 381, 57, 236, 377, 52, 0, 0,
2071  0, 544, 306, 0, 0, 388, 309, 510, 531, 0,
2072  467, 313, 116, 398, 399, 544, 400, 0, 544, 327,
2073  0, 0, 325, 0, 0, 388, 0, 0, 0, 429,
2074  427, 298, 0, 0, 0, 0, 388, 0, 256, 246,
2075  544, 11, 233, 87, 493, 531, 0, 340, 0, 490,
2076  0, 364, 0, 0, 492, 544, 544, 506, 544, 498,
2077  544, 544, 417, 488, 531, 0, 544, 495, 544, 544,
2078  358, 0, 0, 257, 73, 187, 0, 34, 193, 33,
2079  194, 60, 534, 0, 31, 191, 32, 192, 58, 378,
2080  379, 0, 0, 189, 0, 0, 464, 304, 466, 311,
2081  482, 0, 0, 402, 328, 0, 12, 404, 0, 290,
2082  0, 291, 255, 544, 0, 0, 301, 241, 332, 343,
2083  0, 338, 334, 370, 0, 373, 372, 0, 470, 0,
2084  472, 0, 478, 0, 475, 480, 0, 0, 361, 349,
2085  351, 0, 354, 0, 356, 375, 258, 228, 30, 190,
2086  392, 390, 0, 0, 0, 0, 401, 0, 94, 101,
2087  0, 403, 0, 394, 395, 393, 294, 297, 0, 0,
2088  341, 0, 336, 368, 531, 366, 369, 544, 544, 544,
2089  544, 0, 494, 363, 544, 544, 544, 496, 544, 544,
2090  54, 307, 0, 100, 0, 544, 0, 544, 544, 0,
2091  339, 0, 0, 365, 471, 0, 468, 473, 476, 276,
2092  0, 0, 346, 0, 348, 355, 0, 352, 357, 314,
2093  524, 99, 531, 520, 521, 396, 326, 302, 337, 367,
2094  544, 524, 275, 544, 544, 544, 544, 388, 469, 347,
2095  0, 344, 350, 353, 544, 345
2096 };
2097 
2098 /* YYDEFGOTO[NTERM-NUM]. */
2099 static const yytype_int16 yydefgoto[] =
2100 {
2101  -1, 1, 2, 64, 65, 66, 262, 395, 396, 271,
2102  272, 441, 68, 69, 215, 70, 71, 579, 711, 72,
2103  73, 273, 74, 75, 76, 466, 77, 216, 113, 114,
2104  208, 209, 210, 596, 195, 196, 79, 244, 278, 559,
2105  703, 433, 434, 253, 254, 246, 425, 435, 518, 80,
2106  212, 453, 277, 292, 229, 744, 230, 745, 628, 878,
2107  583, 580, 805, 389, 391, 595, 810, 265, 399, 620,
2108  731, 732, 235, 660, 661, 662, 774, 683, 684, 760,
2109  884, 885, 482, 667, 329, 513, 82, 83, 375, 573,
2110  572, 411, 875, 599, 725, 812, 816, 84, 85, 611,
2111  305, 496, 86, 87, 88, 612, 613, 614, 89, 90,
2112  91, 299, 92, 93, 218, 219, 96, 220, 384, 582,
2113  593, 594, 484, 485, 486, 487, 488, 777, 778, 489,
2114  490, 491, 492, 767, 669, 198, 390, 283, 436, 249,
2115  119, 587, 561, 367, 225, 430, 431, 699, 457, 400,
2116  260, 408, 228, 275
2117 };
2118 
2119 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2120  STATE-NUM. */
2121 #define YYPACT_NINF -745
2122 static const yytype_int16 yypact[] =
2123 {
2124  -745, 109, 2594, -745, 7293, 9101, 9428, 5731, 6790, -745,
2125  8762, 8762, 5204, -745, -745, 9210, 7519, 7519, -745, -745,
2126  7519, 3298, 2863, -745, -745, -745, -745, -13, 6790, -745,
2127  1, -745, -745, 5862, 3008, -745, -745, 5993, -745, -745,
2128  -745, -745, -745, -745, -745, 8875, 8875, 94, 4515, 8762,
2129  7745, 8084, 7061, -745, 6504, 671, 707, 751, 771, 314,
2130  -745, 125, 8988, 8875, -745, 189, -745, 905, -745, 491,
2131  -745, -745, 124, 67, -745, 43, 9319, -745, 99, 2845,
2132  228, 271, 24, 76, -745, -745, -745, -745, -745, -745,
2133  -745, -745, -745, -745, 392, 86, -745, 436, 63, -745,
2134  -745, -745, -745, -745, 102, 123, 168, 328, 418, 8762,
2135  104, 4665, 283, -745, 160, -745, 278, -745, -745, 63,
2136  -745, -745, -745, -745, -745, -745, -745, -745, -745, -745,
2137  -745, -745, -745, -745, -745, -745, -745, -745, -745, -745,
2138  -745, -745, -745, -745, -745, -745, -745, -745, 56, 59,
2139  214, 234, -745, -745, -745, -745, -745, -745, 260, 274,
2140  -745, 292, -745, 295, -745, -745, -745, -745, -745, -745,
2141  -745, -745, -745, -745, -745, -745, -745, -745, -745, -745,
2142  -745, -745, -745, -745, -745, -745, -745, -745, -745, -745,
2143  -745, -745, -745, -745, -745, -745, -745, -745, 24, -745,
2144  -745, -745, -745, -745, -745, -745, -745, 6647, -745, -745,
2145  93, -745, 3682, 150, 491, 92, 218, 284, 49, 237,
2146  75, 92, -745, -745, 189, 332, -745, -745, 235, 8762,
2147  8762, 312, -745, -745, 304, 364, 88, 95, 8875, 8875,
2148  8875, 8875, -745, 2845, 300, -745, -745, 261, 266, -745,
2149  -745, -745, 5091, -745, 7519, 7519, -745, -745, 5339, 8762,
2150  -745, -745, 279, 4815, -745, 330, 370, 472, 7406, 4515,
2151  301, 189, 905, 308, 338, -745, 491, 308, 315, 19,
2152  145, -745, 300, 324, 145, -745, 421, 9537, 334, 354,
2153  373, 378, 745, -745, -745, -745, -745, 939, -745, -745,
2154  -745, -745, -745, -745, 696, -745, -745, 943, -745, 961,
2155  -745, 971, -745, 388, 409, 415, -745, -745, -745, -745,
2156  5452, 8762, 8762, 8762, 8762, 7406, 8762, 8762, -745, -745,
2157  8197, -745, 4515, 7177, 357, 8197, 8875, 8875, 8875, 8875,
2158  8875, 8875, 8875, 8875, 8875, 8875, 8875, 8875, 8875, 8875,
2159  8875, 8875, 8875, 8875, 8875, 8875, 8875, 8875, 8875, 8875,
2160  8875, 8875, 2206, 7519, 9814, -745, -745, 10750, -745, -745,
2161  -745, 8988, 8988, -745, 395, -745, 491, -745, 381, -745,
2162  -745, -745, 189, -745, -745, -745, 9892, 7519, 9970, 3682,
2163  8762, 875, -745, 441, -745, 503, 523, 91, -745, 3823,
2164  520, 8875, 10048, 7519, 10126, 8875, 8875, 4095, 802, 332,
2165  8310, 525, -745, 51, 51, 110, 10204, 7519, 10282, -745,
2166  -745, -745, -745, 8875, 7632, -745, -745, 7858, -745, 308,
2167  408, -745, -745, 308, -745, 424, 428, -745, 90, -745,
2168  -745, 6790, 4230, 442, 10048, 10126, 8875, 905, 308, -745,
2169  -745, 5584, 445, 308, -745, -745, 7971, -745, -745, 8084,
2170  -745, -745, -745, 381, 43, 9537, -745, 9537, 10360, 7519,
2171  10438, 446, -745, -745, -745, -745, 1004, -745, -745, -745,
2172  -745, 986, 58, -745, -745, -745, -745, 459, -745, 462,
2173  539, 478, 582, -745, -745, 567, 4815, -745, -745, -745,
2174  -745, -745, -745, 8875, 8875, -745, -745, -745, -745, -745,
2175  -745, -745, -745, 55, 8875, -745, 490, 494, -745, 308,
2176  9537, 499, -745, -745, -745, 533, 1174, -745, -745, 370,
2177  1773, 1773, 1773, 1773, 837, 837, 1845, 2028, 1773, 1773,
2178  2990, 2990, 558, 558, 2700, 837, 837, 752, 752, 812,
2179  385, 385, 370, 370, 370, 3443, 6242, 3532, 6360, -745,
2180  123, -745, 308, 580, -745, 584, -745, -745, 3153, -745,
2181  -745, 1199, 55, 55, -745, 1283, -745, 2845, -745, -745,
2182  189, -745, 8762, 3682, 579, 48, -745, 123, 308, 123,
2183  637, 90, 986, 3682, 189, 6933, 6790, -745, 8423, 634,
2184  -745, 563, -745, 2099, 6124, 2718, 308, 412, 432, 634,
2185  -745, 853, -745, 802, -745, -745, 642, 79, -745, -745,
2186  -745, -745, -745, 139, 219, 308, 120, 128, 8762, -745,
2187  8875, 300, -745, 266, -745, -745, -745, -745, 7632, 7858,
2188  -745, -745, 512, -745, 2845, 30, 905, -745, 145, 357,
2189  -745, 579, 48, 308, 35, 45, 8875, -745, 1004, 647,
2190  -745, 510, 308, -745, 308, 4956, 4815, -745, 986, -745,
2191  -745, 986, -745, -745, 1095, -745, -745, -745, 514, 370,
2192  370, -745, 734, 4956, -745, -745, 517, 8536, -745, -745,
2193  9537, 8988, 8875, 547, 8988, 8988, -745, 395, 516, 598,
2194  8988, 8988, -745, -745, 395, -745, 76, 124, 4956, 4815,
2195  8875, 55, -745, 189, 658, -745, -745, -745, 308, 659,
2196  -745, -745, -745, 490, -745, 585, -745, 4380, 662, -745,
2197  8762, 663, -745, 8875, 8875, 454, 8875, 8875, 675, -745,
2198  -745, -745, 8649, 3959, 4956, 4956, 147, 51, -745, -745,
2199  542, -745, -745, 348, -745, 308, 1135, 545, 1076, -745,
2200  543, 550, 702, 565, -745, 569, 571, -745, 573, -745,
2201  574, 573, -745, 607, 308, 611, 587, -745, 593, 594,
2202  -745, 730, 8875, 599, -745, 2845, 8875, -745, 2845, -745,
2203  2845, -745, -745, 8988, -745, 2845, -745, 2845, -745, -745,
2204  -745, 735, 603, 2845, 4815, 3682, -745, -745, -745, -745,
2205  875, 9646, 92, -745, -745, 4956, -745, -745, 92, -745,
2206  8875, -745, -745, 196, 737, 740, -745, 7858, -745, 610,
2207  1135, 795, -745, -745, 1088, -745, -745, 986, -745, 1095,
2208  -745, 1095, -745, 1095, -745, -745, 9755, 633, -745, 1215,
2209  -745, 1215, -745, 1095, -745, -745, 612, 2845, -745, 2845,
2210  -745, -745, 621, 755, 3682, 712, -745, 396, 373, 378,
2211  3682, -745, 3823, -745, -745, -745, -745, -745, 4956, 1135,
2212  610, 1135, 629, -745, 333, -745, -745, 573, 631, 573,
2213  573, 723, 410, -745, 635, 639, 573, -745, 648, 573,
2214  -745, -745, 776, 381, 10516, 7519, 10594, 523, 563, 784,
2215  610, 1135, 1088, -745, -745, 1095, -745, -745, -745, -745,
2216  10672, 1215, -745, 1095, -745, -745, 1095, -745, -745, -745,
2217  113, 48, 308, 129, 138, -745, -745, -745, 610, -745,
2218  573, 656, 660, 573, 667, 573, 573, 185, -745, -745,
2219  1095, -745, -745, -745, 573, -745
2220 };
2221 
2222 /* YYPGOTO[NTERM-NUM]. */
2223 static const yytype_int16 yypgoto[] =
2224 {
2225  -745, -745, -745, 375, -745, 32, -745, -350, 285, -745,
2226  61, -745, -318, -3, 22, -59, -745, -582, -745, -5,
2227  797, -146, 28, -63, -236, -424, -27, 1718, -79, 814,
2228  7, -12, -745, -745, -248, -745, 1213, 681, -745, 5,
2229  253, -323, 101, 77, -745, -403, -243, 21, -283, 14,
2230  -745, -745, -745, -745, -745, -745, -745, -745, -745, -745,
2231  -745, -745, -745, -745, -745, -745, -745, 288, -217, -359,
2232  -81, -537, -745, -672, -673, 170, -745, -443, -745, -603,
2233  -745, -83, -745, -745, 133, -745, -745, -745, -82, -745,
2234  -745, -391, -745, -76, -745, -745, -745, -745, -745, 1009,
2235  -216, -745, -745, -745, -745, -745, -745, 232, -745, -745,
2236  2, -745, -745, -745, 1319, 1671, 840, 1691, -745, -745,
2237  42, -264, -734, -165, -567, 148, -618, -744, 4, 188,
2238  -745, -141, -745, -260, 1306, -745, -745, -745, 6, -382,
2239  793, -320, -745, 665, 10, -25, -223, -521, -211, -6,
2240  46, -745, 9, -2
2241 };
2242 
2243 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
2244  positive, shift that token. If negative, reduce the rule which
2245  number is the opposite. If YYTABLE_NINF, syntax error. */
2246 #define YYTABLE_NINF -545
2247 static const yytype_int16 yytable[] =
2248 {
2249  99, 370, 259, 316, 407, 428, 226, 214, 214, 214,
2250  211, 242, 242, 334, 194, 242, 261, 523, 616, 115,
2251  115, 632, 248, 248, 632, 288, 248, 256, 483, 115,
2252  211, 379, 493, 221, 224, 439, 100, 247, 247, 590,
2253  562, 247, 560, 650, 568, 634, 276, 571, 281, 285,
2254  452, 465, 528, 769, 454, 622, 280, 284, 227, 226,
2255  -88, 298, 728, 67, 588, 67, 115, 715, 589, 460,
2256  -90, 279, 738, 462, 320, 319, 274, 634, 619, 775,
2257  606, 495, 560, 829, 568, 735, 832, 665, 498, 368,
2258  115, 498, 398, 498, 625, 498, 689, 498, 589, 257,
2259  886, 764, 368, 373, 746, 398, 376, 897, 385, 3,
2260  256, 227, 365, -94, 558, 791, 566, 245, 250, 566,
2261  -101, 251, 798, 448, 373, 589, -97, 326, 327, 708,
2262  709, 493, 753, 258, 681, -100, -275, 223, 558, -452,
2263  566, 263, -96, -67, -455, -96, 653, -454, -88, 267,
2264  589, -98, 328, -98, 558, 377, 566, 880, -90, 378,
2265  227, 382, -94, 456, -97, 406, 666, 366, 558, 223,
2266  566, 847, -95, 682, -81, 374, 371, 897, 886, -88,
2267  330, 446, -88, 314, 315, -88, 519, 331, -101, -90,
2268  -275, -275, -90, 428, -521, -90, 558, 566, -95, -455,
2269  222, 223, -454, 369, -100, 397, 635, 832, 910, 255,
2270  637, 727, 335, 410, 298, 640, 369, 664, 226, 769,
2271  558, 493, 566, 742, 464, 645, 214, 214, 222, 223,
2272  647, 465, -86, 714, 409, 632, 632, 394, 938, -93,
2273  223, 222, 223, 719, -99, 426, 426, 242, 252, 242,
2274  242, 413, 414, 437, -92, 438, 440, 634, 248, -520,
2275  248, 227, -97, -97, -88, 226, 784, 227, 804, 255,
2276  227, 515, -90, 247, 764, 247, 524, 383, -96, -96,
2277  451, 450, 764, -89, 465, -520, 873, -98, -98, 459,
2278  81, -87, 81, 116, 116, 223, 688, 274, 217, 217,
2279  217, 115, -456, 234, 217, 217, 521, 586, 217, 222,
2280  223, 663, 574, 576, 258, 724, -319, 227, 214, 214,
2281  214, 214, -457, 511, 512, 458, 458, 405, 718, 447,
2282  458, 401, 493, 270, -95, -95, 81, 217, 222, 223,
2283  289, 380, 381, 506, 507, 508, 509, 115, -459, 410,
2284  217, 517, 505, 429, -517, 432, 517, -456, 242, 362,
2285  274, 437, -458, -91, 289, -521, 386, 415, 717, 567,
2286  -319, -319, 402, 523, -388, 312, 581, -457, 301, 302,
2287  -447, 67, 242, -451, 412, 437, 510, 591, 826, 419,
2288  749, 423, 416, 567, 600, 498, 270, 217, 242, 81,
2289  743, 437, 649, -459, 464, 424, 615, 621, 621, 567,
2290  427, 947, 242, 363, 364, 437, -447, -458, 444, 442,
2291  387, 388, 780, 567, 632, 303, 403, 404, 227, 641,
2292  633, 617, 874, 426, 426, -447, -388, 752, -451, 759,
2293  99, 336, 468, 211, -518, 634, 417, 418, 449, 502,
2294  567, -66, 301, 302, 465, 863, 336, 464, 223, 227,
2295  227, -453, 648, 455, 242, 461, -266, 437, -517, -276,
2296  -447, -447, 403, 445, -517, 567, 463, 912, 467, 115,
2297  503, 115, -452, 223, 904, 670, 504, 670, -388, 670,
2298  -388, -388, 578, 663, 757, 808, 469, 470, 920, 303,
2299  81, 522, 736, 67, 494, -94, -451, 749, 359, 360,
2300  361, 685, 646, 597, 902, -453, -453, 217, 217, 693,
2301  -266, -266, 737, -276, -276, -96, 372, 766, 326, 327,
2302  770, 598, 828, 602, 115, 618, -86, 698, 905, 906,
2303  217, 779, 217, 217, 820, -98, 217, 217, 443, -101,
2304  493, 81, 387, 388, 270, 636, 81, 81, -518, 656,
2305  -451, -451, 446, 698, -518, 696, 705, -95, 638, 705,
2306  685, 685, 639, 702, 712, 289, 702, 730, 727, 214,
2307  -93, 698, 932, 643, 722, -100, 589, 705, 720, -81,
2308  673, 663, 696, 663, 702, 870, 726, 729, 211, 729,
2309  698, 872, 721, 668, 713, -524, 671, 729, 81, 217,
2310  217, 217, 217, 81, 217, 217, -92, 270, 217, 517,
2311  81, 289, 674, 217, 799, 214, 227, 464, 698, 336,
2312  677, 426, 524, 676, -253, 787, 789, 697, 687, 761,
2313  227, 794, 796, 690, 750, 704, 691, 716, 707, 727,
2314  747, 217, 741, 751, 758, 772, 558, 761, 566, 217,
2315  217, -254, 786, 227, 792, 663, 882, -524, 807, 809,
2316  700, 815, 558, 819, 701, 217, 811, 81, 217, 357,
2317  358, 359, 360, 361, 601, 821, 827, 81, 793, 830,
2318  833, 217, 609, -96, 458, 81, 888, -98, 657, 834,
2319  472, 473, 474, 475, 115, 217, 836, 806, 895, 685,
2320  898, -95, 835, 837, 663, 839, 663, 841, 843, -524,
2321  846, -524, -524, 813, -88, -520, 817, 214, -90, 848,
2322  81, 849, 282, 300, 858, 301, 302, 851, 853, 81,
2323  855, 621, -87, -255, 861, 860, 663, 876, 426, 761,
2324  877, 893, 818, 289, 879, 289, -256, 217, 497, 227,
2325  301, 302, 900, 670, 670, 901, 670, 903, 670, 670,
2326  306, 301, 302, 911, 670, 915, 670, 670, 919, 921,
2327  944, 678, 303, 923, 81, 773, 929, 472, 473, 474,
2328  475, 756, 926, 227, 937, 98, 471, 98, 472, 473,
2329  474, 475, -520, 98, 98, 98, -521, 303, 289, 98,
2330  98, 950, 232, 98, 308, 301, 302, 642, 303, 768,
2331  120, 729, 771, 336, 706, 115, 476, 936, 755, 939,
2332  776, 935, 477, 478, 310, 301, 302, 476, 349, 350,
2333  800, 98, 98, 477, 478, 740, 657, 197, 472, 473,
2334  474, 475, 864, 894, 479, 98, 765, 480, 227, 913,
2335  115, 0, 303, 392, 227, 479, 301, 302, 480, 0,
2336  217, 81, 356, 357, 358, 359, 360, 361, 0, 0,
2337  0, 81, 303, 336, 223, 670, 670, 670, 670, 0,
2338  0, 481, 670, 670, 670, 0, 670, 670, 349, 350,
2339  242, 0, 98, 437, 98, 600, 729, 698, 336, 0,
2340  0, 567, 610, 303, 0, 0, 217, 301, 302, 420,
2341  421, 422, 0, 349, 350, 0, 471, 0, 472, 473,
2342  474, 475, 0, 357, 358, 359, 360, 361, 670, 881,
2343  0, 670, 670, 670, 670, 321, 322, 323, 324, 325,
2344  762, 763, 670, 81, 81, 354, 355, 356, 357, 358,
2345  359, 360, 361, 739, 303, 0, 0, 476, 781, 0,
2346  0, 81, 0, 477, 478, 0, 0, 0, 289, 217,
2347  0, 0, 217, 217, 0, 887, 0, 889, 217, 217,
2348  0, 890, 0, 801, 802, 479, 81, 81, 480, 896,
2349  0, 899, 494, 301, 302, 98, 499, 301, 302, 0,
2350  0, 516, 814, 0, 0, 81, 527, 0, 217, 0,
2351  0, 592, 98, 98, 500, 301, 302, 0, 823, 824,
2352  825, 81, 81, 81, 501, 301, 302, 471, 0, 472,
2353  473, 474, 475, 0, 0, 98, 0, 98, 98, 0,
2354  303, 98, 98, 0, 303, 657, 98, 472, 473, 474,
2355  475, 98, 98, 940, 304, 307, 309, 311, 313, 943,
2356  0, 945, 303, 0, 946, 0, 0, 0, 476, 0,
2357  0, 217, 303, 0, 477, 478, 0, 0, 0, 862,
2358  0, 527, 81, 81, 0, 0, 658, 0, 954, 867,
2359  871, 0, 659, 81, 629, 631, 479, 0, 282, 480,
2360  0, 0, 0, 98, 98, 98, 98, 98, 98, 98,
2361  98, 0, 0, 98, 0, 98, 0, 657, 98, 472,
2362  473, 474, 475, 0, 892, 0, 0, 631, 0, 883,
2363  282, 472, 473, 474, 475, 0, 657, 0, 472, 473,
2364  474, 475, 81, 0, 0, 907, 98, 908, 81, 0,
2365  81, 0, 0, 909, 98, 98, 81, 0, 658, 0,
2366  0, 0, 0, 0, 831, 0, 0, 0, 0, 0,
2367  98, 0, 98, 98, 0, 0, 657, 476, 472, 473,
2368  474, 475, 98, 217, 478, 686, 98, 0, 0, -544,
2369  98, 0, 0, 0, 0, 0, 0, -544, -544, -544,
2370  98, 0, -544, -544, -544, 479, -544, 0, 692, 0,
2371  0, 0, 0, 0, 0, -544, -544, 658, 0, 243,
2372  243, 0, 0, 243, 0, 98, -544, -544, 0, -544,
2373  -544, -544, -544, -544, 98, 336, 337, 338, 339, 340,
2374  341, 342, 343, 344, 345, 346, 347, 348, 264, 266,
2375  349, 350, 98, 243, 243, 0, 773, 0, 472, 473,
2376  474, 475, 0, 0, 0, 317, 318, 0, 0, 723,
2377  0, 0, 0, 0, 0, 0, 0, -544, 351, 98,
2378  352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
2379  0, 0, 0, 0, 0, 0, 0, 476, 0, 0,
2380  0, 748, 0, 477, 478, 0, 0, 0, -230, 631,
2381  282, 94, 0, 94, 117, 117, 117, 710, 0, 0,
2382  0, 0, 0, 0, 236, 479, 0, 754, 480, -544,
2383  -544, 0, -544, 0, 0, 255, -544, 0, -544, -544,
2384  0, 0, 0, 0, 336, 337, 338, 339, 340, 341,
2385  342, 343, 344, 345, 346, 347, 348, 94, 783, 349,
2386  350, 290, 0, 0, 0, 98, 98, 0, 0, 0,
2387  0, 0, 0, 0, 0, 0, 98, 0, 0, 0,
2388  0, 0, 0, 0, 0, 290, 0, 351, 0, 352,
2389  353, 354, 355, 356, 357, 358, 359, 360, 361, 0,
2390  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2391  0, 98, 0, 822, 0, 0, 0, 0, 0, 0,
2392  94, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2393  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2394  0, 243, 243, 243, 317, 0, 0, 0, 98, 98,
2395  0, 0, 0, 856, 0, 243, 0, 243, 243, 0,
2396  0, 0, 0, 0, 0, 0, 98, 0, 0, 0,
2397  0, 0, 0, 0, 98, 0, 0, 98, 98, 0,
2398  0, 0, 0, 98, 98, 0, 0, 0, 0, 0,
2399  0, 98, 98, 0, 0, 0, 0, 0, 282, 0,
2400  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2401  98, 0, 0, 98, 0, 0, 0, 0, 0, 0,
2402  0, 94, 0, 0, 0, 0, 98, 98, 98, 0,
2403  0, 0, 0, 243, 0, 0, 0, 0, 526, 529,
2404  530, 531, 532, 533, 534, 535, 536, 537, 538, 539,
2405  540, 541, 542, 543, 544, 545, 546, 547, 548, 549,
2406  550, 551, 552, 553, 554, 0, 243, 0, 0, 0,
2407  0, 0, 94, 0, 575, 577, 98, 94, 94, 0,
2408  0, 0, 0, 0, 0, 0, 0, 98, 98, 0,
2409  243, 0, 0, 0, 0, 0, 290, 0, 98, 0,
2410  0, 0, 0, 0, 603, 0, 243, 0, 575, 577,
2411  0, 0, 0, 243, 0, 0, 0, 0, 0, 0,
2412  243, 0, 0, 0, 0, 0, 243, 243, 0, 94,
2413  243, 0, 0, 0, 94, 0, 0, 0, 0, 0,
2414  0, 94, 290, 0, 0, 0, 0, 98, 0, 644,
2415  0, 0, 0, 98, 0, 98, 0, 0, 0, 243,
2416  0, 98, 243, 95, 0, 95, 0, 0, 0, 0,
2417  0, 0, 243, 0, 0, 0, 0, 0, 0, 0,
2418  0, 0, 0, 97, 0, 97, 118, 118, 98, 0,
2419  0, 0, 0, 0, 0, 0, 237, 0, 94, 0,
2420  0, 0, 0, 0, 0, 0, 679, 680, 94, 95,
2421  78, 0, 78, 0, 0, 0, 94, 243, 0, 0,
2422  0, 0, 0, 233, 0, 0, 0, 0, 0, 97,
2423  0, 0, 0, 291, 0, 0, 0, 0, 0, 0,
2424  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2425  0, 94, 0, 0, 0, 0, 78, 291, 0, 0,
2426  94, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2427  0, 0, 95, 0, 290, 0, 290, 0, 0, 0,
2428  0, 0, 0, 0, 0, 672, 0, 675, 0, 0,
2429  0, 0, 97, 0, 0, 0, 0, 0, 0, 0,
2430  0, 243, 0, 0, 0, 94, 0, 0, 0, 0,
2431  0, 0, 0, 0, 0, 0, 0, 0, 0, 78,
2432  0, 0, 0, 0, 0, 0, 0, 0, 0, 290,
2433  0, 0, 0, 243, 336, -545, -545, -545, -545, 341,
2434  342, 243, 243, -545, -545, 0, 0, 0, 0, 349,
2435  350, 0, 0, 0, 0, 0, 0, 0, 0, 243,
2436  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2437  0, 0, 0, 95, 0, 0, 0, 0, 0, 352,
2438  353, 354, 355, 356, 357, 358, 359, 360, 361, 0,
2439  243, 0, 94, 97, 603, 785, 0, 788, 790, 0,
2440  0, 0, 94, 795, 797, 0, 336, 337, 338, 339,
2441  340, 341, 342, 803, 0, 345, 346, 0, 0, 0,
2442  78, 349, 350, 0, 95, 0, 0, 0, 0, 95,
2443  95, 0, 0, 0, 0, 0, 788, 790, 0, 795,
2444  797, 0, 0, 0, 97, 243, 0, 0, 0, 97,
2445  97, 352, 353, 354, 355, 356, 357, 358, 359, 360,
2446  361, 0, 0, 0, 0, 0, 0, 0, 291, 0,
2447  0, 78, 0, 0, 94, 94, 78, 78, 0, 0,
2448  0, 95, 0, 0, 0, 243, 95, 0, 0, 857,
2449  0, 0, 94, 95, 0, 0, 859, 0, 0, 290,
2450  0, 97, 0, 0, 0, 0, 97, 0, 0, 0,
2451  0, 0, 0, 97, 291, 0, 0, 94, 94, 0,
2452  0, 0, 0, 859, 0, 0, 0, 0, 78, 0,
2453  243, 0, 0, 78, 0, 0, 94, 0, 0, 0,
2454  78, 0, 0, 525, 0, 0, 0, 0, 0, 0,
2455  95, 0, 94, 94, 94, 0, 0, 0, 0, 0,
2456  95, 838, 840, 0, 842, 0, 844, 845, 95, 0,
2457  97, 0, 850, 0, 852, 854, 0, 0, 0, 0,
2458  97, 0, 0, 0, 0, 0, 0, 0, 97, 336,
2459  337, 338, 339, 340, 341, 342, 343, 78, 345, 346,
2460  0, 0, 0, 95, 349, 350, 0, 78, 243, 0,
2461  0, 0, 95, 94, 94, 78, 0, 0, 0, 0,
2462  868, 0, 0, 97, 94, 0, 0, 0, 0, 0,
2463  0, 0, 97, 692, 352, 353, 354, 355, 356, 357,
2464  358, 359, 360, 361, 0, 0, 291, 0, 291, 0,
2465  78, 0, 0, 0, 0, 117, 0, 95, 0, 78,
2466  336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2467  346, 347, 348, 94, 0, 349, 350, 97, 0, 94,
2468  0, 94, 0, 914, 916, 917, 918, 94, 0, 0,
2469  922, 924, 925, 0, 927, 928, 0, 0, 0, 0,
2470  0, 291, 0, 351, 78, 352, 353, 354, 355, 356,
2471  357, 358, 359, 360, 361, 0, 0, 0, 0, 0,
2472  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2473  0, 0, 0, 0, 0, 0, 948, 0, 0, 949,
2474  951, 952, 953, 0, 95, 0, 0, 555, 556, 0,
2475  955, 557, 0, 0, 95, 0, 0, 0, 0, 0,
2476  0, 0, 0, 0, 97, 164, 165, 166, 167, 168,
2477  169, 170, 171, 172, 97, 0, 173, 174, 0, 0,
2478  175, 176, 177, 178, 0, 0, 0, 0, 0, 0,
2479  0, 78, 0, 0, 179, 0, 0, 0, 0, 0,
2480  0, 78, 0, 0, 0, 0, 0, 0, 0, 0,
2481  0, 0, 180, 181, 182, 183, 184, 185, 186, 187,
2482  188, 189, 0, 190, 191, 0, 95, 95, 0, 0,
2483  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2484  0, 192, 255, 0, 95, 0, 97, 97, 0, 0,
2485  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2486  0, 0, 0, 0, 97, 0, 0, 0, 0, 95,
2487  95, 291, 0, 78, 78, 0, 0, 0, 0, 0,
2488  0, 0, 0, 0, 0, 0, 0, 0, 95, 97,
2489  97, 78, 0, 0, 0, 0, 0, 0, 0, 525,
2490  0, 0, 0, 0, 95, 95, 95, 0, 97, 0,
2491  0, 0, 0, 0, 0, 0, 78, 78, 0, 0,
2492  0, 0, 0, 0, 97, 97, 97, 0, 0, 0,
2493  0, 0, 0, 0, 0, 78, 0, 0, 0, 0,
2494  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2495  0, 78, 78, 78, 0, 0, 0, 0, 0, 0,
2496  0, 0, 0, 0, 0, 95, 95, 0, 0, 0,
2497  0, 0, 0, 0, 0, 0, 95, 0, 0, 0,
2498  0, 0, 0, 0, 0, 97, 97, 0, 0, 0,
2499  0, 0, 869, 0, 0, 0, 97, 0, 0, 0,
2500  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2501  0, 0, 78, 78, 0, 0, 0, 0, 0, 866,
2502  0, 0, 0, 78, 0, 95, 0, 118, 0, 0,
2503  0, 95, 0, 95, 0, 0, 0, 0, 0, 95,
2504  0, 0, 0, 0, 0, 97, 0, 0, 0, 0,
2505  0, 97, 0, 97, 0, 0, 0, 0, 0, 97,
2506  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2507  0, 0, 78, 0, 0, 0, 0, 0, 78, 0,
2508  78, 0, 0, 0, -544, 4, 78, 5, 6, 7,
2509  8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
2510  12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2511  0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2512  26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2513  29, 30, 31, 32, 0, 33, 34, 35, 36, 37,
2514  38, 0, 39, 40, 41, 0, 0, 42, 0, 0,
2515  43, 44, 0, 45, 46, 0, 0, 0, 0, 0,
2516  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2517  0, 0, 0, 47, 0, 0, 48, 49, 0, 50,
2518  51, 0, 52, 0, 53, 54, 55, 56, 57, 58,
2519  59, 0, 0, 60, 0, 0, 0, 0, 0, 0,
2520  0, 0, 0, 0, 0, 0, 0, 0, -275, 0,
2521  61, 62, 63, 0, 0, 0, -275, -275, -275, 0,
2522  0, -275, -275, -275, 0, -275, 0, 0, 0, 0,
2523  0, 0, 0, -544, -544, -275, -275, -275, 0, 0,
2524  0, 0, 0, 0, 0, -275, -275, 0, -275, -275,
2525  -275, -275, -275, 0, 0, 0, 0, 0, 0, 0,
2526  0, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2527  345, 346, 347, 348, 0, 0, 349, 350, 0, -275,
2528  -275, -275, -275, -275, -275, -275, -275, -275, -275, -275,
2529  -275, -275, 0, 0, -275, -275, -275, 0, 734, -275,
2530  0, 0, 0, 0, 351, -275, 352, 353, 354, 355,
2531  356, 357, 358, 359, 360, 361, -275, 0, 0, 0,
2532  0, -99, -275, -275, -275, -275, -275, -275, -275, -275,
2533  -275, -275, -275, -275, 0, 0, 0, 0, 0, 0,
2534  223, 0, 0, 0, 0, 0, 0, 0, 0, -275,
2535  -275, -275, -275, -387, 0, -275, -275, -275, -275, 0,
2536  0, -387, -387, -387, 0, 0, -387, -387, -387, 0,
2537  -387, 0, 0, 0, 0, 0, 0, 0, 0, -387,
2538  -387, -387, 0, 0, 0, 0, 0, 0, 0, 0,
2539  -387, -387, 0, -387, -387, -387, -387, -387, 0, 0,
2540  0, 0, 0, 0, 0, 0, 336, 337, 338, 339,
2541  340, 341, 342, 343, 344, 345, 346, 347, 348, 0,
2542  0, 349, 350, 0, -387, -387, -387, -387, -387, -387,
2543  -387, -387, -387, -387, -387, -387, -387, 0, 0, -387,
2544  -387, -387, 0, 0, -387, 0, 0, 0, 0, 351,
2545  -387, 352, 353, 354, 355, 356, 357, 358, 359, 360,
2546  361, 0, 0, 0, 0, 0, 0, -387, 0, -387,
2547  -387, -387, -387, -387, -387, -387, -387, -387, -387, 0,
2548  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2549  0, 0, 0, -387, -387, -387, -387, -387, -267, 255,
2550  -387, -387, -387, -387, 0, 0, -267, -267, -267, 0,
2551  0, -267, -267, -267, 0, -267, 0, 0, 0, 0,
2552  0, 0, 0, 0, 0, -267, -267, -267, 0, 0,
2553  0, 0, 0, 0, 0, -267, -267, 0, -267, -267,
2554  -267, -267, -267, 0, 0, 0, 0, 0, 0, 0,
2555  0, 336, 337, 338, 339, 340, 341, 342, 343, 344,
2556  345, 346, -545, -545, 0, 0, 349, 350, 0, -267,
2557  -267, -267, -267, -267, -267, -267, -267, -267, -267, -267,
2558  -267, -267, 0, 0, -267, -267, -267, 0, 0, -267,
2559  0, 0, 0, 0, 0, -267, 352, 353, 354, 355,
2560  356, 357, 358, 359, 360, 361, -267, 0, 0, 0,
2561  0, 0, -267, -267, -267, -267, -267, -267, -267, -267,
2562  -267, -267, -267, -267, 0, 0, 0, 0, 0, 0,
2563  0, 0, 0, 0, 0, 0, 0, 0, 0, -267,
2564  -267, -267, -267, -544, 0, -267, -267, -267, -267, 0,
2565  0, -544, -544, -544, 0, 0, -544, -544, -544, 0,
2566  -544, 0, 0, 0, 0, 0, 0, 0, 0, -544,
2567  -544, -544, 0, 0, 0, 0, 0, 0, 0, 0,
2568  -544, -544, 0, -544, -544, -544, -544, -544, 0, 0,
2569  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2570  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2571  0, 0, 0, 0, -544, -544, -544, -544, -544, -544,
2572  -544, -544, -544, -544, -544, -544, -544, 0, 0, -544,
2573  -544, -544, 0, 0, -544, 0, 0, 0, 0, 0,
2574  -544, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2575  0, 0, 0, 0, 0, 0, 0, -544, 0, -544,
2576  -544, -544, -544, -544, -544, -544, -544, -544, -544, 0,
2577  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2578  0, 0, 0, -544, -544, -544, -544, -544, -282, 255,
2579  -544, -544, -544, -544, 0, 0, -282, -282, -282, 0,
2580  0, -282, -282, -282, 0, -282, 0, 0, 0, 0,
2581  0, 0, 0, 0, 0, -282, -282, 0, 0, 0,
2582  0, 0, 0, 0, 0, -282, -282, 0, -282, -282,
2583  -282, -282, -282, 0, 0, 0, 0, 0, 0, 0,
2584  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2585  0, 0, 0, 0, 0, 0, 0, 0, 0, -282,
2586  -282, -282, -282, -282, -282, -282, -282, -282, -282, -282,
2587  -282, -282, 0, 0, -282, -282, -282, 0, 0, -282,
2588  0, 0, 0, 0, 0, -282, 0, 0, 0, 0,
2589  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2590  0, 0, -282, 0, -282, -282, -282, -282, -282, -282,
2591  -282, -282, -282, -282, 0, 0, 0, 0, 0, 0,
2592  0, 0, 0, 0, 0, 0, 0, 0, 0, -282,
2593  -282, -282, -282, -524, 252, -282, -282, -282, -282, 0,
2594  0, -524, -524, -524, 0, 0, 0, -524, -524, 0,
2595  -524, 0, 0, 0, 0, 0, 0, 0, 0, -524,
2596  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2597  -524, -524, 0, -524, -524, -524, -524, -524, 0, 0,
2598  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2599  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2600  0, 0, 0, 0, -524, -524, -524, -524, -524, -524,
2601  -524, -524, -524, -524, -524, -524, -524, 0, 0, -524,
2602  -524, -524, -275, 694, 0, 0, 0, 0, 0, 0,
2603  -275, -275, -275, 0, 0, 0, -275, -275, 0, -275,
2604  0, 0, 0, 0, 0, 0, -97, -524, 0, -524,
2605  -524, -524, -524, -524, -524, -524, -524, -524, -524, -275,
2606  -275, 0, -275, -275, -275, -275, -275, 0, 0, 0,
2607  0, 0, 0, -524, -524, -524, -524, -89, 0, 0,
2608  -524, 0, -524, -524, 0, 0, 0, 0, 0, 0,
2609  0, 0, 0, -275, -275, -275, -275, -275, -275, -275,
2610  -275, -275, -275, -275, -275, -275, 0, 0, -275, -275,
2611  -275, 0, 695, 0, 0, 0, 0, 0, 0, 0,
2612  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2613  0, 0, 0, 0, 0, -99, -275, 0, -275, -275,
2614  -275, -275, -275, -275, -275, -275, -275, -275, 0, 0,
2615  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2616  0, 0, 0, -275, -275, -275, -91, 0, 0, -275,
2617  0, -275, -275, 268, 0, 5, 6, 7, 8, 9,
2618  -544, -544, -544, 10, 11, 0, 0, -544, 12, 0,
2619  13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2620  0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2621  0, 27, 0, 0, 0, 0, 0, 28, 0, 30,
2622  31, 32, 0, 33, 34, 35, 36, 37, 38, 0,
2623  39, 40, 41, 0, 0, 42, 0, 0, 43, 44,
2624  0, 45, 46, 0, 0, 0, 0, 0, 0, 0,
2625  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2626  0, 47, 0, 0, 48, 49, 0, 50, 51, 0,
2627  52, 0, 53, 54, 55, 56, 57, 58, 59, 0,
2628  0, 60, 0, 0, 0, 0, 0, 0, 0, 0,
2629  0, 0, 0, 0, 0, 0, 0, 0, 61, 62,
2630  63, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2631  0, 0, 0, 0, 268, 0, 5, 6, 7, 8,
2632  9, -544, -544, -544, 10, 11, 0, -544, -544, 12,
2633  0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2634  0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2635  0, 0, 27, 0, 0, 0, 0, 0, 28, 0,
2636  30, 31, 32, 0, 33, 34, 35, 36, 37, 38,
2637  0, 39, 40, 41, 0, 0, 42, 0, 0, 43,
2638  44, 0, 45, 46, 0, 0, 0, 0, 0, 0,
2639  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2640  0, 0, 47, 0, 0, 48, 49, 0, 50, 51,
2641  0, 52, 0, 53, 54, 55, 56, 57, 58, 59,
2642  0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
2643  0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
2644  62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
2645  268, 0, 5, 6, 7, 8, 9, 0, 0, -544,
2646  10, 11, -544, -544, -544, 12, -544, 13, 14, 15,
2647  16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2648  21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2649  0, 0, 0, 0, 28, 0, 30, 31, 32, 0,
2650  33, 34, 35, 36, 37, 38, 0, 39, 40, 41,
2651  0, 0, 42, 0, 0, 43, 44, 0, 45, 46,
2652  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2653  0, 0, 0, 0, 0, 0, 0, 0, 47, 0,
2654  0, 48, 49, 0, 50, 51, 0, 52, 0, 53,
2655  54, 55, 56, 57, 58, 59, 0, 0, 60, 0,
2656  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2657  0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
2658  0, 0, 0, 0, 0, 0, 268, 0, 5, 6,
2659  7, 8, 9, 0, 0, -544, 10, 11, -544, -544,
2660  -544, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2661  0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2662  25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2663  28, 0, 30, 31, 32, 0, 33, 34, 35, 36,
2664  37, 38, 0, 39, 40, 41, 0, 0, 42, 0,
2665  0, 43, 44, 0, 45, 46, 0, 0, 0, 0,
2666  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2667  0, 0, 0, 0, 47, 0, 0, 48, 49, 0,
2668  50, 51, 0, 52, 0, 53, 54, 55, 56, 57,
2669  58, 59, 0, 0, 60, 0, 0, 0, 0, 0,
2670  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2671  0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
2672  0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
2673  0, 10, 11, 0, -544, -544, 12, 0, 13, 14,
2674  15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
2675  20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2676  0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
2677  0, 33, 34, 35, 36, 37, 38, 0, 39, 40,
2678  41, 0, 0, 42, 0, 0, 43, 44, 0, 45,
2679  46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2680  0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
2681  0, 0, 48, 49, 0, 50, 51, 0, 52, 0,
2682  53, 54, 55, 56, 57, 58, 59, 0, 0, 60,
2683  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2684  0, 0, 0, 0, 0, 0, 61, 62, 63, 0,
2685  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2686  0, -544, 0, 0, 0, 0, 0, 0, 0, -544,
2687  -544, 268, 0, 5, 6, 7, 8, 9, 0, -544,
2688  -544, 10, 11, 0, 0, 0, 12, 0, 13, 14,
2689  15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
2690  20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2691  0, 0, 0, 0, 0, 28, 0, 30, 31, 32,
2692  0, 33, 34, 35, 36, 37, 38, 0, 39, 40,
2693  41, 0, 0, 42, 0, 0, 43, 44, 0, 45,
2694  46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2695  0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
2696  0, 0, 48, 49, 0, 50, 51, 0, 52, 0,
2697  53, 54, 55, 56, 57, 58, 59, 0, 0, 60,
2698  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2699  0, 0, 0, 0, 0, 0, 61, 62, 63, 0,
2700  0, 0, 0, 0, 0, 0, 268, 0, 5, 6,
2701  7, 8, 9, 0, 0, 0, 10, 11, 0, -544,
2702  -544, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2703  0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2704  25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2705  28, 0, 30, 31, 32, 0, 33, 34, 35, 36,
2706  37, 38, 0, 39, 40, 41, 0, 0, 42, 0,
2707  0, 43, 44, 0, 45, 46, 0, 0, 0, 0,
2708  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2709  0, 0, 0, 0, 47, 0, 0, 269, 49, 0,
2710  50, 51, 0, 52, 0, 53, 54, 55, 56, 57,
2711  58, 59, 0, 0, 60, 0, 0, 0, 0, 0,
2712  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2713  0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
2714  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2715  0, 0, -544, 0, -544, -544, 268, 0, 5, 6,
2716  7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
2717  0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2718  0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2719  25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2720  28, 0, 30, 31, 32, 0, 33, 34, 35, 36,
2721  37, 38, 0, 39, 40, 41, 0, 0, 42, 0,
2722  0, 43, 44, 0, 45, 46, 0, 0, 0, 0,
2723  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2724  0, 0, 0, 0, 47, 0, 0, 48, 49, 0,
2725  50, 51, 0, 52, 0, 53, 54, 55, 56, 57,
2726  58, 59, 0, 0, 60, 0, 0, 0, 0, 0,
2727  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2728  0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
2729  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2730  0, 0, -544, 0, -544, -544, 268, 0, 5, 6,
2731  7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
2732  0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2733  0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2734  25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2735  28, 0, 30, 31, 32, 0, 33, 34, 35, 36,
2736  37, 38, 0, 39, 40, 41, 0, 0, 42, 0,
2737  0, 43, 44, 0, 45, 46, 0, 0, 0, 0,
2738  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2739  0, 0, 0, 0, 47, 0, 0, 48, 49, 0,
2740  50, 51, 0, 52, 0, 53, 54, 55, 56, 57,
2741  58, 59, 0, 0, 60, 0, 0, 0, 0, 0,
2742  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2743  0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
2744  0, 0, 0, 0, 0, 0, -544, 268, 0, 5,
2745  6, 7, 8, 9, -544, -544, -544, 10, 11, 0,
2746  0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
2747  19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
2748  24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2749  0, 28, 0, 30, 31, 32, 0, 33, 34, 35,
2750  36, 37, 38, 0, 39, 40, 41, 0, 0, 42,
2751  0, 0, 43, 44, 0, 45, 46, 0, 0, 0,
2752  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2753  0, 0, 0, 0, 0, 47, 0, 0, 48, 49,
2754  0, 50, 51, 0, 52, 0, 53, 54, 55, 56,
2755  57, 58, 59, 0, 0, 60, 0, 0, 0, 0,
2756  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2757  0, 0, 61, 62, 63, 0, 0, 0, 0, 0,
2758  0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2759  0, 0, 10, 11, 0, -544, -544, 12, 0, 13,
2760  14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
2761  0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2762  106, 0, 0, 0, 0, 0, 0, 0, 0, 31,
2763  32, 0, 33, 34, 35, 36, 37, 38, 238, 39,
2764  40, 41, 0, 0, 42, 0, 0, 43, 44, 0,
2765  45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
2766  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2767  213, 0, 0, 111, 49, 0, 50, 51, 0, 239,
2768  240, 53, 54, 55, 56, 57, 58, 59, 0, 0,
2769  60, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2770  0, 9, 0, 0, 0, 10, 11, 61, 241, 63,
2771  12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2772  0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2773  26, 223, 0, 27, 0, 0, 0, 0, 0, 0,
2774  0, 0, 31, 32, 0, 33, 34, 35, 36, 37,
2775  38, 0, 39, 40, 41, 0, 0, 42, 0, 0,
2776  43, 44, 0, 45, 46, 0, 0, 0, 0, 0,
2777  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2778  0, 0, 0, 213, 0, 0, 111, 49, 0, 50,
2779  51, 0, 0, 0, 53, 54, 55, 56, 57, 58,
2780  59, 0, 0, 60, 0, 0, 0, 0, 0, 0,
2781  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2782  61, 62, 63, 0, 0, 0, 0, 0, 0, 0,
2783  0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
2784  10, 11, 0, 222, 223, 12, 0, 13, 14, 15,
2785  16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
2786  21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2787  0, 0, 0, 0, 0, 0, 0, 31, 32, 0,
2788  33, 34, 35, 36, 37, 38, 0, 39, 40, 41,
2789  0, 0, 42, 0, 0, 43, 44, 0, 45, 46,
2790  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2791  0, 0, 0, 0, 0, 0, 0, 0, 213, 0,
2792  0, 111, 49, 0, 50, 51, 0, 0, 0, 53,
2793  54, 55, 56, 57, 58, 59, 0, 0, 60, 0,
2794  0, 0, 0, 0, 0, 5, 6, 7, 8, 9,
2795  0, 0, 0, 10, 11, 61, 62, 63, 12, 0,
2796  13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2797  0, 0, 20, 21, 22, 23, 24, 25, 26, 223,
2798  0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
2799  31, 32, 0, 33, 34, 35, 36, 37, 38, 0,
2800  39, 40, 41, 0, 0, 42, 0, 0, 43, 44,
2801  0, 45, 46, 0, 0, 0, 0, 0, 0, 0,
2802  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2803  0, 47, 0, 0, 48, 49, 0, 50, 51, 0,
2804  52, 0, 53, 54, 55, 56, 57, 58, 59, 0,
2805  0, 60, 0, 0, 0, 0, 0, 0, 0, 0,
2806  0, 0, 0, 0, 0, 0, 0, 0, 61, 62,
2807  63, 0, 0, 0, 0, 0, 0, 5, 6, 7,
2808  8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
2809  12, 412, 13, 14, 15, 16, 17, 18, 19, 0,
2810  0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2811  26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2812  0, 30, 31, 32, 0, 33, 34, 35, 36, 37,
2813  38, 0, 39, 40, 41, 0, 0, 42, 0, 0,
2814  43, 44, 0, 45, 46, 0, 0, 0, 0, 0,
2815  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2816  0, 0, 0, 47, 0, 0, 48, 49, 0, 50,
2817  51, 0, 52, 0, 53, 54, 55, 56, 57, 58,
2818  59, 0, 0, 60, 0, 0, 0, 0, 0, 0,
2819  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2820  61, 62, 63, 0, 0, 0, 0, 0, 0, 0,
2821  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2822  0, 0, 0, 412, 121, 122, 123, 124, 125, 126,
2823  127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
2824  137, 138, 139, 140, 141, 142, 143, 144, 0, 0,
2825  0, 145, 146, 147, 148, 149, 150, 151, 152, 153,
2826  154, 0, 0, 0, 0, 0, 155, 156, 157, 158,
2827  159, 160, 161, 162, 35, 36, 163, 38, 0, 0,
2828  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2829  164, 165, 166, 167, 168, 169, 170, 171, 172, 0,
2830  0, 173, 174, 0, 0, 175, 176, 177, 178, 0,
2831  0, 0, 0, 0, 0, 0, 0, 0, 0, 179,
2832  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2833  0, 0, 0, 0, 0, 0, 0, 180, 181, 182,
2834  183, 184, 185, 186, 187, 188, 189, 0, 190, 191,
2835  0, 0, 0, 0, 0, -517, -517, -517, 0, -517,
2836  0, 0, 0, -517, -517, 0, 192, 193, -517, 0,
2837  -517, -517, -517, -517, -517, -517, -517, 0, -517, 0,
2838  0, 0, -517, -517, -517, -517, -517, -517, -517, 0,
2839  0, -517, 0, 0, 0, 0, 0, 0, 0, 0,
2840  -517, -517, 0, -517, -517, -517, -517, -517, -517, -517,
2841  -517, -517, -517, 0, 0, -517, 0, 0, -517, -517,
2842  0, -517, -517, 0, 0, 0, 0, 0, 0, 0,
2843  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2844  0, -517, 0, 0, -517, -517, 0, -517, -517, 0,
2845  -517, -517, -517, -517, -517, -517, -517, -517, -517, 0,
2846  0, -517, 0, 0, 0, 0, 0, 0, 0, 0,
2847  0, 0, 0, 0, 0, 0, 0, 0, -517, -517,
2848  -517, 0, 0, 0, 0, 0, -518, -518, -518, 0,
2849  -518, 0, -517, 0, -518, -518, 0, 0, -517, -518,
2850  0, -518, -518, -518, -518, -518, -518, -518, 0, -518,
2851  0, 0, 0, -518, -518, -518, -518, -518, -518, -518,
2852  0, 0, -518, 0, 0, 0, 0, 0, 0, 0,
2853  0, -518, -518, 0, -518, -518, -518, -518, -518, -518,
2854  -518, -518, -518, -518, 0, 0, -518, 0, 0, -518,
2855  -518, 0, -518, -518, 0, 0, 0, 0, 0, 0,
2856  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2857  0, 0, -518, 0, 0, -518, -518, 0, -518, -518,
2858  0, -518, -518, -518, -518, -518, -518, -518, -518, -518,
2859  0, 0, -518, 0, 0, 0, 0, 0, 0, 0,
2860  0, 0, 0, 0, 0, 0, 0, 0, 0, -518,
2861  -518, -518, 0, 0, 0, 0, 0, -520, -520, -520,
2862  0, -520, 0, -518, 0, -520, -520, 0, 0, -518,
2863  -520, 0, -520, -520, -520, -520, -520, -520, -520, 0,
2864  0, 0, 0, 0, -520, -520, -520, -520, -520, -520,
2865  -520, 0, 0, -520, 0, 0, 0, 0, 0, 0,
2866  0, 0, -520, -520, 0, -520, -520, -520, -520, -520,
2867  -520, -520, -520, -520, -520, 0, 0, -520, 0, 0,
2868  -520, -520, 0, -520, -520, 0, 0, 0, 0, 0,
2869  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2870  0, 0, 0, -520, 733, 0, -520, -520, 0, -520,
2871  -520, 0, -520, -520, -520, -520, -520, -520, -520, -520,
2872  -520, 0, 0, -520, 0, 0, 0, -97, 0, 0,
2873  0, 0, 0, 0, 0, -522, -522, -522, 0, -522,
2874  -520, -520, -520, -522, -522, 0, 0, 0, -522, 0,
2875  -522, -522, -522, -522, -522, -522, -522, 0, 0, 0,
2876  -520, 0, -522, -522, -522, -522, -522, -522, -522, 0,
2877  0, -522, 0, 0, 0, 0, 0, 0, 0, 0,
2878  -522, -522, 0, -522, -522, -522, -522, -522, -522, -522,
2879  -522, -522, -522, 0, 0, -522, 0, 0, -522, -522,
2880  0, -522, -522, 0, 0, 0, 0, 0, 0, 0,
2881  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2882  0, -522, 0, 0, -522, -522, 0, -522, -522, 0,
2883  -522, -522, -522, -522, -522, -522, -522, -522, -522, 0,
2884  0, -522, 0, 0, 0, 0, 0, 0, 0, 0,
2885  0, 0, 0, -523, -523, -523, 0, -523, -522, -522,
2886  -522, -523, -523, 0, 0, 0, -523, 0, -523, -523,
2887  -523, -523, -523, -523, -523, 0, 0, 0, -522, 0,
2888  -523, -523, -523, -523, -523, -523, -523, 0, 0, -523,
2889  0, 0, 0, 0, 0, 0, 0, 0, -523, -523,
2890  0, -523, -523, -523, -523, -523, -523, -523, -523, -523,
2891  -523, 0, 0, -523, 0, 0, -523, -523, 0, -523,
2892  -523, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2893  0, 0, 0, 0, 0, 0, 0, 0, 0, -523,
2894  0, 0, -523, -523, 0, -523, -523, 0, -523, -523,
2895  -523, -523, -523, -523, -523, -523, -523, 0, 0, -523,
2896  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2897  0, 0, 0, 0, 0, 0, -523, -523, -523, 0,
2898  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2899  0, 0, 0, 0, 0, 0, -523, 121, 122, 123,
2900  124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2901  134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2902  144, 0, 0, 0, 145, 146, 147, 199, 200, 201,
2903  202, 152, 153, 154, 0, 0, 0, 0, 0, 155,
2904  156, 157, 203, 204, 160, 205, 162, 293, 294, 206,
2905  295, 0, 0, 0, 0, 0, 0, 296, 0, 0,
2906  0, 0, 0, 164, 165, 166, 167, 168, 169, 170,
2907  171, 172, 0, 0, 173, 174, 0, 0, 175, 176,
2908  177, 178, 0, 0, 0, 0, 0, 0, 0, 0,
2909  0, 0, 179, 0, 0, 0, 0, 0, 0, 297,
2910  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2911  180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
2912  0, 190, 191, 0, 0, 0, 0, 0, 0, 0,
2913  0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
2914  121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
2915  131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
2916  141, 142, 143, 144, 0, 0, 0, 145, 146, 147,
2917  199, 200, 201, 202, 152, 153, 154, 0, 0, 0,
2918  0, 0, 155, 156, 157, 203, 204, 160, 205, 162,
2919  293, 294, 206, 295, 0, 0, 0, 0, 0, 0,
2920  296, 0, 0, 0, 0, 0, 164, 165, 166, 167,
2921  168, 169, 170, 171, 172, 0, 0, 173, 174, 0,
2922  0, 175, 176, 177, 178, 0, 0, 0, 0, 0,
2923  0, 0, 0, 0, 0, 179, 0, 0, 0, 0,
2924  0, 0, 393, 0, 0, 0, 0, 0, 0, 0,
2925  0, 0, 0, 180, 181, 182, 183, 184, 185, 186,
2926  187, 188, 189, 0, 190, 191, 0, 0, 0, 0,
2927  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2928  0, 0, 192, 121, 122, 123, 124, 125, 126, 127,
2929  128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
2930  138, 139, 140, 141, 142, 143, 144, 0, 0, 0,
2931  145, 146, 147, 199, 200, 201, 202, 152, 153, 154,
2932  0, 0, 0, 0, 0, 155, 156, 157, 203, 204,
2933  160, 205, 162, 0, 0, 206, 0, 0, 0, 0,
2934  0, 0, 0, 0, 0, 0, 0, 0, 0, 164,
2935  165, 166, 167, 168, 169, 170, 171, 172, 0, 0,
2936  173, 174, 0, 0, 175, 176, 177, 178, 0, 0,
2937  0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
2938  0, 207, 0, 0, 0, 0, 0, 0, 0, 0,
2939  0, 0, 0, 0, 0, 0, 180, 181, 182, 183,
2940  184, 185, 186, 187, 188, 189, 0, 190, 191, 0,
2941  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2942  0, 0, 0, 0, 0, 192, 121, 122, 123, 124,
2943  125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2944  135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
2945  0, 0, 0, 145, 146, 147, 199, 200, 201, 202,
2946  152, 153, 154, 0, 0, 0, 0, 0, 155, 156,
2947  157, 203, 204, 160, 205, 162, 0, 0, 206, 0,
2948  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2949  0, 0, 164, 165, 166, 167, 168, 169, 170, 171,
2950  172, 0, 0, 173, 174, 0, 0, 175, 176, 177,
2951  178, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2952  0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
2953  0, 0, 0, 0, 0, 0, 0, 0, 0, 180,
2954  181, 182, 183, 184, 185, 186, 187, 188, 189, 0,
2955  190, 191, 0, 0, 5, 6, 7, 0, 9, 0,
2956  0, 0, 10, 11, 0, 0, 0, 12, 192, 13,
2957  14, 15, 101, 102, 18, 19, 0, 0, 0, 0,
2958  0, 103, 104, 105, 23, 24, 25, 26, 0, 0,
2959  106, 0, 0, 0, 0, 0, 0, 0, 0, 31,
2960  32, 0, 33, 34, 35, 36, 37, 38, 0, 39,
2961  40, 41, 0, 0, 42, 0, 0, 43, 44, 0,
2962  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2963  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2964  286, 0, 0, 111, 49, 0, 50, 51, 0, 0,
2965  0, 53, 54, 55, 56, 57, 58, 59, 0, 0,
2966  60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2967  5, 6, 7, 0, 9, 0, 0, 112, 10, 11,
2968  0, 0, 0, 12, 0, 13, 14, 15, 101, 102,
2969  18, 19, 0, 0, 0, 287, 0, 103, 104, 105,
2970  23, 24, 25, 26, 0, 0, 106, 0, 0, 0,
2971  0, 0, 0, 0, 0, 31, 32, 0, 33, 34,
2972  35, 36, 37, 38, 0, 39, 40, 41, 0, 0,
2973  42, 0, 0, 43, 44, 0, 0, 0, 0, 0,
2974  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2975  0, 0, 0, 0, 0, 0, 286, 0, 0, 111,
2976  49, 0, 50, 51, 0, 0, 0, 53, 54, 55,
2977  56, 57, 58, 59, 0, 0, 60, 0, 0, 0,
2978  0, 0, 0, 0, 0, 0, 5, 6, 7, 8,
2979  9, 0, 0, 112, 10, 11, 0, 0, 0, 12,
2980  0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2981  0, 520, 0, 20, 21, 22, 23, 24, 25, 26,
2982  0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2983  30, 31, 32, 0, 33, 34, 35, 36, 37, 38,
2984  0, 39, 40, 41, 0, 0, 42, 0, 0, 43,
2985  44, 0, 45, 46, 0, 0, 0, 0, 0, 0,
2986  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2987  0, 0, 47, 0, 0, 48, 49, 0, 50, 51,
2988  0, 52, 0, 53, 54, 55, 56, 57, 58, 59,
2989  0, 0, 60, 0, 0, 0, 0, 0, 0, 5,
2990  6, 7, 8, 9, 0, 0, 0, 10, 11, 61,
2991  62, 63, 12, 0, 13, 14, 15, 16, 17, 18,
2992  19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
2993  24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2994  0, 28, 0, 30, 31, 32, 0, 33, 34, 35,
2995  36, 37, 38, 0, 39, 40, 41, 0, 0, 42,
2996  0, 0, 43, 44, 0, 45, 46, 0, 0, 0,
2997  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2998  0, 0, 0, 0, 0, 47, 0, 0, 48, 49,
2999  0, 50, 51, 0, 52, 0, 53, 54, 55, 56,
3000  57, 58, 59, 0, 0, 60, 0, 0, 0, 0,
3001  0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3002  10, 11, 61, 62, 63, 12, 0, 13, 14, 15,
3003  16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3004  21, 22, 23, 24, 25, 26, 0, 0, 106, 0,
3005  0, 0, 0, 0, 0, 0, 0, 31, 32, 0,
3006  33, 34, 35, 36, 37, 38, 238, 39, 40, 41,
3007  0, 0, 42, 0, 0, 43, 44, 0, 45, 46,
3008  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3009  0, 0, 0, 0, 0, 0, 0, 0, 213, 0,
3010  0, 111, 49, 0, 50, 51, 0, 239, 240, 53,
3011  54, 55, 56, 57, 58, 59, 0, 0, 60, 0,
3012  0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3013  0, 0, 0, 10, 11, 61, 241, 63, 12, 0,
3014  13, 14, 15, 101, 102, 18, 19, 0, 0, 0,
3015  0, 0, 103, 104, 105, 23, 24, 25, 26, 0,
3016  0, 106, 0, 0, 0, 0, 0, 0, 0, 0,
3017  31, 32, 0, 33, 34, 35, 36, 37, 38, 238,
3018  39, 40, 41, 0, 0, 42, 0, 0, 43, 44,
3019  0, 45, 46, 0, 0, 0, 0, 0, 0, 0,
3020  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3021  0, 213, 0, 0, 111, 49, 0, 50, 51, 0,
3022  630, 240, 53, 54, 55, 56, 57, 58, 59, 0,
3023  0, 60, 0, 0, 0, 0, 0, 0, 5, 6,
3024  7, 0, 9, 0, 0, 0, 10, 11, 61, 241,
3025  63, 12, 0, 13, 14, 15, 101, 102, 18, 19,
3026  0, 0, 0, 0, 0, 103, 104, 105, 23, 24,
3027  25, 26, 0, 0, 106, 0, 0, 0, 0, 0,
3028  0, 0, 0, 31, 32, 0, 33, 34, 35, 36,
3029  37, 38, 238, 39, 40, 41, 0, 0, 42, 0,
3030  0, 43, 44, 0, 45, 46, 0, 0, 0, 0,
3031  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3032  0, 0, 0, 0, 213, 0, 0, 111, 49, 0,
3033  50, 51, 0, 239, 0, 53, 54, 55, 56, 57,
3034  58, 59, 0, 0, 60, 0, 0, 0, 0, 0,
3035  0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3036  11, 61, 241, 63, 12, 0, 13, 14, 15, 101,
3037  102, 18, 19, 0, 0, 0, 0, 0, 103, 104,
3038  105, 23, 24, 25, 26, 0, 0, 106, 0, 0,
3039  0, 0, 0, 0, 0, 0, 31, 32, 0, 33,
3040  34, 35, 36, 37, 38, 238, 39, 40, 41, 0,
3041  0, 42, 0, 0, 43, 44, 0, 45, 46, 0,
3042  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3043  0, 0, 0, 0, 0, 0, 0, 213, 0, 0,
3044  111, 49, 0, 50, 51, 0, 0, 240, 53, 54,
3045  55, 56, 57, 58, 59, 0, 0, 60, 0, 0,
3046  0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3047  0, 0, 10, 11, 61, 241, 63, 12, 0, 13,
3048  14, 15, 101, 102, 18, 19, 0, 0, 0, 0,
3049  0, 103, 104, 105, 23, 24, 25, 26, 0, 0,
3050  106, 0, 0, 0, 0, 0, 0, 0, 0, 31,
3051  32, 0, 33, 34, 35, 36, 37, 38, 238, 39,
3052  40, 41, 0, 0, 42, 0, 0, 43, 44, 0,
3053  45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
3054  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3055  213, 0, 0, 111, 49, 0, 50, 51, 0, 630,
3056  0, 53, 54, 55, 56, 57, 58, 59, 0, 0,
3057  60, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3058  0, 9, 0, 0, 0, 10, 11, 61, 241, 63,
3059  12, 0, 13, 14, 15, 101, 102, 18, 19, 0,
3060  0, 0, 0, 0, 103, 104, 105, 23, 24, 25,
3061  26, 0, 0, 106, 0, 0, 0, 0, 0, 0,
3062  0, 0, 31, 32, 0, 33, 34, 35, 36, 37,
3063  38, 238, 39, 40, 41, 0, 0, 42, 0, 0,
3064  43, 44, 0, 45, 46, 0, 0, 0, 0, 0,
3065  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3066  0, 0, 0, 213, 0, 0, 111, 49, 0, 50,
3067  51, 0, 0, 0, 53, 54, 55, 56, 57, 58,
3068  59, 0, 0, 60, 0, 0, 0, 0, 0, 0,
3069  5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3070  61, 241, 63, 12, 0, 13, 14, 15, 16, 17,
3071  18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3072  23, 24, 25, 26, 0, 0, 106, 0, 0, 0,
3073  0, 0, 0, 0, 0, 31, 32, 0, 33, 34,
3074  35, 36, 37, 38, 0, 39, 40, 41, 0, 0,
3075  42, 0, 0, 43, 44, 0, 45, 46, 0, 0,
3076  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3077  0, 0, 0, 0, 0, 0, 213, 0, 0, 111,
3078  49, 0, 50, 51, 0, 514, 0, 53, 54, 55,
3079  56, 57, 58, 59, 0, 0, 60, 0, 0, 0,
3080  0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3081  0, 10, 11, 61, 241, 63, 12, 0, 13, 14,
3082  15, 101, 102, 18, 19, 0, 0, 0, 0, 0,
3083  103, 104, 105, 23, 24, 25, 26, 0, 0, 106,
3084  0, 0, 0, 0, 0, 0, 0, 0, 31, 32,
3085  0, 33, 34, 35, 36, 37, 38, 0, 39, 40,
3086  41, 0, 0, 42, 0, 0, 43, 44, 0, 45,
3087  46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3088  0, 0, 0, 0, 0, 0, 0, 0, 0, 213,
3089  0, 0, 111, 49, 0, 50, 51, 0, 239, 0,
3090  53, 54, 55, 56, 57, 58, 59, 0, 0, 60,
3091  0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3092  9, 0, 0, 0, 10, 11, 61, 241, 63, 12,
3093  0, 13, 14, 15, 101, 102, 18, 19, 0, 0,
3094  0, 0, 0, 103, 104, 105, 23, 24, 25, 26,
3095  0, 0, 106, 0, 0, 0, 0, 0, 0, 0,
3096  0, 31, 32, 0, 33, 34, 35, 36, 37, 38,
3097  0, 39, 40, 41, 0, 0, 42, 0, 0, 43,
3098  44, 0, 45, 46, 0, 0, 0, 0, 0, 0,
3099  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3100  0, 0, 213, 0, 0, 111, 49, 0, 50, 51,
3101  0, 514, 0, 53, 54, 55, 56, 57, 58, 59,
3102  0, 0, 60, 0, 0, 0, 0, 0, 0, 5,
3103  6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
3104  241, 63, 12, 0, 13, 14, 15, 101, 102, 18,
3105  19, 0, 0, 0, 0, 0, 103, 104, 105, 23,
3106  24, 25, 26, 0, 0, 106, 0, 0, 0, 0,
3107  0, 0, 0, 0, 31, 32, 0, 33, 34, 35,
3108  36, 37, 38, 0, 39, 40, 41, 0, 0, 42,
3109  0, 0, 43, 44, 0, 45, 46, 0, 0, 0,
3110  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3111  0, 0, 0, 0, 0, 213, 0, 0, 111, 49,
3112  0, 50, 51, 0, 782, 0, 53, 54, 55, 56,
3113  57, 58, 59, 0, 0, 60, 0, 0, 0, 0,
3114  0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3115  10, 11, 61, 241, 63, 12, 0, 13, 14, 15,
3116  101, 102, 18, 19, 0, 0, 0, 0, 0, 103,
3117  104, 105, 23, 24, 25, 26, 0, 0, 106, 0,
3118  0, 0, 0, 0, 0, 0, 0, 31, 32, 0,
3119  33, 34, 35, 36, 37, 38, 0, 39, 40, 41,
3120  0, 0, 42, 0, 0, 43, 44, 0, 45, 46,
3121  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3122  0, 0, 0, 0, 0, 0, 0, 0, 213, 0,
3123  0, 111, 49, 0, 50, 51, 0, 630, 0, 53,
3124  54, 55, 56, 57, 58, 59, 0, 0, 60, 0,
3125  0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3126  0, 0, 0, 10, 11, 61, 241, 63, 12, 0,
3127  13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3128  0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3129  0, 27, 0, 0, 0, 0, 0, 0, 0, 0,
3130  31, 32, 0, 33, 34, 35, 36, 37, 38, 0,
3131  39, 40, 41, 0, 0, 42, 0, 0, 43, 44,
3132  0, 45, 46, 0, 0, 0, 0, 0, 0, 0,
3133  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3134  0, 213, 0, 0, 111, 49, 0, 50, 51, 0,
3135  0, 0, 53, 54, 55, 56, 57, 58, 59, 0,
3136  0, 60, 0, 0, 0, 0, 0, 0, 5, 6,
3137  7, 0, 9, 0, 0, 0, 10, 11, 61, 62,
3138  63, 12, 0, 13, 14, 15, 101, 102, 18, 19,
3139  0, 0, 0, 0, 0, 103, 104, 105, 23, 24,
3140  25, 26, 0, 0, 106, 0, 0, 0, 0, 0,
3141  0, 0, 0, 31, 32, 0, 33, 34, 35, 36,
3142  37, 38, 0, 39, 40, 41, 0, 0, 42, 0,
3143  0, 43, 44, 0, 45, 46, 0, 0, 0, 0,
3144  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3145  0, 0, 0, 0, 213, 0, 0, 111, 49, 0,
3146  50, 51, 0, 0, 0, 53, 54, 55, 56, 57,
3147  58, 59, 0, 0, 60, 0, 0, 0, 0, 0,
3148  0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3149  11, 61, 241, 63, 12, 0, 13, 14, 15, 16,
3150  17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3151  22, 23, 24, 25, 26, 0, 0, 106, 0, 0,
3152  0, 0, 0, 0, 0, 0, 31, 32, 0, 33,
3153  34, 35, 36, 37, 38, 0, 39, 40, 41, 0,
3154  0, 42, 0, 0, 43, 44, 0, 45, 46, 0,
3155  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3156  0, 0, 0, 0, 0, 0, 0, 213, 0, 0,
3157  111, 49, 0, 50, 51, 0, 0, 0, 53, 54,
3158  55, 56, 57, 58, 59, 0, 0, 60, 0, 0,
3159  0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3160  0, 0, 10, 11, 61, 241, 63, 12, 0, 13,
3161  14, 15, 101, 102, 18, 19, 0, 0, 0, 0,
3162  0, 103, 104, 105, 23, 24, 25, 26, 0, 0,
3163  106, 0, 0, 0, 0, 0, 0, 0, 0, 31,
3164  32, 0, 107, 34, 35, 36, 108, 38, 0, 39,
3165  40, 41, 0, 0, 42, 0, 0, 43, 44, 0,
3166  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3167  0, 0, 0, 0, 0, 0, 0, 109, 0, 0,
3168  110, 0, 0, 111, 49, 0, 50, 51, 0, 0,
3169  0, 53, 54, 55, 56, 57, 58, 59, 0, 0,
3170  60, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3171  0, 10, 11, 0, 0, 0, 12, 112, 13, 14,
3172  15, 101, 102, 18, 19, 0, 0, 0, 0, 0,
3173  103, 104, 105, 23, 24, 25, 26, 0, 0, 106,
3174  0, 0, 0, 0, 0, 0, 0, 0, 31, 32,
3175  0, 33, 34, 35, 36, 37, 38, 0, 39, 40,
3176  41, 0, 0, 42, 0, 0, 43, 44, 0, 0,
3177  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3178  0, 0, 0, 0, 0, 0, 0, 0, 0, 231,
3179  0, 0, 48, 49, 0, 50, 51, 0, 52, 0,
3180  53, 54, 55, 56, 57, 58, 59, 0, 0, 60,
3181  0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3182  10, 11, 0, 0, 0, 12, 112, 13, 14, 15,
3183  101, 102, 18, 19, 0, 0, 0, 0, 0, 103,
3184  104, 105, 23, 24, 25, 26, 0, 0, 106, 0,
3185  0, 0, 0, 0, 0, 0, 0, 31, 32, 0,
3186  33, 34, 35, 36, 37, 38, 0, 39, 40, 41,
3187  0, 0, 42, 0, 0, 43, 44, 0, 0, 0,
3188  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3189  0, 0, 0, 0, 0, 0, 0, 0, 286, 0,
3190  0, 332, 49, 0, 50, 51, 0, 333, 0, 53,
3191  54, 55, 56, 57, 58, 59, 0, 0, 60, 0,
3192  0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3193  11, 0, 0, 0, 12, 112, 13, 14, 15, 101,
3194  102, 18, 19, 0, 0, 0, 0, 0, 103, 104,
3195  105, 23, 24, 25, 26, 0, 0, 106, 0, 0,
3196  0, 0, 0, 0, 0, 0, 31, 32, 0, 107,
3197  34, 35, 36, 108, 38, 0, 39, 40, 41, 0,
3198  0, 42, 0, 0, 43, 44, 0, 0, 0, 0,
3199  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3200  0, 0, 0, 0, 0, 0, 0, 110, 0, 0,
3201  111, 49, 0, 50, 51, 0, 0, 0, 53, 54,
3202  55, 56, 57, 58, 59, 0, 0, 60, 0, 0,
3203  5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3204  0, 0, 0, 12, 112, 13, 14, 15, 101, 102,
3205  18, 19, 0, 0, 0, 0, 0, 103, 104, 105,
3206  23, 24, 25, 26, 0, 0, 106, 0, 0, 0,
3207  0, 0, 0, 0, 0, 31, 32, 0, 33, 34,
3208  35, 36, 37, 38, 0, 39, 40, 41, 0, 0,
3209  42, 0, 0, 43, 44, 0, 0, 0, 0, 0,
3210  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3211  0, 0, 0, 0, 0, 0, 286, 0, 0, 332,
3212  49, 0, 50, 51, 0, 0, 0, 53, 54, 55,
3213  56, 57, 58, 59, 0, 0, 60, 0, 0, 5,
3214  6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
3215  0, 0, 12, 112, 13, 14, 15, 101, 102, 18,
3216  19, 0, 0, 0, 0, 0, 103, 104, 105, 23,
3217  24, 25, 26, 0, 0, 106, 0, 0, 0, 0,
3218  0, 0, 0, 0, 31, 32, 0, 33, 34, 35,
3219  36, 37, 38, 0, 39, 40, 41, 0, 0, 42,
3220  0, 0, 43, 44, 0, 0, 0, 0, 0, 0,
3221  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3222  0, 0, 0, 0, 0, 865, 0, 0, 111, 49,
3223  0, 50, 51, 0, 0, 0, 53, 54, 55, 56,
3224  57, 58, 59, 0, 0, 60, 0, 0, 5, 6,
3225  7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
3226  0, 12, 112, 13, 14, 15, 101, 102, 18, 19,
3227  0, 0, 0, 0, 0, 103, 104, 105, 23, 24,
3228  25, 26, 0, 0, 106, 0, 0, 0, 0, 0,
3229  0, 0, 0, 31, 32, 0, 33, 34, 35, 36,
3230  37, 38, 0, 39, 40, 41, 0, 0, 42, 0,
3231  0, 43, 44, 0, 0, 0, 0, 0, 0, 0,
3232  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3233  0, 0, 0, 0, 891, 0, 0, 111, 49, 0,
3234  50, 51, 0, 0, 0, 53, 54, 55, 56, 57,
3235  58, 59, 0, 0, 60, 563, 564, 0, 0, 565,
3236  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3237  0, 112, 0, 164, 165, 166, 167, 168, 169, 170,
3238  171, 172, 0, 0, 173, 174, 0, 0, 175, 176,
3239  177, 178, 0, 0, 0, 0, 0, 0, 0, 0,
3240  0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
3241  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3242  180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
3243  0, 190, 191, 584, 556, 0, 0, 585, 0, 0,
3244  0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
3245  255, 164, 165, 166, 167, 168, 169, 170, 171, 172,
3246  0, 0, 173, 174, 0, 0, 175, 176, 177, 178,
3247  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3248  179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3249  0, 0, 0, 0, 0, 0, 0, 0, 180, 181,
3250  182, 183, 184, 185, 186, 187, 188, 189, 0, 190,
3251  191, 569, 564, 0, 0, 570, 0, 0, 0, 0,
3252  0, 0, 0, 0, 0, 0, 0, 192, 255, 164,
3253  165, 166, 167, 168, 169, 170, 171, 172, 0, 0,
3254  173, 174, 0, 0, 175, 176, 177, 178, 0, 0,
3255  0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
3256  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3257  0, 0, 0, 0, 0, 0, 180, 181, 182, 183,
3258  184, 185, 186, 187, 188, 189, 0, 190, 191, 604,
3259  556, 0, 0, 605, 0, 0, 0, 0, 0, 0,
3260  0, 0, 0, 0, 0, 192, 255, 164, 165, 166,
3261  167, 168, 169, 170, 171, 172, 0, 0, 173, 174,
3262  0, 0, 175, 176, 177, 178, 0, 0, 0, 0,
3263  0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
3264  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3265  0, 0, 0, 0, 180, 181, 182, 183, 184, 185,
3266  186, 187, 188, 189, 0, 190, 191, 607, 564, 0,
3267  0, 608, 0, 0, 0, 0, 0, 0, 0, 0,
3268  0, 0, 0, 192, 255, 164, 165, 166, 167, 168,
3269  169, 170, 171, 172, 0, 0, 173, 174, 0, 0,
3270  175, 176, 177, 178, 0, 0, 0, 0, 0, 0,
3271  0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
3272  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3273  0, 0, 180, 181, 182, 183, 184, 185, 186, 187,
3274  188, 189, 0, 190, 191, 623, 556, 0, 0, 624,
3275  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3276  0, 192, 255, 164, 165, 166, 167, 168, 169, 170,
3277  171, 172, 0, 0, 173, 174, 0, 0, 175, 176,
3278  177, 178, 0, 0, 0, 0, 0, 0, 0, 0,
3279  0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
3280  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3281  180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
3282  0, 190, 191, 626, 564, 0, 0, 627, 0, 0,
3283  0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
3284  255, 164, 165, 166, 167, 168, 169, 170, 171, 172,
3285  0, 0, 173, 174, 0, 0, 175, 176, 177, 178,
3286  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3287  179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3288  0, 0, 0, 0, 0, 0, 0, 0, 180, 181,
3289  182, 183, 184, 185, 186, 187, 188, 189, 0, 190,
3290  191, 651, 556, 0, 0, 652, 0, 0, 0, 0,
3291  0, 0, 0, 0, 0, 0, 0, 192, 255, 164,
3292  165, 166, 167, 168, 169, 170, 171, 172, 0, 0,
3293  173, 174, 0, 0, 175, 176, 177, 178, 0, 0,
3294  0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
3295  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3296  0, 0, 0, 0, 0, 0, 180, 181, 182, 183,
3297  184, 185, 186, 187, 188, 189, 0, 190, 191, 654,
3298  564, 0, 0, 655, 0, 0, 0, 0, 0, 0,
3299  0, 0, 0, 0, 0, 192, 255, 164, 165, 166,
3300  167, 168, 169, 170, 171, 172, 0, 0, 173, 174,
3301  0, 0, 175, 176, 177, 178, 0, 0, 0, 0,
3302  0, 0, 0, 0, 0, 0, 179, 0, 0, 0,
3303  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3304  0, 0, 0, 0, 180, 181, 182, 183, 184, 185,
3305  186, 187, 188, 189, 0, 190, 191, 930, 556, 0,
3306  0, 931, 0, 0, 0, 0, 0, 0, 0, 0,
3307  0, 0, 0, 192, 255, 164, 165, 166, 167, 168,
3308  169, 170, 171, 172, 0, 0, 173, 174, 0, 0,
3309  175, 176, 177, 178, 0, 0, 0, 0, 0, 0,
3310  0, 0, 0, 0, 179, 0, 0, 0, 0, 0,
3311  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3312  0, 0, 180, 181, 182, 183, 184, 185, 186, 187,
3313  188, 189, 0, 190, 191, 933, 564, 0, 0, 934,
3314  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3315  0, 192, 255, 164, 165, 166, 167, 168, 169, 170,
3316  171, 172, 0, 0, 173, 174, 0, 0, 175, 176,
3317  177, 178, 0, 0, 0, 0, 0, 0, 0, 0,
3318  0, 0, 179, 0, 0, 0, 0, 0, 0, 0,
3319  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3320  180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
3321  0, 190, 191, 941, 556, 0, 0, 942, 0, 0,
3322  0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
3323  255, 164, 165, 166, 167, 168, 169, 170, 171, 172,
3324  0, 0, 173, 174, 0, 0, 175, 176, 177, 178,
3325  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3326  179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3327  0, 0, 0, 0, 0, 0, 0, 0, 180, 181,
3328  182, 183, 184, 185, 186, 187, 188, 189, 0, 190,
3329  191, 569, 564, 0, 0, 570, 0, 0, 0, 0,
3330  0, 0, 0, 0, 0, 0, 0, 192, 255, 164,
3331  165, 166, 167, 168, 169, 170, 171, 172, 0, 0,
3332  173, 174, 0, 0, 175, 176, 177, 178, 0, 0,
3333  0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
3334  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3335  0, 0, 0, 0, 0, 0, 180, 181, 182, 183,
3336  184, 185, 186, 187, 188, 189, 0, 190, 191, 0,
3337  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3338  0, 0, 0, 0, 0, 192
3339 };
3340 
3341 #define yypact_value_is_default(Yystate) \
3342  (!!((Yystate) == (-745)))
3343 
3344 #define yytable_value_is_error(Yytable_value) \
3345  (!!((Yytable_value) == (-545)))
3346 
3347 static const yytype_int16 yycheck[] =
3348 {
3349  2, 83, 27, 62, 221, 248, 12, 10, 11, 12,
3350  8, 16, 17, 76, 7, 20, 28, 335, 409, 5,
3351  6, 424, 16, 17, 427, 52, 20, 22, 292, 15,
3352  28, 110, 292, 11, 12, 258, 4, 16, 17, 389,
3353  363, 20, 362, 467, 364, 427, 49, 367, 50, 51,
3354  273, 287, 335, 671, 277, 414, 50, 51, 12, 65,
3355  25, 54, 599, 2, 387, 4, 52, 588, 388, 280,
3356  25, 50, 609, 284, 65, 65, 48, 459, 27, 682,
3357  403, 297, 402, 756, 404, 606, 758, 29, 304, 26,
3358  76, 307, 13, 309, 417, 311, 520, 313, 418, 22,
3359  834, 668, 26, 98, 625, 13, 109, 851, 114, 0,
3360  105, 65, 88, 25, 362, 697, 364, 16, 17, 367,
3361  25, 20, 704, 269, 119, 445, 13, 37, 38, 572,
3362  573, 391, 653, 146, 79, 25, 88, 150, 386, 90,
3363  388, 140, 13, 113, 88, 25, 469, 88, 113, 55,
3364  470, 13, 28, 25, 402, 51, 404, 830, 113, 55,
3365  114, 1, 113, 144, 25, 90, 108, 143, 416, 150,
3366  418, 774, 25, 118, 144, 98, 90, 921, 912, 144,
3367  113, 90, 147, 58, 59, 150, 332, 144, 113, 144,
3368  142, 143, 147, 436, 146, 150, 444, 445, 13, 143,
3369  149, 150, 143, 140, 113, 55, 429, 879, 881, 146,
3370  433, 15, 113, 17, 207, 438, 140, 481, 224, 837,
3371  468, 481, 470, 144, 287, 448, 229, 230, 149, 150,
3372  453, 467, 144, 583, 224, 638, 639, 144, 911, 144,
3373  150, 149, 150, 593, 25, 247, 248, 252, 146, 254,
3374  255, 229, 230, 255, 144, 258, 259, 639, 252, 146,
3375  254, 215, 149, 150, 144, 271, 690, 221, 711, 146,
3376  224, 330, 144, 252, 841, 254, 335, 117, 149, 150,
3377  271, 271, 849, 144, 520, 146, 823, 149, 150, 144,
3378  2, 144, 4, 5, 6, 150, 519, 269, 10, 11,
3379  12, 287, 88, 15, 16, 17, 333, 386, 20, 149,
3380  150, 476, 371, 372, 146, 598, 88, 271, 321, 322,
3381  323, 324, 88, 326, 327, 279, 280, 90, 592, 268,
3382  284, 113, 592, 48, 149, 150, 48, 49, 149, 150,
3383  52, 58, 59, 321, 322, 323, 324, 333, 88, 17,
3384  62, 330, 320, 252, 26, 254, 335, 143, 363, 88,
3385  332, 363, 88, 144, 76, 146, 88, 55, 591, 364,
3386  142, 143, 88, 691, 26, 61, 382, 143, 64, 65,
3387  88, 320, 387, 88, 149, 387, 325, 390, 747, 25,
3388  633, 91, 88, 388, 396, 611, 111, 109, 403, 111,
3389  617, 403, 465, 143, 467, 144, 408, 413, 414, 404,
3390  144, 932, 417, 142, 143, 417, 88, 143, 88, 140,
3391  142, 143, 682, 418, 827, 111, 142, 143, 382, 441,
3392  424, 410, 823, 435, 436, 143, 88, 648, 143, 662,
3393  442, 71, 88, 441, 26, 827, 142, 143, 147, 61,
3394  445, 113, 64, 65, 690, 805, 71, 520, 150, 413,
3395  414, 88, 456, 148, 469, 141, 88, 469, 140, 88,
3396  142, 143, 142, 143, 146, 470, 55, 144, 144, 465,
3397  71, 467, 90, 150, 88, 487, 71, 489, 140, 491,
3398  142, 143, 97, 658, 659, 718, 142, 143, 88, 111,
3399  212, 144, 90, 442, 63, 113, 88, 750, 123, 124,
3400  125, 513, 451, 10, 864, 142, 143, 229, 230, 544,
3401  142, 143, 90, 142, 143, 113, 90, 668, 37, 38,
3402  671, 8, 755, 13, 520, 10, 144, 562, 142, 143,
3403  252, 682, 254, 255, 90, 113, 258, 259, 263, 113,
3404  810, 263, 142, 143, 269, 147, 268, 269, 140, 113,
3405  142, 143, 90, 588, 146, 560, 568, 113, 144, 571,
3406  572, 573, 144, 568, 580, 287, 571, 14, 15, 582,
3407  144, 606, 905, 141, 596, 113, 906, 589, 594, 144,
3408  51, 756, 587, 758, 589, 812, 598, 599, 596, 601,
3409  625, 818, 595, 144, 582, 26, 144, 609, 320, 321,
3410  322, 323, 324, 325, 326, 327, 144, 332, 330, 598,
3411  332, 333, 144, 335, 706, 628, 580, 690, 653, 71,
3412  63, 633, 691, 51, 144, 694, 695, 560, 144, 664,
3413  594, 700, 701, 144, 638, 568, 113, 10, 571, 15,
3414  628, 363, 10, 141, 144, 141, 904, 682, 906, 371,
3415  372, 144, 115, 617, 148, 830, 831, 88, 10, 10,
3416  90, 9, 920, 10, 90, 387, 91, 389, 390, 121,
3417  122, 123, 124, 125, 399, 10, 144, 399, 90, 144,
3418  147, 403, 407, 113, 648, 407, 837, 113, 51, 149,
3419  53, 54, 55, 56, 690, 417, 141, 713, 849, 711,
3420  851, 113, 10, 144, 879, 144, 881, 144, 144, 140,
3421  113, 142, 143, 725, 144, 146, 728, 730, 144, 118,
3422  442, 144, 51, 62, 793, 64, 65, 144, 144, 451,
3423  10, 747, 144, 144, 141, 10, 911, 10, 750, 774,
3424  10, 118, 730, 465, 144, 467, 144, 469, 62, 713,
3425  64, 65, 141, 765, 766, 10, 768, 55, 770, 771,
3426  63, 64, 65, 144, 776, 144, 778, 779, 55, 144,
3427  921, 496, 111, 144, 496, 51, 10, 53, 54, 55,
3428  56, 144, 144, 747, 10, 2, 51, 4, 53, 54,
3429  55, 56, 146, 10, 11, 12, 146, 111, 520, 16,
3430  17, 144, 15, 20, 63, 64, 65, 442, 111, 671,
3431  6, 823, 674, 71, 571, 811, 92, 908, 658, 912,
3432  682, 907, 98, 99, 63, 64, 65, 92, 86, 87,
3433  707, 48, 49, 98, 99, 613, 51, 7, 53, 54,
3434  55, 56, 810, 849, 120, 62, 668, 123, 812, 884,
3435  846, -1, 111, 198, 818, 120, 64, 65, 123, -1,
3436  582, 583, 120, 121, 122, 123, 124, 125, -1, -1,
3437  -1, 593, 111, 71, 150, 887, 888, 889, 890, -1,
3438  -1, 146, 894, 895, 896, -1, 898, 899, 86, 87,
3439  905, -1, 109, 905, 111, 907, 908, 932, 71, -1,
3440  -1, 906, 110, 111, -1, -1, 628, 64, 65, 238,
3441  239, 240, -1, 86, 87, -1, 51, -1, 53, 54,
3442  55, 56, -1, 121, 122, 123, 124, 125, 940, 144,
3443  -1, 943, 944, 945, 946, 40, 41, 42, 43, 44,
3444  665, 666, 954, 665, 666, 118, 119, 120, 121, 122,
3445  123, 124, 125, 110, 111, -1, -1, 92, 683, -1,
3446  -1, 683, -1, 98, 99, -1, -1, -1, 690, 691,
3447  -1, -1, 694, 695, -1, 837, -1, 839, 700, 701,
3448  -1, 843, -1, 708, 709, 120, 708, 709, 123, 851,
3449  -1, 853, 63, 64, 65, 212, 63, 64, 65, -1,
3450  -1, 330, 727, -1, -1, 727, 335, -1, 730, -1,
3451  -1, 146, 229, 230, 63, 64, 65, -1, 743, 744,
3452  745, 743, 744, 745, 63, 64, 65, 51, -1, 53,
3453  54, 55, 56, -1, -1, 252, -1, 254, 255, -1,
3454  111, 258, 259, -1, 111, 51, 263, 53, 54, 55,
3455  56, 268, 269, 915, 55, 56, 57, 58, 59, 921,
3456  -1, 923, 111, -1, 926, -1, -1, -1, 92, -1,
3457  -1, 793, 111, -1, 98, 99, -1, -1, -1, 804,
3458  -1, 410, 804, 805, -1, -1, 92, -1, 950, 811,
3459  815, -1, 98, 815, 423, 424, 120, -1, 427, 123,
3460  -1, -1, -1, 320, 321, 322, 323, 324, 325, 326,
3461  327, -1, -1, 330, -1, 332, -1, 51, 335, 53,
3462  54, 55, 56, -1, 846, -1, -1, 456, -1, 51,
3463  459, 53, 54, 55, 56, -1, 51, -1, 53, 54,
3464  55, 56, 864, -1, -1, 870, 363, 872, 870, -1,
3465  872, -1, -1, 878, 371, 372, 878, -1, 92, -1,
3466  -1, -1, -1, -1, 98, -1, -1, -1, -1, -1,
3467  387, -1, 389, 390, -1, -1, 51, 92, 53, 54,
3468  55, 56, 399, 905, 99, 514, 403, -1, -1, 0,
3469  407, -1, -1, -1, -1, -1, -1, 8, 9, 10,
3470  417, -1, 13, 14, 15, 120, 17, -1, 44, -1,
3471  -1, -1, -1, -1, -1, 26, 27, 92, -1, 16,
3472  17, -1, -1, 20, -1, 442, 37, 38, -1, 40,
3473  41, 42, 43, 44, 451, 71, 72, 73, 74, 75,
3474  76, 77, 78, 79, 80, 81, 82, 83, 45, 46,
3475  86, 87, 469, 50, 51, -1, 51, -1, 53, 54,
3476  55, 56, -1, -1, -1, 62, 63, -1, -1, 598,
3477  -1, -1, -1, -1, -1, -1, -1, 88, 114, 496,
3478  116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
3479  -1, -1, -1, -1, -1, -1, -1, 92, -1, -1,
3480  -1, 630, -1, 98, 99, -1, -1, -1, 144, 638,
3481  639, 2, -1, 4, 5, 6, 7, 44, -1, -1,
3482  -1, -1, -1, -1, 15, 120, -1, 656, 123, 140,
3483  141, -1, 143, -1, -1, 146, 147, -1, 149, 150,
3484  -1, -1, -1, -1, 71, 72, 73, 74, 75, 76,
3485  77, 78, 79, 80, 81, 82, 83, 48, 687, 86,
3486  87, 52, -1, -1, -1, 582, 583, -1, -1, -1,
3487  -1, -1, -1, -1, -1, -1, 593, -1, -1, -1,
3488  -1, -1, -1, -1, -1, 76, -1, 114, -1, 116,
3489  117, 118, 119, 120, 121, 122, 123, 124, 125, -1,
3490  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3491  -1, 628, -1, 742, -1, -1, -1, -1, -1, -1,
3492  111, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3493  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3494  -1, 238, 239, 240, 241, -1, -1, -1, 665, 666,
3495  -1, -1, -1, 782, -1, 252, -1, 254, 255, -1,
3496  -1, -1, -1, -1, -1, -1, 683, -1, -1, -1,
3497  -1, -1, -1, -1, 691, -1, -1, 694, 695, -1,
3498  -1, -1, -1, 700, 701, -1, -1, -1, -1, -1,
3499  -1, 708, 709, -1, -1, -1, -1, -1, 827, -1,
3500  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3501  727, -1, -1, 730, -1, -1, -1, -1, -1, -1,
3502  -1, 212, -1, -1, -1, -1, 743, 744, 745, -1,
3503  -1, -1, -1, 330, -1, -1, -1, -1, 335, 336,
3504  337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
3505  347, 348, 349, 350, 351, 352, 353, 354, 355, 356,
3506  357, 358, 359, 360, 361, -1, 363, -1, -1, -1,
3507  -1, -1, 263, -1, 371, 372, 793, 268, 269, -1,
3508  -1, -1, -1, -1, -1, -1, -1, 804, 805, -1,
3509  387, -1, -1, -1, -1, -1, 287, -1, 815, -1,
3510  -1, -1, -1, -1, 401, -1, 403, -1, 405, 406,
3511  -1, -1, -1, 410, -1, -1, -1, -1, -1, -1,
3512  417, -1, -1, -1, -1, -1, 423, 424, -1, 320,
3513  427, -1, -1, -1, 325, -1, -1, -1, -1, -1,
3514  -1, 332, 333, -1, -1, -1, -1, 864, -1, 446,
3515  -1, -1, -1, 870, -1, 872, -1, -1, -1, 456,
3516  -1, 878, 459, 2, -1, 4, -1, -1, -1, -1,
3517  -1, -1, 469, -1, -1, -1, -1, -1, -1, -1,
3518  -1, -1, -1, 2, -1, 4, 5, 6, 905, -1,
3519  -1, -1, -1, -1, -1, -1, 15, -1, 389, -1,
3520  -1, -1, -1, -1, -1, -1, 503, 504, 399, 48,
3521  2, -1, 4, -1, -1, -1, 407, 514, -1, -1,
3522  -1, -1, -1, 15, -1, -1, -1, -1, -1, 48,
3523  -1, -1, -1, 52, -1, -1, -1, -1, -1, -1,
3524  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3525  -1, 442, -1, -1, -1, -1, 48, 76, -1, -1,
3526  451, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3527  -1, -1, 111, -1, 465, -1, 467, -1, -1, -1,
3528  -1, -1, -1, -1, -1, 489, -1, 491, -1, -1,
3529  -1, -1, 111, -1, -1, -1, -1, -1, -1, -1,
3530  -1, 598, -1, -1, -1, 496, -1, -1, -1, -1,
3531  -1, -1, -1, -1, -1, -1, -1, -1, -1, 111,
3532  -1, -1, -1, -1, -1, -1, -1, -1, -1, 520,
3533  -1, -1, -1, 630, 71, 72, 73, 74, 75, 76,
3534  77, 638, 639, 80, 81, -1, -1, -1, -1, 86,
3535  87, -1, -1, -1, -1, -1, -1, -1, -1, 656,
3536  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3537  -1, -1, -1, 212, -1, -1, -1, -1, -1, 116,
3538  117, 118, 119, 120, 121, 122, 123, 124, 125, -1,
3539  687, -1, 583, 212, 691, 692, -1, 694, 695, -1,
3540  -1, -1, 593, 700, 701, -1, 71, 72, 73, 74,
3541  75, 76, 77, 710, -1, 80, 81, -1, -1, -1,
3542  212, 86, 87, -1, 263, -1, -1, -1, -1, 268,
3543  269, -1, -1, -1, -1, -1, 733, 734, -1, 736,
3544  737, -1, -1, -1, 263, 742, -1, -1, -1, 268,
3545  269, 116, 117, 118, 119, 120, 121, 122, 123, 124,
3546  125, -1, -1, -1, -1, -1, -1, -1, 287, -1,
3547  -1, 263, -1, -1, 665, 666, 268, 269, -1, -1,
3548  -1, 320, -1, -1, -1, 782, 325, -1, -1, 786,
3549  -1, -1, 683, 332, -1, -1, 793, -1, -1, 690,
3550  -1, 320, -1, -1, -1, -1, 325, -1, -1, -1,
3551  -1, -1, -1, 332, 333, -1, -1, 708, 709, -1,
3552  -1, -1, -1, 820, -1, -1, -1, -1, 320, -1,
3553  827, -1, -1, 325, -1, -1, 727, -1, -1, -1,
3554  332, -1, -1, 335, -1, -1, -1, -1, -1, -1,
3555  389, -1, 743, 744, 745, -1, -1, -1, -1, -1,
3556  399, 765, 766, -1, 768, -1, 770, 771, 407, -1,
3557  389, -1, 776, -1, 778, 779, -1, -1, -1, -1,
3558  399, -1, -1, -1, -1, -1, -1, -1, 407, 71,
3559  72, 73, 74, 75, 76, 77, 78, 389, 80, 81,
3560  -1, -1, -1, 442, 86, 87, -1, 399, 905, -1,
3561  -1, -1, 451, 804, 805, 407, -1, -1, -1, -1,
3562  811, -1, -1, 442, 815, -1, -1, -1, -1, -1,
3563  -1, -1, 451, 44, 116, 117, 118, 119, 120, 121,
3564  122, 123, 124, 125, -1, -1, 465, -1, 467, -1,
3565  442, -1, -1, -1, -1, 846, -1, 496, -1, 451,
3566  71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
3567  81, 82, 83, 864, -1, 86, 87, 496, -1, 870,
3568  -1, 872, -1, 887, 888, 889, 890, 878, -1, -1,
3569  894, 895, 896, -1, 898, 899, -1, -1, -1, -1,
3570  -1, 520, -1, 114, 496, 116, 117, 118, 119, 120,
3571  121, 122, 123, 124, 125, -1, -1, -1, -1, -1,
3572  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3573  -1, -1, -1, -1, -1, -1, 940, -1, -1, 943,
3574  944, 945, 946, -1, 583, -1, -1, 51, 52, -1,
3575  954, 55, -1, -1, 593, -1, -1, -1, -1, -1,
3576  -1, -1, -1, -1, 583, 69, 70, 71, 72, 73,
3577  74, 75, 76, 77, 593, -1, 80, 81, -1, -1,
3578  84, 85, 86, 87, -1, -1, -1, -1, -1, -1,
3579  -1, 583, -1, -1, 98, -1, -1, -1, -1, -1,
3580  -1, 593, -1, -1, -1, -1, -1, -1, -1, -1,
3581  -1, -1, 116, 117, 118, 119, 120, 121, 122, 123,
3582  124, 125, -1, 127, 128, -1, 665, 666, -1, -1,
3583  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3584  -1, 145, 146, -1, 683, -1, 665, 666, -1, -1,
3585  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3586  -1, -1, -1, -1, 683, -1, -1, -1, -1, 708,
3587  709, 690, -1, 665, 666, -1, -1, -1, -1, -1,
3588  -1, -1, -1, -1, -1, -1, -1, -1, 727, 708,
3589  709, 683, -1, -1, -1, -1, -1, -1, -1, 691,
3590  -1, -1, -1, -1, 743, 744, 745, -1, 727, -1,
3591  -1, -1, -1, -1, -1, -1, 708, 709, -1, -1,
3592  -1, -1, -1, -1, 743, 744, 745, -1, -1, -1,
3593  -1, -1, -1, -1, -1, 727, -1, -1, -1, -1,
3594  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3595  -1, 743, 744, 745, -1, -1, -1, -1, -1, -1,
3596  -1, -1, -1, -1, -1, 804, 805, -1, -1, -1,
3597  -1, -1, -1, -1, -1, -1, 815, -1, -1, -1,
3598  -1, -1, -1, -1, -1, 804, 805, -1, -1, -1,
3599  -1, -1, 811, -1, -1, -1, 815, -1, -1, -1,
3600  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3601  -1, -1, 804, 805, -1, -1, -1, -1, -1, 811,
3602  -1, -1, -1, 815, -1, 864, -1, 846, -1, -1,
3603  -1, 870, -1, 872, -1, -1, -1, -1, -1, 878,
3604  -1, -1, -1, -1, -1, 864, -1, -1, -1, -1,
3605  -1, 870, -1, 872, -1, -1, -1, -1, -1, 878,
3606  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3607  -1, -1, 864, -1, -1, -1, -1, -1, 870, -1,
3608  872, -1, -1, -1, 0, 1, 878, 3, 4, 5,
3609  6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
3610  16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3611  -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3612  36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3613  46, 47, 48, 49, -1, 51, 52, 53, 54, 55,
3614  56, -1, 58, 59, 60, -1, -1, 63, -1, -1,
3615  66, 67, -1, 69, 70, -1, -1, -1, -1, -1,
3616  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3617  -1, -1, -1, 89, -1, -1, 92, 93, -1, 95,
3618  96, -1, 98, -1, 100, 101, 102, 103, 104, 105,
3619  106, -1, -1, 109, -1, -1, -1, -1, -1, -1,
3620  -1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
3621  126, 127, 128, -1, -1, -1, 8, 9, 10, -1,
3622  -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
3623  -1, -1, -1, 149, 150, 27, 28, 29, -1, -1,
3624  -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3625  42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
3626  -1, 71, 72, 73, 74, 75, 76, 77, 78, 79,
3627  80, 81, 82, 83, -1, -1, 86, 87, -1, 71,
3628  72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
3629  82, 83, -1, -1, 86, 87, 88, -1, 90, 91,
3630  -1, -1, -1, -1, 114, 97, 116, 117, 118, 119,
3631  120, 121, 122, 123, 124, 125, 108, -1, -1, -1,
3632  -1, 113, 114, 115, 116, 117, 118, 119, 120, 121,
3633  122, 123, 124, 125, -1, -1, -1, -1, -1, -1,
3634  150, -1, -1, -1, -1, -1, -1, -1, -1, 141,
3635  142, 143, 144, 0, -1, 147, 148, 149, 150, -1,
3636  -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3637  17, -1, -1, -1, -1, -1, -1, -1, -1, 26,
3638  27, 28, -1, -1, -1, -1, -1, -1, -1, -1,
3639  37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3640  -1, -1, -1, -1, -1, -1, 71, 72, 73, 74,
3641  75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
3642  -1, 86, 87, -1, 71, 72, 73, 74, 75, 76,
3643  77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
3644  87, 88, -1, -1, 91, -1, -1, -1, -1, 114,
3645  97, 116, 117, 118, 119, 120, 121, 122, 123, 124,
3646  125, -1, -1, -1, -1, -1, -1, 114, -1, 116,
3647  117, 118, 119, 120, 121, 122, 123, 124, 125, -1,
3648  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3649  -1, -1, -1, 140, 141, 142, 143, 144, 0, 146,
3650  147, 148, 149, 150, -1, -1, 8, 9, 10, -1,
3651  -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
3652  -1, -1, -1, -1, -1, 27, 28, 29, -1, -1,
3653  -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3654  42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
3655  -1, 71, 72, 73, 74, 75, 76, 77, 78, 79,
3656  80, 81, 82, 83, -1, -1, 86, 87, -1, 71,
3657  72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
3658  82, 83, -1, -1, 86, 87, 88, -1, -1, 91,
3659  -1, -1, -1, -1, -1, 97, 116, 117, 118, 119,
3660  120, 121, 122, 123, 124, 125, 108, -1, -1, -1,
3661  -1, -1, 114, 115, 116, 117, 118, 119, 120, 121,
3662  122, 123, 124, 125, -1, -1, -1, -1, -1, -1,
3663  -1, -1, -1, -1, -1, -1, -1, -1, -1, 141,
3664  142, 143, 144, 0, -1, 147, 148, 149, 150, -1,
3665  -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3666  17, -1, -1, -1, -1, -1, -1, -1, -1, 26,
3667  27, 28, -1, -1, -1, -1, -1, -1, -1, -1,
3668  37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3669  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3670  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3671  -1, -1, -1, -1, 71, 72, 73, 74, 75, 76,
3672  77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
3673  87, 88, -1, -1, 91, -1, -1, -1, -1, -1,
3674  97, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3675  -1, -1, -1, -1, -1, -1, -1, 114, -1, 116,
3676  117, 118, 119, 120, 121, 122, 123, 124, 125, -1,
3677  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3678  -1, -1, -1, 140, 141, 142, 143, 144, 0, 146,
3679  147, 148, 149, 150, -1, -1, 8, 9, 10, -1,
3680  -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
3681  -1, -1, -1, -1, -1, 27, 28, -1, -1, -1,
3682  -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3683  42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
3684  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3685  -1, -1, -1, -1, -1, -1, -1, -1, -1, 71,
3686  72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
3687  82, 83, -1, -1, 86, 87, 88, -1, -1, 91,
3688  -1, -1, -1, -1, -1, 97, -1, -1, -1, -1,
3689  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3690  -1, -1, 114, -1, 116, 117, 118, 119, 120, 121,
3691  122, 123, 124, 125, -1, -1, -1, -1, -1, -1,
3692  -1, -1, -1, -1, -1, -1, -1, -1, -1, 141,
3693  142, 143, 144, 0, 146, 147, 148, 149, 150, -1,
3694  -1, 8, 9, 10, -1, -1, -1, 14, 15, -1,
3695  17, -1, -1, -1, -1, -1, -1, -1, -1, 26,
3696  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3697  37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3698  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3699  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3700  -1, -1, -1, -1, 71, 72, 73, 74, 75, 76,
3701  77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
3702  87, 88, 0, 90, -1, -1, -1, -1, -1, -1,
3703  8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
3704  -1, -1, -1, -1, -1, -1, 113, 114, -1, 116,
3705  117, 118, 119, 120, 121, 122, 123, 124, 125, 37,
3706  38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3707  -1, -1, -1, 140, 141, 142, 143, 144, -1, -1,
3708  147, -1, 149, 150, -1, -1, -1, -1, -1, -1,
3709  -1, -1, -1, 71, 72, 73, 74, 75, 76, 77,
3710  78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
3711  88, -1, 90, -1, -1, -1, -1, -1, -1, -1,
3712  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3713  -1, -1, -1, -1, -1, 113, 114, -1, 116, 117,
3714  118, 119, 120, 121, 122, 123, 124, 125, -1, -1,
3715  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3716  -1, -1, -1, 141, 142, 143, 144, -1, -1, 147,
3717  -1, 149, 150, 1, -1, 3, 4, 5, 6, 7,
3718  8, 9, 10, 11, 12, -1, -1, 15, 16, -1,
3719  18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
3720  -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3721  -1, 39, -1, -1, -1, -1, -1, 45, -1, 47,
3722  48, 49, -1, 51, 52, 53, 54, 55, 56, -1,
3723  58, 59, 60, -1, -1, 63, -1, -1, 66, 67,
3724  -1, 69, 70, -1, -1, -1, -1, -1, -1, -1,
3725  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3726  -1, 89, -1, -1, 92, 93, -1, 95, 96, -1,
3727  98, -1, 100, 101, 102, 103, 104, 105, 106, -1,
3728  -1, 109, -1, -1, -1, -1, -1, -1, -1, -1,
3729  -1, -1, -1, -1, -1, -1, -1, -1, 126, 127,
3730  128, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3731  -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
3732  7, 149, 150, 10, 11, 12, -1, 14, 15, 16,
3733  -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
3734  -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
3735  -1, -1, 39, -1, -1, -1, -1, -1, 45, -1,
3736  47, 48, 49, -1, 51, 52, 53, 54, 55, 56,
3737  -1, 58, 59, 60, -1, -1, 63, -1, -1, 66,
3738  67, -1, 69, 70, -1, -1, -1, -1, -1, -1,
3739  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3740  -1, -1, 89, -1, -1, 92, 93, -1, 95, 96,
3741  -1, 98, -1, 100, 101, 102, 103, 104, 105, 106,
3742  -1, -1, 109, -1, -1, -1, -1, -1, -1, -1,
3743  -1, -1, -1, -1, -1, -1, -1, -1, -1, 126,
3744  127, 128, -1, -1, -1, -1, -1, -1, -1, -1,
3745  1, -1, 3, 4, 5, 6, 7, -1, -1, 10,
3746  11, 12, 149, 150, 15, 16, 17, 18, 19, 20,
3747  21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3748  31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3749  -1, -1, -1, -1, 45, -1, 47, 48, 49, -1,
3750  51, 52, 53, 54, 55, 56, -1, 58, 59, 60,
3751  -1, -1, 63, -1, -1, 66, 67, -1, 69, 70,
3752  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3753  -1, -1, -1, -1, -1, -1, -1, -1, 89, -1,
3754  -1, 92, 93, -1, 95, 96, -1, 98, -1, 100,
3755  101, 102, 103, 104, 105, 106, -1, -1, 109, -1,
3756  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3757  -1, -1, -1, -1, -1, 126, 127, 128, -1, -1,
3758  -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
3759  5, 6, 7, -1, -1, 10, 11, 12, 149, 150,
3760  15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
3761  -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
3762  35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
3763  45, -1, 47, 48, 49, -1, 51, 52, 53, 54,
3764  55, 56, -1, 58, 59, 60, -1, -1, 63, -1,
3765  -1, 66, 67, -1, 69, 70, -1, -1, -1, -1,
3766  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3767  -1, -1, -1, -1, 89, -1, -1, 92, 93, -1,
3768  95, 96, -1, 98, -1, 100, 101, 102, 103, 104,
3769  105, 106, -1, -1, 109, -1, -1, -1, -1, -1,
3770  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3771  -1, 126, 127, 128, -1, -1, -1, -1, -1, -1,
3772  -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
3773  -1, 11, 12, -1, 149, 150, 16, -1, 18, 19,
3774  20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
3775  30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
3776  -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
3777  -1, 51, 52, 53, 54, 55, 56, -1, 58, 59,
3778  60, -1, -1, 63, -1, -1, 66, 67, -1, 69,
3779  70, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3780  -1, -1, -1, -1, -1, -1, -1, -1, -1, 89,
3781  -1, -1, 92, 93, -1, 95, 96, -1, 98, -1,
3782  100, 101, 102, 103, 104, 105, 106, -1, -1, 109,
3783  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3784  -1, -1, -1, -1, -1, -1, 126, 127, 128, -1,
3785  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3786  -1, 141, -1, -1, -1, -1, -1, -1, -1, 149,
3787  150, 1, -1, 3, 4, 5, 6, 7, -1, 9,
3788  10, 11, 12, -1, -1, -1, 16, -1, 18, 19,
3789  20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
3790  30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
3791  -1, -1, -1, -1, -1, 45, -1, 47, 48, 49,
3792  -1, 51, 52, 53, 54, 55, 56, -1, 58, 59,
3793  60, -1, -1, 63, -1, -1, 66, 67, -1, 69,
3794  70, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3795  -1, -1, -1, -1, -1, -1, -1, -1, -1, 89,
3796  -1, -1, 92, 93, -1, 95, 96, -1, 98, -1,
3797  100, 101, 102, 103, 104, 105, 106, -1, -1, 109,
3798  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3799  -1, -1, -1, -1, -1, -1, 126, 127, 128, -1,
3800  -1, -1, -1, -1, -1, -1, 1, -1, 3, 4,
3801  5, 6, 7, -1, -1, -1, 11, 12, -1, 149,
3802  150, 16, -1, 18, 19, 20, 21, 22, 23, 24,
3803  -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
3804  35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
3805  45, -1, 47, 48, 49, -1, 51, 52, 53, 54,
3806  55, 56, -1, 58, 59, 60, -1, -1, 63, -1,
3807  -1, 66, 67, -1, 69, 70, -1, -1, -1, -1,
3808  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3809  -1, -1, -1, -1, 89, -1, -1, 92, 93, -1,
3810  95, 96, -1, 98, -1, 100, 101, 102, 103, 104,
3811  105, 106, -1, -1, 109, -1, -1, -1, -1, -1,
3812  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3813  -1, 126, 127, 128, -1, -1, -1, -1, -1, -1,
3814  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3815  -1, -1, 147, -1, 149, 150, 1, -1, 3, 4,
3816  5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
3817  -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
3818  -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
3819  35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
3820  45, -1, 47, 48, 49, -1, 51, 52, 53, 54,
3821  55, 56, -1, 58, 59, 60, -1, -1, 63, -1,
3822  -1, 66, 67, -1, 69, 70, -1, -1, -1, -1,
3823  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3824  -1, -1, -1, -1, 89, -1, -1, 92, 93, -1,
3825  95, 96, -1, 98, -1, 100, 101, 102, 103, 104,
3826  105, 106, -1, -1, 109, -1, -1, -1, -1, -1,
3827  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3828  -1, 126, 127, 128, -1, -1, -1, -1, -1, -1,
3829  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3830  -1, -1, 147, -1, 149, 150, 1, -1, 3, 4,
3831  5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
3832  -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
3833  -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
3834  35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
3835  45, -1, 47, 48, 49, -1, 51, 52, 53, 54,
3836  55, 56, -1, 58, 59, 60, -1, -1, 63, -1,
3837  -1, 66, 67, -1, 69, 70, -1, -1, -1, -1,
3838  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3839  -1, -1, -1, -1, 89, -1, -1, 92, 93, -1,
3840  95, 96, -1, 98, -1, 100, 101, 102, 103, 104,
3841  105, 106, -1, -1, 109, -1, -1, -1, -1, -1,
3842  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3843  -1, 126, 127, 128, -1, -1, -1, -1, -1, -1,
3844  -1, -1, -1, -1, -1, -1, 141, 1, -1, 3,
3845  4, 5, 6, 7, 149, 150, 10, 11, 12, -1,
3846  -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
3847  24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
3848  34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
3849  -1, 45, -1, 47, 48, 49, -1, 51, 52, 53,
3850  54, 55, 56, -1, 58, 59, 60, -1, -1, 63,
3851  -1, -1, 66, 67, -1, 69, 70, -1, -1, -1,
3852  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3853  -1, -1, -1, -1, -1, 89, -1, -1, 92, 93,
3854  -1, 95, 96, -1, 98, -1, 100, 101, 102, 103,
3855  104, 105, 106, -1, -1, 109, -1, -1, -1, -1,
3856  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3857  -1, -1, 126, 127, 128, -1, -1, -1, -1, -1,
3858  -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
3859  -1, -1, 11, 12, -1, 149, 150, 16, -1, 18,
3860  19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
3861  -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
3862  39, -1, -1, -1, -1, -1, -1, -1, -1, 48,
3863  49, -1, 51, 52, 53, 54, 55, 56, 57, 58,
3864  59, 60, -1, -1, 63, -1, -1, 66, 67, -1,
3865  69, 70, -1, -1, -1, -1, -1, -1, -1, -1,
3866  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3867  89, -1, -1, 92, 93, -1, 95, 96, -1, 98,
3868  99, 100, 101, 102, 103, 104, 105, 106, -1, -1,
3869  109, -1, -1, -1, -1, -1, -1, 3, 4, 5,
3870  -1, 7, -1, -1, -1, 11, 12, 126, 127, 128,
3871  16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3872  -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3873  36, 150, -1, 39, -1, -1, -1, -1, -1, -1,
3874  -1, -1, 48, 49, -1, 51, 52, 53, 54, 55,
3875  56, -1, 58, 59, 60, -1, -1, 63, -1, -1,
3876  66, 67, -1, 69, 70, -1, -1, -1, -1, -1,
3877  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3878  -1, -1, -1, 89, -1, -1, 92, 93, -1, 95,
3879  96, -1, -1, -1, 100, 101, 102, 103, 104, 105,
3880  106, -1, -1, 109, -1, -1, -1, -1, -1, -1,
3881  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3882  126, 127, 128, -1, -1, -1, -1, -1, -1, -1,
3883  -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
3884  11, 12, -1, 149, 150, 16, -1, 18, 19, 20,
3885  21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
3886  31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
3887  -1, -1, -1, -1, -1, -1, -1, 48, 49, -1,
3888  51, 52, 53, 54, 55, 56, -1, 58, 59, 60,
3889  -1, -1, 63, -1, -1, 66, 67, -1, 69, 70,
3890  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3891  -1, -1, -1, -1, -1, -1, -1, -1, 89, -1,
3892  -1, 92, 93, -1, 95, 96, -1, -1, -1, 100,
3893  101, 102, 103, 104, 105, 106, -1, -1, 109, -1,
3894  -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
3895  -1, -1, -1, 11, 12, 126, 127, 128, 16, -1,
3896  18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
3897  -1, -1, 30, 31, 32, 33, 34, 35, 36, 150,
3898  -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
3899  48, 49, -1, 51, 52, 53, 54, 55, 56, -1,
3900  58, 59, 60, -1, -1, 63, -1, -1, 66, 67,
3901  -1, 69, 70, -1, -1, -1, -1, -1, -1, -1,
3902  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3903  -1, 89, -1, -1, 92, 93, -1, 95, 96, -1,
3904  98, -1, 100, 101, 102, 103, 104, 105, 106, -1,
3905  -1, 109, -1, -1, -1, -1, -1, -1, -1, -1,
3906  -1, -1, -1, -1, -1, -1, -1, -1, 126, 127,
3907  128, -1, -1, -1, -1, -1, -1, 3, 4, 5,
3908  6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
3909  16, 149, 18, 19, 20, 21, 22, 23, 24, -1,
3910  -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3911  36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
3912  -1, 47, 48, 49, -1, 51, 52, 53, 54, 55,
3913  56, -1, 58, 59, 60, -1, -1, 63, -1, -1,
3914  66, 67, -1, 69, 70, -1, -1, -1, -1, -1,
3915  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3916  -1, -1, -1, 89, -1, -1, 92, 93, -1, 95,
3917  96, -1, 98, -1, 100, 101, 102, 103, 104, 105,
3918  106, -1, -1, 109, -1, -1, -1, -1, -1, -1,
3919  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3920  126, 127, 128, -1, -1, -1, -1, -1, -1, -1,
3921  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3922  -1, -1, -1, 149, 3, 4, 5, 6, 7, 8,
3923  9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
3924  19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
3925  -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
3926  39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
3927  49, 50, 51, 52, 53, 54, 55, 56, -1, -1,
3928  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3929  69, 70, 71, 72, 73, 74, 75, 76, 77, -1,
3930  -1, 80, 81, -1, -1, 84, 85, 86, 87, -1,
3931  -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
3932  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3933  -1, -1, -1, -1, -1, -1, -1, 116, 117, 118,
3934  119, 120, 121, 122, 123, 124, 125, -1, 127, 128,
3935  -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
3936  -1, -1, -1, 11, 12, -1, 145, 146, 16, -1,
3937  18, 19, 20, 21, 22, 23, 24, -1, 26, -1,
3938  -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3939  -1, 39, -1, -1, -1, -1, -1, -1, -1, -1,
3940  48, 49, -1, 51, 52, 53, 54, 55, 56, 57,
3941  58, 59, 60, -1, -1, 63, -1, -1, 66, 67,
3942  -1, 69, 70, -1, -1, -1, -1, -1, -1, -1,
3943  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3944  -1, 89, -1, -1, 92, 93, -1, 95, 96, -1,
3945  98, 99, 100, 101, 102, 103, 104, 105, 106, -1,
3946  -1, 109, -1, -1, -1, -1, -1, -1, -1, -1,
3947  -1, -1, -1, -1, -1, -1, -1, -1, 126, 127,
3948  128, -1, -1, -1, -1, -1, 3, 4, 5, -1,
3949  7, -1, 140, -1, 11, 12, -1, -1, 146, 16,
3950  -1, 18, 19, 20, 21, 22, 23, 24, -1, 26,
3951  -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
3952  -1, -1, 39, -1, -1, -1, -1, -1, -1, -1,
3953  -1, 48, 49, -1, 51, 52, 53, 54, 55, 56,
3954  57, 58, 59, 60, -1, -1, 63, -1, -1, 66,
3955  67, -1, 69, 70, -1, -1, -1, -1, -1, -1,
3956  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3957  -1, -1, 89, -1, -1, 92, 93, -1, 95, 96,
3958  -1, 98, 99, 100, 101, 102, 103, 104, 105, 106,
3959  -1, -1, 109, -1, -1, -1, -1, -1, -1, -1,
3960  -1, -1, -1, -1, -1, -1, -1, -1, -1, 126,
3961  127, 128, -1, -1, -1, -1, -1, 3, 4, 5,
3962  -1, 7, -1, 140, -1, 11, 12, -1, -1, 146,
3963  16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
3964  -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
3965  36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
3966  -1, -1, 48, 49, -1, 51, 52, 53, 54, 55,
3967  56, 57, 58, 59, 60, -1, -1, 63, -1, -1,
3968  66, 67, -1, 69, 70, -1, -1, -1, -1, -1,
3969  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3970  -1, -1, -1, 89, 90, -1, 92, 93, -1, 95,
3971  96, -1, 98, 99, 100, 101, 102, 103, 104, 105,
3972  106, -1, -1, 109, -1, -1, -1, 113, -1, -1,
3973  -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
3974  126, 127, 128, 11, 12, -1, -1, -1, 16, -1,
3975  18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
3976  146, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3977  -1, 39, -1, -1, -1, -1, -1, -1, -1, -1,
3978  48, 49, -1, 51, 52, 53, 54, 55, 56, 57,
3979  58, 59, 60, -1, -1, 63, -1, -1, 66, 67,
3980  -1, 69, 70, -1, -1, -1, -1, -1, -1, -1,
3981  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3982  -1, 89, -1, -1, 92, 93, -1, 95, 96, -1,
3983  98, 99, 100, 101, 102, 103, 104, 105, 106, -1,
3984  -1, 109, -1, -1, -1, -1, -1, -1, -1, -1,
3985  -1, -1, -1, 3, 4, 5, -1, 7, 126, 127,
3986  128, 11, 12, -1, -1, -1, 16, -1, 18, 19,
3987  20, 21, 22, 23, 24, -1, -1, -1, 146, -1,
3988  30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
3989  -1, -1, -1, -1, -1, -1, -1, -1, 48, 49,
3990  -1, 51, 52, 53, 54, 55, 56, 57, 58, 59,
3991  60, -1, -1, 63, -1, -1, 66, 67, -1, 69,
3992  70, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3993  -1, -1, -1, -1, -1, -1, -1, -1, -1, 89,
3994  -1, -1, 92, 93, -1, 95, 96, -1, 98, 99,
3995  100, 101, 102, 103, 104, 105, 106, -1, -1, 109,
3996  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3997  -1, -1, -1, -1, -1, -1, 126, 127, 128, -1,
3998  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3999  -1, -1, -1, -1, -1, -1, 146, 3, 4, 5,
4000  6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4001  16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4002  26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4003  36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
4004  46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4005  56, -1, -1, -1, -1, -1, -1, 63, -1, -1,
4006  -1, -1, -1, 69, 70, 71, 72, 73, 74, 75,
4007  76, 77, -1, -1, 80, 81, -1, -1, 84, 85,
4008  86, 87, -1, -1, -1, -1, -1, -1, -1, -1,
4009  -1, -1, 98, -1, -1, -1, -1, -1, -1, 105,
4010  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4011  116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
4012  -1, 127, 128, -1, -1, -1, -1, -1, -1, -1,
4013  -1, -1, -1, -1, -1, -1, -1, -1, -1, 145,
4014  3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
4015  13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
4016  23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
4017  33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
4018  -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4019  53, 54, 55, 56, -1, -1, -1, -1, -1, -1,
4020  63, -1, -1, -1, -1, -1, 69, 70, 71, 72,
4021  73, 74, 75, 76, 77, -1, -1, 80, 81, -1,
4022  -1, 84, 85, 86, 87, -1, -1, -1, -1, -1,
4023  -1, -1, -1, -1, -1, 98, -1, -1, -1, -1,
4024  -1, -1, 105, -1, -1, -1, -1, -1, -1, -1,
4025  -1, -1, -1, 116, 117, 118, 119, 120, 121, 122,
4026  123, 124, 125, -1, 127, 128, -1, -1, -1, -1,
4027  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4028  -1, -1, 145, 3, 4, 5, 6, 7, 8, 9,
4029  10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
4030  20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
4031  30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4032  -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4033  50, 51, 52, -1, -1, 55, -1, -1, -1, -1,
4034  -1, -1, -1, -1, -1, -1, -1, -1, -1, 69,
4035  70, 71, 72, 73, 74, 75, 76, 77, -1, -1,
4036  80, 81, -1, -1, 84, 85, 86, 87, -1, -1,
4037  -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
4038  -1, 101, -1, -1, -1, -1, -1, -1, -1, -1,
4039  -1, -1, -1, -1, -1, -1, 116, 117, 118, 119,
4040  120, 121, 122, 123, 124, 125, -1, 127, 128, -1,
4041  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4042  -1, -1, -1, -1, -1, 145, 3, 4, 5, 6,
4043  7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
4044  17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
4045  -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4046  37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
4047  47, 48, 49, 50, 51, 52, -1, -1, 55, -1,
4048  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4049  -1, -1, 69, 70, 71, 72, 73, 74, 75, 76,
4050  77, -1, -1, 80, 81, -1, -1, 84, 85, 86,
4051  87, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4052  -1, 98, -1, -1, -1, -1, -1, -1, -1, -1,
4053  -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
4054  117, 118, 119, 120, 121, 122, 123, 124, 125, -1,
4055  127, 128, -1, -1, 3, 4, 5, -1, 7, -1,
4056  -1, -1, 11, 12, -1, -1, -1, 16, 145, 18,
4057  19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4058  -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4059  39, -1, -1, -1, -1, -1, -1, -1, -1, 48,
4060  49, -1, 51, 52, 53, 54, 55, 56, -1, 58,
4061  59, 60, -1, -1, 63, -1, -1, 66, 67, -1,
4062  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4063  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4064  89, -1, -1, 92, 93, -1, 95, 96, -1, -1,
4065  -1, 100, 101, 102, 103, 104, 105, 106, -1, -1,
4066  109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4067  3, 4, 5, -1, 7, -1, -1, 126, 11, 12,
4068  -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
4069  23, 24, -1, -1, -1, 144, -1, 30, 31, 32,
4070  33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4071  -1, -1, -1, -1, -1, 48, 49, -1, 51, 52,
4072  53, 54, 55, 56, -1, 58, 59, 60, -1, -1,
4073  63, -1, -1, 66, 67, -1, -1, -1, -1, -1,
4074  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4075  -1, -1, -1, -1, -1, -1, 89, -1, -1, 92,
4076  93, -1, 95, 96, -1, -1, -1, 100, 101, 102,
4077  103, 104, 105, 106, -1, -1, 109, -1, -1, -1,
4078  -1, -1, -1, -1, -1, -1, 3, 4, 5, 6,
4079  7, -1, -1, 126, 11, 12, -1, -1, -1, 16,
4080  -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4081  -1, 144, -1, 30, 31, 32, 33, 34, 35, 36,
4082  -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4083  47, 48, 49, -1, 51, 52, 53, 54, 55, 56,
4084  -1, 58, 59, 60, -1, -1, 63, -1, -1, 66,
4085  67, -1, 69, 70, -1, -1, -1, -1, -1, -1,
4086  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4087  -1, -1, 89, -1, -1, 92, 93, -1, 95, 96,
4088  -1, 98, -1, 100, 101, 102, 103, 104, 105, 106,
4089  -1, -1, 109, -1, -1, -1, -1, -1, -1, 3,
4090  4, 5, 6, 7, -1, -1, -1, 11, 12, 126,
4091  127, 128, 16, -1, 18, 19, 20, 21, 22, 23,
4092  24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4093  34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4094  -1, 45, -1, 47, 48, 49, -1, 51, 52, 53,
4095  54, 55, 56, -1, 58, 59, 60, -1, -1, 63,
4096  -1, -1, 66, 67, -1, 69, 70, -1, -1, -1,
4097  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4098  -1, -1, -1, -1, -1, 89, -1, -1, 92, 93,
4099  -1, 95, 96, -1, 98, -1, 100, 101, 102, 103,
4100  104, 105, 106, -1, -1, 109, -1, -1, -1, -1,
4101  -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4102  11, 12, 126, 127, 128, 16, -1, 18, 19, 20,
4103  21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4104  31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4105  -1, -1, -1, -1, -1, -1, -1, 48, 49, -1,
4106  51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
4107  -1, -1, 63, -1, -1, 66, 67, -1, 69, 70,
4108  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4109  -1, -1, -1, -1, -1, -1, -1, -1, 89, -1,
4110  -1, 92, 93, -1, 95, 96, -1, 98, 99, 100,
4111  101, 102, 103, 104, 105, 106, -1, -1, 109, -1,
4112  -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4113  -1, -1, -1, 11, 12, 126, 127, 128, 16, -1,
4114  18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4115  -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4116  -1, 39, -1, -1, -1, -1, -1, -1, -1, -1,
4117  48, 49, -1, 51, 52, 53, 54, 55, 56, 57,
4118  58, 59, 60, -1, -1, 63, -1, -1, 66, 67,
4119  -1, 69, 70, -1, -1, -1, -1, -1, -1, -1,
4120  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4121  -1, 89, -1, -1, 92, 93, -1, 95, 96, -1,
4122  98, 99, 100, 101, 102, 103, 104, 105, 106, -1,
4123  -1, 109, -1, -1, -1, -1, -1, -1, 3, 4,
4124  5, -1, 7, -1, -1, -1, 11, 12, 126, 127,
4125  128, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4126  -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4127  35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4128  -1, -1, -1, 48, 49, -1, 51, 52, 53, 54,
4129  55, 56, 57, 58, 59, 60, -1, -1, 63, -1,
4130  -1, 66, 67, -1, 69, 70, -1, -1, -1, -1,
4131  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4132  -1, -1, -1, -1, 89, -1, -1, 92, 93, -1,
4133  95, 96, -1, 98, -1, 100, 101, 102, 103, 104,
4134  105, 106, -1, -1, 109, -1, -1, -1, -1, -1,
4135  -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4136  12, 126, 127, 128, 16, -1, 18, 19, 20, 21,
4137  22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4138  32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4139  -1, -1, -1, -1, -1, -1, 48, 49, -1, 51,
4140  52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
4141  -1, 63, -1, -1, 66, 67, -1, 69, 70, -1,
4142  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4143  -1, -1, -1, -1, -1, -1, -1, 89, -1, -1,
4144  92, 93, -1, 95, 96, -1, -1, 99, 100, 101,
4145  102, 103, 104, 105, 106, -1, -1, 109, -1, -1,
4146  -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4147  -1, -1, 11, 12, 126, 127, 128, 16, -1, 18,
4148  19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4149  -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4150  39, -1, -1, -1, -1, -1, -1, -1, -1, 48,
4151  49, -1, 51, 52, 53, 54, 55, 56, 57, 58,
4152  59, 60, -1, -1, 63, -1, -1, 66, 67, -1,
4153  69, 70, -1, -1, -1, -1, -1, -1, -1, -1,
4154  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4155  89, -1, -1, 92, 93, -1, 95, 96, -1, 98,
4156  -1, 100, 101, 102, 103, 104, 105, 106, -1, -1,
4157  109, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4158  -1, 7, -1, -1, -1, 11, 12, 126, 127, 128,
4159  16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4160  -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4161  36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4162  -1, -1, 48, 49, -1, 51, 52, 53, 54, 55,
4163  56, 57, 58, 59, 60, -1, -1, 63, -1, -1,
4164  66, 67, -1, 69, 70, -1, -1, -1, -1, -1,
4165  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4166  -1, -1, -1, 89, -1, -1, 92, 93, -1, 95,
4167  96, -1, -1, -1, 100, 101, 102, 103, 104, 105,
4168  106, -1, -1, 109, -1, -1, -1, -1, -1, -1,
4169  3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4170  126, 127, 128, 16, -1, 18, 19, 20, 21, 22,
4171  23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4172  33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4173  -1, -1, -1, -1, -1, 48, 49, -1, 51, 52,
4174  53, 54, 55, 56, -1, 58, 59, 60, -1, -1,
4175  63, -1, -1, 66, 67, -1, 69, 70, -1, -1,
4176  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4177  -1, -1, -1, -1, -1, -1, 89, -1, -1, 92,
4178  93, -1, 95, 96, -1, 98, -1, 100, 101, 102,
4179  103, 104, 105, 106, -1, -1, 109, -1, -1, -1,
4180  -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4181  -1, 11, 12, 126, 127, 128, 16, -1, 18, 19,
4182  20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4183  30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4184  -1, -1, -1, -1, -1, -1, -1, -1, 48, 49,
4185  -1, 51, 52, 53, 54, 55, 56, -1, 58, 59,
4186  60, -1, -1, 63, -1, -1, 66, 67, -1, 69,
4187  70, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4188  -1, -1, -1, -1, -1, -1, -1, -1, -1, 89,
4189  -1, -1, 92, 93, -1, 95, 96, -1, 98, -1,
4190  100, 101, 102, 103, 104, 105, 106, -1, -1, 109,
4191  -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
4192  7, -1, -1, -1, 11, 12, 126, 127, 128, 16,
4193  -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4194  -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4195  -1, -1, 39, -1, -1, -1, -1, -1, -1, -1,
4196  -1, 48, 49, -1, 51, 52, 53, 54, 55, 56,
4197  -1, 58, 59, 60, -1, -1, 63, -1, -1, 66,
4198  67, -1, 69, 70, -1, -1, -1, -1, -1, -1,
4199  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4200  -1, -1, 89, -1, -1, 92, 93, -1, 95, 96,
4201  -1, 98, -1, 100, 101, 102, 103, 104, 105, 106,
4202  -1, -1, 109, -1, -1, -1, -1, -1, -1, 3,
4203  4, 5, -1, 7, -1, -1, -1, 11, 12, 126,
4204  127, 128, 16, -1, 18, 19, 20, 21, 22, 23,
4205  24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4206  34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4207  -1, -1, -1, -1, 48, 49, -1, 51, 52, 53,
4208  54, 55, 56, -1, 58, 59, 60, -1, -1, 63,
4209  -1, -1, 66, 67, -1, 69, 70, -1, -1, -1,
4210  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4211  -1, -1, -1, -1, -1, 89, -1, -1, 92, 93,
4212  -1, 95, 96, -1, 98, -1, 100, 101, 102, 103,
4213  104, 105, 106, -1, -1, 109, -1, -1, -1, -1,
4214  -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4215  11, 12, 126, 127, 128, 16, -1, 18, 19, 20,
4216  21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4217  31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4218  -1, -1, -1, -1, -1, -1, -1, 48, 49, -1,
4219  51, 52, 53, 54, 55, 56, -1, 58, 59, 60,
4220  -1, -1, 63, -1, -1, 66, 67, -1, 69, 70,
4221  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4222  -1, -1, -1, -1, -1, -1, -1, -1, 89, -1,
4223  -1, 92, 93, -1, 95, 96, -1, 98, -1, 100,
4224  101, 102, 103, 104, 105, 106, -1, -1, 109, -1,
4225  -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4226  -1, -1, -1, 11, 12, 126, 127, 128, 16, -1,
4227  18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4228  -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4229  -1, 39, -1, -1, -1, -1, -1, -1, -1, -1,
4230  48, 49, -1, 51, 52, 53, 54, 55, 56, -1,
4231  58, 59, 60, -1, -1, 63, -1, -1, 66, 67,
4232  -1, 69, 70, -1, -1, -1, -1, -1, -1, -1,
4233  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4234  -1, 89, -1, -1, 92, 93, -1, 95, 96, -1,
4235  -1, -1, 100, 101, 102, 103, 104, 105, 106, -1,
4236  -1, 109, -1, -1, -1, -1, -1, -1, 3, 4,
4237  5, -1, 7, -1, -1, -1, 11, 12, 126, 127,
4238  128, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4239  -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4240  35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4241  -1, -1, -1, 48, 49, -1, 51, 52, 53, 54,
4242  55, 56, -1, 58, 59, 60, -1, -1, 63, -1,
4243  -1, 66, 67, -1, 69, 70, -1, -1, -1, -1,
4244  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4245  -1, -1, -1, -1, 89, -1, -1, 92, 93, -1,
4246  95, 96, -1, -1, -1, 100, 101, 102, 103, 104,
4247  105, 106, -1, -1, 109, -1, -1, -1, -1, -1,
4248  -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4249  12, 126, 127, 128, 16, -1, 18, 19, 20, 21,
4250  22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4251  32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4252  -1, -1, -1, -1, -1, -1, 48, 49, -1, 51,
4253  52, 53, 54, 55, 56, -1, 58, 59, 60, -1,
4254  -1, 63, -1, -1, 66, 67, -1, 69, 70, -1,
4255  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4256  -1, -1, -1, -1, -1, -1, -1, 89, -1, -1,
4257  92, 93, -1, 95, 96, -1, -1, -1, 100, 101,
4258  102, 103, 104, 105, 106, -1, -1, 109, -1, -1,
4259  -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4260  -1, -1, 11, 12, 126, 127, 128, 16, -1, 18,
4261  19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4262  -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4263  39, -1, -1, -1, -1, -1, -1, -1, -1, 48,
4264  49, -1, 51, 52, 53, 54, 55, 56, -1, 58,
4265  59, 60, -1, -1, 63, -1, -1, 66, 67, -1,
4266  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4267  -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
4268  89, -1, -1, 92, 93, -1, 95, 96, -1, -1,
4269  -1, 100, 101, 102, 103, 104, 105, 106, -1, -1,
4270  109, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4271  -1, 11, 12, -1, -1, -1, 16, 126, 18, 19,
4272  20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4273  30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4274  -1, -1, -1, -1, -1, -1, -1, -1, 48, 49,
4275  -1, 51, 52, 53, 54, 55, 56, -1, 58, 59,
4276  60, -1, -1, 63, -1, -1, 66, 67, -1, -1,
4277  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4278  -1, -1, -1, -1, -1, -1, -1, -1, -1, 89,
4279  -1, -1, 92, 93, -1, 95, 96, -1, 98, -1,
4280  100, 101, 102, 103, 104, 105, 106, -1, -1, 109,
4281  -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
4282  11, 12, -1, -1, -1, 16, 126, 18, 19, 20,
4283  21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
4284  31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4285  -1, -1, -1, -1, -1, -1, -1, 48, 49, -1,
4286  51, 52, 53, 54, 55, 56, -1, 58, 59, 60,
4287  -1, -1, 63, -1, -1, 66, 67, -1, -1, -1,
4288  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4289  -1, -1, -1, -1, -1, -1, -1, -1, 89, -1,
4290  -1, 92, 93, -1, 95, 96, -1, 98, -1, 100,
4291  101, 102, 103, 104, 105, 106, -1, -1, 109, -1,
4292  -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4293  12, -1, -1, -1, 16, 126, 18, 19, 20, 21,
4294  22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4295  32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4296  -1, -1, -1, -1, -1, -1, 48, 49, -1, 51,
4297  52, 53, 54, 55, 56, -1, 58, 59, 60, -1,
4298  -1, 63, -1, -1, 66, 67, -1, -1, -1, -1,
4299  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4300  -1, -1, -1, -1, -1, -1, -1, 89, -1, -1,
4301  92, 93, -1, 95, 96, -1, -1, -1, 100, 101,
4302  102, 103, 104, 105, 106, -1, -1, 109, -1, -1,
4303  3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4304  -1, -1, -1, 16, 126, 18, 19, 20, 21, 22,
4305  23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4306  33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4307  -1, -1, -1, -1, -1, 48, 49, -1, 51, 52,
4308  53, 54, 55, 56, -1, 58, 59, 60, -1, -1,
4309  63, -1, -1, 66, 67, -1, -1, -1, -1, -1,
4310  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4311  -1, -1, -1, -1, -1, -1, 89, -1, -1, 92,
4312  93, -1, 95, 96, -1, -1, -1, 100, 101, 102,
4313  103, 104, 105, 106, -1, -1, 109, -1, -1, 3,
4314  4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
4315  -1, -1, 16, 126, 18, 19, 20, 21, 22, 23,
4316  24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4317  34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4318  -1, -1, -1, -1, 48, 49, -1, 51, 52, 53,
4319  54, 55, 56, -1, 58, 59, 60, -1, -1, 63,
4320  -1, -1, 66, 67, -1, -1, -1, -1, -1, -1,
4321  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4322  -1, -1, -1, -1, -1, 89, -1, -1, 92, 93,
4323  -1, 95, 96, -1, -1, -1, 100, 101, 102, 103,
4324  104, 105, 106, -1, -1, 109, -1, -1, 3, 4,
4325  5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
4326  -1, 16, 126, 18, 19, 20, 21, 22, 23, 24,
4327  -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4328  35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4329  -1, -1, -1, 48, 49, -1, 51, 52, 53, 54,
4330  55, 56, -1, 58, 59, 60, -1, -1, 63, -1,
4331  -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
4332  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4333  -1, -1, -1, -1, 89, -1, -1, 92, 93, -1,
4334  95, 96, -1, -1, -1, 100, 101, 102, 103, 104,
4335  105, 106, -1, -1, 109, 51, 52, -1, -1, 55,
4336  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4337  -1, 126, -1, 69, 70, 71, 72, 73, 74, 75,
4338  76, 77, -1, -1, 80, 81, -1, -1, 84, 85,
4339  86, 87, -1, -1, -1, -1, -1, -1, -1, -1,
4340  -1, -1, 98, -1, -1, -1, -1, -1, -1, -1,
4341  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4342  116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
4343  -1, 127, 128, 51, 52, -1, -1, 55, -1, -1,
4344  -1, -1, -1, -1, -1, -1, -1, -1, -1, 145,
4345  146, 69, 70, 71, 72, 73, 74, 75, 76, 77,
4346  -1, -1, 80, 81, -1, -1, 84, 85, 86, 87,
4347  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4348  98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4349  -1, -1, -1, -1, -1, -1, -1, -1, 116, 117,
4350  118, 119, 120, 121, 122, 123, 124, 125, -1, 127,
4351  128, 51, 52, -1, -1, 55, -1, -1, -1, -1,
4352  -1, -1, -1, -1, -1, -1, -1, 145, 146, 69,
4353  70, 71, 72, 73, 74, 75, 76, 77, -1, -1,
4354  80, 81, -1, -1, 84, 85, 86, 87, -1, -1,
4355  -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
4356  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4357  -1, -1, -1, -1, -1, -1, 116, 117, 118, 119,
4358  120, 121, 122, 123, 124, 125, -1, 127, 128, 51,
4359  52, -1, -1, 55, -1, -1, -1, -1, -1, -1,
4360  -1, -1, -1, -1, -1, 145, 146, 69, 70, 71,
4361  72, 73, 74, 75, 76, 77, -1, -1, 80, 81,
4362  -1, -1, 84, 85, 86, 87, -1, -1, -1, -1,
4363  -1, -1, -1, -1, -1, -1, 98, -1, -1, -1,
4364  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4365  -1, -1, -1, -1, 116, 117, 118, 119, 120, 121,
4366  122, 123, 124, 125, -1, 127, 128, 51, 52, -1,
4367  -1, 55, -1, -1, -1, -1, -1, -1, -1, -1,
4368  -1, -1, -1, 145, 146, 69, 70, 71, 72, 73,
4369  74, 75, 76, 77, -1, -1, 80, 81, -1, -1,
4370  84, 85, 86, 87, -1, -1, -1, -1, -1, -1,
4371  -1, -1, -1, -1, 98, -1, -1, -1, -1, -1,
4372  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4373  -1, -1, 116, 117, 118, 119, 120, 121, 122, 123,
4374  124, 125, -1, 127, 128, 51, 52, -1, -1, 55,
4375  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4376  -1, 145, 146, 69, 70, 71, 72, 73, 74, 75,
4377  76, 77, -1, -1, 80, 81, -1, -1, 84, 85,
4378  86, 87, -1, -1, -1, -1, -1, -1, -1, -1,
4379  -1, -1, 98, -1, -1, -1, -1, -1, -1, -1,
4380  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4381  116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
4382  -1, 127, 128, 51, 52, -1, -1, 55, -1, -1,
4383  -1, -1, -1, -1, -1, -1, -1, -1, -1, 145,
4384  146, 69, 70, 71, 72, 73, 74, 75, 76, 77,
4385  -1, -1, 80, 81, -1, -1, 84, 85, 86, 87,
4386  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4387  98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4388  -1, -1, -1, -1, -1, -1, -1, -1, 116, 117,
4389  118, 119, 120, 121, 122, 123, 124, 125, -1, 127,
4390  128, 51, 52, -1, -1, 55, -1, -1, -1, -1,
4391  -1, -1, -1, -1, -1, -1, -1, 145, 146, 69,
4392  70, 71, 72, 73, 74, 75, 76, 77, -1, -1,
4393  80, 81, -1, -1, 84, 85, 86, 87, -1, -1,
4394  -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
4395  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4396  -1, -1, -1, -1, -1, -1, 116, 117, 118, 119,
4397  120, 121, 122, 123, 124, 125, -1, 127, 128, 51,
4398  52, -1, -1, 55, -1, -1, -1, -1, -1, -1,
4399  -1, -1, -1, -1, -1, 145, 146, 69, 70, 71,
4400  72, 73, 74, 75, 76, 77, -1, -1, 80, 81,
4401  -1, -1, 84, 85, 86, 87, -1, -1, -1, -1,
4402  -1, -1, -1, -1, -1, -1, 98, -1, -1, -1,
4403  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4404  -1, -1, -1, -1, 116, 117, 118, 119, 120, 121,
4405  122, 123, 124, 125, -1, 127, 128, 51, 52, -1,
4406  -1, 55, -1, -1, -1, -1, -1, -1, -1, -1,
4407  -1, -1, -1, 145, 146, 69, 70, 71, 72, 73,
4408  74, 75, 76, 77, -1, -1, 80, 81, -1, -1,
4409  84, 85, 86, 87, -1, -1, -1, -1, -1, -1,
4410  -1, -1, -1, -1, 98, -1, -1, -1, -1, -1,
4411  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4412  -1, -1, 116, 117, 118, 119, 120, 121, 122, 123,
4413  124, 125, -1, 127, 128, 51, 52, -1, -1, 55,
4414  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4415  -1, 145, 146, 69, 70, 71, 72, 73, 74, 75,
4416  76, 77, -1, -1, 80, 81, -1, -1, 84, 85,
4417  86, 87, -1, -1, -1, -1, -1, -1, -1, -1,
4418  -1, -1, 98, -1, -1, -1, -1, -1, -1, -1,
4419  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4420  116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
4421  -1, 127, 128, 51, 52, -1, -1, 55, -1, -1,
4422  -1, -1, -1, -1, -1, -1, -1, -1, -1, 145,
4423  146, 69, 70, 71, 72, 73, 74, 75, 76, 77,
4424  -1, -1, 80, 81, -1, -1, 84, 85, 86, 87,
4425  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4426  98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4427  -1, -1, -1, -1, -1, -1, -1, -1, 116, 117,
4428  118, 119, 120, 121, 122, 123, 124, 125, -1, 127,
4429  128, 51, 52, -1, -1, 55, -1, -1, -1, -1,
4430  -1, -1, -1, -1, -1, -1, -1, 145, 146, 69,
4431  70, 71, 72, 73, 74, 75, 76, 77, -1, -1,
4432  80, 81, -1, -1, 84, 85, 86, 87, -1, -1,
4433  -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
4434  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4435  -1, -1, -1, -1, -1, -1, 116, 117, 118, 119,
4436  120, 121, 122, 123, 124, 125, -1, 127, 128, -1,
4437  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4438  -1, -1, -1, -1, -1, 145
4439 };
4440 
4441 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
4442  symbol of state STATE-NUM. */
4443 static const yytype_uint16 yystos[] =
4444 {
4445  0, 152, 153, 0, 1, 3, 4, 5, 6, 7,
4446  11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
4447  30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
4448  47, 48, 49, 51, 52, 53, 54, 55, 56, 58,
4449  59, 60, 63, 66, 67, 69, 70, 89, 92, 93,
4450  95, 96, 98, 100, 101, 102, 103, 104, 105, 106,
4451  109, 126, 127, 128, 154, 155, 156, 161, 163, 164,
4452  166, 167, 170, 171, 173, 174, 175, 177, 178, 187,
4453  200, 218, 237, 238, 248, 249, 253, 254, 255, 259,
4454  260, 261, 263, 264, 265, 266, 267, 268, 291, 304,
4455  156, 21, 22, 30, 31, 32, 39, 51, 55, 86,
4456  89, 92, 126, 179, 180, 200, 218, 265, 268, 291,
4457  180, 3, 4, 5, 6, 7, 8, 9, 10, 11,
4458  12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
4459  22, 23, 24, 25, 26, 30, 31, 32, 33, 34,
4460  35, 36, 37, 38, 39, 45, 46, 47, 48, 49,
4461  50, 51, 52, 55, 69, 70, 71, 72, 73, 74,
4462  75, 76, 77, 80, 81, 84, 85, 86, 87, 98,
4463  116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
4464  127, 128, 145, 146, 181, 185, 186, 267, 286, 33,
4465  34, 35, 36, 48, 49, 51, 55, 101, 181, 182,
4466  183, 261, 201, 89, 164, 165, 178, 218, 265, 266,
4467  268, 165, 149, 150, 165, 295, 300, 301, 303, 205,
4468  207, 89, 171, 178, 218, 223, 265, 268, 57, 98,
4469  99, 127, 170, 187, 188, 193, 196, 198, 289, 290,
4470  193, 193, 146, 194, 195, 146, 190, 194, 146, 296,
4471  301, 182, 157, 140, 187, 218, 187, 55, 1, 92,
4472  159, 160, 161, 172, 173, 304, 164, 203, 189, 198,
4473  289, 304, 188, 288, 289, 304, 89, 144, 177, 218,
4474  265, 268, 204, 53, 54, 56, 63, 105, 181, 262,
4475  62, 64, 65, 111, 250, 251, 63, 250, 63, 250,
4476  63, 250, 61, 250, 58, 59, 166, 187, 187, 295,
4477  303, 40, 41, 42, 43, 44, 37, 38, 28, 235,
4478  113, 144, 92, 98, 174, 113, 71, 72, 73, 74,
4479  75, 76, 77, 78, 79, 80, 81, 82, 83, 86,
4480  87, 114, 116, 117, 118, 119, 120, 121, 122, 123,
4481  124, 125, 88, 142, 143, 88, 143, 294, 26, 140,
4482  239, 90, 90, 190, 194, 239, 164, 51, 55, 179,
4483  58, 59, 1, 117, 269, 300, 88, 142, 143, 214,
4484  287, 215, 294, 105, 144, 158, 159, 55, 13, 219,
4485  300, 113, 88, 142, 143, 90, 90, 219, 302, 295,
4486  17, 242, 149, 165, 165, 55, 88, 142, 143, 25,
4487  188, 188, 188, 91, 144, 197, 304, 144, 197, 193,
4488  296, 297, 193, 192, 193, 198, 289, 304, 164, 297,
4489  164, 162, 140, 159, 88, 143, 90, 161, 172, 147,
4490  295, 303, 297, 202, 297, 148, 144, 299, 301, 144,
4491  299, 141, 299, 55, 174, 175, 176, 144, 88, 142,
4492  143, 51, 53, 54, 55, 56, 92, 98, 99, 120,
4493  123, 146, 233, 272, 273, 274, 275, 276, 277, 280,
4494  281, 282, 283, 284, 63, 251, 252, 62, 251, 63,
4495  63, 63, 61, 71, 71, 156, 165, 165, 165, 165,
4496  161, 164, 164, 236, 98, 166, 188, 198, 199, 172,
4497  144, 177, 144, 163, 166, 178, 187, 188, 199, 187,
4498  187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
4499  187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
4500  187, 187, 187, 187, 187, 51, 52, 55, 185, 190,
4501  292, 293, 192, 51, 52, 55, 185, 190, 292, 51,
4502  55, 292, 241, 240, 166, 187, 166, 187, 97, 168,
4503  212, 300, 270, 211, 51, 55, 179, 292, 192, 292,
4504  158, 164, 146, 271, 272, 216, 184, 10, 8, 244,
4505  304, 159, 13, 187, 51, 55, 192, 51, 55, 159,
4506  110, 250, 256, 257, 258, 304, 242, 198, 10, 27,
4507  220, 300, 220, 51, 55, 192, 51, 55, 209, 188,
4508  98, 188, 196, 289, 290, 297, 147, 297, 144, 144,
4509  297, 182, 154, 141, 187, 297, 161, 297, 289, 174,
4510  176, 51, 55, 192, 51, 55, 113, 51, 92, 98,
4511  224, 225, 226, 274, 272, 29, 108, 234, 144, 285,
4512  304, 144, 285, 51, 144, 285, 51, 63, 159, 187,
4513  187, 79, 118, 228, 229, 304, 188, 144, 297, 176,
4514  144, 113, 44, 296, 90, 90, 190, 194, 296, 298,
4515  90, 90, 190, 191, 194, 304, 191, 194, 228, 228,
4516  44, 169, 300, 165, 158, 298, 10, 297, 272, 158,
4517  300, 181, 182, 188, 199, 245, 304, 15, 222, 304,
4518  14, 221, 222, 90, 90, 298, 90, 90, 222, 110,
4519  258, 10, 144, 219, 206, 208, 298, 165, 188, 197,
4520  289, 141, 299, 298, 188, 226, 144, 274, 144, 297,
4521  230, 296, 159, 159, 275, 280, 282, 284, 276, 277,
4522  282, 276, 141, 51, 227, 230, 276, 278, 279, 282,
4523  284, 159, 98, 188, 176, 187, 115, 166, 187, 166,
4524  187, 168, 148, 90, 166, 187, 166, 187, 168, 239,
4525  235, 159, 159, 187, 228, 213, 300, 10, 297, 10,
4526  217, 91, 246, 304, 159, 9, 247, 304, 165, 10,
4527  90, 10, 188, 159, 159, 159, 220, 144, 297, 225,
4528  144, 98, 224, 147, 149, 10, 141, 144, 285, 144,
4529  285, 144, 285, 144, 285, 285, 113, 230, 118, 144,
4530  285, 144, 285, 144, 285, 10, 188, 187, 166, 187,
4531  10, 141, 159, 158, 271, 89, 178, 218, 265, 268,
4532  219, 159, 219, 222, 242, 243, 10, 10, 210, 144,
4533  225, 144, 274, 51, 231, 232, 273, 276, 282, 276,
4534  276, 89, 218, 118, 279, 282, 276, 278, 282, 276,
4535  141, 10, 158, 55, 88, 142, 143, 159, 159, 159,
4536  225, 144, 144, 296, 285, 144, 285, 285, 285, 55,
4537  88, 144, 285, 144, 285, 285, 144, 285, 285, 10,
4538  51, 55, 192, 51, 55, 244, 221, 10, 225, 232,
4539  276, 51, 55, 276, 282, 276, 276, 298, 285, 285,
4540  144, 285, 285, 285, 276, 285
4541 };
4542 
4543 #define yyerrok (yyerrstatus = 0)
4544 #define yyclearin (yychar = YYEMPTY)
4545 #define YYEMPTY (-2)
4546 #define YYEOF 0
4547 
4548 #define YYACCEPT goto yyacceptlab
4549 #define YYABORT goto yyabortlab
4550 #define YYERROR goto yyerrorlab
4551 
4552 
4553 /* Like YYERROR except do call yyerror. This remains here temporarily
4554  to ease the transition to the new meaning of YYERROR, for GCC.
4555  Once GCC version 2 has supplanted version 1, this can go. However,
4556  YYFAIL appears to be in use. Nevertheless, it is formally deprecated
4557  in Bison 2.4.2's NEWS entry, where a plan to phase it out is
4558  discussed. */
4559 
4560 #define YYFAIL goto yyerrlab
4561 #if defined YYFAIL
4562  /* This is here to suppress warnings from the GCC cpp's
4563  -Wunused-macros. Normally we don't worry about that warning, but
4564  some users do, and we want to make it easy for users to remove
4565  YYFAIL uses, which will produce warnings from Bison 2.5. */
4566 #endif
4567 
4568 #define YYRECOVERING() (!!yyerrstatus)
4569 
4570 #define YYBACKUP(Token, Value) \
4571 do \
4572  if (yychar == YYEMPTY) \
4573  { \
4574  yychar = (Token); \
4575  yylval = (Value); \
4576  YYPOPSTACK (yylen); \
4577  yystate = *yyssp; \
4578  goto yybackup; \
4579  } \
4580  else \
4581  { \
4582  yyerror (p, YY_("syntax error: cannot back up")); \
4583  YYERROR; \
4584  } \
4585 while (YYID (0))
4586 
4587 /* Error token number */
4588 #define YYTERROR 1
4589 #define YYERRCODE 256
4590 
4591 
4592 /* This macro is provided for backward compatibility. */
4593 #ifndef YY_LOCATION_PRINT
4594 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
4595 #endif
4596 
4597 
4598 /* YYLEX -- calling `yylex' with the right arguments. */
4599 #ifdef YYLEX_PARAM
4600 # define YYLEX yylex (&yylval, YYLEX_PARAM)
4601 #else
4602 # define YYLEX yylex (&yylval, p)
4603 #endif
4604 
4605 /* Enable debugging if requested. */
4606 #if YYDEBUG
4607 
4608 # ifndef YYFPRINTF
4609 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
4610 # define YYFPRINTF fprintf
4611 # endif
4612 
4613 # define YYDPRINTF(Args) \
4614 do { \
4615  if (yydebug) \
4616  YYFPRINTF Args; \
4617 } while (YYID (0))
4618 
4619 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
4620 do { \
4621  if (yydebug) \
4622  { \
4623  YYFPRINTF (stderr, "%s ", Title); \
4624  yy_symbol_print (stderr, \
4625  Type, Value, p); \
4626  YYFPRINTF (stderr, "\n"); \
4627  } \
4628 } while (YYID (0))
4629 
4630 
4631 /*--------------------------------.
4632 | Print this symbol on YYOUTPUT. |
4633 `--------------------------------*/
4634 
4635 /*ARGSUSED*/
4636 #if (defined __STDC__ || defined __C99__FUNC__ \
4637  || defined __cplusplus || defined _MSC_VER)
4638 static void
4639 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_state *p)
4640 #else
4641 static void
4642 yy_symbol_value_print (yyoutput, yytype, yyvaluep, p)
4643  FILE *yyoutput;
4644  int yytype;
4645  YYSTYPE const * const yyvaluep;
4646  parser_state *p;
4647 #endif
4648 {
4649  FILE *yyo = yyoutput;
4650  YYUSE (yyo);
4651  if (!yyvaluep)
4652  return;
4653  YYUSE (p);
4654 # ifdef YYPRINT
4655  if (yytype < YYNTOKENS)
4656  YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
4657 # else
4658  YYUSE (yyoutput);
4659 # endif
4660  YYUSE (yytype);
4661 }
4662 
4663 
4664 /*--------------------------------.
4665 | Print this symbol on YYOUTPUT. |
4666 `--------------------------------*/
4667 
4668 #if (defined __STDC__ || defined __C99__FUNC__ \
4669  || defined __cplusplus || defined _MSC_VER)
4670 static void
4671 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_state *p)
4672 #else
4673 static void
4674 yy_symbol_print (yyoutput, yytype, yyvaluep, p)
4675  FILE *yyoutput;
4676  int yytype;
4677  YYSTYPE const * const yyvaluep;
4678  parser_state *p;
4679 #endif
4680 {
4681  if (yytype < YYNTOKENS)
4682  YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
4683  else
4684  YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
4685 
4686  yy_symbol_value_print (yyoutput, yytype, yyvaluep, p);
4687  YYFPRINTF (yyoutput, ")");
4688 }
4689 
4690 /*------------------------------------------------------------------.
4691 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
4692 | TOP (included). |
4693 `------------------------------------------------------------------*/
4694 
4695 #if (defined __STDC__ || defined __C99__FUNC__ \
4696  || defined __cplusplus || defined _MSC_VER)
4697 static void
4698 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
4699 #else
4700 static void
4701 yy_stack_print (yybottom, yytop)
4702  yytype_int16 *yybottom;
4703  yytype_int16 *yytop;
4704 #endif
4705 {
4706  YYFPRINTF (stderr, "Stack now");
4707  for (; yybottom <= yytop; yybottom++)
4708  {
4709  int yybot = *yybottom;
4710  YYFPRINTF (stderr, " %d", yybot);
4711  }
4712  YYFPRINTF (stderr, "\n");
4713 }
4714 
4715 # define YY_STACK_PRINT(Bottom, Top) \
4716 do { \
4717  if (yydebug) \
4718  yy_stack_print ((Bottom), (Top)); \
4719 } while (YYID (0))
4720 
4721 
4722 /*------------------------------------------------.
4723 | Report that the YYRULE is going to be reduced. |
4724 `------------------------------------------------*/
4725 
4726 #if (defined __STDC__ || defined __C99__FUNC__ \
4727  || defined __cplusplus || defined _MSC_VER)
4728 static void
4729 yy_reduce_print (YYSTYPE *yyvsp, int yyrule, parser_state *p)
4730 #else
4731 static void
4732 yy_reduce_print (yyvsp, yyrule, p)
4733  YYSTYPE *yyvsp;
4734  int yyrule;
4735  parser_state *p;
4736 #endif
4737 {
4738  int yynrhs = yyr2[yyrule];
4739  int yyi;
4740  unsigned long int yylno = yyrline[yyrule];
4741  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
4742  yyrule - 1, yylno);
4743  /* The symbols being reduced. */
4744  for (yyi = 0; yyi < yynrhs; yyi++)
4745  {
4746  YYFPRINTF (stderr, " $%d = ", yyi + 1);
4747  yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
4748  &(yyvsp[(yyi + 1) - (yynrhs)])
4749  , p);
4750  YYFPRINTF (stderr, "\n");
4751  }
4752 }
4753 
4754 # define YY_REDUCE_PRINT(Rule) \
4755 do { \
4756  if (yydebug) \
4757  yy_reduce_print (yyvsp, Rule, p); \
4758 } while (YYID (0))
4759 
4760 /* Nonzero means print parse trace. It is left uninitialized so that
4761  multiple parsers can coexist. */
4763 #else /* !YYDEBUG */
4764 # define YYDPRINTF(Args)
4765 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
4766 # define YY_STACK_PRINT(Bottom, Top)
4767 # define YY_REDUCE_PRINT(Rule)
4768 #endif /* !YYDEBUG */
4769 
4770 
4771 /* YYINITDEPTH -- initial size of the parser's stacks. */
4772 #ifndef YYINITDEPTH
4773 # define YYINITDEPTH 200
4774 #endif
4775 
4776 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
4777  if the built-in stack extension method is used).
4778 
4779  Do not make this value too large; the results are undefined if
4780  YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
4781  evaluated with infinite-precision integer arithmetic. */
4782 
4783 #ifndef YYMAXDEPTH
4784 # define YYMAXDEPTH 10000
4785 #endif
4786 
4787 
4788 #if YYERROR_VERBOSE
4789 
4790 # ifndef yystrlen
4791 # if defined __GLIBC__ && defined _STRING_H
4792 # define yystrlen strlen
4793 # else
4794 /* Return the length of YYSTR. */
4795 #if (defined __STDC__ || defined __C99__FUNC__ \
4796  || defined __cplusplus || defined _MSC_VER)
4797 static YYSIZE_T
4798 yystrlen (const char *yystr)
4799 #else
4800 static YYSIZE_T
4801 yystrlen (yystr)
4802  const char *yystr;
4803 #endif
4804 {
4805  YYSIZE_T yylen;
4806  for (yylen = 0; yystr[yylen]; yylen++)
4807  continue;
4808  return yylen;
4809 }
4810 # endif
4811 # endif
4812 
4813 # ifndef yystpcpy
4814 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
4815 # define yystpcpy stpcpy
4816 # else
4817 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
4818  YYDEST. */
4819 #if (defined __STDC__ || defined __C99__FUNC__ \
4820  || defined __cplusplus || defined _MSC_VER)
4821 static char *
4822 yystpcpy (char *yydest, const char *yysrc)
4823 #else
4824 static char *
4825 yystpcpy (yydest, yysrc)
4826  char *yydest;
4827  const char *yysrc;
4828 #endif
4829 {
4830  char *yyd = yydest;
4831  const char *yys = yysrc;
4832 
4833  while ((*yyd++ = *yys++) != '\0')
4834  continue;
4835 
4836  return yyd - 1;
4837 }
4838 # endif
4839 # endif
4840 
4841 # ifndef yytnamerr
4842 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
4843  quotes and backslashes, so that it's suitable for yyerror. The
4844  heuristic is that double-quoting is unnecessary unless the string
4845  contains an apostrophe, a comma, or backslash (other than
4846  backslash-backslash). YYSTR is taken from yytname. If YYRES is
4847  null, do not copy; instead, return the length of what the result
4848  would have been. */
4849 static YYSIZE_T
4850 yytnamerr (char *yyres, const char *yystr)
4851 {
4852  if (*yystr == '"')
4853  {
4854  YYSIZE_T yyn = 0;
4855  char const *yyp = yystr;
4856 
4857  for (;;)
4858  switch (*++yyp)
4859  {
4860  case '\'':
4861  case ',':
4862  goto do_not_strip_quotes;
4863 
4864  case '\\':
4865  if (*++yyp != '\\')
4866  goto do_not_strip_quotes;
4867  /* Fall through. */
4868  default:
4869  if (yyres)
4870  yyres[yyn] = *yyp;
4871  yyn++;
4872  break;
4873 
4874  case '"':
4875  if (yyres)
4876  yyres[yyn] = '\0';
4877  return yyn;
4878  }
4879  do_not_strip_quotes: ;
4880  }
4881 
4882  if (! yyres)
4883  return yystrlen (yystr);
4884 
4885  return yystpcpy (yyres, yystr) - yyres;
4886 }
4887 # endif
4888 
4889 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
4890  about the unexpected token YYTOKEN for the state stack whose top is
4891  YYSSP.
4892 
4893  Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
4894  not large enough to hold the message. In that case, also set
4895  *YYMSG_ALLOC to the required number of bytes. Return 2 if the
4896  required number of bytes is too large to store. */
4897 static int
4898 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
4899  yytype_int16 *yyssp, int yytoken)
4900 {
4901  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
4902  YYSIZE_T yysize = yysize0;
4903  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
4904  /* Internationalized format string. */
4905  const char *yyformat = YY_NULL;
4906  /* Arguments of yyformat. */
4907  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
4908  /* Number of reported tokens (one for the "unexpected", one per
4909  "expected"). */
4910  int yycount = 0;
4911 
4912  /* There are many possibilities here to consider:
4913  - Assume YYFAIL is not used. It's too flawed to consider. See
4914  <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
4915  for details. YYERROR is fine as it does not invoke this
4916  function.
4917  - If this state is a consistent state with a default action, then
4918  the only way this function was invoked is if the default action
4919  is an error action. In that case, don't check for expected
4920  tokens because there are none.
4921  - The only way there can be no lookahead present (in yychar) is if
4922  this state is a consistent state with a default action. Thus,
4923  detecting the absence of a lookahead is sufficient to determine
4924  that there is no unexpected or expected token to report. In that
4925  case, just report a simple "syntax error".
4926  - Don't assume there isn't a lookahead just because this state is a
4927  consistent state with a default action. There might have been a
4928  previous inconsistent state, consistent state with a non-default
4929  action, or user semantic action that manipulated yychar.
4930  - Of course, the expected token list depends on states to have
4931  correct lookahead information, and it depends on the parser not
4932  to perform extra reductions after fetching a lookahead from the
4933  scanner and before detecting a syntax error. Thus, state merging
4934  (from LALR or IELR) and default reductions corrupt the expected
4935  token list. However, the list is correct for canonical LR with
4936  one exception: it will still contain any token that will not be
4937  accepted due to an error action in a later state.
4938  */
4939  if (yytoken != YYEMPTY)
4940  {
4941  int yyn = yypact[*yyssp];
4942  yyarg[yycount++] = yytname[yytoken];
4943  if (!yypact_value_is_default (yyn))
4944  {
4945  /* Start YYX at -YYN if negative to avoid negative indexes in
4946  YYCHECK. In other words, skip the first -YYN actions for
4947  this state because they are default actions. */
4948  int yyxbegin = yyn < 0 ? -yyn : 0;
4949  /* Stay within bounds of both yycheck and yytname. */
4950  int yychecklim = YYLAST - yyn + 1;
4951  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
4952  int yyx;
4953 
4954  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
4955  if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
4956  && !yytable_value_is_error (yytable[yyx + yyn]))
4957  {
4958  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
4959  {
4960  yycount = 1;
4961  yysize = yysize0;
4962  break;
4963  }
4964  yyarg[yycount++] = yytname[yyx];
4965  {
4966  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
4967  if (! (yysize <= yysize1
4968  && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
4969  return 2;
4970  yysize = yysize1;
4971  }
4972  }
4973  }
4974  }
4975 
4976  switch (yycount)
4977  {
4978 # define YYCASE_(N, S) \
4979  case N: \
4980  yyformat = S; \
4981  break
4982  YYCASE_(0, YY_("syntax error"));
4983  YYCASE_(1, YY_("syntax error, unexpected %s"));
4984  YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
4985  YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
4986  YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
4987  YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
4988 # undef YYCASE_
4989  }
4990 
4991  {
4992  YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
4993  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
4994  return 2;
4995  yysize = yysize1;
4996  }
4997 
4998  if (*yymsg_alloc < yysize)
4999  {
5000  *yymsg_alloc = 2 * yysize;
5001  if (! (yysize <= *yymsg_alloc
5002  && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
5003  *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
5004  return 1;
5005  }
5006 
5007  /* Avoid sprintf, as that infringes on the user's name space.
5008  Don't have undefined behavior even if the translation
5009  produced a string with the wrong number of "%s"s. */
5010  {
5011  char *yyp = *yymsg;
5012  int yyi = 0;
5013  while ((*yyp = *yyformat) != '\0')
5014  if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
5015  {
5016  yyp += yytnamerr (yyp, yyarg[yyi++]);
5017  yyformat += 2;
5018  }
5019  else
5020  {
5021  yyp++;
5022  yyformat++;
5023  }
5024  }
5025  return 0;
5026 }
5027 #endif /* YYERROR_VERBOSE */
5028 
5029 /*-----------------------------------------------.
5030 | Release the memory associated to this symbol. |
5031 `-----------------------------------------------*/
5032 
5033 /*ARGSUSED*/
5034 #if (defined __STDC__ || defined __C99__FUNC__ \
5035  || defined __cplusplus || defined _MSC_VER)
5036 static void
5037 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_state *p)
5038 #else
5039 static void
5040 yydestruct (yymsg, yytype, yyvaluep, p)
5041  const char *yymsg;
5042  int yytype;
5043  YYSTYPE *yyvaluep;
5044  parser_state *p;
5045 #endif
5046 {
5047  YYUSE (yyvaluep);
5048  YYUSE (p);
5049 
5050  if (!yymsg)
5051  yymsg = "Deleting";
5052  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
5053 
5054  YYUSE (yytype);
5055 }
5056 
5057 
5058 
5059 
5060 /*----------.
5061 | yyparse. |
5062 `----------*/
5063 
5064 #ifdef YYPARSE_PARAM
5065 #if (defined __STDC__ || defined __C99__FUNC__ \
5066  || defined __cplusplus || defined _MSC_VER)
5067 int
5068 yyparse (void *YYPARSE_PARAM)
5069 #else
5070 int
5071 yyparse (YYPARSE_PARAM)
5072  void *YYPARSE_PARAM;
5073 #endif
5074 #else /* ! YYPARSE_PARAM */
5075 #if (defined __STDC__ || defined __C99__FUNC__ \
5076  || defined __cplusplus || defined _MSC_VER)
5077 int
5078 yyparse (parser_state *p)
5079 #else
5080 int
5082  parser_state *p;
5083 #endif
5084 #endif
5085 {
5086 /* The lookahead symbol. */
5087 int yychar;
5088 
5089 
5090 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
5091 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
5092 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
5093  _Pragma ("GCC diagnostic push") \
5094  _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
5095  _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
5096 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
5097  _Pragma ("GCC diagnostic pop")
5098 #else
5099 /* Default value used for initialization, for pacifying older GCCs
5100  or non-GCC compilers. */
5101 static YYSTYPE yyval_default;
5102 # define YY_INITIAL_VALUE(Value) = Value
5103 #endif
5104 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
5105 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
5106 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
5107 #endif
5108 #ifndef YY_INITIAL_VALUE
5109 # define YY_INITIAL_VALUE(Value) /* Nothing. */
5110 #endif
5111 
5112 /* The semantic value of the lookahead symbol. */
5113 YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
5114 
5115  /* Number of syntax errors so far. */
5116  int yynerrs;
5117 
5118  int yystate;
5119  /* Number of tokens to shift before error messages enabled. */
5120  int yyerrstatus;
5121 
5122  /* The stacks and their tools:
5123  `yyss': related to states.
5124  `yyvs': related to semantic values.
5125 
5126  Refer to the stacks through separate pointers, to allow yyoverflow
5127  to reallocate them elsewhere. */
5128 
5129  /* The state stack. */
5130  yytype_int16 yyssa[YYINITDEPTH];
5131  yytype_int16 *yyss;
5132  yytype_int16 *yyssp;
5133 
5134  /* The semantic value stack. */
5135  YYSTYPE yyvsa[YYINITDEPTH];
5136  YYSTYPE *yyvs;
5137  YYSTYPE *yyvsp;
5138 
5139  YYSIZE_T yystacksize;
5140 
5141  int yyn;
5142  int yyresult;
5143  /* Lookahead token as an internal (translated) token number. */
5144  int yytoken = 0;
5145  /* The variables used to return semantic value and location from the
5146  action routines. */
5147  YYSTYPE yyval;
5148 
5149 #if YYERROR_VERBOSE
5150  /* Buffer for error messages, and its allocated size. */
5151  char yymsgbuf[128];
5152  char *yymsg = yymsgbuf;
5153  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
5154 #endif
5155 
5156 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
5157 
5158  /* The number of symbols on the RHS of the reduced rule.
5159  Keep to zero when no symbol should be popped. */
5160  int yylen = 0;
5161 
5162  yyssp = yyss = yyssa;
5163  yyvsp = yyvs = yyvsa;
5164  yystacksize = YYINITDEPTH;
5165 
5166  YYDPRINTF ((stderr, "Starting parse\n"));
5167 
5168  yystate = 0;
5169  yyerrstatus = 0;
5170  yynerrs = 0;
5171  yychar = YYEMPTY; /* Cause a token to be read. */
5172  goto yysetstate;
5173 
5174 /*------------------------------------------------------------.
5175 | yynewstate -- Push a new state, which is found in yystate. |
5176 `------------------------------------------------------------*/
5177  yynewstate:
5178  /* In all cases, when you get here, the value and location stacks
5179  have just been pushed. So pushing a state here evens the stacks. */
5180  yyssp++;
5181 
5182  yysetstate:
5183  *yyssp = yystate;
5184 
5185  if (yyss + yystacksize - 1 <= yyssp)
5186  {
5187  /* Get the current used size of the three stacks, in elements. */
5188  YYSIZE_T yysize = yyssp - yyss + 1;
5189 
5190 #ifdef yyoverflow
5191  {
5192  /* Give user a chance to reallocate the stack. Use copies of
5193  these so that the &'s don't force the real ones into
5194  memory. */
5195  YYSTYPE *yyvs1 = yyvs;
5196  yytype_int16 *yyss1 = yyss;
5197 
5198  /* Each stack pointer address is followed by the size of the
5199  data in use in that stack, in bytes. This used to be a
5200  conditional around just the two extra args, but that might
5201  be undefined if yyoverflow is a macro. */
5202  yyoverflow (YY_("memory exhausted"),
5203  &yyss1, yysize * sizeof (*yyssp),
5204  &yyvs1, yysize * sizeof (*yyvsp),
5205  &yystacksize);
5206 
5207  yyss = yyss1;
5208  yyvs = yyvs1;
5209  }
5210 #else /* no yyoverflow */
5211 # ifndef YYSTACK_RELOCATE
5212  goto yyexhaustedlab;
5213 # else
5214  /* Extend the stack our own way. */
5215  if (YYMAXDEPTH <= yystacksize)
5216  goto yyexhaustedlab;
5217  yystacksize *= 2;
5218  if (YYMAXDEPTH < yystacksize)
5219  yystacksize = YYMAXDEPTH;
5220 
5221  {
5222  yytype_int16 *yyss1 = yyss;
5223  union yyalloc *yyptr =
5224  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
5225  if (! yyptr)
5226  goto yyexhaustedlab;
5227  YYSTACK_RELOCATE (yyss_alloc, yyss);
5228  YYSTACK_RELOCATE (yyvs_alloc, yyvs);
5229 # undef YYSTACK_RELOCATE
5230  if (yyss1 != yyssa)
5231  YYSTACK_FREE (yyss1);
5232  }
5233 # endif
5234 #endif /* no yyoverflow */
5235 
5236  yyssp = yyss + yysize - 1;
5237  yyvsp = yyvs + yysize - 1;
5238 
5239  YYDPRINTF ((stderr, "Stack size increased to %lu\n",
5240  (unsigned long int) yystacksize));
5241 
5242  if (yyss + yystacksize - 1 <= yyssp)
5243  YYABORT;
5244  }
5245 
5246  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
5247 
5248  if (yystate == YYFINAL)
5249  YYACCEPT;
5250 
5251  goto yybackup;
5252 
5253 /*-----------.
5254 | yybackup. |
5255 `-----------*/
5256 yybackup:
5257 
5258  /* Do appropriate processing given the current state. Read a
5259  lookahead token if we need one and don't already have one. */
5260 
5261  /* First try to decide what to do without reference to lookahead token. */
5262  yyn = yypact[yystate];
5263  if (yypact_value_is_default (yyn))
5264  goto yydefault;
5265 
5266  /* Not known => get a lookahead token if don't already have one. */
5267 
5268  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
5269  if (yychar == YYEMPTY)
5270  {
5271  YYDPRINTF ((stderr, "Reading a token: "));
5272  yychar = YYLEX;
5273  }
5274 
5275  if (yychar <= YYEOF)
5276  {
5277  yychar = yytoken = YYEOF;
5278  YYDPRINTF ((stderr, "Now at end of input.\n"));
5279  }
5280  else
5281  {
5282  yytoken = YYTRANSLATE (yychar);
5283  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
5284  }
5285 
5286  /* If the proper action on seeing token YYTOKEN is to reduce or to
5287  detect an error, take that action. */
5288  yyn += yytoken;
5289  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
5290  goto yydefault;
5291  yyn = yytable[yyn];
5292  if (yyn <= 0)
5293  {
5294  if (yytable_value_is_error (yyn))
5295  goto yyerrlab;
5296  yyn = -yyn;
5297  goto yyreduce;
5298  }
5299 
5300  /* Count tokens shifted since error; after three, turn off error
5301  status. */
5302  if (yyerrstatus)
5303  yyerrstatus--;
5304 
5305  /* Shift the lookahead token. */
5306  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
5307 
5308  /* Discard the shifted token. */
5309  yychar = YYEMPTY;
5310 
5311  yystate = yyn;
5313  *++yyvsp = yylval;
5315 
5316  goto yynewstate;
5317 
5318 
5319 /*-----------------------------------------------------------.
5320 | yydefault -- do the default action for the current state. |
5321 `-----------------------------------------------------------*/
5322 yydefault:
5323  yyn = yydefact[yystate];
5324  if (yyn == 0)
5325  goto yyerrlab;
5326  goto yyreduce;
5327 
5328 
5329 /*-----------------------------.
5330 | yyreduce -- Do a reduction. |
5331 `-----------------------------*/
5332 yyreduce:
5333  /* yyn is the number of a rule to reduce with. */
5334  yylen = yyr2[yyn];
5335 
5336  /* If YYLEN is nonzero, implement the default value of the action:
5337  `$$ = $1'.
5338 
5339  Otherwise, the following line sets YYVAL to garbage.
5340  This behavior is undocumented and Bison
5341  users should not rely upon it. Assigning to YYVAL
5342  unconditionally makes the parser a bit smaller, and it avoids a
5343  GCC warning that YYVAL may be used uninitialized. */
5344  yyval = yyvsp[1-yylen];
5345 
5346 
5347  YY_REDUCE_PRINT (yyn);
5348  switch (yyn)
5349  {
5350  case 2:
5351 /* Line 1787 of yacc.c */
5352 #line 1100 "src/parse.y"
5353  {
5354  p->lstate = EXPR_BEG;
5355  if (!p->locals) p->locals = cons(0,0);
5356  }
5357  break;
5358 
5359  case 3:
5360 /* Line 1787 of yacc.c */
5361 #line 1105 "src/parse.y"
5362  {
5363  p->tree = new_scope(p, (yyvsp[(2) - (2)].nd));
5364  }
5365  break;
5366 
5367  case 4:
5368 /* Line 1787 of yacc.c */
5369 #line 1111 "src/parse.y"
5370  {
5371  (yyval.nd) = (yyvsp[(1) - (2)].nd);
5372  }
5373  break;
5374 
5375  case 5:
5376 /* Line 1787 of yacc.c */
5377 #line 1117 "src/parse.y"
5378  {
5379  (yyval.nd) = new_begin(p, 0);
5380  }
5381  break;
5382 
5383  case 6:
5384 /* Line 1787 of yacc.c */
5385 #line 1121 "src/parse.y"
5386  {
5387  (yyval.nd) = new_begin(p, (yyvsp[(1) - (1)].nd));
5388  }
5389  break;
5390 
5391  case 7:
5392 /* Line 1787 of yacc.c */
5393 #line 1125 "src/parse.y"
5394  {
5395  (yyval.nd) = push((yyvsp[(1) - (3)].nd), newline_node((yyvsp[(3) - (3)].nd)));
5396  }
5397  break;
5398 
5399  case 8:
5400 /* Line 1787 of yacc.c */
5401 #line 1129 "src/parse.y"
5402  {
5403  (yyval.nd) = new_begin(p, 0);
5404  }
5405  break;
5406 
5407  case 10:
5408 /* Line 1787 of yacc.c */
5409 #line 1136 "src/parse.y"
5410  {
5411  (yyval.nd) = local_switch(p);
5412  }
5413  break;
5414 
5415  case 11:
5416 /* Line 1787 of yacc.c */
5417 #line 1140 "src/parse.y"
5418  {
5419  yyerror(p, "BEGIN not supported");
5420  local_resume(p, (yyvsp[(2) - (5)].nd));
5421  (yyval.nd) = 0;
5422  }
5423  break;
5424 
5425  case 12:
5426 /* Line 1787 of yacc.c */
5427 #line 1151 "src/parse.y"
5428  {
5429  if ((yyvsp[(2) - (4)].nd)) {
5430  (yyval.nd) = new_rescue(p, (yyvsp[(1) - (4)].nd), (yyvsp[(2) - (4)].nd), (yyvsp[(3) - (4)].nd));
5431  }
5432  else if ((yyvsp[(3) - (4)].nd)) {
5433  yywarn(p, "else without rescue is useless");
5434  (yyval.nd) = push((yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd));
5435  }
5436  else {
5437  (yyval.nd) = (yyvsp[(1) - (4)].nd);
5438  }
5439  if ((yyvsp[(4) - (4)].nd)) {
5440  if ((yyval.nd)) {
5441  (yyval.nd) = new_ensure(p, (yyval.nd), (yyvsp[(4) - (4)].nd));
5442  }
5443  else {
5444  (yyval.nd) = push((yyvsp[(4) - (4)].nd), new_nil(p));
5445  }
5446  }
5447  }
5448  break;
5449 
5450  case 13:
5451 /* Line 1787 of yacc.c */
5452 #line 1174 "src/parse.y"
5453  {
5454  (yyval.nd) = (yyvsp[(1) - (2)].nd);
5455  }
5456  break;
5457 
5458  case 14:
5459 /* Line 1787 of yacc.c */
5460 #line 1180 "src/parse.y"
5461  {
5462  (yyval.nd) = new_begin(p, 0);
5463  }
5464  break;
5465 
5466  case 15:
5467 /* Line 1787 of yacc.c */
5468 #line 1184 "src/parse.y"
5469  {
5470  (yyval.nd) = new_begin(p, (yyvsp[(1) - (1)].nd));
5471  }
5472  break;
5473 
5474  case 16:
5475 /* Line 1787 of yacc.c */
5476 #line 1188 "src/parse.y"
5477  {
5478  (yyval.nd) = push((yyvsp[(1) - (3)].nd), newline_node((yyvsp[(3) - (3)].nd)));
5479  }
5480  break;
5481 
5482  case 17:
5483 /* Line 1787 of yacc.c */
5484 #line 1192 "src/parse.y"
5485  {
5486  (yyval.nd) = new_begin(p, (yyvsp[(2) - (2)].nd));
5487  }
5488  break;
5489 
5490  case 18:
5491 /* Line 1787 of yacc.c */
5492 #line 1197 "src/parse.y"
5493  {p->lstate = EXPR_FNAME;}
5494  break;
5495 
5496  case 19:
5497 /* Line 1787 of yacc.c */
5498 #line 1198 "src/parse.y"
5499  {
5500  (yyval.nd) = new_alias(p, (yyvsp[(2) - (4)].id), (yyvsp[(4) - (4)].id));
5501  }
5502  break;
5503 
5504  case 20:
5505 /* Line 1787 of yacc.c */
5506 #line 1202 "src/parse.y"
5507  {
5508  (yyval.nd) = (yyvsp[(2) - (2)].nd);
5509  }
5510  break;
5511 
5512  case 21:
5513 /* Line 1787 of yacc.c */
5514 #line 1206 "src/parse.y"
5515  {
5516  (yyval.nd) = new_if(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd), 0);
5517  }
5518  break;
5519 
5520  case 22:
5521 /* Line 1787 of yacc.c */
5522 #line 1210 "src/parse.y"
5523  {
5524  (yyval.nd) = new_unless(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd), 0);
5525  }
5526  break;
5527 
5528  case 23:
5529 /* Line 1787 of yacc.c */
5530 #line 1214 "src/parse.y"
5531  {
5532  (yyval.nd) = new_while(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd));
5533  }
5534  break;
5535 
5536  case 24:
5537 /* Line 1787 of yacc.c */
5538 #line 1218 "src/parse.y"
5539  {
5540  (yyval.nd) = new_until(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd));
5541  }
5542  break;
5543 
5544  case 25:
5545 /* Line 1787 of yacc.c */
5546 #line 1222 "src/parse.y"
5547  {
5548  (yyval.nd) = new_rescue(p, (yyvsp[(1) - (3)].nd), list1(list3(0, 0, (yyvsp[(3) - (3)].nd))), 0);
5549  }
5550  break;
5551 
5552  case 26:
5553 /* Line 1787 of yacc.c */
5554 #line 1226 "src/parse.y"
5555  {
5556  yyerror(p, "END not suported");
5557  (yyval.nd) = new_postexe(p, (yyvsp[(3) - (4)].nd));
5558  }
5559  break;
5560 
5561  case 28:
5562 /* Line 1787 of yacc.c */
5563 #line 1232 "src/parse.y"
5564  {
5565  (yyval.nd) = new_masgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
5566  }
5567  break;
5568 
5569  case 29:
5570 /* Line 1787 of yacc.c */
5571 #line 1236 "src/parse.y"
5572  {
5573  (yyval.nd) = new_op_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].nd));
5574  }
5575  break;
5576 
5577  case 30:
5578 /* Line 1787 of yacc.c */
5579 #line 1240 "src/parse.y"
5580  {
5581  (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (6)].nd), intern2("[]",2), (yyvsp[(3) - (6)].nd)), (yyvsp[(5) - (6)].id), (yyvsp[(6) - (6)].nd));
5582  }
5583  break;
5584 
5585  case 31:
5586 /* Line 1787 of yacc.c */
5587 #line 1244 "src/parse.y"
5588  {
5589  (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));
5590  }
5591  break;
5592 
5593  case 32:
5594 /* Line 1787 of yacc.c */
5595 #line 1248 "src/parse.y"
5596  {
5597  (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));
5598  }
5599  break;
5600 
5601  case 33:
5602 /* Line 1787 of yacc.c */
5603 #line 1252 "src/parse.y"
5604  {
5605  yyerror(p, "constant re-assignment");
5606  (yyval.nd) = 0;
5607  }
5608  break;
5609 
5610  case 34:
5611 /* Line 1787 of yacc.c */
5612 #line 1257 "src/parse.y"
5613  {
5614  (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));
5615  }
5616  break;
5617 
5618  case 35:
5619 /* Line 1787 of yacc.c */
5620 #line 1261 "src/parse.y"
5621  {
5622  backref_error(p, (yyvsp[(1) - (3)].nd));
5623  (yyval.nd) = new_begin(p, 0);
5624  }
5625  break;
5626 
5627  case 36:
5628 /* Line 1787 of yacc.c */
5629 #line 1266 "src/parse.y"
5630  {
5631  (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), new_array(p, (yyvsp[(3) - (3)].nd)));
5632  }
5633  break;
5634 
5635  case 37:
5636 /* Line 1787 of yacc.c */
5637 #line 1270 "src/parse.y"
5638  {
5639  (yyval.nd) = new_masgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
5640  }
5641  break;
5642 
5643  case 38:
5644 /* Line 1787 of yacc.c */
5645 #line 1274 "src/parse.y"
5646  {
5647  (yyval.nd) = new_masgn(p, (yyvsp[(1) - (3)].nd), new_array(p, (yyvsp[(3) - (3)].nd)));
5648  }
5649  break;
5650 
5651  case 40:
5652 /* Line 1787 of yacc.c */
5653 #line 1281 "src/parse.y"
5654  {
5655  (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
5656  }
5657  break;
5658 
5659  case 41:
5660 /* Line 1787 of yacc.c */
5661 #line 1285 "src/parse.y"
5662  {
5663  (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
5664  }
5665  break;
5666 
5667  case 43:
5668 /* Line 1787 of yacc.c */
5669 #line 1293 "src/parse.y"
5670  {
5671  (yyval.nd) = new_and(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
5672  }
5673  break;
5674 
5675  case 44:
5676 /* Line 1787 of yacc.c */
5677 #line 1297 "src/parse.y"
5678  {
5679  (yyval.nd) = new_or(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
5680  }
5681  break;
5682 
5683  case 45:
5684 /* Line 1787 of yacc.c */
5685 #line 1301 "src/parse.y"
5686  {
5687  (yyval.nd) = call_uni_op(p, cond((yyvsp[(3) - (3)].nd)), "!");
5688  }
5689  break;
5690 
5691  case 46:
5692 /* Line 1787 of yacc.c */
5693 #line 1305 "src/parse.y"
5694  {
5695  (yyval.nd) = call_uni_op(p, cond((yyvsp[(2) - (2)].nd)), "!");
5696  }
5697  break;
5698 
5699  case 48:
5700 /* Line 1787 of yacc.c */
5701 #line 1312 "src/parse.y"
5702  {
5703  if (!(yyvsp[(1) - (1)].nd)) (yyval.nd) = new_nil(p);
5704  else (yyval.nd) = (yyvsp[(1) - (1)].nd);
5705  }
5706  break;
5707 
5708  case 53:
5709 /* Line 1787 of yacc.c */
5710 #line 1327 "src/parse.y"
5711  {
5712  local_nest(p);
5713  }
5714  break;
5715 
5716  case 54:
5717 /* Line 1787 of yacc.c */
5718 #line 1333 "src/parse.y"
5719  {
5720  (yyval.nd) = new_block(p, (yyvsp[(3) - (5)].nd), (yyvsp[(4) - (5)].nd));
5721  local_unnest(p);
5722  }
5723  break;
5724 
5725  case 55:
5726 /* Line 1787 of yacc.c */
5727 #line 1340 "src/parse.y"
5728  {
5729  (yyval.nd) = new_fcall(p, (yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].nd));
5730  }
5731  break;
5732 
5733  case 56:
5734 /* Line 1787 of yacc.c */
5735 #line 1344 "src/parse.y"
5736  {
5737  args_with_block(p, (yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd));
5738  (yyval.nd) = new_fcall(p, (yyvsp[(1) - (3)].id), (yyvsp[(2) - (3)].nd));
5739  }
5740  break;
5741 
5742  case 57:
5743 /* Line 1787 of yacc.c */
5744 #line 1349 "src/parse.y"
5745  {
5746  (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
5747  }
5748  break;
5749 
5750  case 58:
5751 /* Line 1787 of yacc.c */
5752 #line 1353 "src/parse.y"
5753  {
5754  args_with_block(p, (yyvsp[(4) - (5)].nd), (yyvsp[(5) - (5)].nd));
5755  (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd));
5756  }
5757  break;
5758 
5759  case 59:
5760 /* Line 1787 of yacc.c */
5761 #line 1358 "src/parse.y"
5762  {
5763  (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
5764  }
5765  break;
5766 
5767  case 60:
5768 /* Line 1787 of yacc.c */
5769 #line 1362 "src/parse.y"
5770  {
5771  args_with_block(p, (yyvsp[(4) - (5)].nd), (yyvsp[(5) - (5)].nd));
5772  (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd));
5773  }
5774  break;
5775 
5776  case 61:
5777 /* Line 1787 of yacc.c */
5778 #line 1367 "src/parse.y"
5779  {
5780  (yyval.nd) = new_super(p, (yyvsp[(2) - (2)].nd));
5781  }
5782  break;
5783 
5784  case 62:
5785 /* Line 1787 of yacc.c */
5786 #line 1371 "src/parse.y"
5787  {
5788  (yyval.nd) = new_yield(p, (yyvsp[(2) - (2)].nd));
5789  }
5790  break;
5791 
5792  case 63:
5793 /* Line 1787 of yacc.c */
5794 #line 1375 "src/parse.y"
5795  {
5796  (yyval.nd) = new_return(p, ret_args(p, (yyvsp[(2) - (2)].nd)));
5797  }
5798  break;
5799 
5800  case 64:
5801 /* Line 1787 of yacc.c */
5802 #line 1379 "src/parse.y"
5803  {
5804  (yyval.nd) = new_break(p, ret_args(p, (yyvsp[(2) - (2)].nd)));
5805  }
5806  break;
5807 
5808  case 65:
5809 /* Line 1787 of yacc.c */
5810 #line 1383 "src/parse.y"
5811  {
5812  (yyval.nd) = new_next(p, ret_args(p, (yyvsp[(2) - (2)].nd)));
5813  }
5814  break;
5815 
5816  case 66:
5817 /* Line 1787 of yacc.c */
5818 #line 1389 "src/parse.y"
5819  {
5820  (yyval.nd) = (yyvsp[(1) - (1)].nd);
5821  }
5822  break;
5823 
5824  case 67:
5825 /* Line 1787 of yacc.c */
5826 #line 1393 "src/parse.y"
5827  {
5828  (yyval.nd) = (yyvsp[(2) - (3)].nd);
5829  }
5830  break;
5831 
5832  case 69:
5833 /* Line 1787 of yacc.c */
5834 #line 1400 "src/parse.y"
5835  {
5836  (yyval.nd) = list1((yyvsp[(2) - (3)].nd));
5837  }
5838  break;
5839 
5840  case 70:
5841 /* Line 1787 of yacc.c */
5842 #line 1406 "src/parse.y"
5843  {
5844  (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
5845  }
5846  break;
5847 
5848  case 71:
5849 /* Line 1787 of yacc.c */
5850 #line 1410 "src/parse.y"
5851  {
5852  (yyval.nd) = list1(push((yyvsp[(1) - (2)].nd),(yyvsp[(2) - (2)].nd)));
5853  }
5854  break;
5855 
5856  case 72:
5857 /* Line 1787 of yacc.c */
5858 #line 1414 "src/parse.y"
5859  {
5860  (yyval.nd) = list2((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
5861  }
5862  break;
5863 
5864  case 73:
5865 /* Line 1787 of yacc.c */
5866 #line 1418 "src/parse.y"
5867  {
5868  (yyval.nd) = list3((yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].nd), (yyvsp[(5) - (5)].nd));
5869  }
5870  break;
5871 
5872  case 74:
5873 /* Line 1787 of yacc.c */
5874 #line 1422 "src/parse.y"
5875  {
5876  (yyval.nd) = list2((yyvsp[(1) - (2)].nd), new_nil(p));
5877  }
5878  break;
5879 
5880  case 75:
5881 /* Line 1787 of yacc.c */
5882 #line 1426 "src/parse.y"
5883  {
5884  (yyval.nd) = list3((yyvsp[(1) - (4)].nd), new_nil(p), (yyvsp[(4) - (4)].nd));
5885  }
5886  break;
5887 
5888  case 76:
5889 /* Line 1787 of yacc.c */
5890 #line 1430 "src/parse.y"
5891  {
5892  (yyval.nd) = list2(0, (yyvsp[(2) - (2)].nd));
5893  }
5894  break;
5895 
5896  case 77:
5897 /* Line 1787 of yacc.c */
5898 #line 1434 "src/parse.y"
5899  {
5900  (yyval.nd) = list3(0, (yyvsp[(2) - (4)].nd), (yyvsp[(4) - (4)].nd));
5901  }
5902  break;
5903 
5904  case 78:
5905 /* Line 1787 of yacc.c */
5906 #line 1438 "src/parse.y"
5907  {
5908  (yyval.nd) = list2(0, new_nil(p));
5909  }
5910  break;
5911 
5912  case 79:
5913 /* Line 1787 of yacc.c */
5914 #line 1442 "src/parse.y"
5915  {
5916  (yyval.nd) = list3(0, new_nil(p), (yyvsp[(3) - (3)].nd));
5917  }
5918  break;
5919 
5920  case 81:
5921 /* Line 1787 of yacc.c */
5922 #line 1449 "src/parse.y"
5923  {
5924  (yyval.nd) = (yyvsp[(2) - (3)].nd);
5925  }
5926  break;
5927 
5928  case 82:
5929 /* Line 1787 of yacc.c */
5930 #line 1455 "src/parse.y"
5931  {
5932  (yyval.nd) = list1((yyvsp[(1) - (2)].nd));
5933  }
5934  break;
5935 
5936  case 83:
5937 /* Line 1787 of yacc.c */
5938 #line 1459 "src/parse.y"
5939  {
5940  (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(2) - (3)].nd));
5941  }
5942  break;
5943 
5944  case 84:
5945 /* Line 1787 of yacc.c */
5946 #line 1465 "src/parse.y"
5947  {
5948  (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
5949  }
5950  break;
5951 
5952  case 85:
5953 /* Line 1787 of yacc.c */
5954 #line 1469 "src/parse.y"
5955  {
5956  (yyval.nd) = push((yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
5957  }
5958  break;
5959 
5960  case 86:
5961 /* Line 1787 of yacc.c */
5962 #line 1475 "src/parse.y"
5963  {
5964  assignable(p, (yyvsp[(1) - (1)].nd));
5965  }
5966  break;
5967 
5968  case 87:
5969 /* Line 1787 of yacc.c */
5970 #line 1479 "src/parse.y"
5971  {
5972  (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), intern2("[]",2), (yyvsp[(3) - (4)].nd));
5973  }
5974  break;
5975 
5976  case 88:
5977 /* Line 1787 of yacc.c */
5978 #line 1483 "src/parse.y"
5979  {
5980  (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
5981  }
5982  break;
5983 
5984  case 89:
5985 /* Line 1787 of yacc.c */
5986 #line 1487 "src/parse.y"
5987  {
5988  (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
5989  }
5990  break;
5991 
5992  case 90:
5993 /* Line 1787 of yacc.c */
5994 #line 1491 "src/parse.y"
5995  {
5996  (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
5997  }
5998  break;
5999 
6000  case 91:
6001 /* Line 1787 of yacc.c */
6002 #line 1495 "src/parse.y"
6003  {
6004  if (p->in_def || p->in_single)
6005  yyerror(p, "dynamic constant assignment");
6006  (yyval.nd) = new_colon2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id));
6007  }
6008  break;
6009 
6010  case 92:
6011 /* Line 1787 of yacc.c */
6012 #line 1501 "src/parse.y"
6013  {
6014  if (p->in_def || p->in_single)
6015  yyerror(p, "dynamic constant assignment");
6016  (yyval.nd) = new_colon3(p, (yyvsp[(2) - (2)].id));
6017  }
6018  break;
6019 
6020  case 93:
6021 /* Line 1787 of yacc.c */
6022 #line 1507 "src/parse.y"
6023  {
6024  backref_error(p, (yyvsp[(1) - (1)].nd));
6025  (yyval.nd) = 0;
6026  }
6027  break;
6028 
6029  case 94:
6030 /* Line 1787 of yacc.c */
6031 #line 1514 "src/parse.y"
6032  {
6033  assignable(p, (yyvsp[(1) - (1)].nd));
6034  }
6035  break;
6036 
6037  case 95:
6038 /* Line 1787 of yacc.c */
6039 #line 1518 "src/parse.y"
6040  {
6041  (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), intern2("[]",2), (yyvsp[(3) - (4)].nd));
6042  }
6043  break;
6044 
6045  case 96:
6046 /* Line 1787 of yacc.c */
6047 #line 1522 "src/parse.y"
6048  {
6049  (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
6050  }
6051  break;
6052 
6053  case 97:
6054 /* Line 1787 of yacc.c */
6055 #line 1526 "src/parse.y"
6056  {
6057  (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
6058  }
6059  break;
6060 
6061  case 98:
6062 /* Line 1787 of yacc.c */
6063 #line 1530 "src/parse.y"
6064  {
6065  (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
6066  }
6067  break;
6068 
6069  case 99:
6070 /* Line 1787 of yacc.c */
6071 #line 1534 "src/parse.y"
6072  {
6073  if (p->in_def || p->in_single)
6074  yyerror(p, "dynamic constant assignment");
6075  (yyval.nd) = new_colon2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id));
6076  }
6077  break;
6078 
6079  case 100:
6080 /* Line 1787 of yacc.c */
6081 #line 1540 "src/parse.y"
6082  {
6083  if (p->in_def || p->in_single)
6084  yyerror(p, "dynamic constant assignment");
6085  (yyval.nd) = new_colon3(p, (yyvsp[(2) - (2)].id));
6086  }
6087  break;
6088 
6089  case 101:
6090 /* Line 1787 of yacc.c */
6091 #line 1546 "src/parse.y"
6092  {
6093  backref_error(p, (yyvsp[(1) - (1)].nd));
6094  (yyval.nd) = 0;
6095  }
6096  break;
6097 
6098  case 102:
6099 /* Line 1787 of yacc.c */
6100 #line 1553 "src/parse.y"
6101  {
6102  yyerror(p, "class/module name must be CONSTANT");
6103  }
6104  break;
6105 
6106  case 104:
6107 /* Line 1787 of yacc.c */
6108 #line 1560 "src/parse.y"
6109  {
6110  (yyval.nd) = cons((node*)1, nsym((yyvsp[(2) - (2)].id)));
6111  }
6112  break;
6113 
6114  case 105:
6115 /* Line 1787 of yacc.c */
6116 #line 1564 "src/parse.y"
6117  {
6118  (yyval.nd) = cons((node*)0, nsym((yyvsp[(1) - (1)].id)));
6119  }
6120  break;
6121 
6122  case 106:
6123 /* Line 1787 of yacc.c */
6124 #line 1568 "src/parse.y"
6125  {
6126  (yyval.nd) = cons((yyvsp[(1) - (3)].nd), nsym((yyvsp[(3) - (3)].id)));
6127  }
6128  break;
6129 
6130  case 110:
6131 /* Line 1787 of yacc.c */
6132 #line 1577 "src/parse.y"
6133  {
6134  p->lstate = EXPR_ENDFN;
6135  (yyval.id) = (yyvsp[(1) - (1)].id);
6136  }
6137  break;
6138 
6139  case 111:
6140 /* Line 1787 of yacc.c */
6141 #line 1582 "src/parse.y"
6142  {
6143  p->lstate = EXPR_ENDFN;
6144  (yyval.id) = (yyvsp[(1) - (1)].id);
6145  }
6146  break;
6147 
6148  case 114:
6149 /* Line 1787 of yacc.c */
6150 #line 1593 "src/parse.y"
6151  {
6152  (yyval.nd) = new_undef(p, (yyvsp[(1) - (1)].id));
6153  }
6154  break;
6155 
6156  case 115:
6157 /* Line 1787 of yacc.c */
6158 #line 1596 "src/parse.y"
6159  {p->lstate = EXPR_FNAME;}
6160  break;
6161 
6162  case 116:
6163 /* Line 1787 of yacc.c */
6164 #line 1597 "src/parse.y"
6165  {
6166  (yyval.nd) = push((yyvsp[(1) - (4)].nd), nsym((yyvsp[(4) - (4)].id)));
6167  }
6168  break;
6169 
6170  case 117:
6171 /* Line 1787 of yacc.c */
6172 #line 1602 "src/parse.y"
6173  { (yyval.id) = intern_c('|'); }
6174  break;
6175 
6176  case 118:
6177 /* Line 1787 of yacc.c */
6178 #line 1603 "src/parse.y"
6179  { (yyval.id) = intern_c('^'); }
6180  break;
6181 
6182  case 119:
6183 /* Line 1787 of yacc.c */
6184 #line 1604 "src/parse.y"
6185  { (yyval.id) = intern_c('&'); }
6186  break;
6187 
6188  case 120:
6189 /* Line 1787 of yacc.c */
6190 #line 1605 "src/parse.y"
6191  { (yyval.id) = intern2("<=>",3); }
6192  break;
6193 
6194  case 121:
6195 /* Line 1787 of yacc.c */
6196 #line 1606 "src/parse.y"
6197  { (yyval.id) = intern2("==",2); }
6198  break;
6199 
6200  case 122:
6201 /* Line 1787 of yacc.c */
6202 #line 1607 "src/parse.y"
6203  { (yyval.id) = intern2("===",3); }
6204  break;
6205 
6206  case 123:
6207 /* Line 1787 of yacc.c */
6208 #line 1608 "src/parse.y"
6209  { (yyval.id) = intern2("=~",2); }
6210  break;
6211 
6212  case 124:
6213 /* Line 1787 of yacc.c */
6214 #line 1609 "src/parse.y"
6215  { (yyval.id) = intern2("!~",2); }
6216  break;
6217 
6218  case 125:
6219 /* Line 1787 of yacc.c */
6220 #line 1610 "src/parse.y"
6221  { (yyval.id) = intern_c('>'); }
6222  break;
6223 
6224  case 126:
6225 /* Line 1787 of yacc.c */
6226 #line 1611 "src/parse.y"
6227  { (yyval.id) = intern2(">=",2); }
6228  break;
6229 
6230  case 127:
6231 /* Line 1787 of yacc.c */
6232 #line 1612 "src/parse.y"
6233  { (yyval.id) = intern_c('<'); }
6234  break;
6235 
6236  case 128:
6237 /* Line 1787 of yacc.c */
6238 #line 1613 "src/parse.y"
6239  { (yyval.id) = intern2("<=",2); }
6240  break;
6241 
6242  case 129:
6243 /* Line 1787 of yacc.c */
6244 #line 1614 "src/parse.y"
6245  { (yyval.id) = intern2("!=",2); }
6246  break;
6247 
6248  case 130:
6249 /* Line 1787 of yacc.c */
6250 #line 1615 "src/parse.y"
6251  { (yyval.id) = intern2("<<",2); }
6252  break;
6253 
6254  case 131:
6255 /* Line 1787 of yacc.c */
6256 #line 1616 "src/parse.y"
6257  { (yyval.id) = intern2(">>",2); }
6258  break;
6259 
6260  case 132:
6261 /* Line 1787 of yacc.c */
6262 #line 1617 "src/parse.y"
6263  { (yyval.id) = intern_c('+'); }
6264  break;
6265 
6266  case 133:
6267 /* Line 1787 of yacc.c */
6268 #line 1618 "src/parse.y"
6269  { (yyval.id) = intern_c('-'); }
6270  break;
6271 
6272  case 134:
6273 /* Line 1787 of yacc.c */
6274 #line 1619 "src/parse.y"
6275  { (yyval.id) = intern_c('*'); }
6276  break;
6277 
6278  case 135:
6279 /* Line 1787 of yacc.c */
6280 #line 1620 "src/parse.y"
6281  { (yyval.id) = intern_c('*'); }
6282  break;
6283 
6284  case 136:
6285 /* Line 1787 of yacc.c */
6286 #line 1621 "src/parse.y"
6287  { (yyval.id) = intern_c('/'); }
6288  break;
6289 
6290  case 137:
6291 /* Line 1787 of yacc.c */
6292 #line 1622 "src/parse.y"
6293  { (yyval.id) = intern_c('%'); }
6294  break;
6295 
6296  case 138:
6297 /* Line 1787 of yacc.c */
6298 #line 1623 "src/parse.y"
6299  { (yyval.id) = intern2("**",2); }
6300  break;
6301 
6302  case 139:
6303 /* Line 1787 of yacc.c */
6304 #line 1624 "src/parse.y"
6305  { (yyval.id) = intern_c('!'); }
6306  break;
6307 
6308  case 140:
6309 /* Line 1787 of yacc.c */
6310 #line 1625 "src/parse.y"
6311  { (yyval.id) = intern_c('~'); }
6312  break;
6313 
6314  case 141:
6315 /* Line 1787 of yacc.c */
6316 #line 1626 "src/parse.y"
6317  { (yyval.id) = intern2("+@",2); }
6318  break;
6319 
6320  case 142:
6321 /* Line 1787 of yacc.c */
6322 #line 1627 "src/parse.y"
6323  { (yyval.id) = intern2("-@",2); }
6324  break;
6325 
6326  case 143:
6327 /* Line 1787 of yacc.c */
6328 #line 1628 "src/parse.y"
6329  { (yyval.id) = intern2("[]",2); }
6330  break;
6331 
6332  case 144:
6333 /* Line 1787 of yacc.c */
6334 #line 1629 "src/parse.y"
6335  { (yyval.id) = intern2("[]=",3); }
6336  break;
6337 
6338  case 145:
6339 /* Line 1787 of yacc.c */
6340 #line 1630 "src/parse.y"
6341  { (yyval.id) = intern_c('`'); }
6342  break;
6343 
6344  case 186:
6345 /* Line 1787 of yacc.c */
6346 #line 1648 "src/parse.y"
6347  {
6348  (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
6349  }
6350  break;
6351 
6352  case 187:
6353 /* Line 1787 of yacc.c */
6354 #line 1652 "src/parse.y"
6355  {
6356  (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));
6357  }
6358  break;
6359 
6360  case 188:
6361 /* Line 1787 of yacc.c */
6362 #line 1656 "src/parse.y"
6363  {
6364  (yyval.nd) = new_op_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].nd));
6365  }
6366  break;
6367 
6368  case 189:
6369 /* Line 1787 of yacc.c */
6370 #line 1660 "src/parse.y"
6371  {
6372  (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));
6373  }
6374  break;
6375 
6376  case 190:
6377 /* Line 1787 of yacc.c */
6378 #line 1664 "src/parse.y"
6379  {
6380  (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (6)].nd), intern2("[]",2), (yyvsp[(3) - (6)].nd)), (yyvsp[(5) - (6)].id), (yyvsp[(6) - (6)].nd));
6381  }
6382  break;
6383 
6384  case 191:
6385 /* Line 1787 of yacc.c */
6386 #line 1668 "src/parse.y"
6387  {
6388  (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));
6389  }
6390  break;
6391 
6392  case 192:
6393 /* Line 1787 of yacc.c */
6394 #line 1672 "src/parse.y"
6395  {
6396  (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));
6397  }
6398  break;
6399 
6400  case 193:
6401 /* Line 1787 of yacc.c */
6402 #line 1676 "src/parse.y"
6403  {
6404  (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));
6405  }
6406  break;
6407 
6408  case 194:
6409 /* Line 1787 of yacc.c */
6410 #line 1680 "src/parse.y"
6411  {
6412  yyerror(p, "constant re-assignment");
6413  (yyval.nd) = new_begin(p, 0);
6414  }
6415  break;
6416 
6417  case 195:
6418 /* Line 1787 of yacc.c */
6419 #line 1685 "src/parse.y"
6420  {
6421  yyerror(p, "constant re-assignment");
6422  (yyval.nd) = new_begin(p, 0);
6423  }
6424  break;
6425 
6426  case 196:
6427 /* Line 1787 of yacc.c */
6428 #line 1690 "src/parse.y"
6429  {
6430  backref_error(p, (yyvsp[(1) - (3)].nd));
6431  (yyval.nd) = new_begin(p, 0);
6432  }
6433  break;
6434 
6435  case 197:
6436 /* Line 1787 of yacc.c */
6437 #line 1695 "src/parse.y"
6438  {
6439  (yyval.nd) = new_dot2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
6440  }
6441  break;
6442 
6443  case 198:
6444 /* Line 1787 of yacc.c */
6445 #line 1699 "src/parse.y"
6446  {
6447  (yyval.nd) = new_dot3(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
6448  }
6449  break;
6450 
6451  case 199:
6452 /* Line 1787 of yacc.c */
6453 #line 1703 "src/parse.y"
6454  {
6455  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "+", (yyvsp[(3) - (3)].nd));
6456  }
6457  break;
6458 
6459  case 200:
6460 /* Line 1787 of yacc.c */
6461 #line 1707 "src/parse.y"
6462  {
6463  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "-", (yyvsp[(3) - (3)].nd));
6464  }
6465  break;
6466 
6467  case 201:
6468 /* Line 1787 of yacc.c */
6469 #line 1711 "src/parse.y"
6470  {
6471  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "*", (yyvsp[(3) - (3)].nd));
6472  }
6473  break;
6474 
6475  case 202:
6476 /* Line 1787 of yacc.c */
6477 #line 1715 "src/parse.y"
6478  {
6479  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "/", (yyvsp[(3) - (3)].nd));
6480  }
6481  break;
6482 
6483  case 203:
6484 /* Line 1787 of yacc.c */
6485 #line 1719 "src/parse.y"
6486  {
6487  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "%", (yyvsp[(3) - (3)].nd));
6488  }
6489  break;
6490 
6491  case 204:
6492 /* Line 1787 of yacc.c */
6493 #line 1723 "src/parse.y"
6494  {
6495  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "**", (yyvsp[(3) - (3)].nd));
6496  }
6497  break;
6498 
6499  case 205:
6500 /* Line 1787 of yacc.c */
6501 #line 1727 "src/parse.y"
6502  {
6503  (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[(2) - (4)].nd), "**", (yyvsp[(4) - (4)].nd)), "-@");
6504  }
6505  break;
6506 
6507  case 206:
6508 /* Line 1787 of yacc.c */
6509 #line 1731 "src/parse.y"
6510  {
6511  (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[(2) - (4)].nd), "**", (yyvsp[(4) - (4)].nd)), "-@");
6512  }
6513  break;
6514 
6515  case 207:
6516 /* Line 1787 of yacc.c */
6517 #line 1735 "src/parse.y"
6518  {
6519  (yyval.nd) = call_uni_op(p, (yyvsp[(2) - (2)].nd), "+@");
6520  }
6521  break;
6522 
6523  case 208:
6524 /* Line 1787 of yacc.c */
6525 #line 1739 "src/parse.y"
6526  {
6527  (yyval.nd) = call_uni_op(p, (yyvsp[(2) - (2)].nd), "-@");
6528  }
6529  break;
6530 
6531  case 209:
6532 /* Line 1787 of yacc.c */
6533 #line 1743 "src/parse.y"
6534  {
6535  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "|", (yyvsp[(3) - (3)].nd));
6536  }
6537  break;
6538 
6539  case 210:
6540 /* Line 1787 of yacc.c */
6541 #line 1747 "src/parse.y"
6542  {
6543  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "^", (yyvsp[(3) - (3)].nd));
6544  }
6545  break;
6546 
6547  case 211:
6548 /* Line 1787 of yacc.c */
6549 #line 1751 "src/parse.y"
6550  {
6551  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "&", (yyvsp[(3) - (3)].nd));
6552  }
6553  break;
6554 
6555  case 212:
6556 /* Line 1787 of yacc.c */
6557 #line 1755 "src/parse.y"
6558  {
6559  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<=>", (yyvsp[(3) - (3)].nd));
6560  }
6561  break;
6562 
6563  case 213:
6564 /* Line 1787 of yacc.c */
6565 #line 1759 "src/parse.y"
6566  {
6567  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), ">", (yyvsp[(3) - (3)].nd));
6568  }
6569  break;
6570 
6571  case 214:
6572 /* Line 1787 of yacc.c */
6573 #line 1763 "src/parse.y"
6574  {
6575  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), ">=", (yyvsp[(3) - (3)].nd));
6576  }
6577  break;
6578 
6579  case 215:
6580 /* Line 1787 of yacc.c */
6581 #line 1767 "src/parse.y"
6582  {
6583  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<", (yyvsp[(3) - (3)].nd));
6584  }
6585  break;
6586 
6587  case 216:
6588 /* Line 1787 of yacc.c */
6589 #line 1771 "src/parse.y"
6590  {
6591  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<=", (yyvsp[(3) - (3)].nd));
6592  }
6593  break;
6594 
6595  case 217:
6596 /* Line 1787 of yacc.c */
6597 #line 1775 "src/parse.y"
6598  {
6599  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "==", (yyvsp[(3) - (3)].nd));
6600  }
6601  break;
6602 
6603  case 218:
6604 /* Line 1787 of yacc.c */
6605 #line 1779 "src/parse.y"
6606  {
6607  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "===", (yyvsp[(3) - (3)].nd));
6608  }
6609  break;
6610 
6611  case 219:
6612 /* Line 1787 of yacc.c */
6613 #line 1783 "src/parse.y"
6614  {
6615  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "!=", (yyvsp[(3) - (3)].nd));
6616  }
6617  break;
6618 
6619  case 220:
6620 /* Line 1787 of yacc.c */
6621 #line 1787 "src/parse.y"
6622  {
6623  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "=~", (yyvsp[(3) - (3)].nd));
6624  }
6625  break;
6626 
6627  case 221:
6628 /* Line 1787 of yacc.c */
6629 #line 1791 "src/parse.y"
6630  {
6631  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "!~", (yyvsp[(3) - (3)].nd));
6632  }
6633  break;
6634 
6635  case 222:
6636 /* Line 1787 of yacc.c */
6637 #line 1795 "src/parse.y"
6638  {
6639  (yyval.nd) = call_uni_op(p, cond((yyvsp[(2) - (2)].nd)), "!");
6640  }
6641  break;
6642 
6643  case 223:
6644 /* Line 1787 of yacc.c */
6645 #line 1799 "src/parse.y"
6646  {
6647  (yyval.nd) = call_uni_op(p, cond((yyvsp[(2) - (2)].nd)), "~");
6648  }
6649  break;
6650 
6651  case 224:
6652 /* Line 1787 of yacc.c */
6653 #line 1803 "src/parse.y"
6654  {
6655  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<<", (yyvsp[(3) - (3)].nd));
6656  }
6657  break;
6658 
6659  case 225:
6660 /* Line 1787 of yacc.c */
6661 #line 1807 "src/parse.y"
6662  {
6663  (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), ">>", (yyvsp[(3) - (3)].nd));
6664  }
6665  break;
6666 
6667  case 226:
6668 /* Line 1787 of yacc.c */
6669 #line 1811 "src/parse.y"
6670  {
6671  (yyval.nd) = new_and(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
6672  }
6673  break;
6674 
6675  case 227:
6676 /* Line 1787 of yacc.c */
6677 #line 1815 "src/parse.y"
6678  {
6679  (yyval.nd) = new_or(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
6680  }
6681  break;
6682 
6683  case 228:
6684 /* Line 1787 of yacc.c */
6685 #line 1819 "src/parse.y"
6686  {
6687  (yyval.nd) = new_if(p, cond((yyvsp[(1) - (6)].nd)), (yyvsp[(3) - (6)].nd), (yyvsp[(6) - (6)].nd));
6688  }
6689  break;
6690 
6691  case 229:
6692 /* Line 1787 of yacc.c */
6693 #line 1823 "src/parse.y"
6694  {
6695  (yyval.nd) = (yyvsp[(1) - (1)].nd);
6696  }
6697  break;
6698 
6699  case 230:
6700 /* Line 1787 of yacc.c */
6701 #line 1829 "src/parse.y"
6702  {
6703  (yyval.nd) = (yyvsp[(1) - (1)].nd);
6704  if (!(yyval.nd)) (yyval.nd) = new_nil(p);
6705  }
6706  break;
6707 
6708  case 232:
6709 /* Line 1787 of yacc.c */
6710 #line 1837 "src/parse.y"
6711  {
6712  (yyval.nd) = (yyvsp[(1) - (2)].nd);
6713  }
6714  break;
6715 
6716  case 233:
6717 /* Line 1787 of yacc.c */
6718 #line 1841 "src/parse.y"
6719  {
6720  (yyval.nd) = push((yyvsp[(1) - (4)].nd), new_hash(p, (yyvsp[(3) - (4)].nd)));
6721  }
6722  break;
6723 
6724  case 234:
6725 /* Line 1787 of yacc.c */
6726 #line 1845 "src/parse.y"
6727  {
6728  (yyval.nd) = cons(new_hash(p, (yyvsp[(1) - (2)].nd)), 0);
6729  }
6730  break;
6731 
6732  case 235:
6733 /* Line 1787 of yacc.c */
6734 #line 1851 "src/parse.y"
6735  {
6736  (yyval.nd) = (yyvsp[(2) - (3)].nd);
6737  }
6738  break;
6739 
6740  case 240:
6741 /* Line 1787 of yacc.c */
6742 #line 1863 "src/parse.y"
6743  {
6744  (yyval.nd) = cons((yyvsp[(1) - (2)].nd),0);
6745  }
6746  break;
6747 
6748  case 241:
6749 /* Line 1787 of yacc.c */
6750 #line 1867 "src/parse.y"
6751  {
6752  (yyval.nd) = cons(push((yyvsp[(1) - (4)].nd), new_hash(p, (yyvsp[(3) - (4)].nd))), 0);
6753  }
6754  break;
6755 
6756  case 242:
6757 /* Line 1787 of yacc.c */
6758 #line 1871 "src/parse.y"
6759  {
6760  (yyval.nd) = cons(list1(new_hash(p, (yyvsp[(1) - (2)].nd))), 0);
6761  }
6762  break;
6763 
6764  case 243:
6765 /* Line 1787 of yacc.c */
6766 #line 1877 "src/parse.y"
6767  {
6768  (yyval.nd) = cons(list1((yyvsp[(1) - (1)].nd)), 0);
6769  }
6770  break;
6771 
6772  case 244:
6773 /* Line 1787 of yacc.c */
6774 #line 1881 "src/parse.y"
6775  {
6776  (yyval.nd) = cons((yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
6777  }
6778  break;
6779 
6780  case 245:
6781 /* Line 1787 of yacc.c */
6782 #line 1885 "src/parse.y"
6783  {
6784  (yyval.nd) = cons(list1(new_hash(p, (yyvsp[(1) - (2)].nd))), (yyvsp[(2) - (2)].nd));
6785  }
6786  break;
6787 
6788  case 246:
6789 /* Line 1787 of yacc.c */
6790 #line 1889 "src/parse.y"
6791  {
6792  (yyval.nd) = cons(push((yyvsp[(1) - (4)].nd), new_hash(p, (yyvsp[(3) - (4)].nd))), (yyvsp[(4) - (4)].nd));
6793  }
6794  break;
6795 
6796  case 247:
6797 /* Line 1787 of yacc.c */
6798 #line 1893 "src/parse.y"
6799  {
6800  (yyval.nd) = cons(0, (yyvsp[(1) - (1)].nd));
6801  }
6802  break;
6803 
6804  case 248:
6805 /* Line 1787 of yacc.c */
6806 #line 1898 "src/parse.y"
6807  {
6808  (yyval.stack) = p->cmdarg_stack;
6809  CMDARG_PUSH(1);
6810  }
6811  break;
6812 
6813  case 249:
6814 /* Line 1787 of yacc.c */
6815 #line 1903 "src/parse.y"
6816  {
6817  p->cmdarg_stack = (yyvsp[(1) - (2)].stack);
6818  (yyval.nd) = (yyvsp[(2) - (2)].nd);
6819  }
6820  break;
6821 
6822  case 250:
6823 /* Line 1787 of yacc.c */
6824 #line 1910 "src/parse.y"
6825  {
6826  (yyval.nd) = new_block_arg(p, (yyvsp[(2) - (2)].nd));
6827  }
6828  break;
6829 
6830  case 251:
6831 /* Line 1787 of yacc.c */
6832 #line 1916 "src/parse.y"
6833  {
6834  (yyval.nd) = (yyvsp[(2) - (2)].nd);
6835  }
6836  break;
6837 
6838  case 252:
6839 /* Line 1787 of yacc.c */
6840 #line 1920 "src/parse.y"
6841  {
6842  (yyval.nd) = 0;
6843  }
6844  break;
6845 
6846  case 253:
6847 /* Line 1787 of yacc.c */
6848 #line 1926 "src/parse.y"
6849  {
6850  (yyval.nd) = cons((yyvsp[(1) - (1)].nd), 0);
6851  }
6852  break;
6853 
6854  case 254:
6855 /* Line 1787 of yacc.c */
6856 #line 1930 "src/parse.y"
6857  {
6858  (yyval.nd) = cons(new_splat(p, (yyvsp[(2) - (2)].nd)), 0);
6859  }
6860  break;
6861 
6862  case 255:
6863 /* Line 1787 of yacc.c */
6864 #line 1934 "src/parse.y"
6865  {
6866  (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
6867  }
6868  break;
6869 
6870  case 256:
6871 /* Line 1787 of yacc.c */
6872 #line 1938 "src/parse.y"
6873  {
6874  (yyval.nd) = push((yyvsp[(1) - (4)].nd), new_splat(p, (yyvsp[(4) - (4)].nd)));
6875  }
6876  break;
6877 
6878  case 257:
6879 /* Line 1787 of yacc.c */
6880 #line 1944 "src/parse.y"
6881  {
6882  (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
6883  }
6884  break;
6885 
6886  case 258:
6887 /* Line 1787 of yacc.c */
6888 #line 1948 "src/parse.y"
6889  {
6890  (yyval.nd) = push((yyvsp[(1) - (4)].nd), new_splat(p, (yyvsp[(4) - (4)].nd)));
6891  }
6892  break;
6893 
6894  case 259:
6895 /* Line 1787 of yacc.c */
6896 #line 1952 "src/parse.y"
6897  {
6898  (yyval.nd) = list1(new_splat(p, (yyvsp[(2) - (2)].nd)));
6899  }
6900  break;
6901 
6902  case 267:
6903 /* Line 1787 of yacc.c */
6904 #line 1965 "src/parse.y"
6905  {
6906  (yyval.nd) = new_fcall(p, (yyvsp[(1) - (1)].id), 0);
6907  }
6908  break;
6909 
6910  case 268:
6911 /* Line 1787 of yacc.c */
6912 #line 1969 "src/parse.y"
6913  {
6914  (yyvsp[(1) - (1)].stack) = p->cmdarg_stack;
6915  p->cmdarg_stack = 0;
6916  }
6917  break;
6918 
6919  case 269:
6920 /* Line 1787 of yacc.c */
6921 #line 1975 "src/parse.y"
6922  {
6923  p->cmdarg_stack = (yyvsp[(1) - (4)].stack);
6924  (yyval.nd) = (yyvsp[(3) - (4)].nd);
6925  }
6926  break;
6927 
6928  case 270:
6929 /* Line 1787 of yacc.c */
6930 #line 1979 "src/parse.y"
6931  {p->lstate = EXPR_ENDARG;}
6932  break;
6933 
6934  case 271:
6935 /* Line 1787 of yacc.c */
6936 #line 1980 "src/parse.y"
6937  {
6938  (yyval.nd) = (yyvsp[(2) - (4)].nd);
6939  }
6940  break;
6941 
6942  case 272:
6943 /* Line 1787 of yacc.c */
6944 #line 1983 "src/parse.y"
6945  {p->lstate = EXPR_ENDARG;}
6946  break;
6947 
6948  case 273:
6949 /* Line 1787 of yacc.c */
6950 #line 1984 "src/parse.y"
6951  {
6952  (yyval.nd) = 0;
6953  }
6954  break;
6955 
6956  case 274:
6957 /* Line 1787 of yacc.c */
6958 #line 1988 "src/parse.y"
6959  {
6960  (yyval.nd) = (yyvsp[(2) - (3)].nd);
6961  }
6962  break;
6963 
6964  case 275:
6965 /* Line 1787 of yacc.c */
6966 #line 1992 "src/parse.y"
6967  {
6968  (yyval.nd) = new_colon2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id));
6969  }
6970  break;
6971 
6972  case 276:
6973 /* Line 1787 of yacc.c */
6974 #line 1996 "src/parse.y"
6975  {
6976  (yyval.nd) = new_colon3(p, (yyvsp[(2) - (2)].id));
6977  }
6978  break;
6979 
6980  case 277:
6981 /* Line 1787 of yacc.c */
6982 #line 2000 "src/parse.y"
6983  {
6984  (yyval.nd) = new_array(p, (yyvsp[(2) - (3)].nd));
6985  }
6986  break;
6987 
6988  case 278:
6989 /* Line 1787 of yacc.c */
6990 #line 2004 "src/parse.y"
6991  {
6992  (yyval.nd) = new_hash(p, (yyvsp[(2) - (3)].nd));
6993  }
6994  break;
6995 
6996  case 279:
6997 /* Line 1787 of yacc.c */
6998 #line 2008 "src/parse.y"
6999  {
7000  (yyval.nd) = new_return(p, 0);
7001  }
7002  break;
7003 
7004  case 280:
7005 /* Line 1787 of yacc.c */
7006 #line 2012 "src/parse.y"
7007  {
7008  (yyval.nd) = new_yield(p, (yyvsp[(3) - (4)].nd));
7009  }
7010  break;
7011 
7012  case 281:
7013 /* Line 1787 of yacc.c */
7014 #line 2016 "src/parse.y"
7015  {
7016  (yyval.nd) = new_yield(p, 0);
7017  }
7018  break;
7019 
7020  case 282:
7021 /* Line 1787 of yacc.c */
7022 #line 2020 "src/parse.y"
7023  {
7024  (yyval.nd) = new_yield(p, 0);
7025  }
7026  break;
7027 
7028  case 283:
7029 /* Line 1787 of yacc.c */
7030 #line 2024 "src/parse.y"
7031  {
7032  (yyval.nd) = call_uni_op(p, cond((yyvsp[(3) - (4)].nd)), "!");
7033  }
7034  break;
7035 
7036  case 284:
7037 /* Line 1787 of yacc.c */
7038 #line 2028 "src/parse.y"
7039  {
7040  (yyval.nd) = call_uni_op(p, new_nil(p), "!");
7041  }
7042  break;
7043 
7044  case 285:
7045 /* Line 1787 of yacc.c */
7046 #line 2032 "src/parse.y"
7047  {
7048  (yyval.nd) = new_fcall(p, (yyvsp[(1) - (2)].id), cons(0, (yyvsp[(2) - (2)].nd)));
7049  }
7050  break;
7051 
7052  case 287:
7053 /* Line 1787 of yacc.c */
7054 #line 2037 "src/parse.y"
7055  {
7056  call_with_block(p, (yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
7057  (yyval.nd) = (yyvsp[(1) - (2)].nd);
7058  }
7059  break;
7060 
7061  case 288:
7062 /* Line 1787 of yacc.c */
7063 #line 2042 "src/parse.y"
7064  {
7065  local_nest(p);
7066  (yyval.num) = p->lpar_beg;
7067  p->lpar_beg = ++p->paren_nest;
7068  }
7069  break;
7070 
7071  case 289:
7072 /* Line 1787 of yacc.c */
7073 #line 2049 "src/parse.y"
7074  {
7075  p->lpar_beg = (yyvsp[(2) - (4)].num);
7076  (yyval.nd) = new_lambda(p, (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].nd));
7077  local_unnest(p);
7078  }
7079  break;
7080 
7081  case 290:
7082 /* Line 1787 of yacc.c */
7083 #line 2058 "src/parse.y"
7084  {
7085  (yyval.nd) = new_if(p, cond((yyvsp[(2) - (6)].nd)), (yyvsp[(4) - (6)].nd), (yyvsp[(5) - (6)].nd));
7086  }
7087  break;
7088 
7089  case 291:
7090 /* Line 1787 of yacc.c */
7091 #line 2065 "src/parse.y"
7092  {
7093  (yyval.nd) = new_unless(p, cond((yyvsp[(2) - (6)].nd)), (yyvsp[(4) - (6)].nd), (yyvsp[(5) - (6)].nd));
7094  }
7095  break;
7096 
7097  case 292:
7098 /* Line 1787 of yacc.c */
7099 #line 2068 "src/parse.y"
7100  {COND_PUSH(1);}
7101  break;
7102 
7103  case 293:
7104 /* Line 1787 of yacc.c */
7105 #line 2068 "src/parse.y"
7106  {COND_POP();}
7107  break;
7108 
7109  case 294:
7110 /* Line 1787 of yacc.c */
7111 #line 2071 "src/parse.y"
7112  {
7113  (yyval.nd) = new_while(p, cond((yyvsp[(3) - (7)].nd)), (yyvsp[(6) - (7)].nd));
7114  }
7115  break;
7116 
7117  case 295:
7118 /* Line 1787 of yacc.c */
7119 #line 2074 "src/parse.y"
7120  {COND_PUSH(1);}
7121  break;
7122 
7123  case 296:
7124 /* Line 1787 of yacc.c */
7125 #line 2074 "src/parse.y"
7126  {COND_POP();}
7127  break;
7128 
7129  case 297:
7130 /* Line 1787 of yacc.c */
7131 #line 2077 "src/parse.y"
7132  {
7133  (yyval.nd) = new_until(p, cond((yyvsp[(3) - (7)].nd)), (yyvsp[(6) - (7)].nd));
7134  }
7135  break;
7136 
7137  case 298:
7138 /* Line 1787 of yacc.c */
7139 #line 2083 "src/parse.y"
7140  {
7141  (yyval.nd) = new_case(p, (yyvsp[(2) - (5)].nd), (yyvsp[(4) - (5)].nd));
7142  }
7143  break;
7144 
7145  case 299:
7146 /* Line 1787 of yacc.c */
7147 #line 2087 "src/parse.y"
7148  {
7149  (yyval.nd) = new_case(p, 0, (yyvsp[(3) - (4)].nd));
7150  }
7151  break;
7152 
7153  case 300:
7154 /* Line 1787 of yacc.c */
7155 #line 2091 "src/parse.y"
7156  {COND_PUSH(1);}
7157  break;
7158 
7159  case 301:
7160 /* Line 1787 of yacc.c */
7161 #line 2093 "src/parse.y"
7162  {COND_POP();}
7163  break;
7164 
7165  case 302:
7166 /* Line 1787 of yacc.c */
7167 #line 2096 "src/parse.y"
7168  {
7169  (yyval.nd) = new_for(p, (yyvsp[(2) - (9)].nd), (yyvsp[(5) - (9)].nd), (yyvsp[(8) - (9)].nd));
7170  }
7171  break;
7172 
7173  case 303:
7174 /* Line 1787 of yacc.c */
7175 #line 2100 "src/parse.y"
7176  {
7177  if (p->in_def || p->in_single)
7178  yyerror(p, "class definition in method body");
7179  (yyval.nd) = local_switch(p);
7180  }
7181  break;
7182 
7183  case 304:
7184 /* Line 1787 of yacc.c */
7185 #line 2107 "src/parse.y"
7186  {
7187  (yyval.nd) = new_class(p, (yyvsp[(2) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].nd));
7188  local_resume(p, (yyvsp[(4) - (6)].nd));
7189  }
7190  break;
7191 
7192  case 305:
7193 /* Line 1787 of yacc.c */
7194 #line 2112 "src/parse.y"
7195  {
7196  (yyval.num) = p->in_def;
7197  p->in_def = 0;
7198  }
7199  break;
7200 
7201  case 306:
7202 /* Line 1787 of yacc.c */
7203 #line 2117 "src/parse.y"
7204  {
7205  (yyval.nd) = cons(local_switch(p), (node*)(intptr_t)p->in_single);
7206  p->in_single = 0;
7207  }
7208  break;
7209 
7210  case 307:
7211 /* Line 1787 of yacc.c */
7212 #line 2123 "src/parse.y"
7213  {
7214  (yyval.nd) = new_sclass(p, (yyvsp[(3) - (8)].nd), (yyvsp[(7) - (8)].nd));
7215  local_resume(p, (yyvsp[(6) - (8)].nd)->car);
7216  p->in_def = (yyvsp[(4) - (8)].num);
7217  p->in_single = (int)(intptr_t)(yyvsp[(6) - (8)].nd)->cdr;
7218  }
7219  break;
7220 
7221  case 308:
7222 /* Line 1787 of yacc.c */
7223 #line 2130 "src/parse.y"
7224  {
7225  if (p->in_def || p->in_single)
7226  yyerror(p, "module definition in method body");
7227  (yyval.nd) = local_switch(p);
7228  }
7229  break;
7230 
7231  case 309:
7232 /* Line 1787 of yacc.c */
7233 #line 2137 "src/parse.y"
7234  {
7235  (yyval.nd) = new_module(p, (yyvsp[(2) - (5)].nd), (yyvsp[(4) - (5)].nd));
7236  local_resume(p, (yyvsp[(3) - (5)].nd));
7237  }
7238  break;
7239 
7240  case 310:
7241 /* Line 1787 of yacc.c */
7242 #line 2142 "src/parse.y"
7243  {
7244  p->in_def++;
7245  (yyval.nd) = local_switch(p);
7246  }
7247  break;
7248 
7249  case 311:
7250 /* Line 1787 of yacc.c */
7251 #line 2149 "src/parse.y"
7252  {
7253  (yyval.nd) = new_def(p, (yyvsp[(2) - (6)].id), (yyvsp[(4) - (6)].nd), (yyvsp[(5) - (6)].nd));
7254  local_resume(p, (yyvsp[(3) - (6)].nd));
7255  p->in_def--;
7256  }
7257  break;
7258 
7259  case 312:
7260 /* Line 1787 of yacc.c */
7261 #line 2154 "src/parse.y"
7262  {p->lstate = EXPR_FNAME;}
7263  break;
7264 
7265  case 313:
7266 /* Line 1787 of yacc.c */
7267 #line 2155 "src/parse.y"
7268  {
7269  p->in_single++;
7270  p->lstate = EXPR_ENDFN; /* force for args */
7271  (yyval.nd) = local_switch(p);
7272  }
7273  break;
7274 
7275  case 314:
7276 /* Line 1787 of yacc.c */
7277 #line 2163 "src/parse.y"
7278  {
7279  (yyval.nd) = new_sdef(p, (yyvsp[(2) - (9)].nd), (yyvsp[(5) - (9)].id), (yyvsp[(7) - (9)].nd), (yyvsp[(8) - (9)].nd));
7280  local_resume(p, (yyvsp[(6) - (9)].nd));
7281  p->in_single--;
7282  }
7283  break;
7284 
7285  case 315:
7286 /* Line 1787 of yacc.c */
7287 #line 2169 "src/parse.y"
7288  {
7289  (yyval.nd) = new_break(p, 0);
7290  }
7291  break;
7292 
7293  case 316:
7294 /* Line 1787 of yacc.c */
7295 #line 2173 "src/parse.y"
7296  {
7297  (yyval.nd) = new_next(p, 0);
7298  }
7299  break;
7300 
7301  case 317:
7302 /* Line 1787 of yacc.c */
7303 #line 2177 "src/parse.y"
7304  {
7305  (yyval.nd) = new_redo(p);
7306  }
7307  break;
7308 
7309  case 318:
7310 /* Line 1787 of yacc.c */
7311 #line 2181 "src/parse.y"
7312  {
7313  (yyval.nd) = new_retry(p);
7314  }
7315  break;
7316 
7317  case 319:
7318 /* Line 1787 of yacc.c */
7319 #line 2187 "src/parse.y"
7320  {
7321  (yyval.nd) = (yyvsp[(1) - (1)].nd);
7322  if (!(yyval.nd)) (yyval.nd) = new_nil(p);
7323  }
7324  break;
7325 
7326  case 326:
7327 /* Line 1787 of yacc.c */
7328 #line 2206 "src/parse.y"
7329  {
7330  (yyval.nd) = new_if(p, cond((yyvsp[(2) - (5)].nd)), (yyvsp[(4) - (5)].nd), (yyvsp[(5) - (5)].nd));
7331  }
7332  break;
7333 
7334  case 328:
7335 /* Line 1787 of yacc.c */
7336 #line 2213 "src/parse.y"
7337  {
7338  (yyval.nd) = (yyvsp[(2) - (2)].nd);
7339  }
7340  break;
7341 
7342  case 329:
7343 /* Line 1787 of yacc.c */
7344 #line 2219 "src/parse.y"
7345  {
7346  (yyval.nd) = list1(list1((yyvsp[(1) - (1)].nd)));
7347  }
7348  break;
7349 
7350  case 331:
7351 /* Line 1787 of yacc.c */
7352 #line 2226 "src/parse.y"
7353  {
7354  (yyval.nd) = new_arg(p, (yyvsp[(1) - (1)].id));
7355  }
7356  break;
7357 
7358  case 332:
7359 /* Line 1787 of yacc.c */
7360 #line 2230 "src/parse.y"
7361  {
7362  (yyval.nd) = new_masgn(p, (yyvsp[(2) - (3)].nd), 0);
7363  }
7364  break;
7365 
7366  case 333:
7367 /* Line 1787 of yacc.c */
7368 #line 2236 "src/parse.y"
7369  {
7370  (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
7371  }
7372  break;
7373 
7374  case 334:
7375 /* Line 1787 of yacc.c */
7376 #line 2240 "src/parse.y"
7377  {
7378  (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
7379  }
7380  break;
7381 
7382  case 335:
7383 /* Line 1787 of yacc.c */
7384 #line 2246 "src/parse.y"
7385  {
7386  (yyval.nd) = list3((yyvsp[(1) - (1)].nd),0,0);
7387  }
7388  break;
7389 
7390  case 336:
7391 /* Line 1787 of yacc.c */
7392 #line 2250 "src/parse.y"
7393  {
7394  (yyval.nd) = list3((yyvsp[(1) - (4)].nd), new_arg(p, (yyvsp[(4) - (4)].id)), 0);
7395  }
7396  break;
7397 
7398  case 337:
7399 /* Line 1787 of yacc.c */
7400 #line 2254 "src/parse.y"
7401  {
7402  (yyval.nd) = list3((yyvsp[(1) - (6)].nd), new_arg(p, (yyvsp[(4) - (6)].id)), (yyvsp[(6) - (6)].nd));
7403  }
7404  break;
7405 
7406  case 338:
7407 /* Line 1787 of yacc.c */
7408 #line 2258 "src/parse.y"
7409  {
7410  (yyval.nd) = list3((yyvsp[(1) - (3)].nd), (node*)-1, 0);
7411  }
7412  break;
7413 
7414  case 339:
7415 /* Line 1787 of yacc.c */
7416 #line 2262 "src/parse.y"
7417  {
7418  (yyval.nd) = list3((yyvsp[(1) - (5)].nd), (node*)-1, (yyvsp[(5) - (5)].nd));
7419  }
7420  break;
7421 
7422  case 340:
7423 /* Line 1787 of yacc.c */
7424 #line 2266 "src/parse.y"
7425  {
7426  (yyval.nd) = list3(0, new_arg(p, (yyvsp[(2) - (2)].id)), 0);
7427  }
7428  break;
7429 
7430  case 341:
7431 /* Line 1787 of yacc.c */
7432 #line 2270 "src/parse.y"
7433  {
7434  (yyval.nd) = list3(0, new_arg(p, (yyvsp[(2) - (4)].id)), (yyvsp[(4) - (4)].nd));
7435  }
7436  break;
7437 
7438  case 342:
7439 /* Line 1787 of yacc.c */
7440 #line 2274 "src/parse.y"
7441  {
7442  (yyval.nd) = list3(0, (node*)-1, 0);
7443  }
7444  break;
7445 
7446  case 343:
7447 /* Line 1787 of yacc.c */
7448 #line 2278 "src/parse.y"
7449  {
7450  (yyval.nd) = list3(0, (node*)-1, (yyvsp[(3) - (3)].nd));
7451  }
7452  break;
7453 
7454  case 344:
7455 /* Line 1787 of yacc.c */
7456 #line 2284 "src/parse.y"
7457  {
7458  (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id));
7459  }
7460  break;
7461 
7462  case 345:
7463 /* Line 1787 of yacc.c */
7464 #line 2288 "src/parse.y"
7465  {
7466  (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));
7467  }
7468  break;
7469 
7470  case 346:
7471 /* Line 1787 of yacc.c */
7472 #line 2292 "src/parse.y"
7473  {
7474  (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd), 0, 0, (yyvsp[(4) - (4)].id));
7475  }
7476  break;
7477 
7478  case 347:
7479 /* Line 1787 of yacc.c */
7480 #line 2296 "src/parse.y"
7481  {
7482  (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), 0, (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
7483  }
7484  break;
7485 
7486  case 348:
7487 /* Line 1787 of yacc.c */
7488 #line 2300 "src/parse.y"
7489  {
7490  (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id));
7491  }
7492  break;
7493 
7494  case 349:
7495 /* Line 1787 of yacc.c */
7496 #line 2304 "src/parse.y"
7497  {
7498  (yyval.nd) = new_args(p, (yyvsp[(1) - (2)].nd), 0, 1, 0, 0);
7499  }
7500  break;
7501 
7502  case 350:
7503 /* Line 1787 of yacc.c */
7504 #line 2308 "src/parse.y"
7505  {
7506  (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), 0, (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
7507  }
7508  break;
7509 
7510  case 351:
7511 /* Line 1787 of yacc.c */
7512 #line 2312 "src/parse.y"
7513  {
7514  (yyval.nd) = new_args(p, (yyvsp[(1) - (2)].nd), 0, 0, 0, (yyvsp[(2) - (2)].id));
7515  }
7516  break;
7517 
7518  case 352:
7519 /* Line 1787 of yacc.c */
7520 #line 2316 "src/parse.y"
7521  {
7522  (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id));
7523  }
7524  break;
7525 
7526  case 353:
7527 /* Line 1787 of yacc.c */
7528 #line 2320 "src/parse.y"
7529  {
7530  (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
7531  }
7532  break;
7533 
7534  case 354:
7535 /* Line 1787 of yacc.c */
7536 #line 2324 "src/parse.y"
7537  {
7538  (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (2)].nd), 0, 0, (yyvsp[(2) - (2)].id));
7539  }
7540  break;
7541 
7542  case 355:
7543 /* Line 1787 of yacc.c */
7544 #line 2328 "src/parse.y"
7545  {
7546  (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id));
7547  }
7548  break;
7549 
7550  case 356:
7551 /* Line 1787 of yacc.c */
7552 #line 2332 "src/parse.y"
7553  {
7554  (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (2)].id), 0, (yyvsp[(2) - (2)].id));
7555  }
7556  break;
7557 
7558  case 357:
7559 /* Line 1787 of yacc.c */
7560 #line 2336 "src/parse.y"
7561  {
7562  (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id));
7563  }
7564  break;
7565 
7566  case 358:
7567 /* Line 1787 of yacc.c */
7568 #line 2340 "src/parse.y"
7569  {
7570  (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[(1) - (1)].id));
7571  }
7572  break;
7573 
7574  case 360:
7575 /* Line 1787 of yacc.c */
7576 #line 2347 "src/parse.y"
7577  {
7578  p->cmd_start = TRUE;
7579  (yyval.nd) = (yyvsp[(1) - (1)].nd);
7580  }
7581  break;
7582 
7583  case 361:
7584 /* Line 1787 of yacc.c */
7585 #line 2354 "src/parse.y"
7586  {
7587  local_add_f(p, 0);
7588  (yyval.nd) = 0;
7589  }
7590  break;
7591 
7592  case 362:
7593 /* Line 1787 of yacc.c */
7594 #line 2359 "src/parse.y"
7595  {
7596  local_add_f(p, 0);
7597  (yyval.nd) = 0;
7598  }
7599  break;
7600 
7601  case 363:
7602 /* Line 1787 of yacc.c */
7603 #line 2364 "src/parse.y"
7604  {
7605  (yyval.nd) = (yyvsp[(2) - (4)].nd);
7606  }
7607  break;
7608 
7609  case 364:
7610 /* Line 1787 of yacc.c */
7611 #line 2371 "src/parse.y"
7612  {
7613  (yyval.nd) = 0;
7614  }
7615  break;
7616 
7617  case 365:
7618 /* Line 1787 of yacc.c */
7619 #line 2375 "src/parse.y"
7620  {
7621  (yyval.nd) = 0;
7622  }
7623  break;
7624 
7625  case 368:
7626 /* Line 1787 of yacc.c */
7627 #line 2385 "src/parse.y"
7628  {
7629  local_add_f(p, (yyvsp[(1) - (1)].id));
7630  new_bv(p, (yyvsp[(1) - (1)].id));
7631  }
7632  break;
7633 
7634  case 370:
7635 /* Line 1787 of yacc.c */
7636 #line 2393 "src/parse.y"
7637  {
7638  (yyval.nd) = (yyvsp[(2) - (4)].nd);
7639  }
7640  break;
7641 
7642  case 371:
7643 /* Line 1787 of yacc.c */
7644 #line 2397 "src/parse.y"
7645  {
7646  (yyval.nd) = (yyvsp[(1) - (1)].nd);
7647  }
7648  break;
7649 
7650  case 372:
7651 /* Line 1787 of yacc.c */
7652 #line 2403 "src/parse.y"
7653  {
7654  (yyval.nd) = (yyvsp[(2) - (3)].nd);
7655  }
7656  break;
7657 
7658  case 373:
7659 /* Line 1787 of yacc.c */
7660 #line 2407 "src/parse.y"
7661  {
7662  (yyval.nd) = (yyvsp[(2) - (3)].nd);
7663  }
7664  break;
7665 
7666  case 374:
7667 /* Line 1787 of yacc.c */
7668 #line 2413 "src/parse.y"
7669  {
7670  local_nest(p);
7671  }
7672  break;
7673 
7674  case 375:
7675 /* Line 1787 of yacc.c */
7676 #line 2419 "src/parse.y"
7677  {
7678  (yyval.nd) = new_block(p,(yyvsp[(3) - (5)].nd),(yyvsp[(4) - (5)].nd));
7679  local_unnest(p);
7680  }
7681  break;
7682 
7683  case 376:
7684 /* Line 1787 of yacc.c */
7685 #line 2426 "src/parse.y"
7686  {
7687  if ((yyvsp[(1) - (2)].nd)->car == (node*)NODE_YIELD) {
7688  yyerror(p, "block given to yield");
7689  }
7690  else {
7691  call_with_block(p, (yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
7692  }
7693  (yyval.nd) = (yyvsp[(1) - (2)].nd);
7694  }
7695  break;
7696 
7697  case 377:
7698 /* Line 1787 of yacc.c */
7699 #line 2436 "src/parse.y"
7700  {
7701  (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
7702  }
7703  break;
7704 
7705  case 378:
7706 /* Line 1787 of yacc.c */
7707 #line 2440 "src/parse.y"
7708  {
7709  (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd));
7710  call_with_block(p, (yyval.nd), (yyvsp[(5) - (5)].nd));
7711  }
7712  break;
7713 
7714  case 379:
7715 /* Line 1787 of yacc.c */
7716 #line 2445 "src/parse.y"
7717  {
7718  (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd));
7719  call_with_block(p, (yyval.nd), (yyvsp[(5) - (5)].nd));
7720  }
7721  break;
7722 
7723  case 380:
7724 /* Line 1787 of yacc.c */
7725 #line 2452 "src/parse.y"
7726  {
7727  (yyval.nd) = new_fcall(p, (yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].nd));
7728  }
7729  break;
7730 
7731  case 381:
7732 /* Line 1787 of yacc.c */
7733 #line 2456 "src/parse.y"
7734  {
7735  (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
7736  }
7737  break;
7738 
7739  case 382:
7740 /* Line 1787 of yacc.c */
7741 #line 2460 "src/parse.y"
7742  {
7743  (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
7744  }
7745  break;
7746 
7747  case 383:
7748 /* Line 1787 of yacc.c */
7749 #line 2464 "src/parse.y"
7750  {
7751  (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
7752  }
7753  break;
7754 
7755  case 384:
7756 /* Line 1787 of yacc.c */
7757 #line 2468 "src/parse.y"
7758  {
7759  (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), intern2("call",4), (yyvsp[(3) - (3)].nd));
7760  }
7761  break;
7762 
7763  case 385:
7764 /* Line 1787 of yacc.c */
7765 #line 2472 "src/parse.y"
7766  {
7767  (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), intern2("call",4), (yyvsp[(3) - (3)].nd));
7768  }
7769  break;
7770 
7771  case 386:
7772 /* Line 1787 of yacc.c */
7773 #line 2476 "src/parse.y"
7774  {
7775  (yyval.nd) = new_super(p, (yyvsp[(2) - (2)].nd));
7776  }
7777  break;
7778 
7779  case 387:
7780 /* Line 1787 of yacc.c */
7781 #line 2480 "src/parse.y"
7782  {
7783  (yyval.nd) = new_zsuper(p);
7784  }
7785  break;
7786 
7787  case 388:
7788 /* Line 1787 of yacc.c */
7789 #line 2484 "src/parse.y"
7790  {
7791  (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), intern2("[]",2), (yyvsp[(3) - (4)].nd));
7792  }
7793  break;
7794 
7795  case 389:
7796 /* Line 1787 of yacc.c */
7797 #line 2490 "src/parse.y"
7798  {
7799  local_nest(p);
7800  }
7801  break;
7802 
7803  case 390:
7804 /* Line 1787 of yacc.c */
7805 #line 2495 "src/parse.y"
7806  {
7807  (yyval.nd) = new_block(p,(yyvsp[(3) - (5)].nd),(yyvsp[(4) - (5)].nd));
7808  local_unnest(p);
7809  }
7810  break;
7811 
7812  case 391:
7813 /* Line 1787 of yacc.c */
7814 #line 2500 "src/parse.y"
7815  {
7816  local_nest(p);
7817  }
7818  break;
7819 
7820  case 392:
7821 /* Line 1787 of yacc.c */
7822 #line 2505 "src/parse.y"
7823  {
7824  (yyval.nd) = new_block(p,(yyvsp[(3) - (5)].nd),(yyvsp[(4) - (5)].nd));
7825  local_unnest(p);
7826  }
7827  break;
7828 
7829  case 393:
7830 /* Line 1787 of yacc.c */
7831 #line 2514 "src/parse.y"
7832  {
7833  (yyval.nd) = cons(cons((yyvsp[(2) - (5)].nd), (yyvsp[(4) - (5)].nd)), (yyvsp[(5) - (5)].nd));
7834  }
7835  break;
7836 
7837  case 394:
7838 /* Line 1787 of yacc.c */
7839 #line 2520 "src/parse.y"
7840  {
7841  if ((yyvsp[(1) - (1)].nd)) {
7842  (yyval.nd) = cons(cons(0, (yyvsp[(1) - (1)].nd)), 0);
7843  }
7844  else {
7845  (yyval.nd) = 0;
7846  }
7847  }
7848  break;
7849 
7850  case 396:
7851 /* Line 1787 of yacc.c */
7852 #line 2534 "src/parse.y"
7853  {
7854  (yyval.nd) = list1(list3((yyvsp[(2) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].nd)));
7855  if ((yyvsp[(6) - (6)].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[(6) - (6)].nd));
7856  }
7857  break;
7858 
7859  case 398:
7860 /* Line 1787 of yacc.c */
7861 #line 2542 "src/parse.y"
7862  {
7863  (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
7864  }
7865  break;
7866 
7867  case 401:
7868 /* Line 1787 of yacc.c */
7869 #line 2550 "src/parse.y"
7870  {
7871  (yyval.nd) = (yyvsp[(2) - (2)].nd);
7872  }
7873  break;
7874 
7875  case 403:
7876 /* Line 1787 of yacc.c */
7877 #line 2557 "src/parse.y"
7878  {
7879  (yyval.nd) = (yyvsp[(2) - (2)].nd);
7880  }
7881  break;
7882 
7883  case 411:
7884 /* Line 1787 of yacc.c */
7885 #line 2572 "src/parse.y"
7886  {
7887  (yyval.nd) = (yyvsp[(2) - (2)].nd);
7888  }
7889  break;
7890 
7891  case 412:
7892 /* Line 1787 of yacc.c */
7893 #line 2576 "src/parse.y"
7894  {
7895  (yyval.nd) = new_dstr(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)));
7896  }
7897  break;
7898 
7899  case 414:
7900 /* Line 1787 of yacc.c */
7901 #line 2583 "src/parse.y"
7902  {
7903  (yyval.nd) = append((yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
7904  }
7905  break;
7906 
7907  case 415:
7908 /* Line 1787 of yacc.c */
7909 #line 2589 "src/parse.y"
7910  {
7911  (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
7912  }
7913  break;
7914 
7915  case 416:
7916 /* Line 1787 of yacc.c */
7917 #line 2593 "src/parse.y"
7918  {
7919  (yyval.nd) = p->lex_strterm;
7920  p->lex_strterm = NULL;
7921  }
7922  break;
7923 
7924  case 417:
7925 /* Line 1787 of yacc.c */
7926 #line 2599 "src/parse.y"
7927  {
7928  p->lex_strterm = (yyvsp[(2) - (4)].nd);
7929  (yyval.nd) = list2((yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd));
7930  }
7931  break;
7932 
7933  case 418:
7934 /* Line 1787 of yacc.c */
7935 #line 2604 "src/parse.y"
7936  {
7937  (yyval.nd) = list1(new_literal_delim(p));
7938  }
7939  break;
7940 
7941  case 419:
7942 /* Line 1787 of yacc.c */
7943 #line 2610 "src/parse.y"
7944  {
7945  (yyval.nd) = (yyvsp[(2) - (2)].nd);
7946  }
7947  break;
7948 
7949  case 420:
7950 /* Line 1787 of yacc.c */
7951 #line 2614 "src/parse.y"
7952  {
7953  (yyval.nd) = new_dxstr(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)));
7954  }
7955  break;
7956 
7957  case 421:
7958 /* Line 1787 of yacc.c */
7959 #line 2620 "src/parse.y"
7960  {
7961  (yyval.nd) = (yyvsp[(2) - (2)].nd);
7962  }
7963  break;
7964 
7965  case 422:
7966 /* Line 1787 of yacc.c */
7967 #line 2624 "src/parse.y"
7968  {
7969  (yyval.nd) = new_dregx(p, (yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd));
7970  }
7971  break;
7972 
7973  case 428:
7974 /* Line 1787 of yacc.c */
7975 #line 2641 "src/parse.y"
7976  {
7977  parsing_heredoc_inf(p)->doc = list1(new_str(p, "", 0));
7978  heredoc_end(p);
7979  }
7980  break;
7981 
7982  case 429:
7983 /* Line 1787 of yacc.c */
7984 #line 2646 "src/parse.y"
7985  {
7986  parsing_heredoc_inf(p)->doc = (yyvsp[(1) - (2)].nd);
7987  heredoc_end(p);
7988  }
7989  break;
7990 
7991  case 430:
7992 /* Line 1787 of yacc.c */
7993 #line 2653 "src/parse.y"
7994  {
7995  (yyval.nd) = new_words(p, list1((yyvsp[(2) - (2)].nd)));
7996  }
7997  break;
7998 
7999  case 431:
8000 /* Line 1787 of yacc.c */
8001 #line 2657 "src/parse.y"
8002  {
8003  (yyval.nd) = new_words(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)));
8004  }
8005  break;
8006 
8007  case 432:
8008 /* Line 1787 of yacc.c */
8009 #line 2664 "src/parse.y"
8010  {
8011  (yyval.nd) = new_sym(p, (yyvsp[(1) - (1)].id));
8012  }
8013  break;
8014 
8015  case 433:
8016 /* Line 1787 of yacc.c */
8017 #line 2668 "src/parse.y"
8018  {
8019  p->lstate = EXPR_END;
8020  (yyval.nd) = new_dsym(p, push((yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].nd)));
8021  }
8022  break;
8023 
8024  case 434:
8025 /* Line 1787 of yacc.c */
8026 #line 2675 "src/parse.y"
8027  {
8028  p->lstate = EXPR_END;
8029  (yyval.id) = (yyvsp[(2) - (2)].id);
8030  }
8031  break;
8032 
8033  case 439:
8034 /* Line 1787 of yacc.c */
8035 #line 2686 "src/parse.y"
8036  {
8037  (yyval.id) = new_strsym(p, (yyvsp[(1) - (1)].nd));
8038  }
8039  break;
8040 
8041  case 440:
8042 /* Line 1787 of yacc.c */
8043 #line 2690 "src/parse.y"
8044  {
8045  (yyval.id) = new_strsym(p, (yyvsp[(2) - (2)].nd));
8046  }
8047  break;
8048 
8049  case 441:
8050 /* Line 1787 of yacc.c */
8051 #line 2696 "src/parse.y"
8052  {
8053  (yyval.nd) = new_symbols(p, list1((yyvsp[(2) - (2)].nd)));
8054  }
8055  break;
8056 
8057  case 442:
8058 /* Line 1787 of yacc.c */
8059 #line 2700 "src/parse.y"
8060  {
8061  (yyval.nd) = new_symbols(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)));
8062  }
8063  break;
8064 
8065  case 445:
8066 /* Line 1787 of yacc.c */
8067 #line 2708 "src/parse.y"
8068  {
8069  (yyval.nd) = negate_lit(p, (yyvsp[(2) - (2)].nd));
8070  }
8071  break;
8072 
8073  case 446:
8074 /* Line 1787 of yacc.c */
8075 #line 2712 "src/parse.y"
8076  {
8077  (yyval.nd) = negate_lit(p, (yyvsp[(2) - (2)].nd));
8078  }
8079  break;
8080 
8081  case 447:
8082 /* Line 1787 of yacc.c */
8083 #line 2718 "src/parse.y"
8084  {
8085  (yyval.nd) = new_lvar(p, (yyvsp[(1) - (1)].id));
8086  }
8087  break;
8088 
8089  case 448:
8090 /* Line 1787 of yacc.c */
8091 #line 2722 "src/parse.y"
8092  {
8093  (yyval.nd) = new_ivar(p, (yyvsp[(1) - (1)].id));
8094  }
8095  break;
8096 
8097  case 449:
8098 /* Line 1787 of yacc.c */
8099 #line 2726 "src/parse.y"
8100  {
8101  (yyval.nd) = new_gvar(p, (yyvsp[(1) - (1)].id));
8102  }
8103  break;
8104 
8105  case 450:
8106 /* Line 1787 of yacc.c */
8107 #line 2730 "src/parse.y"
8108  {
8109  (yyval.nd) = new_cvar(p, (yyvsp[(1) - (1)].id));
8110  }
8111  break;
8112 
8113  case 451:
8114 /* Line 1787 of yacc.c */
8115 #line 2734 "src/parse.y"
8116  {
8117  (yyval.nd) = new_const(p, (yyvsp[(1) - (1)].id));
8118  }
8119  break;
8120 
8121  case 452:
8122 /* Line 1787 of yacc.c */
8123 #line 2740 "src/parse.y"
8124  {
8125  assignable(p, (yyvsp[(1) - (1)].nd));
8126  }
8127  break;
8128 
8129  case 453:
8130 /* Line 1787 of yacc.c */
8131 #line 2746 "src/parse.y"
8132  {
8133  (yyval.nd) = var_reference(p, (yyvsp[(1) - (1)].nd));
8134  }
8135  break;
8136 
8137  case 454:
8138 /* Line 1787 of yacc.c */
8139 #line 2750 "src/parse.y"
8140  {
8141  (yyval.nd) = new_nil(p);
8142  }
8143  break;
8144 
8145  case 455:
8146 /* Line 1787 of yacc.c */
8147 #line 2754 "src/parse.y"
8148  {
8149  (yyval.nd) = new_self(p);
8150  }
8151  break;
8152 
8153  case 456:
8154 /* Line 1787 of yacc.c */
8155 #line 2758 "src/parse.y"
8156  {
8157  (yyval.nd) = new_true(p);
8158  }
8159  break;
8160 
8161  case 457:
8162 /* Line 1787 of yacc.c */
8163 #line 2762 "src/parse.y"
8164  {
8165  (yyval.nd) = new_false(p);
8166  }
8167  break;
8168 
8169  case 458:
8170 /* Line 1787 of yacc.c */
8171 #line 2766 "src/parse.y"
8172  {
8173  if (!p->filename) {
8174  p->filename = "(null)";
8175  }
8176  (yyval.nd) = new_str(p, p->filename, strlen(p->filename));
8177  }
8178  break;
8179 
8180  case 459:
8181 /* Line 1787 of yacc.c */
8182 #line 2773 "src/parse.y"
8183  {
8184  char buf[16];
8185 
8186  snprintf(buf, sizeof(buf), "%d", p->lineno);
8187  (yyval.nd) = new_int(p, buf, 10);
8188  }
8189  break;
8190 
8191  case 462:
8192 /* Line 1787 of yacc.c */
8193 #line 2786 "src/parse.y"
8194  {
8195  (yyval.nd) = 0;
8196  }
8197  break;
8198 
8199  case 463:
8200 /* Line 1787 of yacc.c */
8201 #line 2790 "src/parse.y"
8202  {
8203  p->lstate = EXPR_BEG;
8204  p->cmd_start = TRUE;
8205  }
8206  break;
8207 
8208  case 464:
8209 /* Line 1787 of yacc.c */
8210 #line 2795 "src/parse.y"
8211  {
8212  (yyval.nd) = (yyvsp[(3) - (4)].nd);
8213  }
8214  break;
8215 
8216  case 465:
8217 /* Line 1787 of yacc.c */
8218 #line 2799 "src/parse.y"
8219  {
8220  yyerrok;
8221  (yyval.nd) = 0;
8222  }
8223  break;
8224 
8225  case 466:
8226 /* Line 1787 of yacc.c */
8227 #line 2806 "src/parse.y"
8228  {
8229  (yyval.nd) = (yyvsp[(2) - (3)].nd);
8230  p->lstate = EXPR_BEG;
8231  p->cmd_start = TRUE;
8232  }
8233  break;
8234 
8235  case 467:
8236 /* Line 1787 of yacc.c */
8237 #line 2812 "src/parse.y"
8238  {
8239  (yyval.nd) = (yyvsp[(1) - (2)].nd);
8240  }
8241  break;
8242 
8243  case 468:
8244 /* Line 1787 of yacc.c */
8245 #line 2818 "src/parse.y"
8246  {
8247  (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id));
8248  }
8249  break;
8250 
8251  case 469:
8252 /* Line 1787 of yacc.c */
8253 #line 2822 "src/parse.y"
8254  {
8255  (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));
8256  }
8257  break;
8258 
8259  case 470:
8260 /* Line 1787 of yacc.c */
8261 #line 2826 "src/parse.y"
8262  {
8263  (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd), 0, 0, (yyvsp[(4) - (4)].id));
8264  }
8265  break;
8266 
8267  case 471:
8268 /* Line 1787 of yacc.c */
8269 #line 2830 "src/parse.y"
8270  {
8271  (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), 0, (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
8272  }
8273  break;
8274 
8275  case 472:
8276 /* Line 1787 of yacc.c */
8277 #line 2834 "src/parse.y"
8278  {
8279  (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id));
8280  }
8281  break;
8282 
8283  case 473:
8284 /* Line 1787 of yacc.c */
8285 #line 2838 "src/parse.y"
8286  {
8287  (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), 0, (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
8288  }
8289  break;
8290 
8291  case 474:
8292 /* Line 1787 of yacc.c */
8293 #line 2842 "src/parse.y"
8294  {
8295  (yyval.nd) = new_args(p, (yyvsp[(1) - (2)].nd), 0, 0, 0, (yyvsp[(2) - (2)].id));
8296  }
8297  break;
8298 
8299  case 475:
8300 /* Line 1787 of yacc.c */
8301 #line 2846 "src/parse.y"
8302  {
8303  (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id));
8304  }
8305  break;
8306 
8307  case 476:
8308 /* Line 1787 of yacc.c */
8309 #line 2850 "src/parse.y"
8310  {
8311  (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
8312  }
8313  break;
8314 
8315  case 477:
8316 /* Line 1787 of yacc.c */
8317 #line 2854 "src/parse.y"
8318  {
8319  (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (2)].nd), 0, 0, (yyvsp[(2) - (2)].id));
8320  }
8321  break;
8322 
8323  case 478:
8324 /* Line 1787 of yacc.c */
8325 #line 2858 "src/parse.y"
8326  {
8327  (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id));
8328  }
8329  break;
8330 
8331  case 479:
8332 /* Line 1787 of yacc.c */
8333 #line 2862 "src/parse.y"
8334  {
8335  (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (2)].id), 0, (yyvsp[(2) - (2)].id));
8336  }
8337  break;
8338 
8339  case 480:
8340 /* Line 1787 of yacc.c */
8341 #line 2866 "src/parse.y"
8342  {
8343  (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id));
8344  }
8345  break;
8346 
8347  case 481:
8348 /* Line 1787 of yacc.c */
8349 #line 2870 "src/parse.y"
8350  {
8351  (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[(1) - (1)].id));
8352  }
8353  break;
8354 
8355  case 482:
8356 /* Line 1787 of yacc.c */
8357 #line 2874 "src/parse.y"
8358  {
8359  local_add_f(p, 0);
8360  (yyval.nd) = new_args(p, 0, 0, 0, 0, 0);
8361  }
8362  break;
8363 
8364  case 483:
8365 /* Line 1787 of yacc.c */
8366 #line 2881 "src/parse.y"
8367  {
8368  yyerror(p, "formal argument cannot be a constant");
8369  (yyval.nd) = 0;
8370  }
8371  break;
8372 
8373  case 484:
8374 /* Line 1787 of yacc.c */
8375 #line 2886 "src/parse.y"
8376  {
8377  yyerror(p, "formal argument cannot be an instance variable");
8378  (yyval.nd) = 0;
8379  }
8380  break;
8381 
8382  case 485:
8383 /* Line 1787 of yacc.c */
8384 #line 2891 "src/parse.y"
8385  {
8386  yyerror(p, "formal argument cannot be a global variable");
8387  (yyval.nd) = 0;
8388  }
8389  break;
8390 
8391  case 486:
8392 /* Line 1787 of yacc.c */
8393 #line 2896 "src/parse.y"
8394  {
8395  yyerror(p, "formal argument cannot be a class variable");
8396  (yyval.nd) = 0;
8397  }
8398  break;
8399 
8400  case 487:
8401 /* Line 1787 of yacc.c */
8402 #line 2903 "src/parse.y"
8403  {
8404  (yyval.id) = 0;
8405  }
8406  break;
8407 
8408  case 488:
8409 /* Line 1787 of yacc.c */
8410 #line 2907 "src/parse.y"
8411  {
8412  local_add_f(p, (yyvsp[(1) - (1)].id));
8413  (yyval.id) = (yyvsp[(1) - (1)].id);
8414  }
8415  break;
8416 
8417  case 489:
8418 /* Line 1787 of yacc.c */
8419 #line 2914 "src/parse.y"
8420  {
8421  (yyval.nd) = new_arg(p, (yyvsp[(1) - (1)].id));
8422  }
8423  break;
8424 
8425  case 490:
8426 /* Line 1787 of yacc.c */
8427 #line 2918 "src/parse.y"
8428  {
8429  (yyval.nd) = new_masgn(p, (yyvsp[(2) - (3)].nd), 0);
8430  }
8431  break;
8432 
8433  case 491:
8434 /* Line 1787 of yacc.c */
8435 #line 2924 "src/parse.y"
8436  {
8437  (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
8438  }
8439  break;
8440 
8441  case 492:
8442 /* Line 1787 of yacc.c */
8443 #line 2928 "src/parse.y"
8444  {
8445  (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
8446  }
8447  break;
8448 
8449  case 493:
8450 /* Line 1787 of yacc.c */
8451 #line 2934 "src/parse.y"
8452  {
8453  local_add_f(p, (yyvsp[(1) - (3)].id));
8454  (yyval.nd) = cons(nsym((yyvsp[(1) - (3)].id)), (yyvsp[(3) - (3)].nd));
8455  }
8456  break;
8457 
8458  case 494:
8459 /* Line 1787 of yacc.c */
8460 #line 2941 "src/parse.y"
8461  {
8462  local_add_f(p, (yyvsp[(1) - (3)].id));
8463  (yyval.nd) = cons(nsym((yyvsp[(1) - (3)].id)), (yyvsp[(3) - (3)].nd));
8464  }
8465  break;
8466 
8467  case 495:
8468 /* Line 1787 of yacc.c */
8469 #line 2948 "src/parse.y"
8470  {
8471  (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
8472  }
8473  break;
8474 
8475  case 496:
8476 /* Line 1787 of yacc.c */
8477 #line 2952 "src/parse.y"
8478  {
8479  (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
8480  }
8481  break;
8482 
8483  case 497:
8484 /* Line 1787 of yacc.c */
8485 #line 2958 "src/parse.y"
8486  {
8487  (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
8488  }
8489  break;
8490 
8491  case 498:
8492 /* Line 1787 of yacc.c */
8493 #line 2962 "src/parse.y"
8494  {
8495  (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
8496  }
8497  break;
8498 
8499  case 501:
8500 /* Line 1787 of yacc.c */
8501 #line 2972 "src/parse.y"
8502  {
8503  local_add_f(p, (yyvsp[(2) - (2)].id));
8504  (yyval.id) = (yyvsp[(2) - (2)].id);
8505  }
8506  break;
8507 
8508  case 502:
8509 /* Line 1787 of yacc.c */
8510 #line 2977 "src/parse.y"
8511  {
8512  local_add_f(p, 0);
8513  (yyval.id) = -1;
8514  }
8515  break;
8516 
8517  case 505:
8518 /* Line 1787 of yacc.c */
8519 #line 2988 "src/parse.y"
8520  {
8521  local_add_f(p, (yyvsp[(2) - (2)].id));
8522  (yyval.id) = (yyvsp[(2) - (2)].id);
8523  }
8524  break;
8525 
8526  case 506:
8527 /* Line 1787 of yacc.c */
8528 #line 2995 "src/parse.y"
8529  {
8530  (yyval.id) = (yyvsp[(2) - (2)].id);
8531  }
8532  break;
8533 
8534  case 507:
8535 /* Line 1787 of yacc.c */
8536 #line 2999 "src/parse.y"
8537  {
8538  local_add_f(p, 0);
8539  (yyval.id) = 0;
8540  }
8541  break;
8542 
8543  case 508:
8544 /* Line 1787 of yacc.c */
8545 #line 3006 "src/parse.y"
8546  {
8547  (yyval.nd) = (yyvsp[(1) - (1)].nd);
8548  if (!(yyval.nd)) (yyval.nd) = new_nil(p);
8549  }
8550  break;
8551 
8552  case 509:
8553 /* Line 1787 of yacc.c */
8554 #line 3010 "src/parse.y"
8555  {p->lstate = EXPR_BEG;}
8556  break;
8557 
8558  case 510:
8559 /* Line 1787 of yacc.c */
8560 #line 3011 "src/parse.y"
8561  {
8562  if ((yyvsp[(3) - (4)].nd) == 0) {
8563  yyerror(p, "can't define singleton method for ().");
8564  }
8565  else {
8566  switch ((enum node_type)(int)(intptr_t)(yyvsp[(3) - (4)].nd)->car) {
8567  case NODE_STR:
8568  case NODE_DSTR:
8569  case NODE_XSTR:
8570  case NODE_DXSTR:
8571  case NODE_DREGX:
8572  case NODE_MATCH:
8573  case NODE_FLOAT:
8574  case NODE_ARRAY:
8575  case NODE_HEREDOC:
8576  yyerror(p, "can't define singleton method for literals");
8577  default:
8578  break;
8579  }
8580  }
8581  (yyval.nd) = (yyvsp[(3) - (4)].nd);
8582  }
8583  break;
8584 
8585  case 512:
8586 /* Line 1787 of yacc.c */
8587 #line 3037 "src/parse.y"
8588  {
8589  (yyval.nd) = (yyvsp[(1) - (2)].nd);
8590  }
8591  break;
8592 
8593  case 513:
8594 /* Line 1787 of yacc.c */
8595 #line 3043 "src/parse.y"
8596  {
8597  (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
8598  }
8599  break;
8600 
8601  case 514:
8602 /* Line 1787 of yacc.c */
8603 #line 3047 "src/parse.y"
8604  {
8605  (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
8606  }
8607  break;
8608 
8609  case 515:
8610 /* Line 1787 of yacc.c */
8611 #line 3053 "src/parse.y"
8612  {
8613  (yyval.nd) = cons((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
8614  }
8615  break;
8616 
8617  case 516:
8618 /* Line 1787 of yacc.c */
8619 #line 3057 "src/parse.y"
8620  {
8621  (yyval.nd) = cons(new_sym(p, (yyvsp[(1) - (2)].id)), (yyvsp[(2) - (2)].nd));
8622  }
8623  break;
8624 
8625  case 538:
8626 /* Line 1787 of yacc.c */
8627 #line 3101 "src/parse.y"
8628  {yyerrok;}
8629  break;
8630 
8631  case 540:
8632 /* Line 1787 of yacc.c */
8633 #line 3106 "src/parse.y"
8634  {
8635  p->lineno++;
8636  p->column = 0;
8637  }
8638  break;
8639 
8640  case 543:
8641 /* Line 1787 of yacc.c */
8642 #line 3113 "src/parse.y"
8643  {yyerrok;}
8644  break;
8645 
8646  case 544:
8647 /* Line 1787 of yacc.c */
8648 #line 3117 "src/parse.y"
8649  {
8650  (yyval.nd) = 0;
8651  }
8652  break;
8653 
8654 
8655 /* Line 1787 of yacc.c */
8656 #line 8657 "/home/kou/work/c/groonga.central/vendor/mruby/mruby.master/build/host/src/y.tab.c"
8657  default: break;
8658  }
8659  /* User semantic actions sometimes alter yychar, and that requires
8660  that yytoken be updated with the new translation. We take the
8661  approach of translating immediately before every use of yytoken.
8662  One alternative is translating here after every semantic action,
8663  but that translation would be missed if the semantic action invokes
8664  YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
8665  if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
8666  incorrect destructor might then be invoked immediately. In the
8667  case of YYERROR or YYBACKUP, subsequent parser actions might lead
8668  to an incorrect destructor call or verbose syntax error message
8669  before the lookahead is translated. */
8670  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8671 
8672  YYPOPSTACK (yylen);
8673  yylen = 0;
8674  YY_STACK_PRINT (yyss, yyssp);
8675 
8676  *++yyvsp = yyval;
8677 
8678  /* Now `shift' the result of the reduction. Determine what state
8679  that goes to, based on the state we popped back to and the rule
8680  number reduced by. */
8681 
8682  yyn = yyr1[yyn];
8683 
8684  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
8685  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
8686  yystate = yytable[yystate];
8687  else
8688  yystate = yydefgoto[yyn - YYNTOKENS];
8689 
8690  goto yynewstate;
8691 
8692 
8693 /*------------------------------------.
8694 | yyerrlab -- here on detecting error |
8695 `------------------------------------*/
8696 yyerrlab:
8697  /* Make sure we have latest lookahead translation. See comments at
8698  user semantic actions for why this is necessary. */
8699  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
8700 
8701  /* If not already recovering from an error, report this error. */
8702  if (!yyerrstatus)
8703  {
8704  ++yynerrs;
8705 #if ! YYERROR_VERBOSE
8706  yyerror (p, YY_("syntax error"));
8707 #else
8708 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
8709  yyssp, yytoken)
8710  {
8711  char const *yymsgp = YY_("syntax error");
8712  int yysyntax_error_status;
8713  yysyntax_error_status = YYSYNTAX_ERROR;
8714  if (yysyntax_error_status == 0)
8715  yymsgp = yymsg;
8716  else if (yysyntax_error_status == 1)
8717  {
8718  if (yymsg != yymsgbuf)
8719  YYSTACK_FREE (yymsg);
8720  yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
8721  if (!yymsg)
8722  {
8723  yymsg = yymsgbuf;
8724  yymsg_alloc = sizeof yymsgbuf;
8725  yysyntax_error_status = 2;
8726  }
8727  else
8728  {
8729  yysyntax_error_status = YYSYNTAX_ERROR;
8730  yymsgp = yymsg;
8731  }
8732  }
8733  yyerror (p, yymsgp);
8734  if (yysyntax_error_status == 2)
8735  goto yyexhaustedlab;
8736  }
8737 # undef YYSYNTAX_ERROR
8738 #endif
8739  }
8740 
8741 
8742 
8743  if (yyerrstatus == 3)
8744  {
8745  /* If just tried and failed to reuse lookahead token after an
8746  error, discard it. */
8747 
8748  if (yychar <= YYEOF)
8749  {
8750  /* Return failure if at end of input. */
8751  if (yychar == YYEOF)
8752  YYABORT;
8753  }
8754  else
8755  {
8756  yydestruct ("Error: discarding",
8757  yytoken, &yylval, p);
8758  yychar = YYEMPTY;
8759  }
8760  }
8761 
8762  /* Else will try to reuse lookahead token after shifting the error
8763  token. */
8764  goto yyerrlab1;
8765 
8766 
8767 /*---------------------------------------------------.
8768 | yyerrorlab -- error raised explicitly by YYERROR. |
8769 `---------------------------------------------------*/
8770 yyerrorlab:
8771 
8772  /* Pacify compilers like GCC when the user code never invokes
8773  YYERROR and the label yyerrorlab therefore never appears in user
8774  code. */
8775  if (/*CONSTCOND*/ 0)
8776  goto yyerrorlab;
8777 
8778  /* Do not reclaim the symbols of the rule which action triggered
8779  this YYERROR. */
8780  YYPOPSTACK (yylen);
8781  yylen = 0;
8782  YY_STACK_PRINT (yyss, yyssp);
8783  yystate = *yyssp;
8784  goto yyerrlab1;
8785 
8786 
8787 /*-------------------------------------------------------------.
8788 | yyerrlab1 -- common code for both syntax error and YYERROR. |
8789 `-------------------------------------------------------------*/
8790 yyerrlab1:
8791  yyerrstatus = 3; /* Each real token shifted decrements this. */
8792 
8793  for (;;)
8794  {
8795  yyn = yypact[yystate];
8796  if (!yypact_value_is_default (yyn))
8797  {
8798  yyn += YYTERROR;
8799  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8800  {
8801  yyn = yytable[yyn];
8802  if (0 < yyn)
8803  break;
8804  }
8805  }
8806 
8807  /* Pop the current state because it cannot handle the error token. */
8808  if (yyssp == yyss)
8809  YYABORT;
8810 
8811 
8812  yydestruct ("Error: popping",
8813  yystos[yystate], yyvsp, p);
8814  YYPOPSTACK (1);
8815  yystate = *yyssp;
8816  YY_STACK_PRINT (yyss, yyssp);
8817  }
8818 
8820  *++yyvsp = yylval;
8822 
8823 
8824  /* Shift the error token. */
8825  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8826 
8827  yystate = yyn;
8828  goto yynewstate;
8829 
8830 
8831 /*-------------------------------------.
8832 | yyacceptlab -- YYACCEPT comes here. |
8833 `-------------------------------------*/
8834 yyacceptlab:
8835  yyresult = 0;
8836  goto yyreturn;
8837 
8838 /*-----------------------------------.
8839 | yyabortlab -- YYABORT comes here. |
8840 `-----------------------------------*/
8841 yyabortlab:
8842  yyresult = 1;
8843  goto yyreturn;
8844 
8845 #if !defined yyoverflow || YYERROR_VERBOSE
8846 /*-------------------------------------------------.
8847 | yyexhaustedlab -- memory exhaustion comes here. |
8848 `-------------------------------------------------*/
8849 yyexhaustedlab:
8850  yyerror (p, YY_("memory exhausted"));
8851  yyresult = 2;
8852  /* Fall through. */
8853 #endif
8854 
8855 yyreturn:
8856  if (yychar != YYEMPTY)
8857  {
8858  /* Make sure we have latest lookahead translation. See comments at
8859  user semantic actions for why this is necessary. */
8860  yytoken = YYTRANSLATE (yychar);
8861  yydestruct ("Cleanup: discarding lookahead",
8862  yytoken, &yylval, p);
8863  }
8864  /* Do not reclaim the symbols of the rule which action triggered
8865  this YYABORT or YYACCEPT. */
8866  YYPOPSTACK (yylen);
8867  YY_STACK_PRINT (yyss, yyssp);
8868  while (yyssp != yyss)
8869  {
8870  yydestruct ("Cleanup: popping",
8871  yystos[*yyssp], yyvsp, p);
8872  YYPOPSTACK (1);
8873  }
8874 #ifndef yyoverflow
8875  if (yyss != yyssa)
8876  YYSTACK_FREE (yyss);
8877 #endif
8878 #if YYERROR_VERBOSE
8879  if (yymsg != yymsgbuf)
8880  YYSTACK_FREE (yymsg);
8881 #endif
8882  /* Make sure YYID is used. */
8883  return YYID (yyresult);
8884 }
8885 
8886 
8887 /* Line 2050 of yacc.c */
8888 #line 3121 "src/parse.y"
8889 
8890 #define yylval (*((YYSTYPE*)(p->ylval)))
8891 
8892 static void
8893 yyerror(parser_state *p, const char *s)
8894 {
8895  char* c;
8896  int n;
8897 
8898  if (! p->capture_errors) {
8899 #ifdef ENABLE_STDIO
8900  if (p->filename) {
8901  fprintf(stderr, "%s:%d:%d: %s\n", p->filename, p->lineno, p->column, s);
8902  }
8903  else {
8904  fprintf(stderr, "line %d:%d: %s\n", p->lineno, p->column, s);
8905  }
8906 #endif
8907  }
8908  else if (p->nerr < sizeof(p->error_buffer) / sizeof(p->error_buffer[0])) {
8909  n = strlen(s);
8910  c = (char *)parser_palloc(p, n + 1);
8911  memcpy(c, s, n + 1);
8912  p->error_buffer[p->nerr].message = c;
8913  p->error_buffer[p->nerr].lineno = p->lineno;
8914  p->error_buffer[p->nerr].column = p->column;
8915  }
8916  p->nerr++;
8917 }
8918 
8919 static void
8920 yyerror_i(parser_state *p, const char *fmt, int i)
8921 {
8922  char buf[256];
8923 
8924  snprintf(buf, sizeof(buf), fmt, i);
8925  yyerror(p, buf);
8926 }
8927 
8928 static void
8929 yywarn(parser_state *p, const char *s)
8930 {
8931  char* c;
8932  int n;
8933 
8934  if (! p->capture_errors) {
8935 #ifdef ENABLE_STDIO
8936  if (p->filename) {
8937  fprintf(stderr, "%s:%d:%d: %s\n", p->filename, p->lineno, p->column, s);
8938  }
8939  else {
8940  fprintf(stderr, "line %d:%d: %s\n", p->lineno, p->column, s);
8941  }
8942 #endif
8943  }
8944  else if (p->nwarn < sizeof(p->warn_buffer) / sizeof(p->warn_buffer[0])) {
8945  n = strlen(s);
8946  c = (char *)parser_palloc(p, n + 1);
8947  memcpy(c, s, n + 1);
8948  p->warn_buffer[p->nwarn].message = c;
8949  p->warn_buffer[p->nwarn].lineno = p->lineno;
8950  p->warn_buffer[p->nwarn].column = p->column;
8951  }
8952  p->nwarn++;
8953 }
8954 
8955 static void
8956 yywarning(parser_state *p, const char *s)
8957 {
8958  yywarn(p, s);
8959 }
8960 
8961 static void
8962 yywarning_s(parser_state *p, const char *fmt, const char *s)
8963 {
8964  char buf[256];
8965 
8966  snprintf(buf, sizeof(buf), fmt, s);
8967  yywarning(p, buf);
8968 }
8969 
8970 static void
8971 backref_error(parser_state *p, node *n)
8972 {
8973  int c;
8974 
8975  c = (int)(intptr_t)n->car;
8976 
8977  if (c == NODE_NTH_REF) {
8978  yyerror_i(p, "can't set variable $%d", (int)(intptr_t)n->cdr);
8979  } else if (c == NODE_BACK_REF) {
8980  yyerror_i(p, "can't set variable $%c", (int)(intptr_t)n->cdr);
8981  } else {
8982  mrb_bug(p->mrb, "Internal error in backref_error() : n=>car == %d", c);
8983  }
8984 }
8985 
8986 static int peeks(parser_state *p, const char *s);
8987 static int skips(parser_state *p, const char *s);
8988 
8989 static inline int
8990 nextc(parser_state *p)
8991 {
8992  int c;
8993 
8994  if (p->pb) {
8995  node *tmp;
8996 
8997  c = (int)(intptr_t)p->pb->car;
8998  tmp = p->pb;
8999  p->pb = p->pb->cdr;
9000  cons_free(tmp);
9001  }
9002  else {
9003 #ifdef ENABLE_STDIO
9004  if (p->f) {
9005  if (feof(p->f)) goto end_retry;
9006  c = fgetc(p->f);
9007  if (c == EOF) goto end_retry;
9008  }
9009  else
9010 #endif
9011  if (!p->s || p->s >= p->send) {
9012  goto end_retry;
9013  }
9014  else {
9015  c = (unsigned char)*p->s++;
9016  }
9017  }
9018  p->column++;
9019  return c;
9020 
9021  end_retry:
9022  if (!p->cxt) return -1;
9023  else {
9024  mrbc_context *cxt = p->cxt;
9025 
9026  if (cxt->partial_hook(p) < 0) return -1;
9027  p->cxt = NULL;
9028  c = nextc(p);
9029  p->cxt = cxt;
9030  return c;
9031  }
9032 }
9033 
9034 static void
9035 pushback(parser_state *p, int c)
9036 {
9037  if (c < 0) return;
9038  p->column--;
9039  p->pb = cons((node*)(intptr_t)c, p->pb);
9040 }
9041 
9042 static void
9043 skip(parser_state *p, char term)
9044 {
9045  int c;
9046 
9047  for (;;) {
9048  c = nextc(p);
9049  if (c < 0) break;
9050  if (c == term) break;
9051  }
9052 }
9053 
9054 static int
9055 peek_n(parser_state *p, int c, int n)
9056 {
9057  node *list = 0;
9058  int c0;
9059 
9060  do {
9061  c0 = nextc(p);
9062  if (c0 < 0) return FALSE;
9063  list = push(list, (node*)(intptr_t)c0);
9064  } while(n--);
9065  if (p->pb) {
9066  p->pb = append(p->pb, (node*)list);
9067  }
9068  else {
9069  p->pb = list;
9070  }
9071  if (c0 == c) return TRUE;
9072  return FALSE;
9073 }
9074 #define peek(p,c) peek_n((p), (c), 0)
9075 
9076 static int
9077 peeks(parser_state *p, const char *s)
9078 {
9079  int len = strlen(s);
9080 
9081 #ifdef ENABLE_STDIO
9082  if (p->f) {
9083  int n = 0;
9084  while (*s) {
9085  if (!peek_n(p, *s++, n++)) return FALSE;
9086  }
9087  return TRUE;
9088  }
9089  else
9090 #endif
9091  if (p->s && p->s + len >= p->send) {
9092  if (memcmp(p->s, s, len) == 0) return TRUE;
9093  }
9094  return FALSE;
9095 }
9096 
9097 static int
9098 skips(parser_state *p, const char *s)
9099 {
9100  int c;
9101 
9102  for (;;) {
9103  // skip until first char
9104  for (;;) {
9105  c = nextc(p);
9106  if (c < 0) return c;
9107  if (c == *s) break;
9108  }
9109  s++;
9110  if (peeks(p, s)) {
9111  int len = strlen(s);
9112 
9113  while (len--) {
9114  nextc(p);
9115  }
9116  return TRUE;
9117  }
9118  else{
9119  s--;
9120  }
9121  }
9122  return FALSE;
9123 }
9124 
9125 
9126 static int
9127 newtok(parser_state *p)
9128 {
9129  p->bidx = 0;
9130  return p->column - 1;
9131 }
9132 
9133 static void
9134 tokadd(parser_state *p, int c)
9135 {
9136  if (p->bidx < MRB_PARSER_BUF_SIZE) {
9137  p->buf[p->bidx++] = c;
9138  }
9139 }
9140 
9141 static int
9142 toklast(parser_state *p)
9143 {
9144  return p->buf[p->bidx-1];
9145 }
9146 
9147 static void
9148 tokfix(parser_state *p)
9149 {
9150  if (p->bidx >= MRB_PARSER_BUF_SIZE) {
9151  yyerror(p, "string too long (truncated)");
9152  }
9153  p->buf[p->bidx] = '\0';
9154 }
9155 
9156 static const char*
9157 tok(parser_state *p)
9158 {
9159  return p->buf;
9160 }
9161 
9162 static int
9163 toklen(parser_state *p)
9164 {
9165  return p->bidx;
9166 }
9167 
9168 #define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
9169 #define IS_END() (p->lstate == EXPR_END || p->lstate == EXPR_ENDARG || p->lstate == EXPR_ENDFN)
9170 #define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
9171 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
9172 #define IS_LABEL_POSSIBLE() ((p->lstate == EXPR_BEG && !cmd_state) || IS_ARG())
9173 #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
9174 
9175 static int
9176 scan_oct(const int *start, int len, int *retlen)
9177 {
9178  const int *s = start;
9179  int retval = 0;
9180 
9181  /* mrb_assert(len <= 3) */
9182  while (len-- && *s >= '0' && *s <= '7') {
9183  retval <<= 3;
9184  retval |= *s++ - '0';
9185  }
9186  *retlen = s - start;
9187 
9188  return retval;
9189 }
9190 
9191 static int
9192 scan_hex(const int *start, int len, int *retlen)
9193 {
9194  static const char hexdigit[] = "0123456789abcdef0123456789ABCDEF";
9195  register const int *s = start;
9196  register int retval = 0;
9197  char *tmp;
9198 
9199  /* mrb_assert(len <= 2) */
9200  while (len-- && *s && (tmp = (char*)strchr(hexdigit, *s))) {
9201  retval <<= 4;
9202  retval |= (tmp - hexdigit) & 15;
9203  s++;
9204  }
9205  *retlen = s - start;
9206 
9207  return retval;
9208 }
9209 
9210 static int
9211 read_escape(parser_state *p)
9212 {
9213  int c;
9214 
9215  switch (c = nextc(p)) {
9216  case '\\': /* Backslash */
9217  return c;
9218 
9219  case 'n': /* newline */
9220  return '\n';
9221 
9222  case 't': /* horizontal tab */
9223  return '\t';
9224 
9225  case 'r': /* carriage-return */
9226  return '\r';
9227 
9228  case 'f': /* form-feed */
9229  return '\f';
9230 
9231  case 'v': /* vertical tab */
9232  return '\13';
9233 
9234  case 'a': /* alarm(bell) */
9235  return '\007';
9236 
9237  case 'e': /* escape */
9238  return 033;
9239 
9240  case '0': case '1': case '2': case '3': /* octal constant */
9241  case '4': case '5': case '6': case '7':
9242  {
9243  int buf[3];
9244  int i;
9245 
9246  buf[0] = c;
9247  for (i=1; i<3; i++) {
9248  buf[i] = nextc(p);
9249  if (buf[i] == -1) goto eof;
9250  if (buf[i] < '0' || '7' < buf[i]) {
9251  pushback(p, buf[i]);
9252  break;
9253  }
9254  }
9255  c = scan_oct(buf, i, &i);
9256  }
9257  return c;
9258 
9259  case 'x': /* hex constant */
9260  {
9261  int buf[2];
9262  int i;
9263 
9264  for (i=0; i<2; i++) {
9265  buf[i] = nextc(p);
9266  if (buf[i] == -1) goto eof;
9267  if (!ISXDIGIT(buf[i])) {
9268  pushback(p, buf[i]);
9269  break;
9270  }
9271  }
9272  c = scan_hex(buf, i, &i);
9273  if (i == 0) {
9274  yyerror(p, "Invalid escape character syntax");
9275  return 0;
9276  }
9277  }
9278  return c;
9279 
9280  case 'b': /* backspace */
9281  return '\010';
9282 
9283  case 's': /* space */
9284  return ' ';
9285 
9286  case 'M':
9287  if ((c = nextc(p)) != '-') {
9288  yyerror(p, "Invalid escape character syntax");
9289  pushback(p, c);
9290  return '\0';
9291  }
9292  if ((c = nextc(p)) == '\\') {
9293  return read_escape(p) | 0x80;
9294  }
9295  else if (c == -1) goto eof;
9296  else {
9297  return ((c & 0xff) | 0x80);
9298  }
9299 
9300  case 'C':
9301  if ((c = nextc(p)) != '-') {
9302  yyerror(p, "Invalid escape character syntax");
9303  pushback(p, c);
9304  return '\0';
9305  }
9306  case 'c':
9307  if ((c = nextc(p))== '\\') {
9308  c = read_escape(p);
9309  }
9310  else if (c == '?')
9311  return 0177;
9312  else if (c == -1) goto eof;
9313  return c & 0x9f;
9314 
9315  eof:
9316  case -1:
9317  yyerror(p, "Invalid escape character syntax");
9318  return '\0';
9319 
9320  default:
9321  return c;
9322  }
9323 }
9324 
9325 
9326 static int
9327 parse_string(parser_state *p)
9328 {
9329  int c;
9330  string_type type = (string_type)(intptr_t)p->lex_strterm->car;
9331  int nest_level = (intptr_t)p->lex_strterm->cdr->car;
9332  int beg = (intptr_t)p->lex_strterm->cdr->cdr->car;
9333  int end = (intptr_t)p->lex_strterm->cdr->cdr->cdr;
9334  parser_heredoc_info *hinf = (type & STR_FUNC_HEREDOC) ? parsing_heredoc_inf(p) : NULL;
9335 
9336  newtok(p);
9337  while ((c = nextc(p)) != end || nest_level != 0) {
9338  if (hinf && (c == '\n' || c == -1)) {
9339  int line_head;
9340  tokadd(p, '\n');
9341  tokfix(p);
9342  p->lineno++;
9343  p->column = 0;
9344  line_head = hinf->line_head;
9345  hinf->line_head = TRUE;
9346  if (line_head) {
9347  /* check whether end of heredoc */
9348  const char *s = tok(p);
9349  int len = toklen(p);
9350  if (hinf->allow_indent) {
9351  while (ISSPACE(*s) && len > 0) {
9352  ++s;
9353  --len;
9354  }
9355  }
9356  if ((len-1 == hinf->term_len) && (strncmp(s, hinf->term, len-1) == 0)) {
9357  return tHEREDOC_END;
9358  }
9359  }
9360  if (c == -1) {
9361  char buf[256];
9362  snprintf(buf, sizeof(buf), "can't find string \"%s\" anywhere before EOF", hinf->term);
9363  yyerror(p, buf);
9364  return 0;
9365  }
9366  yylval.nd = new_str(p, tok(p), toklen(p));
9367  return tSTRING_MID;
9368  }
9369  if (c == -1) {
9370  yyerror(p, "unterminated string meets end of file");
9371  return 0;
9372  }
9373  else if (c == beg) {
9374  nest_level++;
9375  p->lex_strterm->cdr->car = (node*)(intptr_t)nest_level;
9376  }
9377  else if (c == end) {
9378  nest_level--;
9379  p->lex_strterm->cdr->car = (node*)(intptr_t)nest_level;
9380  }
9381  else if (c == '\\') {
9382  c = nextc(p);
9383  if (type & STR_FUNC_EXPAND) {
9384  if (c == end || c == beg) {
9385  tokadd(p, c);
9386  }
9387  else if ((c == '\n') && (type & STR_FUNC_ARRAY)) {
9388  p->lineno++;
9389  p->column = 0;
9390  tokadd(p, '\n');
9391  }
9392  else {
9393  if (type & STR_FUNC_REGEXP) {
9394  tokadd(p, '\\');
9395  if (c != -1)
9396  tokadd(p, c);
9397  } else {
9398  pushback(p, c);
9399  tokadd(p, read_escape(p));
9400  }
9401  if (hinf)
9402  hinf->line_head = FALSE;
9403  }
9404  } else {
9405  if (c != beg && c != end) {
9406  switch (c) {
9407  case '\n':
9408  p->lineno++;
9409  p->column = 0;
9410  break;
9411 
9412  case '\\':
9413  break;
9414 
9415  default:
9416  if (! ISSPACE(c))
9417  tokadd(p, '\\');
9418  }
9419  }
9420  tokadd(p, c);
9421  }
9422  continue;
9423  }
9424  else if ((c == '#') && (type & STR_FUNC_EXPAND)) {
9425  c = nextc(p);
9426  if (c == '{') {
9427  tokfix(p);
9428  p->lstate = EXPR_BEG;
9429  p->cmd_start = TRUE;
9430  yylval.nd = new_str(p, tok(p), toklen(p));
9431  if (hinf)
9432  hinf->line_head = FALSE;
9433  return tSTRING_PART;
9434  }
9435  tokadd(p, '#');
9436  pushback(p, c);
9437  continue;
9438  }
9439  if ((type & STR_FUNC_ARRAY) && ISSPACE(c)) {
9440  if (toklen(p) == 0) {
9441  do {
9442  if (c == '\n') {
9443  p->lineno++;
9444  p->column = 0;
9445  }
9446  } while (ISSPACE(c = nextc(p)));
9447  pushback(p, c);
9448  return tLITERAL_DELIM;
9449  } else {
9450  pushback(p, c);
9451  tokfix(p);
9452  yylval.nd = new_str(p, tok(p), toklen(p));
9453  return tSTRING_MID;
9454  }
9455  }
9456 
9457  tokadd(p, c);
9458 
9459  }
9460 
9461  tokfix(p);
9462  p->lstate = EXPR_END;
9463  end_strterm(p);
9464 
9465  if (type & STR_FUNC_XQUOTE) {
9466  yylval.nd = new_xstr(p, tok(p), toklen(p));
9467  return tXSTRING;
9468  }
9469 
9470  if (type & STR_FUNC_REGEXP) {
9471  int f = 0;
9472  int c;
9473  char *s = strndup(tok(p), toklen(p));
9474  char flags[3];
9475  char *flag = flags;
9476  char *dup;
9477 
9478  newtok(p);
9479  while (c = nextc(p), c != -1 && ISALPHA(c)) {
9480  switch (c) {
9481  case 'i': f |= 1; break;
9482  case 'x': f |= 2; break;
9483  case 'm': f |= 4; break;
9484  default: tokadd(p, c); break;
9485  }
9486  }
9487  pushback(p, c);
9488  if (toklen(p)) {
9489  char msg[128];
9490  tokfix(p);
9491  snprintf(msg, sizeof(msg), "unknown regexp option%s - %s",
9492  toklen(p) > 1 ? "s" : "", tok(p));
9493  yyerror(p, msg);
9494  }
9495  if (f != 0) {
9496  if (f & 1) *flag++ = 'i';
9497  if (f & 2) *flag++ = 'x';
9498  if (f & 4) *flag++ = 'm';
9499  dup = strndup(flags, (size_t)(flag - flags));
9500  }
9501  else {
9502  dup = NULL;
9503  }
9504  yylval.nd = new_regx(p, s, dup);
9505 
9506  return tREGEXP;
9507  }
9508 
9509  yylval.nd = new_str(p, tok(p), toklen(p));
9510  return tSTRING;
9511 }
9512 
9513 
9514 static int
9515 heredoc_identifier(parser_state *p)
9516 {
9517  int c;
9518  int type = str_heredoc;
9519  int indent = FALSE;
9520  int quote = FALSE;
9521  node *newnode;
9522  parser_heredoc_info *info;
9523 
9524  c = nextc(p);
9525  if (ISSPACE(c) || c == '=') {
9526  pushback(p, c);
9527  return 0;
9528  }
9529  if (c == '-') {
9530  indent = TRUE;
9531  c = nextc(p);
9532  }
9533  if (c == '\'' || c == '"') {
9534  int term = c;
9535  if (c == '\'')
9536  quote = TRUE;
9537  newtok(p);
9538  while ((c = nextc(p)) != -1 && c != term) {
9539  if (c == '\n') {
9540  c = -1;
9541  break;
9542  }
9543  tokadd(p, c);
9544  }
9545  if (c == -1) {
9546  yyerror(p, "unterminated here document identifier");
9547  return 0;
9548  }
9549  } else {
9550  if (! identchar(c)) {
9551  pushback(p, c);
9552  if (indent) pushback(p, '-');
9553  return 0;
9554  }
9555  newtok(p);
9556  do {
9557  tokadd(p, c);
9558  } while ((c = nextc(p)) != -1 && identchar(c));
9559  pushback(p, c);
9560  }
9561  tokfix(p);
9562  newnode = new_heredoc(p);
9563  info = (parser_heredoc_info*)newnode->cdr;
9564  info->term = strndup(tok(p), toklen(p));
9565  info->term_len = toklen(p);
9566  if (! quote)
9567  type |= STR_FUNC_EXPAND;
9568  info->type = (string_type)type;
9569  info->allow_indent = indent;
9570  info->line_head = TRUE;
9571  info->doc = NULL;
9572  p->heredocs = push(p->heredocs, newnode);
9573  if (p->parsing_heredoc == NULL) {
9574  node *n = p->heredocs;
9575  while (n->cdr)
9576  n = n->cdr;
9577  p->parsing_heredoc = n;
9578  }
9580  p->lstate = EXPR_END;
9581 
9582  yylval.nd = newnode;
9583  return tHEREDOC_BEG;
9584 }
9585 
9586 static int
9587 arg_ambiguous(parser_state *p)
9588 {
9589  yywarning(p, "ambiguous first argument; put parentheses or even spaces");
9590  return 1;
9591 }
9592 
9593 #include "lex.def"
9594 
9595 static int
9596 parser_yylex(parser_state *p)
9597 {
9598  register int c;
9599  int space_seen = 0;
9600  int cmd_state;
9601  enum mrb_lex_state_enum last_state;
9602  int token_column;
9603 
9604  if (p->lex_strterm) {
9605  if (is_strterm_type(p, STR_FUNC_HEREDOC)) {
9606  if ((p->parsing_heredoc != NULL) && (! p->heredoc_starts_nextline))
9607  return parse_string(p);
9608  }
9609  else
9610  return parse_string(p);
9611  }
9612  cmd_state = p->cmd_start;
9613  p->cmd_start = FALSE;
9614  retry:
9615  last_state = p->lstate;
9616  switch (c = nextc(p)) {
9617  case '\0': /* NUL */
9618  case '\004': /* ^D */
9619  case '\032': /* ^Z */
9620  case -1: /* end of script. */
9621  return 0;
9622 
9623  /* white spaces */
9624  case ' ': case '\t': case '\f': case '\r':
9625  case '\13': /* '\v' */
9626  space_seen = 1;
9627  goto retry;
9628 
9629  case '#': /* it's a comment */
9630  skip(p, '\n');
9631  /* fall through */
9632  case '\n':
9634  if (p->parsing_heredoc != NULL) {
9635  p->lex_strterm = new_strterm(p, parsing_heredoc_inf(p)->type, 0, 0);
9636  goto normal_newline;
9637  }
9638  switch (p->lstate) {
9639  case EXPR_BEG:
9640  case EXPR_FNAME:
9641  case EXPR_DOT:
9642  case EXPR_CLASS:
9643  case EXPR_VALUE:
9644  p->lineno++;
9645  p->column = 0;
9646  goto retry;
9647  default:
9648  break;
9649  }
9650  while ((c = nextc(p))) {
9651  switch (c) {
9652  case ' ': case '\t': case '\f': case '\r':
9653  case '\13': /* '\v' */
9654  space_seen = 1;
9655  break;
9656  case '.':
9657  if ((c = nextc(p)) != '.') {
9658  pushback(p, c);
9659  pushback(p, '.');
9660  goto retry;
9661  }
9662  case -1: /* EOF */
9663  goto normal_newline;
9664  default:
9665  pushback(p, c);
9666  goto normal_newline;
9667  }
9668  }
9669  normal_newline:
9670  p->cmd_start = TRUE;
9671  p->lstate = EXPR_BEG;
9672  return '\n';
9673 
9674  case '*':
9675  if ((c = nextc(p)) == '*') {
9676  if ((c = nextc(p)) == '=') {
9677  yylval.id = intern2("**",2);
9678  p->lstate = EXPR_BEG;
9679  return tOP_ASGN;
9680  }
9681  pushback(p, c);
9682  c = tPOW;
9683  }
9684  else {
9685  if (c == '=') {
9686  yylval.id = intern_c('*');
9687  p->lstate = EXPR_BEG;
9688  return tOP_ASGN;
9689  }
9690  pushback(p, c);
9691  if (IS_SPCARG(c)) {
9692  yywarning(p, "`*' interpreted as argument prefix");
9693  c = tSTAR;
9694  }
9695  else if (IS_BEG()) {
9696  c = tSTAR;
9697  }
9698  else {
9699  c = '*';
9700  }
9701  }
9702  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
9703  p->lstate = EXPR_ARG;
9704  } else {
9705  p->lstate = EXPR_BEG;
9706  }
9707  return c;
9708 
9709  case '!':
9710  c = nextc(p);
9711  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
9712  p->lstate = EXPR_ARG;
9713  if (c == '@') {
9714  return '!';
9715  }
9716  }
9717  else {
9718  p->lstate = EXPR_BEG;
9719  }
9720  if (c == '=') {
9721  return tNEQ;
9722  }
9723  if (c == '~') {
9724  return tNMATCH;
9725  }
9726  pushback(p, c);
9727  return '!';
9728 
9729  case '=':
9730  if (p->column == 1) {
9731  if (peeks(p, "begin\n")) {
9732  skips(p, "\n=end\n");
9733  goto retry;
9734  }
9735  }
9736  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
9737  p->lstate = EXPR_ARG;
9738  } else {
9739  p->lstate = EXPR_BEG;
9740  }
9741  if ((c = nextc(p)) == '=') {
9742  if ((c = nextc(p)) == '=') {
9743  return tEQQ;
9744  }
9745  pushback(p, c);
9746  return tEQ;
9747  }
9748  if (c == '~') {
9749  return tMATCH;
9750  }
9751  else if (c == '>') {
9752  return tASSOC;
9753  }
9754  pushback(p, c);
9755  return '=';
9756 
9757  case '<':
9758  last_state = p->lstate;
9759  c = nextc(p);
9760  if (c == '<' &&
9761  p->lstate != EXPR_DOT &&
9762  p->lstate != EXPR_CLASS &&
9763  !IS_END() &&
9764  (!IS_ARG() || space_seen)) {
9765  int token = heredoc_identifier(p);
9766  if (token)
9767  return token;
9768  }
9769  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
9770  p->lstate = EXPR_ARG;
9771  } else {
9772  p->lstate = EXPR_BEG;
9773  if (p->lstate == EXPR_CLASS) {
9774  p->cmd_start = TRUE;
9775  }
9776  }
9777  if (c == '=') {
9778  if ((c = nextc(p)) == '>') {
9779  return tCMP;
9780  }
9781  pushback(p, c);
9782  return tLEQ;
9783  }
9784  if (c == '<') {
9785  if ((c = nextc(p)) == '=') {
9786  yylval.id = intern2("<<",2);
9787  p->lstate = EXPR_BEG;
9788  return tOP_ASGN;
9789  }
9790  pushback(p, c);
9791  return tLSHFT;
9792  }
9793  pushback(p, c);
9794  return '<';
9795 
9796  case '>':
9797  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
9798  p->lstate = EXPR_ARG;
9799  } else {
9800  p->lstate = EXPR_BEG;
9801  }
9802  if ((c = nextc(p)) == '=') {
9803  return tGEQ;
9804  }
9805  if (c == '>') {
9806  if ((c = nextc(p)) == '=') {
9807  yylval.id = intern2(">>",2);
9808  p->lstate = EXPR_BEG;
9809  return tOP_ASGN;
9810  }
9811  pushback(p, c);
9812  return tRSHFT;
9813  }
9814  pushback(p, c);
9815  return '>';
9816 
9817  case '"':
9818  p->lex_strterm = new_strterm(p, str_dquote, '"', 0);
9819  return tSTRING_BEG;
9820 
9821  case '\'':
9822  p->lex_strterm = new_strterm(p, str_squote, '\'', 0);
9823  return parse_string(p);
9824 
9825  case '`':
9826  if (p->lstate == EXPR_FNAME) {
9827  p->lstate = EXPR_ENDFN;
9828  return '`';
9829  }
9830  if (p->lstate == EXPR_DOT) {
9831  if (cmd_state)
9832  p->lstate = EXPR_CMDARG;
9833  else
9834  p->lstate = EXPR_ARG;
9835  return '`';
9836  }
9837  p->lex_strterm = new_strterm(p, str_xquote, '`', 0);
9838  return tXSTRING_BEG;
9839 
9840  case '?':
9841  if (IS_END()) {
9842  p->lstate = EXPR_VALUE;
9843  return '?';
9844  }
9845  c = nextc(p);
9846  if (c == -1) {
9847  yyerror(p, "incomplete character syntax");
9848  return 0;
9849  }
9850  if (isspace(c)) {
9851  if (!IS_ARG()) {
9852  int c2;
9853  switch (c) {
9854  case ' ':
9855  c2 = 's';
9856  break;
9857  case '\n':
9858  c2 = 'n';
9859  break;
9860  case '\t':
9861  c2 = 't';
9862  break;
9863  case '\v':
9864  c2 = 'v';
9865  break;
9866  case '\r':
9867  c2 = 'r';
9868  break;
9869  case '\f':
9870  c2 = 'f';
9871  break;
9872  default:
9873  c2 = 0;
9874  break;
9875  }
9876  if (c2) {
9877  char buf[256];
9878  snprintf(buf, sizeof(buf), "invalid character syntax; use ?\\%c", c2);
9879  yyerror(p, buf);
9880  }
9881  }
9882  ternary:
9883  pushback(p, c);
9884  p->lstate = EXPR_VALUE;
9885  return '?';
9886  }
9887  token_column = newtok(p);
9888  // need support UTF-8 if configured
9889  if ((isalnum(c) || c == '_')) {
9890  int c2 = nextc(p);
9891  pushback(p, c2);
9892  if ((isalnum(c2) || c2 == '_')) {
9893  goto ternary;
9894  }
9895  }
9896  if (c == '\\') {
9897  c = nextc(p);
9898  if (c == 'u') {
9899 #if 0
9900  tokadd_utf8(p);
9901 #endif
9902  }
9903  else {
9904  pushback(p, c);
9905  c = read_escape(p);
9906  tokadd(p, c);
9907  }
9908  }
9909  else {
9910  tokadd(p, c);
9911  }
9912  tokfix(p);
9913  yylval.nd = new_str(p, tok(p), toklen(p));
9914  p->lstate = EXPR_END;
9915  return tCHAR;
9916 
9917  case '&':
9918  if ((c = nextc(p)) == '&') {
9919  p->lstate = EXPR_BEG;
9920  if ((c = nextc(p)) == '=') {
9921  yylval.id = intern2("&&",2);
9922  p->lstate = EXPR_BEG;
9923  return tOP_ASGN;
9924  }
9925  pushback(p, c);
9926  return tANDOP;
9927  }
9928  else if (c == '=') {
9929  yylval.id = intern_c('&');
9930  p->lstate = EXPR_BEG;
9931  return tOP_ASGN;
9932  }
9933  pushback(p, c);
9934  if (IS_SPCARG(c)) {
9935  yywarning(p, "`&' interpreted as argument prefix");
9936  c = tAMPER;
9937  }
9938  else if (IS_BEG()) {
9939  c = tAMPER;
9940  }
9941  else {
9942  c = '&';
9943  }
9944  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
9945  p->lstate = EXPR_ARG;
9946  } else {
9947  p->lstate = EXPR_BEG;
9948  }
9949  return c;
9950 
9951  case '|':
9952  if ((c = nextc(p)) == '|') {
9953  p->lstate = EXPR_BEG;
9954  if ((c = nextc(p)) == '=') {
9955  yylval.id = intern2("||",2);
9956  p->lstate = EXPR_BEG;
9957  return tOP_ASGN;
9958  }
9959  pushback(p, c);
9960  return tOROP;
9961  }
9962  if (c == '=') {
9963  yylval.id = intern_c('|');
9964  p->lstate = EXPR_BEG;
9965  return tOP_ASGN;
9966  }
9967  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
9968  p->lstate = EXPR_ARG;
9969  }
9970  else {
9971  p->lstate = EXPR_BEG;
9972  }
9973  pushback(p, c);
9974  return '|';
9975 
9976  case '+':
9977  c = nextc(p);
9978  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
9979  p->lstate = EXPR_ARG;
9980  if (c == '@') {
9981  return tUPLUS;
9982  }
9983  pushback(p, c);
9984  return '+';
9985  }
9986  if (c == '=') {
9987  yylval.id = intern_c('+');
9988  p->lstate = EXPR_BEG;
9989  return tOP_ASGN;
9990  }
9991  if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
9992  p->lstate = EXPR_BEG;
9993  pushback(p, c);
9994  if (c != -1 && ISDIGIT(c)) {
9995  c = '+';
9996  goto start_num;
9997  }
9998  return tUPLUS;
9999  }
10000  p->lstate = EXPR_BEG;
10001  pushback(p, c);
10002  return '+';
10003 
10004  case '-':
10005  c = nextc(p);
10006  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10007  p->lstate = EXPR_ARG;
10008  if (c == '@') {
10009  return tUMINUS;
10010  }
10011  pushback(p, c);
10012  return '-';
10013  }
10014  if (c == '=') {
10015  yylval.id = intern_c('-');
10016  p->lstate = EXPR_BEG;
10017  return tOP_ASGN;
10018  }
10019  if (c == '>') {
10020  p->lstate = EXPR_ENDFN;
10021  return tLAMBDA;
10022  }
10023  if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
10024  p->lstate = EXPR_BEG;
10025  pushback(p, c);
10026  if (c != -1 && ISDIGIT(c)) {
10027  return tUMINUS_NUM;
10028  }
10029  return tUMINUS;
10030  }
10031  p->lstate = EXPR_BEG;
10032  pushback(p, c);
10033  return '-';
10034 
10035  case '.':
10036  p->lstate = EXPR_BEG;
10037  if ((c = nextc(p)) == '.') {
10038  if ((c = nextc(p)) == '.') {
10039  return tDOT3;
10040  }
10041  pushback(p, c);
10042  return tDOT2;
10043  }
10044  pushback(p, c);
10045  if (c != -1 && ISDIGIT(c)) {
10046  yyerror(p, "no .<digit> floating literal anymore; put 0 before dot");
10047  }
10048  p->lstate = EXPR_DOT;
10049  return '.';
10050 
10051  start_num:
10052  case '0': case '1': case '2': case '3': case '4':
10053  case '5': case '6': case '7': case '8': case '9':
10054  {
10055  int is_float, seen_point, seen_e, nondigit;
10056 
10057  is_float = seen_point = seen_e = nondigit = 0;
10058  p->lstate = EXPR_END;
10059  token_column = newtok(p);
10060  if (c == '-' || c == '+') {
10061  tokadd(p, c);
10062  c = nextc(p);
10063  }
10064  if (c == '0') {
10065 #define no_digits() do {yyerror(p,"numeric literal without digits"); return 0;} while (0)
10066  int start = toklen(p);
10067  c = nextc(p);
10068  if (c == 'x' || c == 'X') {
10069  /* hexadecimal */
10070  c = nextc(p);
10071  if (c != -1 && ISXDIGIT(c)) {
10072  do {
10073  if (c == '_') {
10074  if (nondigit) break;
10075  nondigit = c;
10076  continue;
10077  }
10078  if (!ISXDIGIT(c)) break;
10079  nondigit = 0;
10080  tokadd(p, tolower(c));
10081  } while ((c = nextc(p)) != -1);
10082  }
10083  pushback(p, c);
10084  tokfix(p);
10085  if (toklen(p) == start) {
10086  no_digits();
10087  }
10088  else if (nondigit) goto trailing_uc;
10089  yylval.nd = new_int(p, tok(p), 16);
10090  return tINTEGER;
10091  }
10092  if (c == 'b' || c == 'B') {
10093  /* binary */
10094  c = nextc(p);
10095  if (c == '0' || c == '1') {
10096  do {
10097  if (c == '_') {
10098  if (nondigit) break;
10099  nondigit = c;
10100  continue;
10101  }
10102  if (c != '0' && c != '1') break;
10103  nondigit = 0;
10104  tokadd(p, c);
10105  } while ((c = nextc(p)) != -1);
10106  }
10107  pushback(p, c);
10108  tokfix(p);
10109  if (toklen(p) == start) {
10110  no_digits();
10111  }
10112  else if (nondigit) goto trailing_uc;
10113  yylval.nd = new_int(p, tok(p), 2);
10114  return tINTEGER;
10115  }
10116  if (c == 'd' || c == 'D') {
10117  /* decimal */
10118  c = nextc(p);
10119  if (c != -1 && ISDIGIT(c)) {
10120  do {
10121  if (c == '_') {
10122  if (nondigit) break;
10123  nondigit = c;
10124  continue;
10125  }
10126  if (!ISDIGIT(c)) break;
10127  nondigit = 0;
10128  tokadd(p, c);
10129  } while ((c = nextc(p)) != -1);
10130  }
10131  pushback(p, c);
10132  tokfix(p);
10133  if (toklen(p) == start) {
10134  no_digits();
10135  }
10136  else if (nondigit) goto trailing_uc;
10137  yylval.nd = new_int(p, tok(p), 10);
10138  return tINTEGER;
10139  }
10140  if (c == '_') {
10141  /* 0_0 */
10142  goto octal_number;
10143  }
10144  if (c == 'o' || c == 'O') {
10145  /* prefixed octal */
10146  c = nextc(p);
10147  if (c == -1 || c == '_' || !ISDIGIT(c)) {
10148  no_digits();
10149  }
10150  }
10151  if (c >= '0' && c <= '7') {
10152  /* octal */
10153  octal_number:
10154  do {
10155  if (c == '_') {
10156  if (nondigit) break;
10157  nondigit = c;
10158  continue;
10159  }
10160  if (c < '0' || c > '9') break;
10161  if (c > '7') goto invalid_octal;
10162  nondigit = 0;
10163  tokadd(p, c);
10164  } while ((c = nextc(p)) != -1);
10165 
10166  if (toklen(p) > start) {
10167  pushback(p, c);
10168  tokfix(p);
10169  if (nondigit) goto trailing_uc;
10170  yylval.nd = new_int(p, tok(p), 8);
10171  return tINTEGER;
10172  }
10173  if (nondigit) {
10174  pushback(p, c);
10175  goto trailing_uc;
10176  }
10177  }
10178  if (c > '7' && c <= '9') {
10179  invalid_octal:
10180  yyerror(p, "Invalid octal digit");
10181  }
10182  else if (c == '.' || c == 'e' || c == 'E') {
10183  tokadd(p, '0');
10184  }
10185  else {
10186  pushback(p, c);
10187  yylval.nd = new_int(p, "0", 10);
10188  return tINTEGER;
10189  }
10190  }
10191 
10192  for (;;) {
10193  switch (c) {
10194  case '0': case '1': case '2': case '3': case '4':
10195  case '5': case '6': case '7': case '8': case '9':
10196  nondigit = 0;
10197  tokadd(p, c);
10198  break;
10199 
10200  case '.':
10201  if (nondigit) goto trailing_uc;
10202  if (seen_point || seen_e) {
10203  goto decode_num;
10204  }
10205  else {
10206  int c0 = nextc(p);
10207  if (c0 == -1 || !ISDIGIT(c0)) {
10208  pushback(p, c0);
10209  goto decode_num;
10210  }
10211  c = c0;
10212  }
10213  tokadd(p, '.');
10214  tokadd(p, c);
10215  is_float++;
10216  seen_point++;
10217  nondigit = 0;
10218  break;
10219 
10220  case 'e':
10221  case 'E':
10222  if (nondigit) {
10223  pushback(p, c);
10224  c = nondigit;
10225  goto decode_num;
10226  }
10227  if (seen_e) {
10228  goto decode_num;
10229  }
10230  tokadd(p, c);
10231  seen_e++;
10232  is_float++;
10233  nondigit = c;
10234  c = nextc(p);
10235  if (c != '-' && c != '+') continue;
10236  tokadd(p, c);
10237  nondigit = c;
10238  break;
10239 
10240  case '_': /* `_' in number just ignored */
10241  if (nondigit) goto decode_num;
10242  nondigit = c;
10243  break;
10244 
10245  default:
10246  goto decode_num;
10247  }
10248  c = nextc(p);
10249  }
10250 
10251  decode_num:
10252  pushback(p, c);
10253  if (nondigit) {
10254  trailing_uc:
10255  yyerror_i(p, "trailing `%c' in number", nondigit);
10256  }
10257  tokfix(p);
10258  if (is_float) {
10259  double d;
10260  char *endp;
10261 
10262  errno = 0;
10263  d = strtod(tok(p), &endp);
10264  if (d == 0 && endp == tok(p)) {
10265  yywarning_s(p, "corrupted float value %s", tok(p));
10266  }
10267  else if (errno == ERANGE) {
10268  yywarning_s(p, "float %s out of range", tok(p));
10269  errno = 0;
10270  }
10271  yylval.nd = new_float(p, tok(p));
10272  return tFLOAT;
10273  }
10274  yylval.nd = new_int(p, tok(p), 10);
10275  return tINTEGER;
10276  }
10277 
10278  case ')':
10279  case ']':
10280  p->paren_nest--;
10281  case '}':
10282  COND_LEXPOP();
10283  CMDARG_LEXPOP();
10284  if (c == ')')
10285  p->lstate = EXPR_ENDFN;
10286  else
10287  p->lstate = EXPR_ENDARG;
10288  return c;
10289 
10290  case ':':
10291  c = nextc(p);
10292  if (c == ':') {
10293  if (IS_BEG() || p->lstate == EXPR_CLASS || IS_SPCARG(-1)) {
10294  p->lstate = EXPR_BEG;
10295  return tCOLON3;
10296  }
10297  p->lstate = EXPR_DOT;
10298  return tCOLON2;
10299  }
10300  if (IS_END() || ISSPACE(c)) {
10301  pushback(p, c);
10302  p->lstate = EXPR_BEG;
10303  return ':';
10304  }
10305  pushback(p, c);
10306  p->lstate = EXPR_FNAME;
10307  return tSYMBEG;
10308 
10309  case '/':
10310  if (IS_BEG()) {
10311  p->lex_strterm = new_strterm(p, str_regexp, '/', 0);
10312  return tREGEXP_BEG;
10313  }
10314  if ((c = nextc(p)) == '=') {
10315  yylval.id = intern_c('/');
10316  p->lstate = EXPR_BEG;
10317  return tOP_ASGN;
10318  }
10319  pushback(p, c);
10320  if (IS_SPCARG(c)) {
10321  p->lex_strterm = new_strterm(p, str_regexp, '/', 0);
10322  return tREGEXP_BEG;
10323  }
10324  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10325  p->lstate = EXPR_ARG;
10326  } else {
10327  p->lstate = EXPR_BEG;
10328  }
10329  return '/';
10330 
10331  case '^':
10332  if ((c = nextc(p)) == '=') {
10333  yylval.id = intern_c('^');
10334  p->lstate = EXPR_BEG;
10335  return tOP_ASGN;
10336  }
10337  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10338  p->lstate = EXPR_ARG;
10339  } else {
10340  p->lstate = EXPR_BEG;
10341  }
10342  pushback(p, c);
10343  return '^';
10344 
10345  case ';':
10346  p->lstate = EXPR_BEG;
10347  return ';';
10348 
10349  case ',':
10350  p->lstate = EXPR_BEG;
10351  return ',';
10352 
10353  case '~':
10354  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10355  if ((c = nextc(p)) != '@') {
10356  pushback(p, c);
10357  }
10358  p->lstate = EXPR_ARG;
10359  }
10360  else {
10361  p->lstate = EXPR_BEG;
10362  }
10363  return '~';
10364 
10365  case '(':
10366  if (IS_BEG()) {
10367  c = tLPAREN;
10368  }
10369  else if (IS_SPCARG(-1)) {
10370  c = tLPAREN_ARG;
10371  }
10372  p->paren_nest++;
10373  COND_PUSH(0);
10374  CMDARG_PUSH(0);
10375  p->lstate = EXPR_BEG;
10376  return c;
10377 
10378  case '[':
10379  p->paren_nest++;
10380  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10381  p->lstate = EXPR_ARG;
10382  if ((c = nextc(p)) == ']') {
10383  if ((c = nextc(p)) == '=') {
10384  return tASET;
10385  }
10386  pushback(p, c);
10387  return tAREF;
10388  }
10389  pushback(p, c);
10390  return '[';
10391  }
10392  else if (IS_BEG()) {
10393  c = tLBRACK;
10394  }
10395  else if (IS_ARG() && space_seen) {
10396  c = tLBRACK;
10397  }
10398  p->lstate = EXPR_BEG;
10399  COND_PUSH(0);
10400  CMDARG_PUSH(0);
10401  return c;
10402 
10403  case '{':
10404  if (p->lpar_beg && p->lpar_beg == p->paren_nest) {
10405  p->lstate = EXPR_BEG;
10406  p->lpar_beg = 0;
10407  p->paren_nest--;
10408  COND_PUSH(0);
10409  CMDARG_PUSH(0);
10410  return tLAMBEG;
10411  }
10412  if (IS_ARG() || p->lstate == EXPR_END || p->lstate == EXPR_ENDFN)
10413  c = '{'; /* block (primary) */
10414  else if (p->lstate == EXPR_ENDARG)
10415  c = tLBRACE_ARG; /* block (expr) */
10416  else
10417  c = tLBRACE; /* hash */
10418  COND_PUSH(0);
10419  CMDARG_PUSH(0);
10420  p->lstate = EXPR_BEG;
10421  return c;
10422 
10423  case '\\':
10424  c = nextc(p);
10425  if (c == '\n') {
10426  p->lineno++;
10427  p->column = 0;
10428  space_seen = 1;
10429  goto retry; /* skip \\n */
10430  }
10431  pushback(p, c);
10432  return '\\';
10433 
10434  case '%':
10435  if (IS_BEG()) {
10436  int term;
10437  int paren;
10438 
10439  c = nextc(p);
10440  quotation:
10441  if (c == -1 || !ISALNUM(c)) {
10442  term = c;
10443  c = 'Q';
10444  }
10445  else {
10446  term = nextc(p);
10447  if (isalnum(term)) {
10448  yyerror(p, "unknown type of %string");
10449  return 0;
10450  }
10451  }
10452  if (c == -1 || term == -1) {
10453  yyerror(p, "unterminated quoted string meets end of file");
10454  return 0;
10455  }
10456  paren = term;
10457  if (term == '(') term = ')';
10458  else if (term == '[') term = ']';
10459  else if (term == '{') term = '}';
10460  else if (term == '<') term = '>';
10461  else paren = 0;
10462 
10463  switch (c) {
10464  case 'Q':
10465  p->lex_strterm = new_strterm(p, str_dquote, term, paren);
10466  return tSTRING_BEG;
10467 
10468  case 'q':
10469  p->lex_strterm = new_strterm(p, str_squote, term, paren);
10470  return parse_string(p);
10471 
10472  case 'W':
10473  p->lex_strterm = new_strterm(p, str_dword, term, paren);
10474  return tWORDS_BEG;
10475 
10476  case 'w':
10477  p->lex_strterm = new_strterm(p, str_sword, term, paren);
10478  return tWORDS_BEG;
10479 
10480  case 'x':
10481  p->lex_strterm = new_strterm(p, str_xquote, term, paren);
10482  return tXSTRING_BEG;
10483 
10484  case 'r':
10485  p->lex_strterm = new_strterm(p, str_regexp, term, paren);
10486  return tREGEXP_BEG;
10487 
10488  case 's':
10489  p->lex_strterm = new_strterm(p, str_ssym, term, paren);
10490  return tSYMBEG;
10491 
10492  case 'I':
10493  p->lex_strterm = new_strterm(p, str_dsymbols, term, paren);
10494  return tSYMBOLS_BEG;
10495 
10496  case 'i':
10497  p->lex_strterm = new_strterm(p, str_ssymbols, term, paren);
10498  return tSYMBOLS_BEG;
10499 
10500  default:
10501  yyerror(p, "unknown type of %string");
10502  return 0;
10503  }
10504  }
10505  if ((c = nextc(p)) == '=') {
10506  yylval.id = intern_c('%');
10507  p->lstate = EXPR_BEG;
10508  return tOP_ASGN;
10509  }
10510  if (IS_SPCARG(c)) {
10511  goto quotation;
10512  }
10513  if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10514  p->lstate = EXPR_ARG;
10515  } else {
10516  p->lstate = EXPR_BEG;
10517  }
10518  pushback(p, c);
10519  return '%';
10520 
10521  case '$':
10522  p->lstate = EXPR_END;
10523  token_column = newtok(p);
10524  c = nextc(p);
10525  if (c == -1) {
10526  yyerror(p, "incomplete global variable syntax");
10527  return 0;
10528  }
10529  switch (c) {
10530  case '_': /* $_: last read line string */
10531  c = nextc(p);
10532  if (c != -1 && identchar(c)) { /* if there is more after _ it is a variable */
10533  tokadd(p, '$');
10534  tokadd(p, c);
10535  break;
10536  }
10537  pushback(p, c);
10538  c = '_';
10539  /* fall through */
10540  case '~': /* $~: match-data */
10541  case '*': /* $*: argv */
10542  case '$': /* $$: pid */
10543  case '?': /* $?: last status */
10544  case '!': /* $!: error string */
10545  case '@': /* $@: error position */
10546  case '/': /* $/: input record separator */
10547  case '\\': /* $\: output record separator */
10548  case ';': /* $;: field separator */
10549  case ',': /* $,: output field separator */
10550  case '.': /* $.: last read line number */
10551  case '=': /* $=: ignorecase */
10552  case ':': /* $:: load path */
10553  case '<': /* $<: reading filename */
10554  case '>': /* $>: default output handle */
10555  case '\"': /* $": already loaded files */
10556  tokadd(p, '$');
10557  tokadd(p, c);
10558  tokfix(p);
10559  yylval.id = intern(tok(p));
10560  return tGVAR;
10561 
10562  case '-':
10563  tokadd(p, '$');
10564  tokadd(p, c);
10565  c = nextc(p);
10566  pushback(p, c);
10567  gvar:
10568  tokfix(p);
10569  yylval.id = intern(tok(p));
10570  return tGVAR;
10571 
10572  case '&': /* $&: last match */
10573  case '`': /* $`: string before last match */
10574  case '\'': /* $': string after last match */
10575  case '+': /* $+: string matches last pattern */
10576  if (last_state == EXPR_FNAME) {
10577  tokadd(p, '$');
10578  tokadd(p, c);
10579  goto gvar;
10580  }
10581  yylval.nd = new_back_ref(p, c);
10582  return tBACK_REF;
10583 
10584  case '1': case '2': case '3':
10585  case '4': case '5': case '6':
10586  case '7': case '8': case '9':
10587  do {
10588  tokadd(p, c);
10589  c = nextc(p);
10590  } while (c != -1 && isdigit(c));
10591  pushback(p, c);
10592  if (last_state == EXPR_FNAME) goto gvar;
10593  tokfix(p);
10594  yylval.nd = new_nth_ref(p, atoi(tok(p)));
10595  return tNTH_REF;
10596 
10597  default:
10598  if (!identchar(c)) {
10599  pushback(p, c);
10600  return '$';
10601  }
10602  case '0':
10603  tokadd(p, '$');
10604  }
10605  break;
10606 
10607  case '@':
10608  c = nextc(p);
10609  token_column = newtok(p);
10610  tokadd(p, '@');
10611  if (c == '@') {
10612  tokadd(p, '@');
10613  c = nextc(p);
10614  }
10615  if (c == -1) {
10616  if (p->bidx == 1) {
10617  yyerror(p, "incomplete instance variable syntax");
10618  }
10619  else {
10620  yyerror(p, "incomplete class variable syntax");
10621  }
10622  return 0;
10623  }
10624  else if (isdigit(c)) {
10625  if (p->bidx == 1) {
10626  yyerror_i(p, "`@%c' is not allowed as an instance variable name", c);
10627  }
10628  else {
10629  yyerror_i(p, "`@@%c' is not allowed as a class variable name", c);
10630  }
10631  return 0;
10632  }
10633  if (!identchar(c)) {
10634  pushback(p, c);
10635  return '@';
10636  }
10637  break;
10638 
10639  case '_':
10640  token_column = newtok(p);
10641  break;
10642 
10643  default:
10644  if (!identchar(c)) {
10645  yyerror_i(p, "Invalid char `\\x%02X' in expression", c);
10646  goto retry;
10647  }
10648 
10649  token_column = newtok(p);
10650  break;
10651  }
10652 
10653  do {
10654  tokadd(p, c);
10655  c = nextc(p);
10656  if (c < 0) break;
10657  } while (identchar(c));
10658  if (token_column == 0 && toklen(p) == 7 && (c < 0 || c == '\n') &&
10659  strncmp(tok(p), "__END__", toklen(p)) == 0)
10660  return -1;
10661 
10662  switch (tok(p)[0]) {
10663  case '@': case '$':
10664  pushback(p, c);
10665  break;
10666  default:
10667  if ((c == '!' || c == '?') && !peek(p, '=')) {
10668  tokadd(p, c);
10669  }
10670  else {
10671  pushback(p, c);
10672  }
10673  }
10674  tokfix(p);
10675  {
10676  int result = 0;
10677 
10678  last_state = p->lstate;
10679  switch (tok(p)[0]) {
10680  case '$':
10681  p->lstate = EXPR_END;
10682  result = tGVAR;
10683  break;
10684  case '@':
10685  p->lstate = EXPR_END;
10686  if (tok(p)[1] == '@')
10687  result = tCVAR;
10688  else
10689  result = tIVAR;
10690  break;
10691 
10692  default:
10693  if (toklast(p) == '!' || toklast(p) == '?') {
10694  result = tFID;
10695  }
10696  else {
10697  if (p->lstate == EXPR_FNAME) {
10698  if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') &&
10699  (!peek(p, '=') || (peek_n(p, '>', 1)))) {
10700  result = tIDENTIFIER;
10701  tokadd(p, c);
10702  tokfix(p);
10703  }
10704  else {
10705  pushback(p, c);
10706  }
10707  }
10708  if (result == 0 && isupper((int)(unsigned char)tok(p)[0])) {
10709  result = tCONSTANT;
10710  }
10711  else {
10712  result = tIDENTIFIER;
10713  }
10714  }
10715 
10716  if (IS_LABEL_POSSIBLE()) {
10717  if (IS_LABEL_SUFFIX(0)) {
10718  p->lstate = EXPR_BEG;
10719  nextc(p);
10720  tokfix(p);
10721  yylval.id = intern(tok(p));
10722  return tLABEL;
10723  }
10724  }
10725  if (p->lstate != EXPR_DOT) {
10726  const struct kwtable *kw;
10727 
10728  /* See if it is a reserved word. */
10729  kw = mrb_reserved_word(tok(p), toklen(p));
10730  if (kw) {
10731  enum mrb_lex_state_enum state = p->lstate;
10732  p->lstate = kw->state;
10733  if (state == EXPR_FNAME) {
10734  yylval.id = intern(kw->name);
10735  return kw->id[0];
10736  }
10737  if (p->lstate == EXPR_BEG) {
10738  p->cmd_start = TRUE;
10739  }
10740  if (kw->id[0] == keyword_do) {
10741  if (p->lpar_beg && p->lpar_beg == p->paren_nest) {
10742  p->lpar_beg = 0;
10743  p->paren_nest--;
10744  return keyword_do_LAMBDA;
10745  }
10746  if (COND_P()) return keyword_do_cond;
10747  if (CMDARG_P() && state != EXPR_CMDARG)
10748  return keyword_do_block;
10749  if (state == EXPR_ENDARG || state == EXPR_BEG)
10750  return keyword_do_block;
10751  return keyword_do;
10752  }
10753  if (state == EXPR_BEG || state == EXPR_VALUE)
10754  return kw->id[0];
10755  else {
10756  if (kw->id[0] != kw->id[1])
10757  p->lstate = EXPR_BEG;
10758  return kw->id[1];
10759  }
10760  }
10761  }
10762 
10763  if (IS_BEG() || p->lstate == EXPR_DOT || IS_ARG()) {
10764  if (cmd_state) {
10765  p->lstate = EXPR_CMDARG;
10766  }
10767  else {
10768  p->lstate = EXPR_ARG;
10769  }
10770  }
10771  else if (p->lstate == EXPR_FNAME) {
10772  p->lstate = EXPR_ENDFN;
10773  }
10774  else {
10775  p->lstate = EXPR_END;
10776  }
10777  }
10778  {
10779  mrb_sym ident = intern(tok(p));
10780 
10781  yylval.id = ident;
10782 #if 0
10783  if (last_state != EXPR_DOT && islower(tok(p)[0]) && lvar_defined(ident)) {
10784  p->lstate = EXPR_END;
10785  }
10786 #endif
10787  }
10788  return result;
10789  }
10790 }
10791 
10792 static int
10793 yylex(void *lval, parser_state *p)
10794 {
10795  int t;
10796 
10797  p->ylval = lval;
10798  t = parser_yylex(p);
10799 
10800  return t;
10801 }
10802 
10803 static void
10804 parser_init_cxt(parser_state *p, mrbc_context *cxt)
10805 {
10806  if (!cxt) return;
10807  if (cxt->lineno) p->lineno = cxt->lineno;
10808  if (cxt->filename) mrb_parser_set_filename(p, cxt->filename);
10809  if (cxt->syms) {
10810  int i;
10811 
10812  p->locals = cons(0,0);
10813  for (i=0; i<cxt->slen; i++) {
10814  local_add_f(p, cxt->syms[i]);
10815  }
10816  }
10817  p->capture_errors = cxt->capture_errors;
10818  if (cxt->partial_hook) {
10819  p->cxt = cxt;
10820  }
10821 }
10822 
10823 static void
10824 parser_update_cxt(parser_state *p, mrbc_context *cxt)
10825 {
10826  node *n, *n0;
10827  int i = 0;
10828 
10829  if (!cxt) return;
10830  if ((int)(intptr_t)p->tree->car != NODE_SCOPE) return;
10831  n0 = n = p->tree->cdr->car;
10832  while (n) {
10833  i++;
10834  n = n->cdr;
10835  }
10836  cxt->syms = (mrb_sym *)mrb_realloc(p->mrb, cxt->syms, i*sizeof(mrb_sym));
10837  cxt->slen = i;
10838  for (i=0, n=n0; n; i++,n=n->cdr) {
10839  cxt->syms[i] = sym(n->car);
10840  }
10841 }
10842 
10843 void codedump_all(mrb_state*, int);
10844 void parser_dump(mrb_state *mrb, node *tree, int offset);
10845 
10846 void
10848 {
10849  if (setjmp(p->jmp) != 0) {
10850  yyerror(p, "memory allocation error");
10851  p->nerr++;
10852  p->tree = 0;
10853  return;
10854  }
10855 
10856  p->cmd_start = TRUE;
10857  p->in_def = p->in_single = FALSE;
10858  p->nerr = p->nwarn = 0;
10859  p->lex_strterm = NULL;
10860 
10861  parser_init_cxt(p, c);
10862  yyparse(p);
10863  if (!p->tree) {
10864  p->tree = new_nil(p);
10865  }
10866  parser_update_cxt(p, c);
10867  if (c && c->dump_result) {
10868  parser_dump(p->mrb, p->tree, 0);
10869  }
10870 }
10871 
10872 parser_state*
10874 {
10875  mrb_pool *pool;
10876  parser_state *p;
10877  static const parser_state parser_state_zero = { 0 };
10878 
10879  pool = mrb_pool_open(mrb);
10880  if (!pool) return 0;
10881  p = (parser_state *)mrb_pool_alloc(pool, sizeof(parser_state));
10882  if (!p) return 0;
10883 
10884  *p = parser_state_zero;
10885  p->mrb = mrb;
10886  p->pool = pool;
10887  p->in_def = p->in_single = 0;
10888 
10889  p->s = p->send = NULL;
10890 #ifdef ENABLE_STDIO
10891  p->f = NULL;
10892 #endif
10893 
10894  p->cmd_start = TRUE;
10895  p->in_def = p->in_single = FALSE;
10896 
10897  p->capture_errors = 0;
10898  p->lineno = 1;
10899  p->column = 0;
10900 #if defined(PARSER_TEST) || defined(PARSER_DEBUG)
10901  yydebug = 1;
10902 #endif
10903 
10904  p->lex_strterm = NULL;
10905  p->heredocs = p->parsing_heredoc = NULL;
10906 
10907  p->current_filename_index = -1;
10908  p->filename_table = NULL;
10909  p->filename_table_length = 0;
10910 
10911  return p;
10912 }
10913 
10914 void
10916  mrb_pool_close(p->pool);
10917 }
10918 
10919 mrbc_context*
10921 {
10922  mrbc_context *c;
10923 
10924  c = (mrbc_context *)mrb_calloc(mrb, 1, sizeof(mrbc_context));
10925  return c;
10926 }
10927 
10928 void
10930 {
10931  mrb_free(mrb, cxt->syms);
10932  mrb_free(mrb, cxt);
10933 }
10934 
10935 const char*
10936 mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s)
10937 {
10938  if (s) {
10939  int len = strlen(s);
10940  char *p = (char *)mrb_alloca(mrb, len + 1);
10941 
10942  memcpy(p, s, len + 1);
10943  c->filename = p;
10944  }
10945  return c->filename;
10946 }
10947 
10948 void
10949 mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*func)(struct mrb_parser_state*), void *data)
10950 {
10951  c->partial_hook = func;
10952  c->partial_data = data;
10953 }
10954 
10955 void
10957 {
10958  mrb_sym sym;
10959  size_t len;
10960  size_t i;
10961  mrb_sym* new_table;
10962 
10963  sym = mrb_intern_cstr(p->mrb, f);
10964  p->filename = mrb_sym2name_len(p->mrb, sym, &len);
10965  p->lineno = (p->filename_table_length > 0)? 0 : 1;
10966 
10967  for(i = 0; i < p->filename_table_length; ++i) {
10968  if(p->filename_table[i] == sym) {
10970  return;
10971  }
10972  }
10973 
10975 
10976  new_table = parser_palloc(p, sizeof(mrb_sym) * p->filename_table_length);
10977  if (p->filename_table) {
10978  memcpy(new_table, p->filename_table, sizeof(mrb_sym) * p->filename_table_length);
10979  }
10980  p->filename_table = new_table;
10982 }
10983 
10984 char const* mrb_parser_get_filename(struct mrb_parser_state* p, uint16_t idx) {
10985  if (idx >= p->filename_table_length) { return NULL; }
10986  else {
10987  size_t len;
10988  return mrb_sym2name_len(p->mrb, p->filename_table[idx], &len);
10989  }
10990 }
10991 
10992 #ifdef ENABLE_STDIO
10993 parser_state*
10994 mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c)
10995 {
10996  parser_state *p;
10997 
10998  p = mrb_parser_new(mrb);
10999  if (!p) return 0;
11000  p->s = p->send = NULL;
11001  p->f = f;
11002 
11003  mrb_parser_parse(p, c);
11004  return p;
11005 }
11006 #endif
11007 
11008 parser_state*
11009 mrb_parse_nstring(mrb_state *mrb, const char *s, int len, mrbc_context *c)
11010 {
11011  parser_state *p;
11012 
11013  p = mrb_parser_new(mrb);
11014  if (!p) return 0;
11015  p->s = s;
11016  p->send = s + len;
11017 
11018  mrb_parser_parse(p, c);
11019  return p;
11020 }
11021 
11022 parser_state*
11023 mrb_parse_string(mrb_state *mrb, const char *s, mrbc_context *c)
11024 {
11025  return mrb_parse_nstring(mrb, s, strlen(s), c);
11026 }
11027 
11028 static mrb_value
11029 load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c)
11030 {
11031  struct RClass *target = mrb->object_class;
11032  struct RProc *proc;
11033  int n;
11034  mrb_value v;
11035 
11036  if (!p) {
11037  return mrb_undef_value();
11038  }
11039  if (!p->tree || p->nerr) {
11040  if (p->capture_errors) {
11041  char buf[256];
11042 
11043  n = snprintf(buf, sizeof(buf), "line %d: %s\n",
11044  p->error_buffer[0].lineno, p->error_buffer[0].message);
11045  mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SYNTAX_ERROR, buf, n));
11046  mrb_parser_free(p);
11047  return mrb_undef_value();
11048  }
11049  else {
11050  static const char msg[] = "syntax error";
11051  mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SYNTAX_ERROR, msg, sizeof(msg) - 1));
11052  mrb_parser_free(p);
11053  return mrb_undef_value();
11054  }
11055  }
11056  n = mrb_generate_code(mrb, p);
11057  mrb_parser_free(p);
11058  if (n < 0) {
11059  static const char msg[] = "codegen error";
11060  mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SCRIPT_ERROR, msg, sizeof(msg) - 1));
11061  return mrb_nil_value();
11062  }
11063  if (c) {
11064  if (c->dump_result) codedump_all(mrb, n);
11065  if (c->no_exec) return mrb_fixnum_value(n);
11066  if (c->target_class) {
11067  target = c->target_class;
11068  }
11069  }
11070  proc = mrb_proc_new(mrb, mrb->irep[n]);
11071  proc->target_class = target;
11072  if (mrb->c->ci) {
11073  mrb->c->ci->target_class = target;
11074  }
11075  v = mrb_run(mrb, proc, mrb_top_self(mrb));
11076  if (mrb->exc) return mrb_nil_value();
11077  return v;
11078 }
11079 
11080 #ifdef ENABLE_STDIO
11081 mrb_value
11082 mrb_load_file_cxt(mrb_state *mrb, FILE *f, mrbc_context *c)
11083 {
11084  return load_exec(mrb, mrb_parse_file(mrb, f, c), c);
11085 }
11086 
11087 mrb_value
11088 mrb_load_file(mrb_state *mrb, FILE *f)
11089 {
11090  return mrb_load_file_cxt(mrb, f, NULL);
11091 }
11092 #endif
11093 
11094 mrb_value
11095 mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *c)
11096 {
11097  return load_exec(mrb, mrb_parse_nstring(mrb, s, len, c), c);
11098 }
11099 
11100 mrb_value
11101 mrb_load_nstring(mrb_state *mrb, const char *s, int len)
11102 {
11103  return mrb_load_nstring_cxt(mrb, s, len, NULL);
11104 }
11105 
11106 mrb_value
11108 {
11109  return mrb_load_nstring_cxt(mrb, s, strlen(s), c);
11110 }
11111 
11112 mrb_value
11113 mrb_load_string(mrb_state *mrb, const char *s)
11114 {
11115  return mrb_load_string_cxt(mrb, s, NULL);
11116 }
11117 
11118 #ifdef ENABLE_STDIO
11119 
11120 static void
11121 dump_prefix(int offset)
11122 {
11123  while (offset--) {
11124  putc(' ', stdout);
11125  putc(' ', stdout);
11126  }
11127 }
11128 
11129 static void
11130 dump_recur(mrb_state *mrb, node *tree, int offset)
11131 {
11132  while (tree) {
11133  parser_dump(mrb, tree->car, offset);
11134  tree = tree->cdr;
11135  }
11136 }
11137 
11138 #endif
11139 
11140 void
11141 parser_dump(mrb_state *mrb, node *tree, int offset)
11142 {
11143 #ifdef ENABLE_STDIO
11144  int n;
11145 
11146  if (!tree) return;
11147  again:
11148  dump_prefix(offset);
11149  n = (int)(intptr_t)tree->car;
11150  tree = tree->cdr;
11151  switch (n) {
11152  case NODE_BEGIN:
11153  printf("NODE_BEGIN:\n");
11154  dump_recur(mrb, tree, offset+1);
11155  break;
11156 
11157  case NODE_RESCUE:
11158  printf("NODE_RESCUE:\n");
11159  if (tree->car) {
11160  dump_prefix(offset+1);
11161  printf("body:\n");
11162  parser_dump(mrb, tree->car, offset+2);
11163  }
11164  tree = tree->cdr;
11165  if (tree->car) {
11166  node *n2 = tree->car;
11167 
11168  dump_prefix(offset+1);
11169  printf("rescue:\n");
11170  while (n2) {
11171  node *n3 = n2->car;
11172  if (n3->car) {
11173  dump_prefix(offset+2);
11174  printf("handle classes:\n");
11175  dump_recur(mrb, n3->car, offset+3);
11176  }
11177  if (n3->cdr->car) {
11178  dump_prefix(offset+2);
11179  printf("exc_var:\n");
11180  parser_dump(mrb, n3->cdr->car, offset+3);
11181  }
11182  if (n3->cdr->cdr->car) {
11183  dump_prefix(offset+2);
11184  printf("rescue body:\n");
11185  parser_dump(mrb, n3->cdr->cdr->car, offset+3);
11186  }
11187  n2 = n2->cdr;
11188  }
11189  }
11190  tree = tree->cdr;
11191  if (tree->car) {
11192  dump_prefix(offset+1);
11193  printf("else:\n");
11194  parser_dump(mrb, tree->car, offset+2);
11195  }
11196  break;
11197 
11198  case NODE_ENSURE:
11199  printf("NODE_ENSURE:\n");
11200  dump_prefix(offset+1);
11201  printf("body:\n");
11202  parser_dump(mrb, tree->car, offset+2);
11203  dump_prefix(offset+1);
11204  printf("ensure:\n");
11205  parser_dump(mrb, tree->cdr->cdr, offset+2);
11206  break;
11207 
11208  case NODE_LAMBDA:
11209  printf("NODE_BLOCK:\n");
11210  goto block;
11211 
11212  case NODE_BLOCK:
11213  block:
11214  printf("NODE_BLOCK:\n");
11215  tree = tree->cdr;
11216  if (tree->car) {
11217  node *n = tree->car;
11218 
11219  if (n->car) {
11220  dump_prefix(offset+1);
11221  printf("mandatory args:\n");
11222  dump_recur(mrb, n->car, offset+2);
11223  }
11224  n = n->cdr;
11225  if (n->car) {
11226  dump_prefix(offset+1);
11227  printf("optional args:\n");
11228  {
11229  node *n2 = n->car;
11230 
11231  while (n2) {
11232  dump_prefix(offset+2);
11233  printf("%s=", mrb_sym2name(mrb, sym(n2->car->car)));
11234  parser_dump(mrb, n2->car->cdr, 0);
11235  n2 = n2->cdr;
11236  }
11237  }
11238  }
11239  n = n->cdr;
11240  if (n->car) {
11241  dump_prefix(offset+1);
11242  printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car)));
11243  }
11244  n = n->cdr;
11245  if (n->car) {
11246  dump_prefix(offset+1);
11247  printf("post mandatory args:\n");
11248  dump_recur(mrb, n->car, offset+2);
11249  }
11250  n = n->cdr;
11251  if (n) {
11252  dump_prefix(offset+1);
11253  printf("blk=&%s\n", mrb_sym2name(mrb, sym(n)));
11254  }
11255  }
11256  dump_prefix(offset+1);
11257  printf("body:\n");
11258  parser_dump(mrb, tree->cdr->car, offset+2);
11259  break;
11260 
11261  case NODE_IF:
11262  printf("NODE_IF:\n");
11263  dump_prefix(offset+1);
11264  printf("cond:\n");
11265  parser_dump(mrb, tree->car, offset+2);
11266  dump_prefix(offset+1);
11267  printf("then:\n");
11268  parser_dump(mrb, tree->cdr->car, offset+2);
11269  if (tree->cdr->cdr->car) {
11270  dump_prefix(offset+1);
11271  printf("else:\n");
11272  parser_dump(mrb, tree->cdr->cdr->car, offset+2);
11273  }
11274  break;
11275 
11276  case NODE_AND:
11277  printf("NODE_AND:\n");
11278  parser_dump(mrb, tree->car, offset+1);
11279  parser_dump(mrb, tree->cdr, offset+1);
11280  break;
11281 
11282  case NODE_OR:
11283  printf("NODE_OR:\n");
11284  parser_dump(mrb, tree->car, offset+1);
11285  parser_dump(mrb, tree->cdr, offset+1);
11286  break;
11287 
11288  case NODE_CASE:
11289  printf("NODE_CASE:\n");
11290  if (tree->car) {
11291  parser_dump(mrb, tree->car, offset+1);
11292  }
11293  tree = tree->cdr;
11294  while (tree) {
11295  dump_prefix(offset+1);
11296  printf("case:\n");
11297  dump_recur(mrb, tree->car->car, offset+2);
11298  dump_prefix(offset+1);
11299  printf("body:\n");
11300  parser_dump(mrb, tree->car->cdr, offset+2);
11301  tree = tree->cdr;
11302  }
11303  break;
11304 
11305  case NODE_WHILE:
11306  printf("NODE_WHILE:\n");
11307  dump_prefix(offset+1);
11308  printf("cond:\n");
11309  parser_dump(mrb, tree->car, offset+2);
11310  dump_prefix(offset+1);
11311  printf("body:\n");
11312  parser_dump(mrb, tree->cdr, offset+2);
11313  break;
11314 
11315  case NODE_UNTIL:
11316  printf("NODE_UNTIL:\n");
11317  dump_prefix(offset+1);
11318  printf("cond:\n");
11319  parser_dump(mrb, tree->car, offset+2);
11320  dump_prefix(offset+1);
11321  printf("body:\n");
11322  parser_dump(mrb, tree->cdr, offset+2);
11323  break;
11324 
11325  case NODE_FOR:
11326  printf("NODE_FOR:\n");
11327  dump_prefix(offset+1);
11328  printf("var:\n");
11329  {
11330  node *n2 = tree->car;
11331 
11332  if (n2->car) {
11333  dump_prefix(offset+2);
11334  printf("pre:\n");
11335  dump_recur(mrb, n2->car, offset+3);
11336  }
11337  n2 = n2->cdr;
11338  if (n2) {
11339  if (n2->car) {
11340  dump_prefix(offset+2);
11341  printf("rest:\n");
11342  parser_dump(mrb, n2->car, offset+3);
11343  }
11344  n2 = n2->cdr;
11345  if (n2) {
11346  if (n2->car) {
11347  dump_prefix(offset+2);
11348  printf("post:\n");
11349  dump_recur(mrb, n2->car, offset+3);
11350  }
11351  }
11352  }
11353  }
11354  tree = tree->cdr;
11355  dump_prefix(offset+1);
11356  printf("in:\n");
11357  parser_dump(mrb, tree->car, offset+2);
11358  tree = tree->cdr;
11359  dump_prefix(offset+1);
11360  printf("do:\n");
11361  parser_dump(mrb, tree->car, offset+2);
11362  break;
11363 
11364  case NODE_SCOPE:
11365  printf("NODE_SCOPE:\n");
11366  {
11367  node *n2 = tree->car;
11368 
11369  if (n2 && (n2->car || n2->cdr)) {
11370  dump_prefix(offset+1);
11371  printf("local variables:\n");
11372  dump_prefix(offset+2);
11373  while (n2) {
11374  if (n2->car) {
11375  if (n2 != tree->car) printf(", ");
11376  printf("%s", mrb_sym2name(mrb, sym(n2->car)));
11377  }
11378  n2 = n2->cdr;
11379  }
11380  printf("\n");
11381  }
11382  }
11383  tree = tree->cdr;
11384  offset++;
11385  goto again;
11386 
11387  case NODE_FCALL:
11388  case NODE_CALL:
11389  printf("NODE_CALL:\n");
11390  parser_dump(mrb, tree->car, offset+1);
11391  dump_prefix(offset+1);
11392  printf("method='%s' (%d)\n",
11393  mrb_sym2name(mrb, sym(tree->cdr->car)),
11394  (int)(intptr_t)tree->cdr->car);
11395  tree = tree->cdr->cdr->car;
11396  if (tree) {
11397  dump_prefix(offset+1);
11398  printf("args:\n");
11399  dump_recur(mrb, tree->car, offset+2);
11400  if (tree->cdr) {
11401  dump_prefix(offset+1);
11402  printf("block:\n");
11403  parser_dump(mrb, tree->cdr, offset+2);
11404  }
11405  }
11406  break;
11407 
11408  case NODE_DOT2:
11409  printf("NODE_DOT2:\n");
11410  parser_dump(mrb, tree->car, offset+1);
11411  parser_dump(mrb, tree->cdr, offset+1);
11412  break;
11413 
11414  case NODE_DOT3:
11415  printf("NODE_DOT3:\n");
11416  parser_dump(mrb, tree->car, offset+1);
11417  parser_dump(mrb, tree->cdr, offset+1);
11418  break;
11419 
11420  case NODE_COLON2:
11421  printf("NODE_COLON2:\n");
11422  parser_dump(mrb, tree->car, offset+1);
11423  dump_prefix(offset+1);
11424  printf("::%s\n", mrb_sym2name(mrb, sym(tree->cdr)));
11425  break;
11426 
11427  case NODE_COLON3:
11428  printf("NODE_COLON3:\n");
11429  dump_prefix(offset+1);
11430  printf("::%s\n", mrb_sym2name(mrb, sym(tree)));
11431  break;
11432 
11433  case NODE_ARRAY:
11434  printf("NODE_ARRAY:\n");
11435  dump_recur(mrb, tree, offset+1);
11436  break;
11437 
11438  case NODE_HASH:
11439  printf("NODE_HASH:\n");
11440  while (tree) {
11441  dump_prefix(offset+1);
11442  printf("key:\n");
11443  parser_dump(mrb, tree->car->car, offset+2);
11444  dump_prefix(offset+1);
11445  printf("value:\n");
11446  parser_dump(mrb, tree->car->cdr, offset+2);
11447  tree = tree->cdr;
11448  }
11449  break;
11450 
11451  case NODE_SPLAT:
11452  printf("NODE_SPLAT:\n");
11453  parser_dump(mrb, tree, offset+1);
11454  break;
11455 
11456  case NODE_ASGN:
11457  printf("NODE_ASGN:\n");
11458  dump_prefix(offset+1);
11459  printf("lhs:\n");
11460  parser_dump(mrb, tree->car, offset+2);
11461  dump_prefix(offset+1);
11462  printf("rhs:\n");
11463  parser_dump(mrb, tree->cdr, offset+2);
11464  break;
11465 
11466  case NODE_MASGN:
11467  printf("NODE_MASGN:\n");
11468  dump_prefix(offset+1);
11469  printf("mlhs:\n");
11470  {
11471  node *n2 = tree->car;
11472 
11473  if (n2->car) {
11474  dump_prefix(offset+2);
11475  printf("pre:\n");
11476  dump_recur(mrb, n2->car, offset+3);
11477  }
11478  n2 = n2->cdr;
11479  if (n2) {
11480  if (n2->car) {
11481  dump_prefix(offset+2);
11482  printf("rest:\n");
11483  if (n2->car == (node*)-1) {
11484  dump_prefix(offset+2);
11485  printf("(empty)\n");
11486  }
11487  else {
11488  parser_dump(mrb, n2->car, offset+3);
11489  }
11490  }
11491  n2 = n2->cdr;
11492  if (n2) {
11493  if (n2->car) {
11494  dump_prefix(offset+2);
11495  printf("post:\n");
11496  dump_recur(mrb, n2->car, offset+3);
11497  }
11498  }
11499  }
11500  }
11501  dump_prefix(offset+1);
11502  printf("rhs:\n");
11503  parser_dump(mrb, tree->cdr, offset+2);
11504  break;
11505 
11506  case NODE_OP_ASGN:
11507  printf("NODE_OP_ASGN:\n");
11508  dump_prefix(offset+1);
11509  printf("lhs:\n");
11510  parser_dump(mrb, tree->car, offset+2);
11511  tree = tree->cdr;
11512  dump_prefix(offset+1);
11513  printf("op='%s' (%d)\n", mrb_sym2name(mrb, sym(tree->car)), (int)(intptr_t)tree->car);
11514  tree = tree->cdr;
11515  parser_dump(mrb, tree->car, offset+1);
11516  break;
11517 
11518  case NODE_SUPER:
11519  printf("NODE_SUPER:\n");
11520  if (tree) {
11521  dump_prefix(offset+1);
11522  printf("args:\n");
11523  dump_recur(mrb, tree->car, offset+2);
11524  if (tree->cdr) {
11525  dump_prefix(offset+1);
11526  printf("block:\n");
11527  parser_dump(mrb, tree->cdr, offset+2);
11528  }
11529  }
11530  break;
11531 
11532  case NODE_ZSUPER:
11533  printf("NODE_ZSUPER\n");
11534  break;
11535 
11536  case NODE_RETURN:
11537  printf("NODE_RETURN:\n");
11538  parser_dump(mrb, tree, offset+1);
11539  break;
11540 
11541  case NODE_YIELD:
11542  printf("NODE_YIELD:\n");
11543  dump_recur(mrb, tree, offset+1);
11544  break;
11545 
11546  case NODE_BREAK:
11547  printf("NODE_BREAK:\n");
11548  parser_dump(mrb, tree, offset+1);
11549  break;
11550 
11551  case NODE_NEXT:
11552  printf("NODE_NEXT:\n");
11553  parser_dump(mrb, tree, offset+1);
11554  break;
11555 
11556  case NODE_REDO:
11557  printf("NODE_REDO\n");
11558  break;
11559 
11560  case NODE_RETRY:
11561  printf("NODE_RETRY\n");
11562  break;
11563 
11564  case NODE_LVAR:
11565  printf("NODE_LVAR %s\n", mrb_sym2name(mrb, sym(tree)));
11566  break;
11567 
11568  case NODE_GVAR:
11569  printf("NODE_GVAR %s\n", mrb_sym2name(mrb, sym(tree)));
11570  break;
11571 
11572  case NODE_IVAR:
11573  printf("NODE_IVAR %s\n", mrb_sym2name(mrb, sym(tree)));
11574  break;
11575 
11576  case NODE_CVAR:
11577  printf("NODE_CVAR %s\n", mrb_sym2name(mrb, sym(tree)));
11578  break;
11579 
11580  case NODE_CONST:
11581  printf("NODE_CONST %s\n", mrb_sym2name(mrb, sym(tree)));
11582  break;
11583 
11584  case NODE_MATCH:
11585  printf("NODE_MATCH:\n");
11586  dump_prefix(offset + 1);
11587  printf("lhs:\n");
11588  parser_dump(mrb, tree->car, offset + 2);
11589  dump_prefix(offset + 1);
11590  printf("rhs:\n");
11591  parser_dump(mrb, tree->cdr, offset + 2);
11592  break;
11593 
11594  case NODE_BACK_REF:
11595  printf("NODE_BACK_REF: $%c\n", (int)(intptr_t)tree);
11596  break;
11597 
11598  case NODE_NTH_REF:
11599  printf("NODE_NTH_REF: $%d\n", (int)(intptr_t)tree);
11600  break;
11601 
11602  case NODE_ARG:
11603  printf("NODE_ARG %s\n", mrb_sym2name(mrb, sym(tree)));
11604  break;
11605 
11606  case NODE_BLOCK_ARG:
11607  printf("NODE_BLOCK_ARG:\n");
11608  parser_dump(mrb, tree, offset+1);
11609  break;
11610 
11611  case NODE_INT:
11612  printf("NODE_INT %s base %d\n", (char*)tree->car, (int)(intptr_t)tree->cdr->car);
11613  break;
11614 
11615  case NODE_FLOAT:
11616  printf("NODE_FLOAT %s\n", (char*)tree);
11617  break;
11618 
11619  case NODE_NEGATE:
11620  printf("NODE_NEGATE\n");
11621  parser_dump(mrb, tree, offset+1);
11622  break;
11623 
11624  case NODE_STR:
11625  printf("NODE_STR \"%s\" len %d\n", (char*)tree->car, (int)(intptr_t)tree->cdr);
11626  break;
11627 
11628  case NODE_DSTR:
11629  printf("NODE_DSTR\n");
11630  dump_recur(mrb, tree, offset+1);
11631  break;
11632 
11633  case NODE_XSTR:
11634  printf("NODE_XSTR \"%s\" len %d\n", (char*)tree->car, (int)(intptr_t)tree->cdr);
11635  break;
11636 
11637  case NODE_DXSTR:
11638  printf("NODE_DXSTR\n");
11639  dump_recur(mrb, tree, offset+1);
11640  break;
11641 
11642  case NODE_REGX:
11643  printf("NODE_REGX /%s/%s\n", (char*)tree->car, (char*)tree->cdr);
11644  break;
11645 
11646  case NODE_DREGX:
11647  printf("NODE_DREGX\n");
11648  dump_recur(mrb, tree->car, offset+1);
11649  dump_prefix(offset);
11650  printf("tail: %s\n", (char*)tree->cdr->cdr->car);
11651  dump_prefix(offset);
11652  printf("opt: %s\n", (char*)tree->cdr->cdr->cdr);
11653  break;
11654 
11655  case NODE_SYM:
11656  printf("NODE_SYM :%s\n", mrb_sym2name(mrb, sym(tree)));
11657  break;
11658 
11659  case NODE_SELF:
11660  printf("NODE_SELF\n");
11661  break;
11662 
11663  case NODE_NIL:
11664  printf("NODE_NIL\n");
11665  break;
11666 
11667  case NODE_TRUE:
11668  printf("NODE_TRUE\n");
11669  break;
11670 
11671  case NODE_FALSE:
11672  printf("NODE_FALSE\n");
11673  break;
11674 
11675  case NODE_ALIAS:
11676  printf("NODE_ALIAS %s %s:\n",
11677  mrb_sym2name(mrb, sym(tree->car)),
11678  mrb_sym2name(mrb, sym(tree->cdr)));
11679  break;
11680 
11681  case NODE_UNDEF:
11682  printf("NODE_UNDEF");
11683  {
11684  node *t = tree;
11685  while (t) {
11686  printf(" %s", mrb_sym2name(mrb, sym(t->car)));
11687  t = t->cdr;
11688  }
11689  }
11690  printf(":\n");
11691  break;
11692 
11693  case NODE_CLASS:
11694  printf("NODE_CLASS:\n");
11695  if (tree->car->car == (node*)0) {
11696  dump_prefix(offset+1);
11697  printf(":%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
11698  }
11699  else if (tree->car->car == (node*)1) {
11700  dump_prefix(offset+1);
11701  printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
11702  }
11703  else {
11704  parser_dump(mrb, tree->car->car, offset+1);
11705  dump_prefix(offset+1);
11706  printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
11707  }
11708  if (tree->cdr->car) {
11709  dump_prefix(offset+1);
11710  printf("super:\n");
11711  parser_dump(mrb, tree->cdr->car, offset+2);
11712  }
11713  dump_prefix(offset+1);
11714  printf("body:\n");
11715  parser_dump(mrb, tree->cdr->cdr->car->cdr, offset+2);
11716  break;
11717 
11718  case NODE_MODULE:
11719  printf("NODE_MODULE:\n");
11720  if (tree->car->car == (node*)0) {
11721  dump_prefix(offset+1);
11722  printf(":%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
11723  }
11724  else if (tree->car->car == (node*)1) {
11725  dump_prefix(offset+1);
11726  printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
11727  }
11728  else {
11729  parser_dump(mrb, tree->car->car, offset+1);
11730  dump_prefix(offset+1);
11731  printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
11732  }
11733  dump_prefix(offset+1);
11734  printf("body:\n");
11735  parser_dump(mrb, tree->cdr->car->cdr, offset+2);
11736  break;
11737 
11738  case NODE_SCLASS:
11739  printf("NODE_SCLASS:\n");
11740  parser_dump(mrb, tree->car, offset+1);
11741  dump_prefix(offset+1);
11742  printf("body:\n");
11743  parser_dump(mrb, tree->cdr->car->cdr, offset+2);
11744  break;
11745 
11746  case NODE_DEF:
11747  printf("NODE_DEF:\n");
11748  dump_prefix(offset+1);
11749  printf("%s\n", mrb_sym2name(mrb, sym(tree->car)));
11750  tree = tree->cdr;
11751  {
11752  node *n2 = tree->car;
11753 
11754  if (n2 && (n2->car || n2->cdr)) {
11755  dump_prefix(offset+1);
11756  printf("local variables:\n");
11757  dump_prefix(offset+2);
11758  while (n2) {
11759  if (n2->car) {
11760  if (n2 != tree->car) printf(", ");
11761  printf("%s", mrb_sym2name(mrb, sym(n2->car)));
11762  }
11763  n2 = n2->cdr;
11764  }
11765  printf("\n");
11766  }
11767  }
11768  tree = tree->cdr;
11769  if (tree->car) {
11770  node *n = tree->car;
11771 
11772  if (n->car) {
11773  dump_prefix(offset+1);
11774  printf("mandatory args:\n");
11775  dump_recur(mrb, n->car, offset+2);
11776  }
11777  n = n->cdr;
11778  if (n->car) {
11779  dump_prefix(offset+1);
11780  printf("optional args:\n");
11781  {
11782  node *n2 = n->car;
11783 
11784  while (n2) {
11785  dump_prefix(offset+2);
11786  printf("%s=", mrb_sym2name(mrb, sym(n2->car->car)));
11787  parser_dump(mrb, n2->car->cdr, 0);
11788  n2 = n2->cdr;
11789  }
11790  }
11791  }
11792  n = n->cdr;
11793  if (n->car) {
11794  dump_prefix(offset+1);
11795  printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car)));
11796  }
11797  n = n->cdr;
11798  if (n->car) {
11799  dump_prefix(offset+1);
11800  printf("post mandatory args:\n");
11801  dump_recur(mrb, n->car, offset+2);
11802  }
11803  n = n->cdr;
11804  if (n) {
11805  dump_prefix(offset+1);
11806  printf("blk=&%s\n", mrb_sym2name(mrb, sym(n)));
11807  }
11808  }
11809  parser_dump(mrb, tree->cdr->car, offset+1);
11810  break;
11811 
11812  case NODE_SDEF:
11813  printf("NODE_SDEF:\n");
11814  parser_dump(mrb, tree->car, offset+1);
11815  tree = tree->cdr;
11816  dump_prefix(offset+1);
11817  printf(":%s\n", mrb_sym2name(mrb, sym(tree->car)));
11818  tree = tree->cdr->cdr;
11819  if (tree->car) {
11820  node *n = tree->car;
11821 
11822  if (n->car) {
11823  dump_prefix(offset+1);
11824  printf("mandatory args:\n");
11825  dump_recur(mrb, n->car, offset+2);
11826  }
11827  n = n->cdr;
11828  if (n->car) {
11829  dump_prefix(offset+1);
11830  printf("optional args:\n");
11831  {
11832  node *n2 = n->car;
11833 
11834  while (n2) {
11835  dump_prefix(offset+2);
11836  printf("%s=", mrb_sym2name(mrb, sym(n2->car->car)));
11837  parser_dump(mrb, n2->car->cdr, 0);
11838  n2 = n2->cdr;
11839  }
11840  }
11841  }
11842  n = n->cdr;
11843  if (n->car) {
11844  dump_prefix(offset+1);
11845  printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car)));
11846  }
11847  n = n->cdr;
11848  if (n->car) {
11849  dump_prefix(offset+1);
11850  printf("post mandatory args:\n");
11851  dump_recur(mrb, n->car, offset+2);
11852  }
11853  n = n->cdr;
11854  if (n) {
11855  dump_prefix(offset+1);
11856  printf("blk=&%s\n", mrb_sym2name(mrb, sym(n)));
11857  }
11858  }
11859  tree = tree->cdr;
11860  parser_dump(mrb, tree->car, offset+1);
11861  break;
11862 
11863  case NODE_POSTEXE:
11864  printf("NODE_POSTEXE:\n");
11865  parser_dump(mrb, tree, offset+1);
11866  break;
11867 
11868  case NODE_HEREDOC:
11869  printf("NODE_HEREDOC:\n");
11870  parser_dump(mrb, ((parser_heredoc_info*)tree)->doc, offset+1);
11871  break;
11872 
11873  default:
11874  printf("node type: %d (0x%x)\n", (int)n, (int)n);
11875  break;
11876  }
11877 #endif
11878 }