]> git.wh0rd.org Git - ICEs.git/blob - 264653/parse_.i.0
more
[ICEs.git] / 264653 / parse_.i.0
1 # 1 "parse.c"
2 # 1 "/home/hramrach/ruby-1.9.1-rc1//"
3 # 1 "<built-in>"
4 # 1 "<command-line>"
5 # 1 "parse.c"
6 # 68 "parse.c"
7    enum yytokentype {
8      keyword_class = 258,
9      keyword_module = 259,
10      keyword_def = 260,
11      keyword_undef = 261,
12      keyword_begin = 262,
13      keyword_rescue = 263,
14      keyword_ensure = 264,
15      keyword_end = 265,
16      keyword_if = 266,
17      keyword_unless = 267,
18      keyword_then = 268,
19      keyword_elsif = 269,
20      keyword_else = 270,
21      keyword_case = 271,
22      keyword_when = 272,
23      keyword_while = 273,
24      keyword_until = 274,
25      keyword_for = 275,
26      keyword_break = 276,
27      keyword_next = 277,
28      keyword_redo = 278,
29      keyword_retry = 279,
30      keyword_in = 280,
31      keyword_do = 281,
32      keyword_do_cond = 282,
33      keyword_do_block = 283,
34      keyword_do_LAMBDA = 284,
35      keyword_return = 285,
36      keyword_yield = 286,
37      keyword_super = 287,
38      keyword_self = 288,
39      keyword_nil = 289,
40      keyword_true = 290,
41      keyword_false = 291,
42      keyword_and = 292,
43      keyword_or = 293,
44      keyword_not = 294,
45      modifier_if = 295,
46      modifier_unless = 296,
47      modifier_while = 297,
48      modifier_until = 298,
49      modifier_rescue = 299,
50      keyword_alias = 300,
51      keyword_defined = 301,
52      keyword_BEGIN = 302,
53      keyword_END = 303,
54      keyword__LINE__ = 304,
55      keyword__FILE__ = 305,
56      keyword__ENCODING__ = 306,
57      tIDENTIFIER = 307,
58      tFID = 308,
59      tGVAR = 309,
60      tIVAR = 310,
61      tCONSTANT = 311,
62      tCVAR = 312,
63      tLABEL = 313,
64      tINTEGER = 314,
65      tFLOAT = 315,
66      tSTRING_CONTENT = 316,
67      tCHAR = 317,
68      tNTH_REF = 318,
69      tBACK_REF = 319,
70      tREGEXP_END = 320,
71      tUPLUS = 321,
72      tUMINUS = 322,
73      tPOW = 323,
74      tCMP = 324,
75      tEQ = 325,
76      tEQQ = 326,
77      tNEQ = 327,
78      tGEQ = 328,
79      tLEQ = 329,
80      tANDOP = 330,
81      tOROP = 331,
82      tMATCH = 332,
83      tNMATCH = 333,
84      tDOT2 = 334,
85      tDOT3 = 335,
86      tAREF = 336,
87      tASET = 337,
88      tLSHFT = 338,
89      tRSHFT = 339,
90      tCOLON2 = 340,
91      tCOLON3 = 341,
92      tOP_ASGN = 342,
93      tASSOC = 343,
94      tLPAREN = 344,
95      tLPAREN_ARG = 345,
96      tRPAREN = 346,
97      tLBRACK = 347,
98      tLBRACE = 348,
99      tLBRACE_ARG = 349,
100      tSTAR = 350,
101      tAMPER = 351,
102      tLAMBDA = 352,
103      tSYMBEG = 353,
104      tSTRING_BEG = 354,
105      tXSTRING_BEG = 355,
106      tREGEXP_BEG = 356,
107      tWORDS_BEG = 357,
108      tQWORDS_BEG = 358,
109      tSTRING_DBEG = 359,
110      tSTRING_DVAR = 360,
111      tSTRING_END = 361,
112      tLAMBEG = 362,
113      tLOWEST = 363,
114      tUMINUS_NUM = 364,
115      idNULL = 365,
116      idRespond_to = 366,
117      idIFUNC = 367,
118      idCFUNC = 368,
119      idThrowState = 369,
120      id_core_set_method_alias = 370,
121      id_core_set_variable_alias = 371,
122      id_core_undef_method = 372,
123      id_core_define_method = 373,
124      id_core_define_singleton_method = 374,
125      id_core_set_postexe = 375,
126      tLAST_TOKEN = 376
127    };
128 # 12 "parse.y"
129
130
131
132
133
134
135 # 1 "./include/ruby/ruby.h" 1
136 # 25 "./include/ruby/ruby.h"
137 # 1 ".ext/include/i686-linux/ruby/config.h" 1
138 # 26 "./include/ruby/ruby.h" 2
139 # 50 "./include/ruby/ruby.h"
140 # 1 "/usr/include/stdlib.h" 1 3 4
141 # 25 "/usr/include/stdlib.h" 3 4
142 # 1 "/usr/include/features.h" 1 3 4
143 # 330 "/usr/include/features.h" 3 4
144 # 1 "/usr/include/sys/cdefs.h" 1 3 4
145 # 348 "/usr/include/sys/cdefs.h" 3 4
146 # 1 "/usr/include/bits/wordsize.h" 1 3 4
147 # 349 "/usr/include/sys/cdefs.h" 2 3 4
148 # 331 "/usr/include/features.h" 2 3 4
149 # 354 "/usr/include/features.h" 3 4
150 # 1 "/usr/include/gnu/stubs.h" 1 3 4
151
152
153
154 # 1 "/usr/include/bits/wordsize.h" 1 3 4
155 # 5 "/usr/include/gnu/stubs.h" 2 3 4
156
157
158 # 1 "/usr/include/gnu/stubs-32.h" 1 3 4
159 # 8 "/usr/include/gnu/stubs.h" 2 3 4
160 # 355 "/usr/include/features.h" 2 3 4
161 # 26 "/usr/include/stdlib.h" 2 3 4
162
163
164
165
166
167
168
169 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
170 # 214 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 3 4
171 typedef unsigned int size_t;
172 # 326 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 3 4
173 typedef int wchar_t;
174 # 34 "/usr/include/stdlib.h" 2 3 4
175
176
177
178
179
180
181
182
183 # 1 "/usr/include/bits/waitflags.h" 1 3 4
184 # 43 "/usr/include/stdlib.h" 2 3 4
185 # 1 "/usr/include/bits/waitstatus.h" 1 3 4
186 # 65 "/usr/include/bits/waitstatus.h" 3 4
187 # 1 "/usr/include/endian.h" 1 3 4
188 # 37 "/usr/include/endian.h" 3 4
189 # 1 "/usr/include/bits/endian.h" 1 3 4
190 # 38 "/usr/include/endian.h" 2 3 4
191 # 66 "/usr/include/bits/waitstatus.h" 2 3 4
192
193 union wait
194   {
195     int w_status;
196     struct
197       {
198
199  unsigned int __w_termsig:7;
200  unsigned int __w_coredump:1;
201  unsigned int __w_retcode:8;
202  unsigned int:16;
203
204
205
206
207
208
209
210       } __wait_terminated;
211     struct
212       {
213
214  unsigned int __w_stopval:8;
215  unsigned int __w_stopsig:8;
216  unsigned int:16;
217
218
219
220
221
222
223       } __wait_stopped;
224   };
225 # 44 "/usr/include/stdlib.h" 2 3 4
226 # 68 "/usr/include/stdlib.h" 3 4
227 typedef union
228   {
229     union wait *__uptr;
230     int *__iptr;
231   } __WAIT_STATUS __attribute__ ((__transparent_union__));
232 # 96 "/usr/include/stdlib.h" 3 4
233
234
235 typedef struct
236   {
237     int quot;
238     int rem;
239   } div_t;
240
241
242
243 typedef struct
244   {
245     long int quot;
246     long int rem;
247   } ldiv_t;
248
249
250
251
252
253
254
255 __extension__ typedef struct
256   {
257     long long int quot;
258     long long int rem;
259   } lldiv_t;
260
261
262 # 140 "/usr/include/stdlib.h" 3 4
263 extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
264
265
266
267
268 extern double atof (__const char *__nptr)
269      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
270
271 extern int atoi (__const char *__nptr)
272      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
273
274 extern long int atol (__const char *__nptr)
275      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
276
277
278
279
280
281 __extension__ extern long long int atoll (__const char *__nptr)
282      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
283
284
285
286
287
288 extern double strtod (__const char *__restrict __nptr,
289         char **__restrict __endptr)
290      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
291
292
293
294
295
296 extern float strtof (__const char *__restrict __nptr,
297        char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
298
299 extern long double strtold (__const char *__restrict __nptr,
300        char **__restrict __endptr)
301      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
302
303
304
305
306
307 extern long int strtol (__const char *__restrict __nptr,
308    char **__restrict __endptr, int __base)
309      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
310
311 extern unsigned long int strtoul (__const char *__restrict __nptr,
312       char **__restrict __endptr, int __base)
313      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
314
315
316
317
318 __extension__
319 extern long long int strtoq (__const char *__restrict __nptr,
320         char **__restrict __endptr, int __base)
321      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
322
323 __extension__
324 extern unsigned long long int strtouq (__const char *__restrict __nptr,
325            char **__restrict __endptr, int __base)
326      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
327
328
329
330
331
332 __extension__
333 extern long long int strtoll (__const char *__restrict __nptr,
334          char **__restrict __endptr, int __base)
335      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
336
337 __extension__
338 extern unsigned long long int strtoull (__const char *__restrict __nptr,
339      char **__restrict __endptr, int __base)
340      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
341
342 # 236 "/usr/include/stdlib.h" 3 4
343 # 1 "/usr/include/xlocale.h" 1 3 4
344 # 28 "/usr/include/xlocale.h" 3 4
345 typedef struct __locale_struct
346 {
347
348   struct locale_data *__locales[13];
349
350
351   const unsigned short int *__ctype_b;
352   const int *__ctype_tolower;
353   const int *__ctype_toupper;
354
355
356   const char *__names[13];
357 } *__locale_t;
358 # 237 "/usr/include/stdlib.h" 2 3 4
359
360
361
362 extern long int strtol_l (__const char *__restrict __nptr,
363      char **__restrict __endptr, int __base,
364      __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
365
366 extern unsigned long int strtoul_l (__const char *__restrict __nptr,
367         char **__restrict __endptr,
368         int __base, __locale_t __loc)
369      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
370
371 __extension__
372 extern long long int strtoll_l (__const char *__restrict __nptr,
373     char **__restrict __endptr, int __base,
374     __locale_t __loc)
375      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
376
377 __extension__
378 extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
379        char **__restrict __endptr,
380        int __base, __locale_t __loc)
381      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
382
383 extern double strtod_l (__const char *__restrict __nptr,
384    char **__restrict __endptr, __locale_t __loc)
385      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
386
387 extern float strtof_l (__const char *__restrict __nptr,
388          char **__restrict __endptr, __locale_t __loc)
389      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
390
391 extern long double strtold_l (__const char *__restrict __nptr,
392          char **__restrict __endptr,
393          __locale_t __loc)
394      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
395
396
397
398
399
400 extern __inline double
401 __attribute__ ((__nothrow__)) atof (__const char *__nptr)
402 {
403   return strtod (__nptr, (char **) ((void *)0));
404 }
405 extern __inline int
406 __attribute__ ((__nothrow__)) atoi (__const char *__nptr)
407 {
408   return (int) strtol (__nptr, (char **) ((void *)0), 10);
409 }
410 extern __inline long int
411 __attribute__ ((__nothrow__)) atol (__const char *__nptr)
412 {
413   return strtol (__nptr, (char **) ((void *)0), 10);
414 }
415
416
417
418
419 __extension__ extern __inline long long int
420 __attribute__ ((__nothrow__)) atoll (__const char *__nptr)
421 {
422   return strtoll (__nptr, (char **) ((void *)0), 10);
423 }
424
425 # 311 "/usr/include/stdlib.h" 3 4
426 extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
427
428
429 extern long int a64l (__const char *__s)
430      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
431
432
433
434
435 # 1 "/usr/include/sys/types.h" 1 3 4
436 # 29 "/usr/include/sys/types.h" 3 4
437
438
439 # 1 "/usr/include/bits/types.h" 1 3 4
440 # 28 "/usr/include/bits/types.h" 3 4
441 # 1 "/usr/include/bits/wordsize.h" 1 3 4
442 # 29 "/usr/include/bits/types.h" 2 3 4
443
444
445 typedef unsigned char __u_char;
446 typedef unsigned short int __u_short;
447 typedef unsigned int __u_int;
448 typedef unsigned long int __u_long;
449
450
451 typedef signed char __int8_t;
452 typedef unsigned char __uint8_t;
453 typedef signed short int __int16_t;
454 typedef unsigned short int __uint16_t;
455 typedef signed int __int32_t;
456 typedef unsigned int __uint32_t;
457
458
459
460
461 __extension__ typedef signed long long int __int64_t;
462 __extension__ typedef unsigned long long int __uint64_t;
463
464
465
466
467
468
469
470 __extension__ typedef long long int __quad_t;
471 __extension__ typedef unsigned long long int __u_quad_t;
472 # 131 "/usr/include/bits/types.h" 3 4
473 # 1 "/usr/include/bits/typesizes.h" 1 3 4
474 # 132 "/usr/include/bits/types.h" 2 3 4
475
476
477 __extension__ typedef __u_quad_t __dev_t;
478 __extension__ typedef unsigned int __uid_t;
479 __extension__ typedef unsigned int __gid_t;
480 __extension__ typedef unsigned long int __ino_t;
481 __extension__ typedef __u_quad_t __ino64_t;
482 __extension__ typedef unsigned int __mode_t;
483 __extension__ typedef unsigned int __nlink_t;
484 __extension__ typedef long int __off_t;
485 __extension__ typedef __quad_t __off64_t;
486 __extension__ typedef int __pid_t;
487 __extension__ typedef struct { int __val[2]; } __fsid_t;
488 __extension__ typedef long int __clock_t;
489 __extension__ typedef unsigned long int __rlim_t;
490 __extension__ typedef __u_quad_t __rlim64_t;
491 __extension__ typedef unsigned int __id_t;
492 __extension__ typedef long int __time_t;
493 __extension__ typedef unsigned int __useconds_t;
494 __extension__ typedef long int __suseconds_t;
495
496 __extension__ typedef int __daddr_t;
497 __extension__ typedef long int __swblk_t;
498 __extension__ typedef int __key_t;
499
500
501 __extension__ typedef int __clockid_t;
502
503
504 __extension__ typedef void * __timer_t;
505
506
507 __extension__ typedef long int __blksize_t;
508
509
510
511
512 __extension__ typedef long int __blkcnt_t;
513 __extension__ typedef __quad_t __blkcnt64_t;
514
515
516 __extension__ typedef unsigned long int __fsblkcnt_t;
517 __extension__ typedef __u_quad_t __fsblkcnt64_t;
518
519
520 __extension__ typedef unsigned long int __fsfilcnt_t;
521 __extension__ typedef __u_quad_t __fsfilcnt64_t;
522
523 __extension__ typedef int __ssize_t;
524
525
526
527 typedef __off64_t __loff_t;
528 typedef __quad_t *__qaddr_t;
529 typedef char *__caddr_t;
530
531
532 __extension__ typedef int __intptr_t;
533
534
535 __extension__ typedef unsigned int __socklen_t;
536 # 32 "/usr/include/sys/types.h" 2 3 4
537
538
539
540 typedef __u_char u_char;
541 typedef __u_short u_short;
542 typedef __u_int u_int;
543 typedef __u_long u_long;
544 typedef __quad_t quad_t;
545 typedef __u_quad_t u_quad_t;
546 typedef __fsid_t fsid_t;
547
548
549
550
551 typedef __loff_t loff_t;
552
553
554
555
556
557 typedef __ino64_t ino_t;
558
559
560
561
562 typedef __ino64_t ino64_t;
563
564
565
566
567 typedef __dev_t dev_t;
568
569
570
571
572 typedef __gid_t gid_t;
573
574
575
576
577 typedef __mode_t mode_t;
578
579
580
581
582 typedef __nlink_t nlink_t;
583
584
585
586
587 typedef __uid_t uid_t;
588
589
590
591
592
593
594
595 typedef __off64_t off_t;
596
597
598
599
600 typedef __off64_t off64_t;
601
602
603
604
605 typedef __pid_t pid_t;
606
607
608
609
610 typedef __id_t id_t;
611
612
613
614
615 typedef __ssize_t ssize_t;
616
617
618
619
620
621 typedef __daddr_t daddr_t;
622 typedef __caddr_t caddr_t;
623
624
625
626
627
628 typedef __key_t key_t;
629 # 133 "/usr/include/sys/types.h" 3 4
630 # 1 "/usr/include/time.h" 1 3 4
631 # 59 "/usr/include/time.h" 3 4
632
633
634 typedef __clock_t clock_t;
635
636
637
638 # 75 "/usr/include/time.h" 3 4
639
640
641 typedef __time_t time_t;
642
643
644
645 # 93 "/usr/include/time.h" 3 4
646 typedef __clockid_t clockid_t;
647 # 105 "/usr/include/time.h" 3 4
648 typedef __timer_t timer_t;
649 # 134 "/usr/include/sys/types.h" 2 3 4
650
651
652
653 typedef __useconds_t useconds_t;
654
655
656
657 typedef __suseconds_t suseconds_t;
658
659
660
661
662
663 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
664 # 148 "/usr/include/sys/types.h" 2 3 4
665
666
667
668 typedef unsigned long int ulong;
669 typedef unsigned short int ushort;
670 typedef unsigned int uint;
671 # 195 "/usr/include/sys/types.h" 3 4
672 typedef int int8_t __attribute__ ((__mode__ (__QI__)));
673 typedef int int16_t __attribute__ ((__mode__ (__HI__)));
674 typedef int int32_t __attribute__ ((__mode__ (__SI__)));
675 typedef int int64_t __attribute__ ((__mode__ (__DI__)));
676
677
678 typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
679 typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
680 typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
681 typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
682
683 typedef int register_t __attribute__ ((__mode__ (__word__)));
684 # 220 "/usr/include/sys/types.h" 3 4
685 # 1 "/usr/include/sys/select.h" 1 3 4
686 # 31 "/usr/include/sys/select.h" 3 4
687 # 1 "/usr/include/bits/select.h" 1 3 4
688 # 32 "/usr/include/sys/select.h" 2 3 4
689
690
691 # 1 "/usr/include/bits/sigset.h" 1 3 4
692 # 24 "/usr/include/bits/sigset.h" 3 4
693 typedef int __sig_atomic_t;
694
695
696
697
698 typedef struct
699   {
700     unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
701   } __sigset_t;
702 # 35 "/usr/include/sys/select.h" 2 3 4
703
704
705
706 typedef __sigset_t sigset_t;
707
708
709
710
711
712 # 1 "/usr/include/time.h" 1 3 4
713 # 121 "/usr/include/time.h" 3 4
714 struct timespec
715   {
716     __time_t tv_sec;
717     long int tv_nsec;
718   };
719 # 45 "/usr/include/sys/select.h" 2 3 4
720
721 # 1 "/usr/include/bits/time.h" 1 3 4
722 # 69 "/usr/include/bits/time.h" 3 4
723 struct timeval
724   {
725     __time_t tv_sec;
726     __suseconds_t tv_usec;
727   };
728 # 47 "/usr/include/sys/select.h" 2 3 4
729 # 55 "/usr/include/sys/select.h" 3 4
730 typedef long int __fd_mask;
731 # 67 "/usr/include/sys/select.h" 3 4
732 typedef struct
733   {
734
735
736
737     __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
738
739
740
741
742
743   } fd_set;
744
745
746
747
748
749
750 typedef __fd_mask fd_mask;
751 # 99 "/usr/include/sys/select.h" 3 4
752
753 # 109 "/usr/include/sys/select.h" 3 4
754 extern int select (int __nfds, fd_set *__restrict __readfds,
755      fd_set *__restrict __writefds,
756      fd_set *__restrict __exceptfds,
757      struct timeval *__restrict __timeout);
758 # 121 "/usr/include/sys/select.h" 3 4
759 extern int pselect (int __nfds, fd_set *__restrict __readfds,
760       fd_set *__restrict __writefds,
761       fd_set *__restrict __exceptfds,
762       const struct timespec *__restrict __timeout,
763       const __sigset_t *__restrict __sigmask);
764
765
766
767 # 221 "/usr/include/sys/types.h" 2 3 4
768
769
770 # 1 "/usr/include/sys/sysmacros.h" 1 3 4
771 # 30 "/usr/include/sys/sysmacros.h" 3 4
772 __extension__
773 extern unsigned int gnu_dev_major (unsigned long long int __dev)
774      __attribute__ ((__nothrow__));
775 __extension__
776 extern unsigned int gnu_dev_minor (unsigned long long int __dev)
777      __attribute__ ((__nothrow__));
778 __extension__
779 extern unsigned long long int gnu_dev_makedev (unsigned int __major,
780             unsigned int __minor)
781      __attribute__ ((__nothrow__));
782
783
784 __extension__ extern __inline unsigned int
785 __attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
786 {
787   return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
788 }
789
790 __extension__ extern __inline unsigned int
791 __attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
792 {
793   return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
794 }
795
796 __extension__ extern __inline unsigned long long int
797 __attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
798 {
799   return ((__minor & 0xff) | ((__major & 0xfff) << 8)
800    | (((unsigned long long int) (__minor & ~0xff)) << 12)
801    | (((unsigned long long int) (__major & ~0xfff)) << 32));
802 }
803 # 224 "/usr/include/sys/types.h" 2 3 4
804
805
806
807
808 typedef __blksize_t blksize_t;
809 # 248 "/usr/include/sys/types.h" 3 4
810 typedef __blkcnt64_t blkcnt_t;
811
812
813
814 typedef __fsblkcnt64_t fsblkcnt_t;
815
816
817
818 typedef __fsfilcnt64_t fsfilcnt_t;
819
820
821
822
823
824 typedef __blkcnt64_t blkcnt64_t;
825 typedef __fsblkcnt64_t fsblkcnt64_t;
826 typedef __fsfilcnt64_t fsfilcnt64_t;
827
828
829
830
831
832 # 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
833 # 23 "/usr/include/bits/pthreadtypes.h" 3 4
834 # 1 "/usr/include/bits/wordsize.h" 1 3 4
835 # 24 "/usr/include/bits/pthreadtypes.h" 2 3 4
836 # 50 "/usr/include/bits/pthreadtypes.h" 3 4
837 typedef unsigned long int pthread_t;
838
839
840 typedef union
841 {
842   char __size[36];
843   long int __align;
844 } pthread_attr_t;
845 # 67 "/usr/include/bits/pthreadtypes.h" 3 4
846 typedef struct __pthread_internal_slist
847 {
848   struct __pthread_internal_slist *__next;
849 } __pthread_slist_t;
850
851
852
853
854
855 typedef union
856 {
857   struct __pthread_mutex_s
858   {
859     int __lock;
860     unsigned int __count;
861     int __owner;
862
863
864
865
866
867     int __kind;
868
869
870
871
872
873     unsigned int __nusers;
874     __extension__ union
875     {
876       int __spins;
877       __pthread_slist_t __list;
878     };
879
880   } __data;
881   char __size[24];
882   long int __align;
883 } pthread_mutex_t;
884
885 typedef union
886 {
887   char __size[4];
888   int __align;
889 } pthread_mutexattr_t;
890
891
892
893
894 typedef union
895 {
896   struct
897   {
898     int __lock;
899     unsigned int __futex;
900     __extension__ unsigned long long int __total_seq;
901     __extension__ unsigned long long int __wakeup_seq;
902     __extension__ unsigned long long int __woken_seq;
903     void *__mutex;
904     unsigned int __nwaiters;
905     unsigned int __broadcast_seq;
906   } __data;
907   char __size[48];
908   __extension__ long long int __align;
909 } pthread_cond_t;
910
911 typedef union
912 {
913   char __size[4];
914   int __align;
915 } pthread_condattr_t;
916
917
918
919 typedef unsigned int pthread_key_t;
920
921
922
923 typedef int pthread_once_t;
924
925
926
927
928
929 typedef union
930 {
931 # 170 "/usr/include/bits/pthreadtypes.h" 3 4
932   struct
933   {
934     int __lock;
935     unsigned int __nr_readers;
936     unsigned int __readers_wakeup;
937     unsigned int __writer_wakeup;
938     unsigned int __nr_readers_queued;
939     unsigned int __nr_writers_queued;
940
941
942     unsigned char __flags;
943     unsigned char __shared;
944     unsigned char __pad1;
945     unsigned char __pad2;
946     int __writer;
947   } __data;
948
949   char __size[32];
950   long int __align;
951 } pthread_rwlock_t;
952
953 typedef union
954 {
955   char __size[8];
956   long int __align;
957 } pthread_rwlockattr_t;
958
959
960
961
962
963 typedef volatile int pthread_spinlock_t;
964
965
966
967
968 typedef union
969 {
970   char __size[20];
971   long int __align;
972 } pthread_barrier_t;
973
974 typedef union
975 {
976   char __size[4];
977   int __align;
978 } pthread_barrierattr_t;
979 # 271 "/usr/include/sys/types.h" 2 3 4
980
981
982
983 # 321 "/usr/include/stdlib.h" 2 3 4
984
985
986
987
988
989
990 extern long int random (void) __attribute__ ((__nothrow__));
991
992
993 extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
994
995
996
997
998
999 extern char *initstate (unsigned int __seed, char *__statebuf,
1000    size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
1001
1002
1003
1004 extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1005
1006
1007
1008
1009
1010
1011
1012 struct random_data
1013   {
1014     int32_t *fptr;
1015     int32_t *rptr;
1016     int32_t *state;
1017     int rand_type;
1018     int rand_deg;
1019     int rand_sep;
1020     int32_t *end_ptr;
1021   };
1022
1023 extern int random_r (struct random_data *__restrict __buf,
1024        int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1025
1026 extern int srandom_r (unsigned int __seed, struct random_data *__buf)
1027      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
1028
1029 extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
1030    size_t __statelen,
1031    struct random_data *__restrict __buf)
1032      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
1033
1034 extern int setstate_r (char *__restrict __statebuf,
1035          struct random_data *__restrict __buf)
1036      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1037
1038
1039
1040
1041
1042
1043 extern int rand (void) __attribute__ ((__nothrow__));
1044
1045 extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
1046
1047
1048
1049
1050 extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
1051
1052
1053
1054
1055
1056
1057
1058 extern double drand48 (void) __attribute__ ((__nothrow__));
1059 extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1060
1061
1062 extern long int lrand48 (void) __attribute__ ((__nothrow__));
1063 extern long int nrand48 (unsigned short int __xsubi[3])
1064      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1065
1066
1067 extern long int mrand48 (void) __attribute__ ((__nothrow__));
1068 extern long int jrand48 (unsigned short int __xsubi[3])
1069      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1070
1071
1072 extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
1073 extern unsigned short int *seed48 (unsigned short int __seed16v[3])
1074      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1075 extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1076
1077
1078
1079
1080
1081 struct drand48_data
1082   {
1083     unsigned short int __x[3];
1084     unsigned short int __old_x[3];
1085     unsigned short int __c;
1086     unsigned short int __init;
1087     unsigned long long int __a;
1088   };
1089
1090
1091 extern int drand48_r (struct drand48_data *__restrict __buffer,
1092         double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1093 extern int erand48_r (unsigned short int __xsubi[3],
1094         struct drand48_data *__restrict __buffer,
1095         double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1096
1097
1098 extern int lrand48_r (struct drand48_data *__restrict __buffer,
1099         long int *__restrict __result)
1100      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1101 extern int nrand48_r (unsigned short int __xsubi[3],
1102         struct drand48_data *__restrict __buffer,
1103         long int *__restrict __result)
1104      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1105
1106
1107 extern int mrand48_r (struct drand48_data *__restrict __buffer,
1108         long int *__restrict __result)
1109      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1110 extern int jrand48_r (unsigned short int __xsubi[3],
1111         struct drand48_data *__restrict __buffer,
1112         long int *__restrict __result)
1113      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1114
1115
1116 extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
1117      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
1118
1119 extern int seed48_r (unsigned short int __seed16v[3],
1120        struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1121
1122 extern int lcong48_r (unsigned short int __param[7],
1123         struct drand48_data *__buffer)
1124      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134 extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
1135
1136 extern void *calloc (size_t __nmemb, size_t __size)
1137      __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148 extern void *realloc (void *__ptr, size_t __size)
1149      __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
1150
1151 extern void free (void *__ptr) __attribute__ ((__nothrow__));
1152
1153
1154
1155
1156 extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
1157
1158
1159
1160 # 1 "/usr/include/alloca.h" 1 3 4
1161 # 25 "/usr/include/alloca.h" 3 4
1162 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
1163 # 26 "/usr/include/alloca.h" 2 3 4
1164
1165
1166
1167
1168
1169
1170
1171 extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
1172
1173
1174
1175
1176
1177
1178 # 498 "/usr/include/stdlib.h" 2 3 4
1179
1180
1181
1182
1183 extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
1184
1185
1186
1187
1188 extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
1189      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1190
1191
1192
1193
1194 extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
1195
1196
1197
1198 extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1199
1200
1201
1202
1203
1204 extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
1205      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1206
1207
1208
1209
1210
1211
1212 extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
1213
1214
1215
1216
1217
1218
1219 extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
1220
1221
1222
1223
1224
1225
1226 extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1227
1228
1229
1230
1231 extern char *__secure_getenv (__const char *__name)
1232      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1233
1234
1235
1236
1237
1238 extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1239
1240
1241
1242
1243
1244 extern int setenv (__const char *__name, __const char *__value, int __replace)
1245      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
1246
1247
1248 extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
1249
1250
1251
1252
1253
1254
1255 extern int clearenv (void) __attribute__ ((__nothrow__));
1256 # 583 "/usr/include/stdlib.h" 3 4
1257 extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1258 # 597 "/usr/include/stdlib.h" 3 4
1259 extern int mkstemp (char *__template) __asm__ ("" "mkstemp64")
1260      __attribute__ ((__nonnull__ (1))) ;
1261
1262
1263
1264
1265
1266 extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
1267 # 614 "/usr/include/stdlib.h" 3 4
1268 extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1269 # 628 "/usr/include/stdlib.h" 3 4
1270 extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64")
1271      __attribute__ ((__nonnull__ (1))) ;
1272
1273
1274
1275
1276
1277 extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287 extern int system (__const char *__command) ;
1288
1289
1290
1291
1292
1293
1294 extern char *canonicalize_file_name (__const char *__name)
1295      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1296 # 662 "/usr/include/stdlib.h" 3 4
1297 extern char *realpath (__const char *__restrict __name,
1298          char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
1299
1300
1301
1302
1303
1304
1305 typedef int (*__compar_fn_t) (__const void *, __const void *);
1306
1307
1308 typedef __compar_fn_t comparison_fn_t;
1309
1310
1311
1312
1313
1314
1315 extern void *bsearch (__const void *__key, __const void *__base,
1316         size_t __nmemb, size_t __size, __compar_fn_t __compar)
1317      __attribute__ ((__nonnull__ (1, 2, 5))) ;
1318
1319
1320
1321 extern void qsort (void *__base, size_t __nmemb, size_t __size,
1322      __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
1323
1324
1325
1326 extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
1327 extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
1328
1329
1330
1331 __extension__ extern long long int llabs (long long int __x)
1332      __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
1333
1334
1335
1336
1337
1338
1339
1340 extern div_t div (int __numer, int __denom)
1341      __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
1342 extern ldiv_t ldiv (long int __numer, long int __denom)
1343      __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
1344
1345
1346
1347
1348 __extension__ extern lldiv_t lldiv (long long int __numer,
1349         long long int __denom)
1350      __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
1351
1352 # 727 "/usr/include/stdlib.h" 3 4
1353 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
1354      int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
1355
1356
1357
1358
1359 extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
1360      int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
1361
1362
1363
1364
1365 extern char *gcvt (double __value, int __ndigit, char *__buf)
1366      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
1367
1368
1369
1370
1371 extern char *qecvt (long double __value, int __ndigit,
1372       int *__restrict __decpt, int *__restrict __sign)
1373      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
1374 extern char *qfcvt (long double __value, int __ndigit,
1375       int *__restrict __decpt, int *__restrict __sign)
1376      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
1377 extern char *qgcvt (long double __value, int __ndigit, char *__buf)
1378      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
1379
1380
1381
1382
1383 extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
1384      int *__restrict __sign, char *__restrict __buf,
1385      size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
1386 extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
1387      int *__restrict __sign, char *__restrict __buf,
1388      size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
1389
1390 extern int qecvt_r (long double __value, int __ndigit,
1391       int *__restrict __decpt, int *__restrict __sign,
1392       char *__restrict __buf, size_t __len)
1393      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
1394 extern int qfcvt_r (long double __value, int __ndigit,
1395       int *__restrict __decpt, int *__restrict __sign,
1396       char *__restrict __buf, size_t __len)
1397      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
1398
1399
1400
1401
1402
1403
1404
1405 extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
1406
1407
1408 extern int mbtowc (wchar_t *__restrict __pwc,
1409      __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
1410
1411
1412 extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
1413
1414
1415
1416 extern size_t mbstowcs (wchar_t *__restrict __pwcs,
1417    __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
1418
1419 extern size_t wcstombs (char *__restrict __s,
1420    __const wchar_t *__restrict __pwcs, size_t __n)
1421      __attribute__ ((__nothrow__));
1422
1423
1424
1425
1426
1427
1428
1429
1430 extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1431 # 815 "/usr/include/stdlib.h" 3 4
1432 extern int getsubopt (char **__restrict __optionp,
1433         char *__const *__restrict __tokens,
1434         char **__restrict __valuep)
1435      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;
1436
1437
1438
1439
1440
1441 extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1442
1443
1444
1445
1446
1447
1448
1449 extern int posix_openpt (int __oflag) ;
1450
1451
1452
1453
1454
1455
1456
1457 extern int grantpt (int __fd) __attribute__ ((__nothrow__));
1458
1459
1460
1461 extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
1462
1463
1464
1465
1466 extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ;
1467
1468
1469
1470
1471
1472
1473 extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
1474      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
1475
1476
1477 extern int getpt (void);
1478
1479
1480
1481
1482
1483
1484 extern int getloadavg (double __loadavg[], int __nelem)
1485      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1486 # 883 "/usr/include/stdlib.h" 3 4
1487
1488 # 51 "./include/ruby/ruby.h" 2
1489
1490
1491
1492 # 1 "/usr/include/string.h" 1 3 4
1493 # 28 "/usr/include/string.h" 3 4
1494
1495
1496
1497
1498
1499 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
1500 # 34 "/usr/include/string.h" 2 3 4
1501
1502
1503
1504
1505 extern void *memcpy (void *__restrict __dest,
1506        __const void *__restrict __src, size_t __n)
1507      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1508
1509
1510 extern void *memmove (void *__dest, __const void *__src, size_t __n)
1511      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1512
1513
1514
1515
1516
1517
1518 extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
1519         int __c, size_t __n)
1520      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1521
1522
1523
1524
1525
1526 extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1527
1528
1529 extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
1530      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1531
1532
1533 extern void *memchr (__const void *__s, int __c, size_t __n)
1534       __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1535
1536
1537
1538
1539
1540 extern void *rawmemchr (__const void *__s, int __c)
1541      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1542
1543
1544 extern void *memrchr (__const void *__s, int __c, size_t __n)
1545       __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1546
1547
1548
1549
1550
1551 extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
1552      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1553
1554 extern char *strncpy (char *__restrict __dest,
1555         __const char *__restrict __src, size_t __n)
1556      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1557
1558
1559 extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
1560      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1561
1562 extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
1563         size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1564
1565
1566 extern int strcmp (__const char *__s1, __const char *__s2)
1567      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1568
1569 extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
1570      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1571
1572
1573 extern int strcoll (__const char *__s1, __const char *__s2)
1574      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1575
1576 extern size_t strxfrm (char *__restrict __dest,
1577          __const char *__restrict __src, size_t __n)
1578      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
1579
1580 # 121 "/usr/include/string.h" 3 4
1581 extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
1582      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
1583
1584 extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
1585     __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
1586
1587
1588
1589
1590 extern char *strdup (__const char *__s)
1591      __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
1592
1593
1594
1595
1596
1597
1598 extern char *strndup (__const char *__string, size_t __n)
1599      __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
1600 # 165 "/usr/include/string.h" 3 4
1601
1602
1603 extern char *strchr (__const char *__s, int __c)
1604      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1605
1606 extern char *strrchr (__const char *__s, int __c)
1607      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1608
1609
1610
1611
1612
1613 extern char *strchrnul (__const char *__s, int __c)
1614      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1615
1616
1617
1618
1619
1620 extern size_t strcspn (__const char *__s, __const char *__reject)
1621      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1622
1623
1624 extern size_t strspn (__const char *__s, __const char *__accept)
1625      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1626
1627 extern char *strpbrk (__const char *__s, __const char *__accept)
1628      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1629
1630 extern char *strstr (__const char *__haystack, __const char *__needle)
1631      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1632
1633
1634
1635 extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
1636      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
1637
1638
1639
1640
1641 extern char *__strtok_r (char *__restrict __s,
1642     __const char *__restrict __delim,
1643     char **__restrict __save_ptr)
1644      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
1645
1646 extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
1647          char **__restrict __save_ptr)
1648      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
1649
1650
1651
1652
1653 extern char *strcasestr (__const char *__haystack, __const char *__needle)
1654      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1655
1656
1657
1658
1659
1660
1661 extern void *memmem (__const void *__haystack, size_t __haystacklen,
1662        __const void *__needle, size_t __needlelen)
1663      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
1664
1665
1666
1667 extern void *__mempcpy (void *__restrict __dest,
1668    __const void *__restrict __src, size_t __n)
1669      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1670 extern void *mempcpy (void *__restrict __dest,
1671         __const void *__restrict __src, size_t __n)
1672      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1673
1674
1675
1676
1677
1678 extern size_t strlen (__const char *__s)
1679      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1680
1681
1682
1683
1684
1685 extern size_t strnlen (__const char *__string, size_t __maxlen)
1686      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1687
1688
1689
1690
1691
1692 extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
1693
1694 # 281 "/usr/include/string.h" 3 4
1695 extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
1696      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
1697
1698
1699
1700
1701
1702 extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));
1703
1704
1705
1706
1707
1708 extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1709
1710
1711
1712 extern void bcopy (__const void *__src, void *__dest, size_t __n)
1713      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1714
1715
1716 extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1717
1718
1719 extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
1720      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1721
1722
1723 extern char *index (__const char *__s, int __c)
1724      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1725
1726
1727 extern char *rindex (__const char *__s, int __c)
1728      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1729
1730
1731
1732 extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
1733
1734
1735
1736
1737 extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
1738
1739 __extension__ extern int ffsll (long long int __ll)
1740      __attribute__ ((__nothrow__)) __attribute__ ((__const__));
1741
1742
1743
1744
1745 extern int strcasecmp (__const char *__s1, __const char *__s2)
1746      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1747
1748
1749 extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
1750      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1751
1752
1753
1754
1755
1756 extern int strcasecmp_l (__const char *__s1, __const char *__s2,
1757     __locale_t __loc)
1758      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
1759
1760 extern int strncasecmp_l (__const char *__s1, __const char *__s2,
1761      size_t __n, __locale_t __loc)
1762      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
1763
1764
1765
1766
1767
1768 extern char *strsep (char **__restrict __stringp,
1769        __const char *__restrict __delim)
1770      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1771
1772
1773
1774
1775 extern int strverscmp (__const char *__s1, __const char *__s2)
1776      __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1777
1778
1779 extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
1780
1781
1782 extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
1783      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1784 extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
1785      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1786
1787
1788
1789 extern char *__stpncpy (char *__restrict __dest,
1790    __const char *__restrict __src, size_t __n)
1791      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1792 extern char *stpncpy (char *__restrict __dest,
1793         __const char *__restrict __src, size_t __n)
1794      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
1795
1796
1797 extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1798
1799
1800 extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1801
1802
1803
1804
1805
1806
1807 extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1808 # 420 "/usr/include/string.h" 3 4
1809 # 1 "/usr/include/bits/string.h" 1 3 4
1810 # 421 "/usr/include/string.h" 2 3 4
1811
1812
1813 # 1 "/usr/include/bits/string2.h" 1 3 4
1814 # 394 "/usr/include/bits/string2.h" 3 4
1815 extern void *__rawmemchr (const void *__s, int __c);
1816 # 969 "/usr/include/bits/string2.h" 3 4
1817 extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
1818 extern __inline size_t
1819 __strcspn_c1 (__const char *__s, int __reject)
1820 {
1821   register size_t __result = 0;
1822   while (__s[__result] != '\0' && __s[__result] != __reject)
1823     ++__result;
1824   return __result;
1825 }
1826
1827 extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
1828          int __reject2);
1829 extern __inline size_t
1830 __strcspn_c2 (__const char *__s, int __reject1, int __reject2)
1831 {
1832   register size_t __result = 0;
1833   while (__s[__result] != '\0' && __s[__result] != __reject1
1834   && __s[__result] != __reject2)
1835     ++__result;
1836   return __result;
1837 }
1838
1839 extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
1840          int __reject2, int __reject3);
1841 extern __inline size_t
1842 __strcspn_c3 (__const char *__s, int __reject1, int __reject2,
1843        int __reject3)
1844 {
1845   register size_t __result = 0;
1846   while (__s[__result] != '\0' && __s[__result] != __reject1
1847   && __s[__result] != __reject2 && __s[__result] != __reject3)
1848     ++__result;
1849   return __result;
1850 }
1851 # 1045 "/usr/include/bits/string2.h" 3 4
1852 extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
1853 extern __inline size_t
1854 __strspn_c1 (__const char *__s, int __accept)
1855 {
1856   register size_t __result = 0;
1857
1858   while (__s[__result] == __accept)
1859     ++__result;
1860   return __result;
1861 }
1862
1863 extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
1864         int __accept2);
1865 extern __inline size_t
1866 __strspn_c2 (__const char *__s, int __accept1, int __accept2)
1867 {
1868   register size_t __result = 0;
1869
1870   while (__s[__result] == __accept1 || __s[__result] == __accept2)
1871     ++__result;
1872   return __result;
1873 }
1874
1875 extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
1876         int __accept2, int __accept3);
1877 extern __inline size_t
1878 __strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
1879 {
1880   register size_t __result = 0;
1881
1882   while (__s[__result] == __accept1 || __s[__result] == __accept2
1883   || __s[__result] == __accept3)
1884     ++__result;
1885   return __result;
1886 }
1887 # 1121 "/usr/include/bits/string2.h" 3 4
1888 extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
1889          int __accept2);
1890 extern __inline char *
1891 __strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
1892 {
1893
1894   while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
1895     ++__s;
1896   return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
1897 }
1898
1899 extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
1900          int __accept2, int __accept3);
1901 extern __inline char *
1902 __strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
1903        int __accept3)
1904 {
1905
1906   while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
1907   && *__s != __accept3)
1908     ++__s;
1909   return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
1910 }
1911 # 1173 "/usr/include/bits/string2.h" 3 4
1912 extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
1913 extern __inline char *
1914 __strtok_r_1c (char *__s, char __sep, char **__nextp)
1915 {
1916   char *__result;
1917   if (__s == ((void *)0))
1918     __s = *__nextp;
1919   while (*__s == __sep)
1920     ++__s;
1921   __result = ((void *)0);
1922   if (*__s != '\0')
1923     {
1924       __result = __s++;
1925       while (*__s != '\0')
1926  if (*__s++ == __sep)
1927    {
1928      __s[-1] = '\0';
1929      break;
1930    }
1931       *__nextp = __s;
1932     }
1933   return __result;
1934 }
1935 # 1205 "/usr/include/bits/string2.h" 3 4
1936 extern char *__strsep_g (char **__stringp, __const char *__delim);
1937 # 1223 "/usr/include/bits/string2.h" 3 4
1938 extern __inline char *__strsep_1c (char **__s, char __reject);
1939 extern __inline char *
1940 __strsep_1c (char **__s, char __reject)
1941 {
1942   register char *__retval = *__s;
1943   if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
1944     *(*__s)++ = '\0';
1945   return __retval;
1946 }
1947
1948 extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
1949 extern __inline char *
1950 __strsep_2c (char **__s, char __reject1, char __reject2)
1951 {
1952   register char *__retval = *__s;
1953   if (__retval != ((void *)0))
1954     {
1955       register char *__cp = __retval;
1956       while (1)
1957  {
1958    if (*__cp == '\0')
1959      {
1960        __cp = ((void *)0);
1961    break;
1962      }
1963    if (*__cp == __reject1 || *__cp == __reject2)
1964      {
1965        *__cp++ = '\0';
1966        break;
1967      }
1968    ++__cp;
1969  }
1970       *__s = __cp;
1971     }
1972   return __retval;
1973 }
1974
1975 extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
1976        char __reject3);
1977 extern __inline char *
1978 __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
1979 {
1980   register char *__retval = *__s;
1981   if (__retval != ((void *)0))
1982     {
1983       register char *__cp = __retval;
1984       while (1)
1985  {
1986    if (*__cp == '\0')
1987      {
1988        __cp = ((void *)0);
1989    break;
1990      }
1991    if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
1992      {
1993        *__cp++ = '\0';
1994        break;
1995      }
1996    ++__cp;
1997  }
1998       *__s = __cp;
1999     }
2000   return __retval;
2001 }
2002 # 1304 "/usr/include/bits/string2.h" 3 4
2003 extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
2004 # 1323 "/usr/include/bits/string2.h" 3 4
2005 extern char *__strndup (__const char *__string, size_t __n)
2006      __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
2007 # 424 "/usr/include/string.h" 2 3 4
2008 # 432 "/usr/include/string.h" 3 4
2009
2010 # 55 "./include/ruby/ruby.h" 2
2011 # 64 "./include/ruby/ruby.h"
2012 # 1 "/usr/include/inttypes.h" 1 3 4
2013 # 28 "/usr/include/inttypes.h" 3 4
2014 # 1 "/usr/include/stdint.h" 1 3 4
2015 # 27 "/usr/include/stdint.h" 3 4
2016 # 1 "/usr/include/bits/wchar.h" 1 3 4
2017 # 28 "/usr/include/stdint.h" 2 3 4
2018 # 1 "/usr/include/bits/wordsize.h" 1 3 4
2019 # 29 "/usr/include/stdint.h" 2 3 4
2020 # 49 "/usr/include/stdint.h" 3 4
2021 typedef unsigned char uint8_t;
2022 typedef unsigned short int uint16_t;
2023
2024 typedef unsigned int uint32_t;
2025
2026
2027
2028
2029
2030 __extension__
2031 typedef unsigned long long int uint64_t;
2032
2033
2034
2035
2036
2037
2038 typedef signed char int_least8_t;
2039 typedef short int int_least16_t;
2040 typedef int int_least32_t;
2041
2042
2043
2044 __extension__
2045 typedef long long int int_least64_t;
2046
2047
2048
2049 typedef unsigned char uint_least8_t;
2050 typedef unsigned short int uint_least16_t;
2051 typedef unsigned int uint_least32_t;
2052
2053
2054
2055 __extension__
2056 typedef unsigned long long int uint_least64_t;
2057
2058
2059
2060
2061
2062
2063 typedef signed char int_fast8_t;
2064
2065
2066
2067
2068
2069 typedef int int_fast16_t;
2070 typedef int int_fast32_t;
2071 __extension__
2072 typedef long long int int_fast64_t;
2073
2074
2075
2076 typedef unsigned char uint_fast8_t;
2077
2078
2079
2080
2081
2082 typedef unsigned int uint_fast16_t;
2083 typedef unsigned int uint_fast32_t;
2084 __extension__
2085 typedef unsigned long long int uint_fast64_t;
2086 # 126 "/usr/include/stdint.h" 3 4
2087 typedef int intptr_t;
2088
2089
2090 typedef unsigned int uintptr_t;
2091 # 138 "/usr/include/stdint.h" 3 4
2092 __extension__
2093 typedef long long int intmax_t;
2094 __extension__
2095 typedef unsigned long long int uintmax_t;
2096 # 29 "/usr/include/inttypes.h" 2 3 4
2097
2098
2099
2100
2101
2102
2103 typedef int __gwchar_t;
2104 # 274 "/usr/include/inttypes.h" 3 4
2105
2106 # 288 "/usr/include/inttypes.h" 3 4
2107 typedef struct
2108   {
2109     long long int quot;
2110     long long int rem;
2111   } imaxdiv_t;
2112
2113
2114
2115
2116
2117 extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
2118
2119
2120 extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
2121       __attribute__ ((__nothrow__)) __attribute__ ((__const__));
2122
2123
2124 extern intmax_t strtoimax (__const char *__restrict __nptr,
2125       char **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
2126
2127
2128 extern uintmax_t strtoumax (__const char *__restrict __nptr,
2129        char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__));
2130
2131
2132 extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
2133       __gwchar_t **__restrict __endptr, int __base)
2134      __attribute__ ((__nothrow__));
2135
2136
2137 extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
2138        __gwchar_t ** __restrict __endptr, int __base)
2139      __attribute__ ((__nothrow__));
2140 # 379 "/usr/include/inttypes.h" 3 4
2141 __extension__
2142 extern long long int __strtoll_internal (__const char *__restrict __nptr,
2143       char **__restrict __endptr,
2144       int __base, int __group)
2145   __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2146
2147 extern __inline intmax_t
2148 __attribute__ ((__nothrow__)) strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)
2149
2150 {
2151   return __strtoll_internal (nptr, endptr, base, 0);
2152 }
2153
2154 __extension__
2155 extern unsigned long long int __strtoull_internal (__const char *
2156          __restrict __nptr,
2157          char **
2158          __restrict __endptr,
2159          int __base,
2160          int __group)
2161   __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2162
2163 extern __inline uintmax_t
2164 __attribute__ ((__nothrow__)) strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)
2165
2166 {
2167   return __strtoull_internal (nptr, endptr, base, 0);
2168 }
2169
2170 __extension__
2171 extern long long int __wcstoll_internal (__const __gwchar_t *
2172       __restrict __nptr,
2173       __gwchar_t **__restrict __endptr,
2174       int __base, int __group)
2175   __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2176
2177 extern __inline intmax_t
2178 __attribute__ ((__nothrow__)) wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
2179
2180 {
2181   return __wcstoll_internal (nptr, endptr, base, 0);
2182 }
2183
2184
2185 __extension__
2186 extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
2187          __restrict __nptr,
2188          __gwchar_t **
2189          __restrict __endptr,
2190          int __base,
2191          int __group)
2192   __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
2193
2194 extern __inline uintmax_t
2195 __attribute__ ((__nothrow__)) wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
2196
2197 {
2198   return __wcstoull_internal (nptr, endptr, base, 0);
2199 }
2200
2201
2202
2203
2204
2205 # 65 "./include/ruby/ruby.h" 2
2206
2207
2208 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
2209 # 152 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 3 4
2210 typedef int ptrdiff_t;
2211 # 68 "./include/ruby/ruby.h" 2
2212 # 1 "/usr/include/stdio.h" 1 3 4
2213 # 30 "/usr/include/stdio.h" 3 4
2214
2215
2216
2217
2218 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
2219 # 35 "/usr/include/stdio.h" 2 3 4
2220 # 45 "/usr/include/stdio.h" 3 4
2221 struct _IO_FILE;
2222
2223
2224
2225 typedef struct _IO_FILE FILE;
2226
2227
2228
2229
2230
2231 # 65 "/usr/include/stdio.h" 3 4
2232 typedef struct _IO_FILE __FILE;
2233 # 75 "/usr/include/stdio.h" 3 4
2234 # 1 "/usr/include/libio.h" 1 3 4
2235 # 32 "/usr/include/libio.h" 3 4
2236 # 1 "/usr/include/_G_config.h" 1 3 4
2237 # 15 "/usr/include/_G_config.h" 3 4
2238 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
2239 # 16 "/usr/include/_G_config.h" 2 3 4
2240
2241
2242
2243
2244 # 1 "/usr/include/wchar.h" 1 3 4
2245 # 78 "/usr/include/wchar.h" 3 4
2246 typedef struct
2247 {
2248   int __count;
2249   union
2250   {
2251
2252     unsigned int __wch;
2253
2254
2255
2256     char __wchb[4];
2257   } __value;
2258 } __mbstate_t;
2259 # 21 "/usr/include/_G_config.h" 2 3 4
2260
2261 typedef struct
2262 {
2263   __off_t __pos;
2264   __mbstate_t __state;
2265 } _G_fpos_t;
2266 typedef struct
2267 {
2268   __off64_t __pos;
2269   __mbstate_t __state;
2270 } _G_fpos64_t;
2271 # 53 "/usr/include/_G_config.h" 3 4
2272 typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
2273 typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
2274 typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
2275 typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
2276 # 33 "/usr/include/libio.h" 2 3 4
2277 # 53 "/usr/include/libio.h" 3 4
2278 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stdarg.h" 1 3 4
2279 # 43 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stdarg.h" 3 4
2280 typedef __builtin_va_list __gnuc_va_list;
2281 # 54 "/usr/include/libio.h" 2 3 4
2282 # 170 "/usr/include/libio.h" 3 4
2283 struct _IO_jump_t; struct _IO_FILE;
2284 # 180 "/usr/include/libio.h" 3 4
2285 typedef void _IO_lock_t;
2286
2287
2288
2289
2290
2291 struct _IO_marker {
2292   struct _IO_marker *_next;
2293   struct _IO_FILE *_sbuf;
2294
2295
2296
2297   int _pos;
2298 # 203 "/usr/include/libio.h" 3 4
2299 };
2300
2301
2302 enum __codecvt_result
2303 {
2304   __codecvt_ok,
2305   __codecvt_partial,
2306   __codecvt_error,
2307   __codecvt_noconv
2308 };
2309 # 271 "/usr/include/libio.h" 3 4
2310 struct _IO_FILE {
2311   int _flags;
2312
2313
2314
2315
2316   char* _IO_read_ptr;
2317   char* _IO_read_end;
2318   char* _IO_read_base;
2319   char* _IO_write_base;
2320   char* _IO_write_ptr;
2321   char* _IO_write_end;
2322   char* _IO_buf_base;
2323   char* _IO_buf_end;
2324
2325   char *_IO_save_base;
2326   char *_IO_backup_base;
2327   char *_IO_save_end;
2328
2329   struct _IO_marker *_markers;
2330
2331   struct _IO_FILE *_chain;
2332
2333   int _fileno;
2334
2335
2336
2337   int _flags2;
2338
2339   __off_t _old_offset;
2340
2341
2342
2343   unsigned short _cur_column;
2344   signed char _vtable_offset;
2345   char _shortbuf[1];
2346
2347
2348
2349   _IO_lock_t *_lock;
2350 # 319 "/usr/include/libio.h" 3 4
2351   __off64_t _offset;
2352 # 328 "/usr/include/libio.h" 3 4
2353   void *__pad1;
2354   void *__pad2;
2355   void *__pad3;
2356   void *__pad4;
2357   size_t __pad5;
2358
2359   int _mode;
2360
2361   char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
2362
2363 };
2364
2365
2366 typedef struct _IO_FILE _IO_FILE;
2367
2368
2369 struct _IO_FILE_plus;
2370
2371 extern struct _IO_FILE_plus _IO_2_1_stdin_;
2372 extern struct _IO_FILE_plus _IO_2_1_stdout_;
2373 extern struct _IO_FILE_plus _IO_2_1_stderr_;
2374 # 364 "/usr/include/libio.h" 3 4
2375 typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
2376
2377
2378
2379
2380
2381
2382
2383 typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
2384      size_t __n);
2385
2386
2387
2388
2389
2390
2391
2392 typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
2393
2394
2395 typedef int __io_close_fn (void *__cookie);
2396
2397
2398
2399
2400 typedef __io_read_fn cookie_read_function_t;
2401 typedef __io_write_fn cookie_write_function_t;
2402 typedef __io_seek_fn cookie_seek_function_t;
2403 typedef __io_close_fn cookie_close_function_t;
2404
2405
2406 typedef struct
2407 {
2408   __io_read_fn *read;
2409   __io_write_fn *write;
2410   __io_seek_fn *seek;
2411   __io_close_fn *close;
2412 } _IO_cookie_io_functions_t;
2413 typedef _IO_cookie_io_functions_t cookie_io_functions_t;
2414
2415 struct _IO_cookie_file;
2416
2417
2418 extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
2419         void *__cookie, _IO_cookie_io_functions_t __fns);
2420
2421
2422
2423
2424
2425
2426
2427 extern int __underflow (_IO_FILE *);
2428 extern int __uflow (_IO_FILE *);
2429 extern int __overflow (_IO_FILE *, int);
2430 # 458 "/usr/include/libio.h" 3 4
2431 extern int _IO_getc (_IO_FILE *__fp);
2432 extern int _IO_putc (int __c, _IO_FILE *__fp);
2433 extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
2434 extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
2435
2436 extern int _IO_peekc_locked (_IO_FILE *__fp);
2437
2438
2439
2440
2441
2442 extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
2443 extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
2444 extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
2445 # 488 "/usr/include/libio.h" 3 4
2446 extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
2447    __gnuc_va_list, int *__restrict);
2448 extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
2449     __gnuc_va_list);
2450 extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
2451 extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
2452
2453 extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
2454 extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
2455
2456 extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
2457 # 76 "/usr/include/stdio.h" 2 3 4
2458
2459
2460
2461
2462 typedef __gnuc_va_list va_list;
2463 # 89 "/usr/include/stdio.h" 3 4
2464
2465
2466
2467
2468 typedef _G_fpos64_t fpos_t;
2469
2470
2471
2472 typedef _G_fpos64_t fpos64_t;
2473 # 141 "/usr/include/stdio.h" 3 4
2474 # 1 "/usr/include/bits/stdio_lim.h" 1 3 4
2475 # 142 "/usr/include/stdio.h" 2 3 4
2476
2477
2478
2479 extern struct _IO_FILE *stdin;
2480 extern struct _IO_FILE *stdout;
2481 extern struct _IO_FILE *stderr;
2482
2483
2484
2485
2486
2487
2488
2489 extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
2490
2491 extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
2492
2493
2494
2495
2496 extern int renameat (int __oldfd, __const char *__old, int __newfd,
2497        __const char *__new) __attribute__ ((__nothrow__));
2498
2499
2500
2501 # 175 "/usr/include/stdio.h" 3 4
2502 extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") ;
2503
2504
2505
2506
2507
2508
2509 extern FILE *tmpfile64 (void) ;
2510
2511
2512
2513 extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
2514
2515
2516
2517
2518
2519 extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
2520 # 204 "/usr/include/stdio.h" 3 4
2521 extern char *tempnam (__const char *__dir, __const char *__pfx)
2522      __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
2523
2524
2525
2526
2527
2528
2529
2530
2531 extern int fclose (FILE *__stream);
2532
2533
2534
2535
2536 extern int fflush (FILE *__stream);
2537
2538 # 229 "/usr/include/stdio.h" 3 4
2539 extern int fflush_unlocked (FILE *__stream);
2540 # 239 "/usr/include/stdio.h" 3 4
2541 extern int fcloseall (void);
2542
2543
2544
2545
2546 # 260 "/usr/include/stdio.h" 3 4
2547 extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) __asm__ ("" "fopen64")
2548
2549   ;
2550 extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64")
2551
2552
2553   ;
2554
2555
2556
2557
2558
2559
2560
2561 extern FILE *fopen64 (__const char *__restrict __filename,
2562         __const char *__restrict __modes) ;
2563 extern FILE *freopen64 (__const char *__restrict __filename,
2564    __const char *__restrict __modes,
2565    FILE *__restrict __stream) ;
2566
2567
2568
2569
2570 extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
2571
2572
2573
2574
2575
2576 extern FILE *fopencookie (void *__restrict __magic_cookie,
2577      __const char *__restrict __modes,
2578      _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) ;
2579
2580
2581 extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
2582   __attribute__ ((__nothrow__)) ;
2583
2584
2585
2586
2587 extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
2588
2589
2590
2591
2592
2593
2594 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
2595
2596
2597
2598 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
2599       int __modes, size_t __n) __attribute__ ((__nothrow__));
2600
2601
2602
2603
2604
2605 extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
2606          size_t __size) __attribute__ ((__nothrow__));
2607
2608
2609 extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
2610
2611
2612
2613
2614
2615
2616
2617
2618 extern int fprintf (FILE *__restrict __stream,
2619       __const char *__restrict __format, ...);
2620
2621
2622
2623
2624 extern int printf (__const char *__restrict __format, ...);
2625
2626 extern int sprintf (char *__restrict __s,
2627       __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
2628
2629
2630
2631
2632
2633 extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
2634        __gnuc_va_list __arg);
2635
2636
2637
2638
2639 extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
2640
2641 extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
2642        __gnuc_va_list __arg) __attribute__ ((__nothrow__));
2643
2644
2645
2646
2647
2648 extern int snprintf (char *__restrict __s, size_t __maxlen,
2649        __const char *__restrict __format, ...)
2650      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
2651
2652 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
2653         __const char *__restrict __format, __gnuc_va_list __arg)
2654      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
2655
2656
2657
2658
2659
2660
2661 extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
2662         __gnuc_va_list __arg)
2663      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
2664 extern int __asprintf (char **__restrict __ptr,
2665          __const char *__restrict __fmt, ...)
2666      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
2667 extern int asprintf (char **__restrict __ptr,
2668        __const char *__restrict __fmt, ...)
2669      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
2670
2671
2672
2673
2674
2675
2676
2677 extern int vdprintf (int __fd, __const char *__restrict __fmt,
2678        __gnuc_va_list __arg)
2679      __attribute__ ((__format__ (__printf__, 2, 0)));
2680 extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
2681      __attribute__ ((__format__ (__printf__, 2, 3)));
2682
2683
2684
2685
2686
2687
2688
2689
2690 extern int fscanf (FILE *__restrict __stream,
2691      __const char *__restrict __format, ...) ;
2692
2693
2694
2695
2696 extern int scanf (__const char *__restrict __format, ...) ;
2697
2698 extern int sscanf (__const char *__restrict __s,
2699      __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
2700 # 441 "/usr/include/stdio.h" 3 4
2701
2702
2703
2704
2705
2706
2707
2708
2709 extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
2710       __gnuc_va_list __arg)
2711      __attribute__ ((__format__ (__scanf__, 2, 0))) ;
2712
2713
2714
2715
2716
2717 extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
2718      __attribute__ ((__format__ (__scanf__, 1, 0))) ;
2719
2720
2721 extern int vsscanf (__const char *__restrict __s,
2722       __const char *__restrict __format, __gnuc_va_list __arg)
2723      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
2724 # 500 "/usr/include/stdio.h" 3 4
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734 extern int fgetc (FILE *__stream);
2735 extern int getc (FILE *__stream);
2736
2737
2738
2739
2740
2741 extern int getchar (void);
2742
2743 # 528 "/usr/include/stdio.h" 3 4
2744 extern int getc_unlocked (FILE *__stream);
2745 extern int getchar_unlocked (void);
2746 # 539 "/usr/include/stdio.h" 3 4
2747 extern int fgetc_unlocked (FILE *__stream);
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759 extern int fputc (int __c, FILE *__stream);
2760 extern int putc (int __c, FILE *__stream);
2761
2762
2763
2764
2765
2766 extern int putchar (int __c);
2767
2768 # 572 "/usr/include/stdio.h" 3 4
2769 extern int fputc_unlocked (int __c, FILE *__stream);
2770
2771
2772
2773
2774
2775
2776
2777 extern int putc_unlocked (int __c, FILE *__stream);
2778 extern int putchar_unlocked (int __c);
2779
2780
2781
2782
2783
2784
2785 extern int getw (FILE *__stream);
2786
2787
2788 extern int putw (int __w, FILE *__stream);
2789
2790
2791
2792
2793
2794
2795
2796
2797 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
2798      ;
2799
2800
2801
2802
2803
2804
2805 extern char *gets (char *__s) ;
2806
2807 # 618 "/usr/include/stdio.h" 3 4
2808 extern char *fgets_unlocked (char *__restrict __s, int __n,
2809         FILE *__restrict __stream) ;
2810 # 634 "/usr/include/stdio.h" 3 4
2811 extern __ssize_t __getdelim (char **__restrict __lineptr,
2812           size_t *__restrict __n, int __delimiter,
2813           FILE *__restrict __stream) ;
2814 extern __ssize_t getdelim (char **__restrict __lineptr,
2815         size_t *__restrict __n, int __delimiter,
2816         FILE *__restrict __stream) ;
2817
2818
2819
2820
2821
2822
2823
2824 extern __ssize_t getline (char **__restrict __lineptr,
2825        size_t *__restrict __n,
2826        FILE *__restrict __stream) ;
2827
2828
2829
2830
2831
2832
2833
2834
2835 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
2836
2837
2838
2839
2840
2841 extern int puts (__const char *__s);
2842
2843
2844
2845
2846
2847
2848 extern int ungetc (int __c, FILE *__stream);
2849
2850
2851
2852
2853
2854
2855 extern size_t fread (void *__restrict __ptr, size_t __size,
2856        size_t __n, FILE *__restrict __stream) ;
2857
2858
2859
2860
2861 extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
2862         size_t __n, FILE *__restrict __s) ;
2863
2864 # 695 "/usr/include/stdio.h" 3 4
2865 extern int fputs_unlocked (__const char *__restrict __s,
2866       FILE *__restrict __stream);
2867 # 706 "/usr/include/stdio.h" 3 4
2868 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
2869          size_t __n, FILE *__restrict __stream) ;
2870 extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
2871           size_t __n, FILE *__restrict __stream) ;
2872
2873
2874
2875
2876
2877
2878
2879
2880 extern int fseek (FILE *__stream, long int __off, int __whence);
2881
2882
2883
2884
2885 extern long int ftell (FILE *__stream) ;
2886
2887
2888
2889
2890 extern void rewind (FILE *__stream);
2891
2892 # 750 "/usr/include/stdio.h" 3 4
2893 extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64");
2894
2895
2896 extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64");
2897
2898
2899
2900
2901
2902
2903
2904
2905 # 775 "/usr/include/stdio.h" 3 4
2906 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64");
2907
2908 extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __asm__ ("" "fsetpos64");
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918 extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
2919 extern __off64_t ftello64 (FILE *__stream) ;
2920 extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
2921 extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
2922
2923
2924
2925
2926 extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
2927
2928 extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
2929
2930 extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
2931
2932
2933
2934
2935 extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
2936 extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
2937 extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
2938
2939
2940
2941
2942
2943
2944
2945
2946 extern void perror (__const char *__s);
2947
2948
2949
2950
2951
2952
2953 # 1 "/usr/include/bits/sys_errlist.h" 1 3 4
2954 # 27 "/usr/include/bits/sys_errlist.h" 3 4
2955 extern int sys_nerr;
2956 extern __const char *__const sys_errlist[];
2957
2958
2959 extern int _sys_nerr;
2960 extern __const char *__const _sys_errlist[];
2961 # 823 "/usr/include/stdio.h" 2 3 4
2962
2963
2964
2965
2966 extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
2967
2968
2969
2970
2971 extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
2972 # 842 "/usr/include/stdio.h" 3 4
2973 extern FILE *popen (__const char *__command, __const char *__modes) ;
2974
2975
2976
2977
2978
2979 extern int pclose (FILE *__stream);
2980
2981
2982
2983
2984
2985 extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
2986
2987
2988
2989
2990
2991 extern char *cuserid (char *__s);
2992
2993
2994
2995
2996 struct obstack;
2997
2998
2999 extern int obstack_printf (struct obstack *__restrict __obstack,
3000       __const char *__restrict __format, ...)
3001      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
3002 extern int obstack_vprintf (struct obstack *__restrict __obstack,
3003        __const char *__restrict __format,
3004        __gnuc_va_list __args)
3005      __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
3006
3007
3008
3009
3010
3011
3012
3013 extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
3014
3015
3016
3017 extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
3018
3019
3020 extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
3021 # 903 "/usr/include/stdio.h" 3 4
3022 # 1 "/usr/include/bits/stdio.h" 1 3 4
3023 # 36 "/usr/include/bits/stdio.h" 3 4
3024 extern __inline int
3025 vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
3026 {
3027   return vfprintf (stdout, __fmt, __arg);
3028 }
3029
3030
3031
3032 extern __inline int
3033 getchar (void)
3034 {
3035   return _IO_getc (stdin);
3036 }
3037
3038
3039
3040
3041 extern __inline int
3042 fgetc_unlocked (FILE *__fp)
3043 {
3044   return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
3045 }
3046
3047
3048
3049
3050
3051 extern __inline int
3052 getc_unlocked (FILE *__fp)
3053 {
3054   return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
3055 }
3056
3057
3058 extern __inline int
3059 getchar_unlocked (void)
3060 {
3061   return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
3062 }
3063
3064
3065
3066
3067 extern __inline int
3068 putchar (int __c)
3069 {
3070   return _IO_putc (__c, stdout);
3071 }
3072
3073
3074
3075
3076 extern __inline int
3077 fputc_unlocked (int __c, FILE *__stream)
3078 {
3079   return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
3080 }
3081
3082
3083
3084
3085
3086 extern __inline int
3087 putc_unlocked (int __c, FILE *__stream)
3088 {
3089   return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
3090 }
3091
3092
3093 extern __inline int
3094 putchar_unlocked (int __c)
3095 {
3096   return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
3097 }
3098
3099
3100
3101
3102
3103 extern __inline __ssize_t
3104 getline (char **__lineptr, size_t *__n, FILE *__stream)
3105 {
3106   return __getdelim (__lineptr, __n, '\n', __stream);
3107 }
3108
3109
3110
3111
3112
3113 extern __inline int
3114 __attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
3115 {
3116   return (((__stream)->_flags & 0x10) != 0);
3117 }
3118
3119
3120 extern __inline int
3121 __attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
3122 {
3123   return (((__stream)->_flags & 0x20) != 0);
3124 }
3125 # 904 "/usr/include/stdio.h" 2 3 4
3126 # 912 "/usr/include/stdio.h" 3 4
3127
3128 # 69 "./include/ruby/ruby.h" 2
3129
3130 # 1 "./include/ruby/defines.h" 1
3131 # 59 "./include/ruby/defines.h"
3132 void *ruby_xmalloc(size_t);
3133 void *ruby_xmalloc2(size_t,size_t);
3134 void *ruby_xcalloc(size_t,size_t);
3135 void *ruby_xrealloc(void*,size_t);
3136 void *ruby_xrealloc2(void*,size_t,size_t);
3137 void ruby_xfree(void*);
3138 # 71 "./include/ruby/ruby.h" 2
3139 # 81 "./include/ruby/ruby.h"
3140 typedef unsigned long VALUE;
3141 typedef unsigned long ID;
3142 # 132 "./include/ruby/ruby.h"
3143 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 1 3 4
3144 # 11 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 3 4
3145 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/syslimits.h" 1 3 4
3146
3147
3148
3149
3150
3151
3152 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 1 3 4
3153 # 122 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 3 4
3154 # 1 "/usr/include/limits.h" 1 3 4
3155 # 145 "/usr/include/limits.h" 3 4
3156 # 1 "/usr/include/bits/posix1_lim.h" 1 3 4
3157 # 153 "/usr/include/bits/posix1_lim.h" 3 4
3158 # 1 "/usr/include/bits/local_lim.h" 1 3 4
3159 # 36 "/usr/include/bits/local_lim.h" 3 4
3160 # 1 "/usr/include/linux/limits.h" 1 3 4
3161 # 37 "/usr/include/bits/local_lim.h" 2 3 4
3162 # 154 "/usr/include/bits/posix1_lim.h" 2 3 4
3163 # 146 "/usr/include/limits.h" 2 3 4
3164
3165
3166
3167 # 1 "/usr/include/bits/posix2_lim.h" 1 3 4
3168 # 150 "/usr/include/limits.h" 2 3 4
3169
3170
3171
3172 # 1 "/usr/include/bits/xopen_lim.h" 1 3 4
3173 # 34 "/usr/include/bits/xopen_lim.h" 3 4
3174 # 1 "/usr/include/bits/stdio_lim.h" 1 3 4
3175 # 35 "/usr/include/bits/xopen_lim.h" 2 3 4
3176 # 154 "/usr/include/limits.h" 2 3 4
3177 # 123 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 2 3 4
3178 # 8 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/syslimits.h" 2 3 4
3179 # 12 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 2 3 4
3180 # 133 "./include/ruby/ruby.h" 2
3181 # 182 "./include/ruby/ruby.h"
3182 VALUE rb_int2inum(long);
3183
3184
3185 VALUE rb_uint2inum(VALUE);
3186
3187
3188
3189
3190 VALUE rb_ll2inum(long long);
3191
3192 VALUE rb_ull2inum(unsigned long long);
3193 # 264 "./include/ruby/ruby.h"
3194 enum ruby_special_consts {
3195     RUBY_Qfalse = 0,
3196     RUBY_Qtrue = 2,
3197     RUBY_Qnil = 4,
3198     RUBY_Qundef = 6,
3199
3200     RUBY_IMMEDIATE_MASK = 0x03,
3201     RUBY_FIXNUM_FLAG = 0x01,
3202     RUBY_SYMBOL_FLAG = 0x0e,
3203     RUBY_SPECIAL_SHIFT = 8
3204 };
3205 # 289 "./include/ruby/ruby.h"
3206 enum ruby_value_type {
3207     RUBY_T_NONE = 0x00,
3208
3209     RUBY_T_OBJECT = 0x01,
3210     RUBY_T_CLASS = 0x02,
3211     RUBY_T_MODULE = 0x03,
3212     RUBY_T_FLOAT = 0x04,
3213     RUBY_T_STRING = 0x05,
3214     RUBY_T_REGEXP = 0x06,
3215     RUBY_T_ARRAY = 0x07,
3216     RUBY_T_HASH = 0x08,
3217     RUBY_T_STRUCT = 0x09,
3218     RUBY_T_BIGNUM = 0x0a,
3219     RUBY_T_FILE = 0x0b,
3220     RUBY_T_DATA = 0x0c,
3221     RUBY_T_MATCH = 0x0d,
3222     RUBY_T_COMPLEX = 0x0e,
3223     RUBY_T_RATIONAL = 0x0f,
3224
3225     RUBY_T_NIL = 0x11,
3226     RUBY_T_TRUE = 0x12,
3227     RUBY_T_FALSE = 0x13,
3228     RUBY_T_SYMBOL = 0x14,
3229     RUBY_T_FIXNUM = 0x15,
3230
3231     RUBY_T_UNDEF = 0x1b,
3232     RUBY_T_NODE = 0x1c,
3233     RUBY_T_ICLASS = 0x1d,
3234     RUBY_T_ZOMBIE = 0x1e,
3235
3236     RUBY_T_MASK = 0x1f
3237 };
3238 # 355 "./include/ruby/ruby.h"
3239 void rb_check_type(VALUE,int);
3240
3241
3242 VALUE rb_str_to_str(VALUE);
3243 VALUE rb_string_value(volatile VALUE*);
3244 char *rb_string_value_ptr(volatile VALUE*);
3245 char *rb_string_value_cstr(volatile VALUE*);
3246
3247
3248
3249
3250
3251 void rb_check_safe_obj(VALUE);
3252 void rb_check_safe_str(VALUE);
3253
3254
3255
3256
3257
3258
3259
3260 VALUE rb_str_export(VALUE);
3261
3262
3263
3264
3265 VALUE rb_str_export_locale(VALUE);
3266
3267 VALUE rb_get_path(VALUE);
3268
3269
3270 VALUE rb_get_path_no_checksafe(VALUE);
3271
3272
3273 void rb_secure(int);
3274 int rb_safe_level(void);
3275 void rb_set_safe_level(int);
3276 void rb_set_safe_level_force(int);
3277 void rb_secure_update(VALUE);
3278
3279 VALUE rb_errinfo(void);
3280 void rb_set_errinfo(VALUE);
3281
3282 long rb_num2long(VALUE);
3283 VALUE rb_num2ulong(VALUE);
3284 static inline long
3285 NUM2LONG(VALUE x)
3286 {
3287     return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2long(x);
3288 }
3289 # 427 "./include/ruby/ruby.h"
3290 long long rb_num2ll(VALUE);
3291 unsigned long long rb_num2ull(VALUE);
3292 static inline long long
3293 NUM2LL(VALUE x)
3294 {
3295     return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2ll(x);
3296 }
3297 # 451 "./include/ruby/ruby.h"
3298 double rb_num2dbl(VALUE);
3299
3300
3301 VALUE rb_uint2big(VALUE);
3302 VALUE rb_int2big(long);
3303
3304
3305
3306
3307
3308 static inline VALUE
3309 INT2NUM(int v)
3310 {
3311     if (!(((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1))))
3312  return rb_int2big(v);
3313     return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
3314 }
3315
3316 static inline VALUE
3317 UINT2NUM(unsigned int v)
3318 {
3319     if (!((v) < (2147483647L>>1)+1))
3320  return rb_uint2big(v);
3321     return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
3322 }
3323
3324
3325 static inline VALUE
3326 LONG2NUM(long v)
3327 {
3328     if ((((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1)))) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
3329     return rb_int2big(v);
3330 }
3331
3332 static inline VALUE
3333 ULONG2NUM(unsigned long v)
3334 {
3335     if (((v) < (2147483647L>>1)+1)) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
3336     return rb_uint2big(v);
3337 }
3338
3339
3340 char *rb_str2cstr(VALUE,long*);
3341
3342
3343
3344
3345
3346
3347
3348 VALUE rb_newobj(void);
3349 # 518 "./include/ruby/ruby.h"
3350 struct RBasic {
3351     VALUE flags;
3352     VALUE klass;
3353 };
3354
3355
3356 struct RObject {
3357     struct RBasic basic;
3358     union {
3359  struct {
3360      long numiv;
3361      VALUE *ivptr;
3362             struct st_table *iv_index_tbl;
3363  } heap;
3364  VALUE ary[3];
3365     } as;
3366 };
3367 # 549 "./include/ruby/ruby.h"
3368 typedef struct {
3369     VALUE super;
3370     struct st_table *iv_tbl;
3371 } rb_classext_t;
3372
3373 struct RClass {
3374     struct RBasic basic;
3375     rb_classext_t *ptr;
3376     struct st_table *m_tbl;
3377     struct st_table *iv_index_tbl;
3378 };
3379 # 568 "./include/ruby/ruby.h"
3380 struct RFloat {
3381     struct RBasic basic;
3382     double float_value;
3383 };
3384
3385
3386
3387
3388
3389
3390 struct RString {
3391     struct RBasic basic;
3392     union {
3393  struct {
3394      long len;
3395      char *ptr;
3396      union {
3397   long capa;
3398   VALUE shared;
3399      } aux;
3400  } heap;
3401  char ary[((sizeof(VALUE)*3)/sizeof(char)-1) + 1];
3402     } as;
3403 };
3404 # 607 "./include/ruby/ruby.h"
3405 struct RArray {
3406     struct RBasic basic;
3407     union {
3408  struct {
3409      long len;
3410      union {
3411   long capa;
3412   VALUE shared;
3413      } aux;
3414      VALUE *ptr;
3415  } heap;
3416  VALUE ary[3];
3417     } as;
3418 };
3419 # 635 "./include/ruby/ruby.h"
3420 struct RRegexp {
3421     struct RBasic basic;
3422     struct re_pattern_buffer *ptr;
3423     VALUE src;
3424     unsigned long usecnt;
3425 };
3426
3427
3428
3429
3430 struct RHash {
3431     struct RBasic basic;
3432     struct st_table *ntbl;
3433     int iter_lev;
3434     VALUE ifnone;
3435 };
3436
3437
3438
3439
3440
3441
3442
3443 struct RFile {
3444     struct RBasic basic;
3445     struct rb_io_t *fptr;
3446 };
3447
3448 struct RRational {
3449     struct RBasic basic;
3450     VALUE num;
3451     VALUE den;
3452 };
3453
3454 struct RComplex {
3455     struct RBasic basic;
3456     VALUE real;
3457     VALUE imag;
3458 };
3459
3460 struct RData {
3461     struct RBasic basic;
3462     void (*dmark)(void*);
3463     void (*dfree)(void*);
3464     void *data;
3465 };
3466
3467
3468
3469
3470
3471
3472 typedef void (*RUBY_DATA_FUNC)(void*);
3473
3474 VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
3475 # 706 "./include/ruby/ruby.h"
3476 struct RStruct {
3477     struct RBasic basic;
3478     union {
3479  struct {
3480      long len;
3481      VALUE *ptr;
3482  } heap;
3483  VALUE ary[3];
3484     } as;
3485 };
3486 # 729 "./include/ruby/ruby.h"
3487 struct RBignum {
3488     struct RBasic basic;
3489     union {
3490         struct {
3491             long len;
3492             unsigned int *digits;
3493         } heap;
3494         unsigned int ary[((sizeof(VALUE)*3)/sizeof(unsigned int))];
3495     } as;
3496 };
3497 # 841 "./include/ruby/ruby.h"
3498 void rb_obj_infect(VALUE,VALUE);
3499
3500 typedef int ruby_glob_func(const char*,VALUE, void*);
3501 void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE);
3502 int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
3503 int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
3504
3505 VALUE rb_define_class(const char*,VALUE);
3506 VALUE rb_define_module(const char*);
3507 VALUE rb_define_class_under(VALUE, const char*, VALUE);
3508 VALUE rb_define_module_under(VALUE, const char*);
3509
3510 void rb_include_module(VALUE,VALUE);
3511 void rb_extend_object(VALUE,VALUE);
3512
3513 struct rb_global_variable;
3514
3515 typedef VALUE rb_gvar_getter_t(ID id, void *data, struct rb_global_variable *gvar);
3516 typedef void rb_gvar_setter_t(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
3517 typedef void rb_gvar_marker_t(VALUE *var);
3518
3519 VALUE rb_gvar_undef_getter(ID id, void *data, struct rb_global_variable *gvar);
3520 void rb_gvar_undef_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
3521 void rb_gvar_undef_marker(VALUE *var);
3522
3523 VALUE rb_gvar_val_getter(ID id, void *data, struct rb_global_variable *gvar);
3524 void rb_gvar_val_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
3525 void rb_gvar_val_marker(VALUE *var);
3526
3527 VALUE rb_gvar_var_getter(ID id, void *data, struct rb_global_variable *gvar);
3528 void rb_gvar_var_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
3529 void rb_gvar_var_marker(VALUE *var);
3530
3531 void rb_gvar_readonly_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
3532
3533 void rb_define_variable(const char*,VALUE*);
3534 void rb_define_virtual_variable(const char*,VALUE(*)(),void(*)());
3535 void rb_define_hooked_variable(const char*,VALUE*,VALUE(*)(),void(*)());
3536 void rb_define_readonly_variable(const char*,VALUE*);
3537 void rb_define_const(VALUE,const char*,VALUE);
3538 void rb_define_global_const(const char*,VALUE);
3539
3540
3541 void rb_define_method(VALUE,const char*,VALUE(*)(),int);
3542 void rb_define_module_function(VALUE,const char*,VALUE(*)(),int);
3543 void rb_define_global_function(const char*,VALUE(*)(),int);
3544
3545 void rb_undef_method(VALUE,const char*);
3546 void rb_define_alias(VALUE,const char*,const char*);
3547 void rb_define_attr(VALUE,const char*,int,int);
3548
3549 void rb_global_variable(VALUE*);
3550 void rb_gc_register_mark_object(VALUE);
3551 void rb_gc_register_address(VALUE*);
3552 void rb_gc_unregister_address(VALUE*);
3553
3554 ID rb_intern(const char*);
3555 ID rb_intern2(const char*, long);
3556 ID rb_intern_str(VALUE str);
3557 const char *rb_id2name(ID);
3558 ID rb_to_id(VALUE);
3559 VALUE rb_id2str(ID);
3560 # 928 "./include/ruby/ruby.h"
3561 const char *rb_class2name(VALUE);
3562 const char *rb_obj_classname(VALUE);
3563
3564 void rb_p(VALUE);
3565
3566 VALUE rb_eval_string(const char*);
3567 VALUE rb_eval_string_protect(const char*, int*);
3568 VALUE rb_eval_string_wrap(const char*, int*);
3569 VALUE rb_funcall(VALUE, ID, int, ...);
3570 VALUE rb_funcall2(VALUE, ID, int, const VALUE*);
3571 VALUE rb_funcall3(VALUE, ID, int, const VALUE*);
3572 int rb_scan_args(int, const VALUE*, const char*, ...);
3573 VALUE rb_call_super(int, const VALUE*);
3574
3575 VALUE rb_gv_set(const char*, VALUE);
3576 VALUE rb_gv_get(const char*);
3577 VALUE rb_iv_get(VALUE, const char*);
3578 VALUE rb_iv_set(VALUE, const char*, VALUE);
3579
3580 VALUE rb_equal(VALUE,VALUE);
3581
3582 VALUE *rb_ruby_verbose_ptr(void);
3583 VALUE *rb_ruby_debug_ptr(void);
3584
3585
3586
3587 __attribute__ ((noreturn)) void rb_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
3588 __attribute__ ((noreturn)) void rb_fatal(const char*, ...) __attribute__((format(printf, 1, 2)));
3589 __attribute__ ((noreturn)) void rb_bug(const char*, ...) __attribute__((format(printf, 1, 2)));
3590 __attribute__ ((noreturn)) void rb_sys_fail(const char*);
3591 __attribute__ ((noreturn)) void rb_iter_break(void);
3592 __attribute__ ((noreturn)) void rb_exit(int);
3593 __attribute__ ((noreturn)) void rb_notimplement(void);
3594
3595
3596 void rb_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
3597 void rb_compile_warning(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
3598 void rb_sys_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
3599
3600 void rb_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
3601 void rb_compile_warn(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
3602
3603 typedef VALUE rb_block_call_func(VALUE, VALUE, int, VALUE*);
3604
3605 VALUE rb_each(VALUE);
3606 VALUE rb_yield(VALUE);
3607 VALUE rb_yield_values(int n, ...);
3608 VALUE rb_yield_values2(int n, const VALUE *argv);
3609 VALUE rb_yield_splat(VALUE);
3610 int rb_block_given_p(void);
3611 void rb_need_block(void);
3612 VALUE rb_iterate(VALUE(*)(VALUE),VALUE,VALUE(*)(),VALUE);
3613 VALUE rb_block_call(VALUE,ID,int,VALUE*,VALUE(*)(),VALUE);
3614 VALUE rb_rescue(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
3615 VALUE rb_rescue2(VALUE(*)(),VALUE,VALUE(*)(),VALUE,...);
3616 VALUE rb_ensure(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
3617 VALUE rb_catch(const char*,VALUE(*)(),VALUE);
3618 VALUE rb_catch_obj(VALUE,VALUE(*)(),VALUE);
3619 __attribute__ ((noreturn)) void rb_throw(const char*,VALUE);
3620 __attribute__ ((noreturn)) void rb_throw_obj(VALUE,VALUE);
3621
3622 VALUE rb_require(const char*);
3623
3624
3625
3626
3627
3628 void ruby_init_stack(VALUE*);
3629
3630
3631
3632
3633 void ruby_init(void);
3634 void *ruby_options(int, char**);
3635 int ruby_run_node(void *);
3636
3637 extern VALUE rb_mKernel;
3638 extern VALUE rb_mComparable;
3639 extern VALUE rb_mEnumerable;
3640 extern VALUE rb_mErrno;
3641 extern VALUE rb_mFileTest;
3642 extern VALUE rb_mGC;
3643 extern VALUE rb_mMath;
3644 extern VALUE rb_mProcess;
3645
3646 extern VALUE rb_cBasicObject;
3647 extern VALUE rb_cObject;
3648 extern VALUE rb_cArray;
3649 extern VALUE rb_cBignum;
3650 extern VALUE rb_cBinding;
3651 extern VALUE rb_cClass;
3652 extern VALUE rb_cCont;
3653 extern VALUE rb_cDir;
3654 extern VALUE rb_cData;
3655 extern VALUE rb_cFalseClass;
3656 extern VALUE rb_cEncoding;
3657 extern VALUE rb_cEnumerator;
3658 extern VALUE rb_cFile;
3659 extern VALUE rb_cFixnum;
3660 extern VALUE rb_cFloat;
3661 extern VALUE rb_cHash;
3662 extern VALUE rb_cInteger;
3663 extern VALUE rb_cIO;
3664 extern VALUE rb_cMatch;
3665 extern VALUE rb_cMethod;
3666 extern VALUE rb_cModule;
3667 extern VALUE rb_cNameErrorMesg;
3668 extern VALUE rb_cNilClass;
3669 extern VALUE rb_cNumeric;
3670 extern VALUE rb_cProc;
3671 extern VALUE rb_cRange;
3672 extern VALUE rb_cRational;
3673 extern VALUE rb_cComplex;
3674 extern VALUE rb_cRegexp;
3675 extern VALUE rb_cStat;
3676 extern VALUE rb_cString;
3677 extern VALUE rb_cStruct;
3678 extern VALUE rb_cSymbol;
3679 extern VALUE rb_cThread;
3680 extern VALUE rb_cTime;
3681 extern VALUE rb_cTrueClass;
3682 extern VALUE rb_cUnboundMethod;
3683
3684 extern VALUE rb_eException;
3685 extern VALUE rb_eStandardError;
3686 extern VALUE rb_eSystemExit;
3687 extern VALUE rb_eInterrupt;
3688 extern VALUE rb_eSignal;
3689 extern VALUE rb_eFatal;
3690 extern VALUE rb_eArgError;
3691 extern VALUE rb_eEOFError;
3692 extern VALUE rb_eIndexError;
3693 extern VALUE rb_eStopIteration;
3694 extern VALUE rb_eKeyError;
3695 extern VALUE rb_eRangeError;
3696 extern VALUE rb_eIOError;
3697 extern VALUE rb_eRuntimeError;
3698 extern VALUE rb_eSecurityError;
3699 extern VALUE rb_eSystemCallError;
3700 extern VALUE rb_eThreadError;
3701 extern VALUE rb_eTypeError;
3702 extern VALUE rb_eZeroDivError;
3703 extern VALUE rb_eNotImpError;
3704 extern VALUE rb_eNoMemError;
3705 extern VALUE rb_eNoMethodError;
3706 extern VALUE rb_eFloatDomainError;
3707 extern VALUE rb_eLocalJumpError;
3708 extern VALUE rb_eSysStackError;
3709 extern VALUE rb_eRegexpError;
3710 extern VALUE rb_eEncodingError;
3711 extern VALUE rb_eEncCompatError;
3712
3713 extern VALUE rb_eScriptError;
3714 extern VALUE rb_eNameError;
3715 extern VALUE rb_eSyntaxError;
3716 extern VALUE rb_eLoadError;
3717
3718 extern VALUE rb_stdin, rb_stdout, rb_stderr;
3719
3720 static inline VALUE
3721 rb_class_of(VALUE obj)
3722 {
3723     if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
3724  if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return rb_cFixnum;
3725  if (obj == ((VALUE)RUBY_Qtrue)) return rb_cTrueClass;
3726  if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return rb_cSymbol;
3727     }
3728     else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
3729  if (obj == ((VALUE)RUBY_Qnil)) return rb_cNilClass;
3730  if (obj == ((VALUE)RUBY_Qfalse)) return rb_cFalseClass;
3731     }
3732     return ((struct RBasic*)(obj))->klass;
3733 }
3734
3735 static inline int
3736 rb_type(VALUE obj)
3737 {
3738     if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
3739  if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return RUBY_T_FIXNUM;
3740  if (obj == ((VALUE)RUBY_Qtrue)) return RUBY_T_TRUE;
3741  if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return RUBY_T_SYMBOL;
3742  if (obj == ((VALUE)RUBY_Qundef)) return RUBY_T_UNDEF;
3743     }
3744     else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
3745  if (obj == ((VALUE)RUBY_Qnil)) return RUBY_T_NIL;
3746  if (obj == ((VALUE)RUBY_Qfalse)) return RUBY_T_FALSE;
3747     }
3748     return (((struct RBasic*)(obj))->flags & RUBY_T_MASK);
3749 }
3750
3751 static inline int
3752 rb_special_const_p(VALUE obj)
3753 {
3754     if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0))) return ((VALUE)RUBY_Qtrue);
3755     return ((VALUE)RUBY_Qfalse);
3756 }
3757
3758 # 1 "./include/ruby/missing.h" 1
3759 # 22 "./include/ruby/missing.h"
3760 # 1 "/usr/include/sys/time.h" 1 3 4
3761 # 27 "/usr/include/sys/time.h" 3 4
3762 # 1 "/usr/include/time.h" 1 3 4
3763 # 28 "/usr/include/sys/time.h" 2 3 4
3764
3765 # 1 "/usr/include/bits/time.h" 1 3 4
3766 # 30 "/usr/include/sys/time.h" 2 3 4
3767 # 39 "/usr/include/sys/time.h" 3 4
3768
3769 # 57 "/usr/include/sys/time.h" 3 4
3770 struct timezone
3771   {
3772     int tz_minuteswest;
3773     int tz_dsttime;
3774   };
3775
3776 typedef struct timezone *__restrict __timezone_ptr_t;
3777 # 73 "/usr/include/sys/time.h" 3 4
3778 extern int gettimeofday (struct timeval *__restrict __tv,
3779     __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3780
3781
3782
3783
3784 extern int settimeofday (__const struct timeval *__tv,
3785     __const struct timezone *__tz)
3786      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3787
3788
3789
3790
3791
3792 extern int adjtime (__const struct timeval *__delta,
3793       struct timeval *__olddelta) __attribute__ ((__nothrow__));
3794
3795
3796
3797
3798 enum __itimer_which
3799   {
3800
3801     ITIMER_REAL = 0,
3802
3803
3804     ITIMER_VIRTUAL = 1,
3805
3806
3807
3808     ITIMER_PROF = 2
3809
3810   };
3811
3812
3813
3814 struct itimerval
3815   {
3816
3817     struct timeval it_interval;
3818
3819     struct timeval it_value;
3820   };
3821
3822
3823
3824
3825 typedef enum __itimer_which __itimer_which_t;
3826
3827
3828
3829
3830
3831
3832 extern int getitimer (__itimer_which_t __which,
3833         struct itimerval *__value) __attribute__ ((__nothrow__));
3834
3835
3836
3837
3838 extern int setitimer (__itimer_which_t __which,
3839         __const struct itimerval *__restrict __new,
3840         struct itimerval *__restrict __old) __attribute__ ((__nothrow__));
3841
3842
3843
3844
3845 extern int utimes (__const char *__file, __const struct timeval __tvp[2])
3846      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3847
3848
3849
3850 extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
3851      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
3852
3853
3854 extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
3855
3856
3857
3858
3859
3860
3861 extern int futimesat (int __fd, __const char *__file,
3862         __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
3863 # 191 "/usr/include/sys/time.h" 3 4
3864
3865 # 23 "./include/ruby/missing.h" 2
3866 # 148 "./include/ruby/missing.h"
3867 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stdarg.h" 1 3 4
3868 # 149 "./include/ruby/missing.h" 2
3869 # 158 "./include/ruby/missing.h"
3870 extern size_t strlcpy(char *, const char*, size_t);
3871
3872
3873
3874 extern size_t strlcat(char *, const char*, size_t);
3875 # 1126 "./include/ruby/ruby.h" 2
3876 # 1 "./include/ruby/intern.h" 1
3877 # 29 "./include/ruby/intern.h"
3878 # 1 "./include/ruby/st.h" 1
3879 # 24 "./include/ruby/st.h"
3880 # 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
3881 # 25 "./include/ruby/st.h" 2
3882
3883
3884
3885
3886
3887 typedef unsigned long st_data_t;
3888 # 56 "./include/ruby/st.h"
3889 typedef struct st_table st_table;
3890
3891 typedef int st_compare_func(st_data_t, st_data_t);
3892 typedef int st_hash_func(st_data_t);
3893
3894 struct st_hash_type {
3895     int (*compare)( );
3896     int (*hash)( );
3897 };
3898
3899 typedef st_data_t st_index_t;
3900
3901
3902 struct st_table {
3903     const struct st_hash_type *type;
3904     st_index_t num_bins;
3905     unsigned int entries_packed : 1;
3906
3907     __extension__
3908
3909     st_index_t num_entries : (sizeof(st_index_t) * 8) - 1;
3910     struct st_table_entry **bins;
3911     struct st_table_entry *head;
3912 };
3913
3914
3915
3916 enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
3917
3918 st_table *st_init_table(const struct st_hash_type *);
3919 st_table *st_init_table_with_size(const struct st_hash_type *, int);
3920 st_table *st_init_numtable(void);
3921 st_table *st_init_numtable_with_size(int);
3922 st_table *st_init_strtable(void);
3923 st_table *st_init_strtable_with_size(int);
3924 st_table *st_init_strcasetable(void);
3925 st_table *st_init_strcasetable_with_size(int);
3926 int st_delete(st_table *, st_data_t *, st_data_t *);
3927 int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
3928 int st_insert(st_table *, st_data_t, st_data_t);
3929 int st_lookup(st_table *, st_data_t, st_data_t *);
3930 int st_get_key(st_table *, st_data_t, st_data_t *);
3931 int st_foreach(st_table *, int (*)(), st_data_t);
3932 int st_reverse_foreach(st_table *, int (*)(), st_data_t);
3933 void st_add_direct(st_table *, st_data_t, st_data_t);
3934 void st_free_table(st_table *);
3935 void st_cleanup_safe(st_table *, st_data_t);
3936 void st_clear(st_table *);
3937 st_table *st_copy(st_table *);
3938 int st_numcmp(st_data_t, st_data_t);
3939 int st_numhash(st_data_t);
3940 int st_strcasecmp(const char *s1, const char *s2);
3941 int st_strncasecmp(const char *s1, const char *s2, size_t n);
3942 # 30 "./include/ruby/intern.h" 2
3943 # 39 "./include/ruby/intern.h"
3944 void rb_mem_clear(register VALUE*, register long);
3945 VALUE rb_assoc_new(VALUE, VALUE);
3946 VALUE rb_check_array_type(VALUE);
3947 VALUE rb_ary_new(void);
3948 VALUE rb_ary_new2(long);
3949 VALUE rb_ary_new3(long,...);
3950 VALUE rb_ary_new4(long, const VALUE *);
3951 VALUE rb_ary_tmp_new(long);
3952 void rb_ary_free(VALUE);
3953 VALUE rb_ary_freeze(VALUE);
3954 VALUE rb_ary_aref(int, VALUE*, VALUE);
3955 VALUE rb_ary_subseq(VALUE, long, long);
3956 void rb_ary_store(VALUE, long, VALUE);
3957 VALUE rb_ary_dup(VALUE);
3958 VALUE rb_ary_to_ary(VALUE);
3959 VALUE rb_ary_to_s(VALUE);
3960 VALUE rb_ary_push(VALUE, VALUE);
3961 VALUE rb_ary_pop(VALUE);
3962 VALUE rb_ary_shift(VALUE);
3963 VALUE rb_ary_unshift(VALUE, VALUE);
3964 VALUE rb_ary_entry(VALUE, long);
3965 VALUE rb_ary_each(VALUE);
3966 VALUE rb_ary_join(VALUE, VALUE);
3967 VALUE rb_ary_print_on(VALUE, VALUE);
3968 VALUE rb_ary_reverse(VALUE);
3969 VALUE rb_ary_sort(VALUE);
3970 VALUE rb_ary_sort_bang(VALUE);
3971 VALUE rb_ary_delete(VALUE, VALUE);
3972 VALUE rb_ary_delete_at(VALUE, long);
3973 VALUE rb_ary_clear(VALUE);
3974 VALUE rb_ary_plus(VALUE, VALUE);
3975 VALUE rb_ary_concat(VALUE, VALUE);
3976 VALUE rb_ary_assoc(VALUE, VALUE);
3977 VALUE rb_ary_rassoc(VALUE, VALUE);
3978 VALUE rb_ary_includes(VALUE, VALUE);
3979 VALUE rb_ary_cmp(VALUE, VALUE);
3980 VALUE rb_ary_replace(VALUE copy, VALUE orig);
3981 VALUE rb_get_values_at(VALUE, long, int, VALUE*, VALUE(*)(VALUE,long));
3982
3983 VALUE rb_big_clone(VALUE);
3984 void rb_big_2comp(VALUE);
3985 VALUE rb_big_norm(VALUE);
3986 void rb_big_resize(VALUE big, long len);
3987 VALUE rb_uint2big(VALUE);
3988 VALUE rb_int2big(long);
3989 VALUE rb_uint2inum(VALUE);
3990 VALUE rb_int2inum(long);
3991 VALUE rb_cstr_to_inum(const char*, int, int);
3992 VALUE rb_str_to_inum(VALUE, int, int);
3993 VALUE rb_cstr2inum(const char*, int);
3994 VALUE rb_str2inum(VALUE, int);
3995 VALUE rb_big2str(VALUE, int);
3996 VALUE rb_big2str0(VALUE, int, int);
3997 long rb_big2long(VALUE);
3998
3999 VALUE rb_big2ulong(VALUE);
4000
4001
4002 VALUE rb_ll2inum(long long);
4003 VALUE rb_ull2inum(unsigned long long);
4004 long long rb_big2ll(VALUE);
4005 unsigned long long rb_big2ull(VALUE);
4006
4007 void rb_quad_pack(char*,VALUE);
4008 VALUE rb_quad_unpack(const char*,int);
4009 int rb_uv_to_utf8(char[6],unsigned long);
4010 VALUE rb_dbl2big(double);
4011 double rb_big2dbl(VALUE);
4012 VALUE rb_big_cmp(VALUE, VALUE);
4013 VALUE rb_big_eq(VALUE, VALUE);
4014 VALUE rb_big_plus(VALUE, VALUE);
4015 VALUE rb_big_minus(VALUE, VALUE);
4016 VALUE rb_big_mul(VALUE, VALUE);
4017 VALUE rb_big_div(VALUE, VALUE);
4018 VALUE rb_big_modulo(VALUE, VALUE);
4019 VALUE rb_big_divmod(VALUE, VALUE);
4020 VALUE rb_big_pow(VALUE, VALUE);
4021 VALUE rb_big_and(VALUE, VALUE);
4022 VALUE rb_big_or(VALUE, VALUE);
4023 VALUE rb_big_xor(VALUE, VALUE);
4024 VALUE rb_big_lshift(VALUE, VALUE);
4025 VALUE rb_big_rshift(VALUE, VALUE);
4026
4027 VALUE rb_rational_raw(VALUE, VALUE);
4028
4029
4030 VALUE rb_rational_new(VALUE, VALUE);
4031
4032
4033 VALUE rb_Rational(VALUE, VALUE);
4034
4035
4036
4037 VALUE rb_complex_raw(VALUE, VALUE);
4038
4039
4040 VALUE rb_complex_new(VALUE, VALUE);
4041
4042
4043 VALUE rb_complex_polar(VALUE, VALUE);
4044 VALUE rb_Complex(VALUE, VALUE);
4045
4046
4047
4048 VALUE rb_class_boot(VALUE);
4049 VALUE rb_class_new(VALUE);
4050 VALUE rb_mod_init_copy(VALUE, VALUE);
4051 VALUE rb_class_init_copy(VALUE, VALUE);
4052 VALUE rb_singleton_class_clone(VALUE);
4053 void rb_singleton_class_attached(VALUE,VALUE);
4054 VALUE rb_make_metaclass(VALUE, VALUE);
4055 void rb_check_inheritable(VALUE);
4056 VALUE rb_class_inherited(VALUE, VALUE);
4057 VALUE rb_define_class_id(ID, VALUE);
4058 VALUE rb_module_new(void);
4059 VALUE rb_define_module_id(ID);
4060 VALUE rb_mod_included_modules(VALUE);
4061 VALUE rb_mod_include_p(VALUE, VALUE);
4062 VALUE rb_mod_ancestors(VALUE);
4063 VALUE rb_class_instance_methods(int, VALUE*, VALUE);
4064 VALUE rb_class_public_instance_methods(int, VALUE*, VALUE);
4065 VALUE rb_class_protected_instance_methods(int, VALUE*, VALUE);
4066 VALUE rb_class_private_instance_methods(int, VALUE*, VALUE);
4067 VALUE rb_obj_singleton_methods(int, VALUE*, VALUE);
4068 void rb_define_method_id(VALUE, ID, VALUE (*)(), int);
4069 void rb_frozen_class_p(VALUE);
4070 void rb_undef(VALUE, ID);
4071 void rb_define_protected_method(VALUE, const char*, VALUE (*)(), int);
4072 void rb_define_private_method(VALUE, const char*, VALUE (*)(), int);
4073 void rb_define_singleton_method(VALUE, const char*, VALUE(*)(), int);
4074 VALUE rb_singleton_class(VALUE);
4075
4076 int rb_cmpint(VALUE, VALUE, VALUE);
4077 __attribute__ ((noreturn)) void rb_cmperr(VALUE, VALUE);
4078
4079 VALUE rb_fiber_new(VALUE (*)(), VALUE);
4080 VALUE rb_fiber_resume(VALUE fib, int argc, VALUE *args);
4081 VALUE rb_fiber_yield(int argc, VALUE *args);
4082 VALUE rb_fiber_current(void);
4083 VALUE rb_fiber_alive_p(VALUE);
4084
4085
4086 VALUE rb_enumeratorize(VALUE, VALUE, int, VALUE *);
4087
4088
4089
4090
4091
4092
4093 VALUE rb_exc_new(VALUE, const char*, long);
4094 VALUE rb_exc_new2(VALUE, const char*);
4095 VALUE rb_exc_new3(VALUE, VALUE);
4096 __attribute__ ((noreturn)) void rb_loaderror(const char*, ...) __attribute__((format(printf, 1, 2)));
4097 __attribute__ ((noreturn)) void rb_name_error(ID, const char*, ...) __attribute__((format(printf, 2, 3)));
4098 __attribute__ ((noreturn)) void rb_invalid_str(const char*, const char*);
4099 void rb_compile_error(const char*, int, const char*, ...) __attribute__((format(printf, 3, 4)));
4100 void rb_compile_error_append(const char*, ...) __attribute__((format(printf, 1, 2)));
4101 __attribute__ ((noreturn)) void rb_load_fail(const char*);
4102 __attribute__ ((noreturn)) void rb_error_frozen(const char*);
4103 void rb_check_frozen(VALUE);
4104
4105 int rb_sourceline(void);
4106 const char *rb_sourcefile(void);
4107
4108
4109 typedef struct {
4110     int maxfd;
4111     fd_set *fdset;
4112 } rb_fdset_t;
4113
4114 void rb_fd_init(volatile rb_fdset_t *);
4115 void rb_fd_term(rb_fdset_t *);
4116 void rb_fd_zero(rb_fdset_t *);
4117 void rb_fd_set(int, rb_fdset_t *);
4118 void rb_fd_clr(int, rb_fdset_t *);
4119 int rb_fd_isset(int, const rb_fdset_t *);
4120 void rb_fd_copy(rb_fdset_t *, const fd_set *, int);
4121 int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
4122 # 237 "./include/ruby/intern.h"
4123 __attribute__ ((noreturn)) void rb_exc_raise(VALUE);
4124 __attribute__ ((noreturn)) void rb_exc_fatal(VALUE);
4125 VALUE rb_f_exit(int,VALUE*);
4126 VALUE rb_f_abort(int,VALUE*);
4127 void rb_remove_method(VALUE, const char*);
4128
4129
4130
4131 typedef VALUE (*rb_alloc_func_t)(VALUE);
4132 void rb_define_alloc_func(VALUE, rb_alloc_func_t);
4133 void rb_undef_alloc_func(VALUE);
4134 rb_alloc_func_t rb_get_alloc_func(VALUE);
4135 void rb_clear_cache(void);
4136 void rb_clear_cache_by_class(VALUE);
4137 void rb_alias(VALUE, ID, ID);
4138 void rb_attr(VALUE,ID,int,int,int);
4139 int rb_method_boundp(VALUE, ID, int);
4140 int rb_method_basic_definition_p(VALUE, ID);
4141 VALUE rb_eval_cmd(VALUE, VALUE, int);
4142 int rb_obj_respond_to(VALUE, ID, int);
4143 int rb_respond_to(VALUE, ID);
4144 void rb_interrupt(void);
4145 VALUE rb_apply(VALUE, ID, VALUE);
4146 void rb_backtrace(void);
4147 ID rb_frame_this_func(void);
4148 VALUE rb_obj_instance_eval(int, VALUE*, VALUE);
4149 VALUE rb_obj_instance_exec(int, VALUE*, VALUE);
4150 VALUE rb_mod_module_eval(int, VALUE*, VALUE);
4151 VALUE rb_mod_module_exec(int, VALUE*, VALUE);
4152 void rb_load(VALUE, int);
4153 void rb_load_protect(VALUE, int, int*);
4154 __attribute__ ((noreturn)) void rb_jump_tag(int);
4155 int rb_provided(const char*);
4156 int rb_feature_provided(const char *, const char **);
4157 void rb_provide(const char*);
4158 VALUE rb_f_require(VALUE, VALUE);
4159 VALUE rb_require_safe(VALUE, int);
4160 void rb_obj_call_init(VALUE, int, VALUE*);
4161 VALUE rb_class_new_instance(int, VALUE*, VALUE);
4162 VALUE rb_block_proc(void);
4163 VALUE rb_f_lambda(void);
4164 VALUE rb_proc_new(VALUE (*)( ), VALUE);
4165 VALUE rb_proc_call(VALUE, VALUE);
4166 VALUE rb_proc_call_with_block(VALUE, int argc, VALUE *argv, VALUE);
4167 int rb_proc_arity(VALUE);
4168 VALUE rb_binding_new(void);
4169 VALUE rb_obj_method(VALUE, VALUE);
4170 VALUE rb_method_call(int, VALUE*, VALUE);
4171 int rb_mod_method_arity(VALUE, ID);
4172 int rb_obj_method_arity(VALUE, ID);
4173 VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
4174 void rb_set_end_proc(void (*)(VALUE), VALUE);
4175 void rb_mark_end_proc(void);
4176 void rb_exec_end_proc(void);
4177 void Init_jump(void);
4178 void ruby_finalize(void);
4179 __attribute__ ((noreturn)) void ruby_stop(int);
4180 int ruby_cleanup(int);
4181 void rb_gc_mark_threads(void);
4182 void rb_thread_schedule(void);
4183 void rb_thread_wait_fd(int);
4184 int rb_thread_fd_writable(int);
4185 void rb_thread_fd_close(int);
4186 int rb_thread_alone(void);
4187 void rb_thread_polling(void);
4188 void rb_thread_sleep(int);
4189 void rb_thread_sleep_forever(void);
4190 VALUE rb_thread_stop(void);
4191 VALUE rb_thread_wakeup(VALUE);
4192 VALUE rb_thread_run(VALUE);
4193 VALUE rb_thread_kill(VALUE);
4194 VALUE rb_thread_create(VALUE (*)(), void*);
4195 void rb_thread_signal_raise(void *, int);
4196 void rb_thread_signal_exit(void *);
4197 int rb_thread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
4198 void rb_thread_wait_for(struct timeval);
4199 VALUE rb_thread_current(void);
4200 VALUE rb_thread_main(void);
4201 VALUE rb_thread_local_aref(VALUE, ID);
4202 VALUE rb_thread_local_aset(VALUE, ID, VALUE);
4203 void rb_thread_atfork(void);
4204 void rb_thread_atfork_before_exec(void);
4205 VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
4206
4207 VALUE rb_file_s_expand_path(int, VALUE *);
4208 VALUE rb_file_expand_path(VALUE, VALUE);
4209 VALUE rb_file_s_absolute_path(int, VALUE *);
4210 VALUE rb_file_absolute_path(VALUE, VALUE);
4211 void rb_file_const(const char*, VALUE);
4212 int rb_find_file_ext(VALUE*, const char* const*);
4213 VALUE rb_find_file(VALUE);
4214 char *rb_path_next(const char *);
4215 char *rb_path_skip_prefix(const char *);
4216 char *rb_path_last_separator(const char *);
4217 char *rb_path_end(const char *);
4218 VALUE rb_file_directory_p(VALUE,VALUE);
4219
4220 void ruby_set_stack_size(size_t);
4221 __attribute__ ((noreturn)) void rb_memerror(void);
4222 int ruby_stack_check(void);
4223 size_t ruby_stack_length(VALUE**);
4224 int rb_during_gc(void);
4225 void rb_gc_mark_locations(VALUE*, VALUE*);
4226 void rb_mark_tbl(struct st_table*);
4227 void rb_mark_set(struct st_table*);
4228 void rb_mark_hash(struct st_table*);
4229 void rb_gc_mark_maybe(VALUE);
4230 void rb_gc_mark(VALUE);
4231 void rb_gc_force_recycle(VALUE);
4232 void rb_gc(void);
4233 void rb_gc_copy_finalizer(VALUE,VALUE);
4234 void rb_gc_finalize_deferred(void);
4235 void rb_gc_call_finalizer_at_exit(void);
4236 VALUE rb_gc_enable(void);
4237 VALUE rb_gc_disable(void);
4238 VALUE rb_gc_start(void);
4239
4240 void st_foreach_safe(struct st_table *, int (*)(), st_data_t);
4241 void rb_hash_foreach(VALUE, int (*)(), VALUE);
4242 VALUE rb_hash(VALUE);
4243 VALUE rb_hash_new(void);
4244 VALUE rb_hash_dup(VALUE);
4245 VALUE rb_hash_freeze(VALUE);
4246 VALUE rb_hash_aref(VALUE, VALUE);
4247 VALUE rb_hash_lookup(VALUE, VALUE);
4248 VALUE rb_hash_lookup2(VALUE, VALUE, VALUE);
4249 VALUE rb_hash_fetch(VALUE, VALUE);
4250 VALUE rb_hash_aset(VALUE, VALUE, VALUE);
4251 VALUE rb_hash_delete_if(VALUE);
4252 VALUE rb_hash_delete(VALUE,VALUE);
4253 struct st_table *rb_hash_tbl(VALUE);
4254 int rb_path_check(const char*);
4255 int rb_env_path_tainted(void);
4256 VALUE rb_env_clear(void);
4257
4258
4259 extern VALUE rb_fs;
4260 extern VALUE rb_output_fs;
4261 extern VALUE rb_rs;
4262 extern VALUE rb_default_rs;
4263 extern VALUE rb_output_rs;
4264 VALUE rb_io_write(VALUE, VALUE);
4265 VALUE rb_io_gets(VALUE);
4266 VALUE rb_io_getbyte(VALUE);
4267 VALUE rb_io_ungetc(VALUE, VALUE);
4268 VALUE rb_io_ungetbyte(VALUE, VALUE);
4269 VALUE rb_io_close(VALUE);
4270 VALUE rb_io_flush(VALUE);
4271 VALUE rb_io_eof(VALUE);
4272 VALUE rb_io_binmode(VALUE);
4273 VALUE rb_io_ascii8bit_binmode(VALUE);
4274 VALUE rb_io_addstr(VALUE, VALUE);
4275 VALUE rb_io_printf(int, VALUE*, VALUE);
4276 VALUE rb_io_print(int, VALUE*, VALUE);
4277 VALUE rb_io_puts(int, VALUE*, VALUE);
4278 VALUE rb_io_fdopen(int, int, const char*);
4279 VALUE rb_file_open(const char*, const char*);
4280 VALUE rb_file_open_str(VALUE, const char*);
4281 VALUE rb_gets(void);
4282 void rb_write_error(const char*);
4283 void rb_write_error2(const char*, long);
4284 void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
4285 int rb_pipe(int *pipes);
4286
4287 VALUE rb_marshal_dump(VALUE, VALUE);
4288 VALUE rb_marshal_load(VALUE);
4289 void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
4290
4291 void rb_num_zerodiv(void);
4292 VALUE rb_num_coerce_bin(VALUE, VALUE, ID);
4293 VALUE rb_num_coerce_cmp(VALUE, VALUE, ID);
4294 VALUE rb_num_coerce_relop(VALUE, VALUE, ID);
4295 VALUE rb_float_new(double);
4296 VALUE rb_num2fix(VALUE);
4297 VALUE rb_fix2str(VALUE, int);
4298 VALUE rb_dbl_cmp(double, double);
4299
4300 int rb_eql(VALUE, VALUE);
4301 VALUE rb_any_to_s(VALUE);
4302 VALUE rb_inspect(VALUE);
4303 VALUE rb_obj_is_instance_of(VALUE, VALUE);
4304 VALUE rb_obj_is_kind_of(VALUE, VALUE);
4305 VALUE rb_obj_alloc(VALUE);
4306 VALUE rb_obj_clone(VALUE);
4307 VALUE rb_obj_dup(VALUE);
4308 VALUE rb_obj_init_copy(VALUE,VALUE);
4309 VALUE rb_obj_taint(VALUE);
4310 VALUE rb_obj_tainted(VALUE);
4311 VALUE rb_obj_untaint(VALUE);
4312 VALUE rb_obj_freeze(VALUE);
4313 VALUE rb_obj_frozen_p(VALUE);
4314 VALUE rb_obj_id(VALUE);
4315 VALUE rb_obj_class(VALUE);
4316 VALUE rb_class_real(VALUE);
4317 VALUE rb_class_inherited_p(VALUE, VALUE);
4318 VALUE rb_convert_type(VALUE,int,const char*,const char*);
4319 VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
4320 VALUE rb_check_to_integer(VALUE, const char *);
4321 VALUE rb_to_int(VALUE);
4322 VALUE rb_Integer(VALUE);
4323 VALUE rb_Float(VALUE);
4324 VALUE rb_String(VALUE);
4325 VALUE rb_Array(VALUE);
4326 double rb_cstr_to_dbl(const char*, int);
4327 double rb_str_to_dbl(VALUE, int);
4328
4329 extern int ruby_sourceline;
4330 extern char *ruby_sourcefile;
4331 ID rb_id_attrset(ID);
4332 void rb_gc_mark_parser(void);
4333 int rb_is_const_id(ID);
4334 int rb_is_instance_id(ID);
4335 int rb_is_class_id(ID);
4336 int rb_is_local_id(ID);
4337 int rb_is_junk_id(ID);
4338 int rb_symname_p(const char*);
4339 int rb_sym_interned_p(VALUE);
4340 void rb_gc_mark_symbols(void);
4341 VALUE rb_backref_get(void);
4342 void rb_backref_set(VALUE);
4343 VALUE rb_lastline_get(void);
4344 void rb_lastline_set(VALUE);
4345 VALUE rb_sym_all_symbols(void);
4346
4347 void rb_last_status_set(int status, pid_t pid);
4348 VALUE rb_last_status_get(void);
4349 struct rb_exec_arg {
4350     int argc;
4351     VALUE *argv;
4352     const char *prog;
4353     VALUE options;
4354     VALUE redirect_fds;
4355 };
4356 int rb_proc_exec_n(int, VALUE*, const char*);
4357 int rb_proc_exec(const char*);
4358 VALUE rb_exec_arg_init(int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e);
4359 int rb_exec_arg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val);
4360 void rb_exec_arg_fixup(struct rb_exec_arg *e);
4361 int rb_run_exec_options(const struct rb_exec_arg *e, struct rb_exec_arg *s);
4362 int rb_exec(const struct rb_exec_arg*);
4363 pid_t rb_fork(int*, int (*)(void*), void*, VALUE);
4364 VALUE rb_f_exec(int,VALUE*);
4365 pid_t rb_waitpid(pid_t pid, int *status, int flags);
4366 void rb_syswait(pid_t pid);
4367 pid_t rb_spawn(int, VALUE*);
4368 VALUE rb_proc_times(VALUE);
4369 VALUE rb_detach_process(pid_t pid);
4370
4371 VALUE rb_range_new(VALUE, VALUE, int);
4372 VALUE rb_range_beg_len(VALUE, long*, long*, long, int);
4373
4374 unsigned long rb_genrand_int32(void);
4375 double rb_genrand_real(void);
4376 void rb_reset_random_seed(void);
4377
4378
4379 int rb_memcicmp(const void*,const void*,long);
4380 void rb_match_busy(VALUE);
4381 VALUE rb_reg_nth_defined(int, VALUE);
4382 VALUE rb_reg_nth_match(int, VALUE);
4383 VALUE rb_reg_last_match(VALUE);
4384 VALUE rb_reg_match_pre(VALUE);
4385 VALUE rb_reg_match_post(VALUE);
4386 VALUE rb_reg_match_last(VALUE);
4387
4388 VALUE rb_reg_new_str(VALUE, int);
4389 VALUE rb_reg_new(const char *, long, int);
4390 VALUE rb_reg_match(VALUE, VALUE);
4391 VALUE rb_reg_match2(VALUE);
4392 int rb_reg_options(VALUE);
4393 void rb_set_kcode(const char*);
4394 const char* rb_get_kcode(void);
4395
4396
4397 extern VALUE rb_argv0;
4398 VALUE rb_get_argv(void);
4399 void *rb_load_file(const char*);
4400 void ruby_script(const char*);
4401 void ruby_prog_init(void);
4402 void ruby_set_argv(int, char**);
4403 void *ruby_process_options(int, char**);
4404 void ruby_init_loadpath(void);
4405 void ruby_incpush(const char*);
4406
4407 VALUE rb_f_kill(int, VALUE*);
4408 void rb_gc_mark_trap_list(void);
4409
4410
4411 void (*ruby_posix_signal(int, void (*)(int)))(int);
4412
4413 void ruby_sig_finalize(void);
4414 void rb_trap_exit(void);
4415 void rb_trap_exec(void);
4416 const char *ruby_signal_name(int);
4417 void ruby_default_signal(int);
4418
4419 VALUE rb_f_sprintf(int, const VALUE*);
4420 VALUE rb_sprintf(const char*, ...) __attribute__((format(printf, 1, 2)));
4421 VALUE rb_vsprintf(const char*, va_list);
4422 VALUE rb_str_catf(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
4423 VALUE rb_str_vcatf(VALUE, const char*, va_list);
4424 VALUE rb_str_format(int, const VALUE *, VALUE);
4425
4426 VALUE rb_str_new(const char*, long);
4427 VALUE rb_str_new_cstr(const char*);
4428 VALUE rb_str_new2(const char*);
4429 VALUE rb_str_new_shared(VALUE);
4430 VALUE rb_str_new3(VALUE);
4431 VALUE rb_str_new_frozen(VALUE);
4432 VALUE rb_str_new4(VALUE);
4433 VALUE rb_str_new_with_class(VALUE, const char*, long);
4434 VALUE rb_str_new5(VALUE, const char*, long);
4435 VALUE rb_tainted_str_new_cstr(const char*);
4436 VALUE rb_tainted_str_new(const char*, long);
4437 VALUE rb_tainted_str_new2(const char*);
4438 VALUE rb_external_str_new(const char*, long);
4439 VALUE rb_external_str_new_cstr(const char*);
4440 VALUE rb_locale_str_new(const char*, long);
4441 VALUE rb_locale_str_new_cstr(const char*);
4442 VALUE rb_str_buf_new(long);
4443 VALUE rb_str_buf_new_cstr(const char*);
4444 VALUE rb_str_buf_new2(const char*);
4445 VALUE rb_str_tmp_new(long);
4446 VALUE rb_usascii_str_new(const char*, long);
4447 VALUE rb_usascii_str_new_cstr(const char*);
4448 VALUE rb_usascii_str_new2(const char*);
4449 void rb_str_free(VALUE);
4450 void rb_str_shared_replace(VALUE, VALUE);
4451 VALUE rb_str_buf_append(VALUE, VALUE);
4452 VALUE rb_str_buf_cat(VALUE, const char*, long);
4453 VALUE rb_str_buf_cat2(VALUE, const char*);
4454 VALUE rb_str_buf_cat_ascii(VALUE, const char*);
4455 VALUE rb_obj_as_string(VALUE);
4456 VALUE rb_check_string_type(VALUE);
4457 VALUE rb_str_dup(VALUE);
4458 VALUE rb_str_locktmp(VALUE);
4459 VALUE rb_str_unlocktmp(VALUE);
4460 VALUE rb_str_dup_frozen(VALUE);
4461
4462 VALUE rb_str_plus(VALUE, VALUE);
4463 VALUE rb_str_times(VALUE, VALUE);
4464 long rb_str_sublen(VALUE, long);
4465 VALUE rb_str_substr(VALUE, long, long);
4466 VALUE rb_str_subseq(VALUE, long, long);
4467 void rb_str_modify(VALUE);
4468 VALUE rb_str_freeze(VALUE);
4469 void rb_str_set_len(VALUE, long);
4470 VALUE rb_str_resize(VALUE, long);
4471 VALUE rb_str_cat(VALUE, const char*, long);
4472 VALUE rb_str_cat2(VALUE, const char*);
4473 VALUE rb_str_append(VALUE, VALUE);
4474 VALUE rb_str_concat(VALUE, VALUE);
4475 int rb_memhash(const void *ptr, long len);
4476 int rb_str_hash(VALUE);
4477 int rb_str_hash_cmp(VALUE,VALUE);
4478 int rb_str_comparable(VALUE, VALUE);
4479 int rb_str_cmp(VALUE, VALUE);
4480 VALUE rb_str_equal(VALUE str1, VALUE str2);
4481 VALUE rb_str_drop_bytes(VALUE, long);
4482 void rb_str_update(VALUE, long, long, VALUE);
4483 VALUE rb_str_inspect(VALUE);
4484 VALUE rb_str_dump(VALUE);
4485 VALUE rb_str_split(VALUE, const char*);
4486 void rb_str_associate(VALUE, VALUE);
4487 VALUE rb_str_associated(VALUE);
4488 void rb_str_setter(VALUE, ID, VALUE*);
4489 VALUE rb_str_intern(VALUE);
4490 VALUE rb_sym_to_s(VALUE);
4491 VALUE rb_str_length(VALUE);
4492 size_t rb_str_capacity(VALUE);
4493 # 666 "./include/ruby/intern.h"
4494 VALUE rb_struct_new(VALUE, ...);
4495 VALUE rb_struct_define(const char*, ...);
4496 VALUE rb_struct_alloc(VALUE, VALUE);
4497 VALUE rb_struct_initialize(VALUE, VALUE);
4498 VALUE rb_struct_aref(VALUE, VALUE);
4499 VALUE rb_struct_aset(VALUE, VALUE, VALUE);
4500 VALUE rb_struct_getmember(VALUE, ID);
4501 VALUE rb_struct_iv_get(VALUE, const char*);
4502 VALUE rb_struct_s_members(VALUE);
4503 VALUE rb_struct_members(VALUE);
4504 VALUE rb_struct_alloc_noinit(VALUE);
4505 VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t, ...);
4506
4507 typedef void rb_unblock_function_t(void *);
4508 typedef VALUE rb_blocking_function_t(void *);
4509 void rb_thread_check_ints(void);
4510 int rb_thread_interrupted(VALUE thval);
4511 VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1,
4512     rb_unblock_function_t *ubf, void *data2);
4513
4514
4515 VALUE rb_mutex_new(void);
4516 VALUE rb_mutex_locked_p(VALUE mutex);
4517 VALUE rb_mutex_try_lock(VALUE mutex);
4518 VALUE rb_mutex_lock(VALUE mutex);
4519 VALUE rb_mutex_unlock(VALUE mutex);
4520 VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
4521 VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
4522 VALUE rb_barrier_new(void);
4523 VALUE rb_barrier_wait(VALUE self);
4524 VALUE rb_barrier_release(VALUE self);
4525 VALUE rb_barrier_destroy(VALUE self);
4526
4527 VALUE rb_time_new(time_t, long);
4528 VALUE rb_time_nano_new(time_t, long);
4529
4530 VALUE rb_mod_name(VALUE);
4531 VALUE rb_class_path(VALUE);
4532 void rb_set_class_path(VALUE, VALUE, const char*);
4533 VALUE rb_path2class(const char*);
4534 void rb_name_class(VALUE, ID);
4535 VALUE rb_class_name(VALUE);
4536 void rb_autoload(VALUE, ID, const char*);
4537 VALUE rb_autoload_load(VALUE, ID);
4538 VALUE rb_autoload_p(VALUE, ID);
4539 void rb_gc_mark_global_tbl(void);
4540 VALUE rb_f_trace_var(int, VALUE*);
4541 VALUE rb_f_untrace_var(int, VALUE*);
4542 VALUE rb_f_global_variables(void);
4543 void rb_alias_variable(ID, ID);
4544 struct st_table* rb_generic_ivar_table(VALUE);
4545 void rb_copy_generic_ivar(VALUE,VALUE);
4546 void rb_mark_generic_ivar(VALUE);
4547 void rb_mark_generic_ivar_tbl(void);
4548 void rb_free_generic_ivar(VALUE);
4549 VALUE rb_ivar_get(VALUE, ID);
4550 VALUE rb_ivar_set(VALUE, ID, VALUE);
4551 VALUE rb_ivar_defined(VALUE, ID);
4552 void rb_ivar_foreach(VALUE, int (*)(), st_data_t);
4553 VALUE rb_iv_set(VALUE, const char*, VALUE);
4554 VALUE rb_iv_get(VALUE, const char*);
4555 VALUE rb_attr_get(VALUE, ID);
4556 VALUE rb_obj_instance_variables(VALUE);
4557 VALUE rb_obj_remove_instance_variable(VALUE, VALUE);
4558 void *rb_mod_const_at(VALUE, void*);
4559 void *rb_mod_const_of(VALUE, void*);
4560 VALUE rb_const_list(void*);
4561 VALUE rb_mod_constants(int, VALUE *, VALUE);
4562 VALUE rb_mod_remove_const(VALUE, VALUE);
4563 int rb_const_defined(VALUE, ID);
4564 int rb_const_defined_at(VALUE, ID);
4565 int rb_const_defined_from(VALUE, ID);
4566 VALUE rb_const_get(VALUE, ID);
4567 VALUE rb_const_get_at(VALUE, ID);
4568 VALUE rb_const_get_from(VALUE, ID);
4569 void rb_const_set(VALUE, ID, VALUE);
4570 VALUE rb_mod_const_missing(VALUE,VALUE);
4571 VALUE rb_cvar_defined(VALUE, ID);
4572 void rb_cvar_set(VALUE, ID, VALUE);
4573 VALUE rb_cvar_get(VALUE, ID);
4574 void rb_cv_set(VALUE, const char*, VALUE);
4575 VALUE rb_cv_get(VALUE, const char*);
4576 void rb_define_class_variable(VALUE, const char*, VALUE);
4577 VALUE rb_mod_class_variables(VALUE);
4578 VALUE rb_mod_remove_cvar(VALUE, VALUE);
4579
4580 void ruby_show_version(void);
4581 void ruby_show_copyright(void);
4582
4583 ID rb_frame_callee(void);
4584 VALUE rb_str_succ(VALUE);
4585 VALUE rb_time_succ(VALUE);
4586
4587 void rb_frame_pop(void);
4588 int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
4589 # 1127 "./include/ruby/ruby.h" 2
4590 # 1140 "./include/ruby/ruby.h"
4591 void ruby_sysinit(int *, char ***);
4592
4593
4594
4595 int ruby_native_thread_p(void);
4596 # 1160 "./include/ruby/ruby.h"
4597 typedef unsigned int rb_event_flag_t;
4598 typedef void (*rb_event_hook_func_t)(rb_event_flag_t, VALUE data, VALUE, ID, VALUE klass);
4599
4600 typedef struct rb_event_hook_struct {
4601     rb_event_flag_t flag;
4602     rb_event_hook_func_t func;
4603     VALUE data;
4604     struct rb_event_hook_struct *next;
4605 } rb_event_hook_t;
4606
4607 void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
4608          VALUE data);
4609 int rb_remove_event_hook(rb_event_hook_func_t func);
4610
4611
4612
4613
4614 int rb_isalnum(int c);
4615 int rb_isalpha(int c);
4616 int rb_isblank(int c);
4617 int rb_iscntrl(int c);
4618 int rb_isdigit(int c);
4619 int rb_isgraph(int c);
4620 int rb_islower(int c);
4621 int rb_isprint(int c);
4622 int rb_ispunct(int c);
4623 int rb_isspace(int c);
4624 int rb_isupper(int c);
4625 int rb_isxdigit(int c);
4626 int rb_tolower(int c);
4627 int rb_toupper(int c);
4628 # 1207 "./include/ruby/ruby.h"
4629 int st_strcasecmp(const char *s1, const char *s2);
4630 int st_strncasecmp(const char *s1, const char *s2, size_t n);
4631
4632
4633
4634 unsigned long ruby_strtoul(const char *str, char **endptr, int base);
4635 # 19 "parse.y" 2
4636
4637 # 1 "./include/ruby/encoding.h" 1
4638 # 16 "./include/ruby/encoding.h"
4639 # 1 "./include/ruby/oniguruma.h" 1
4640 # 106 "./include/ruby/oniguruma.h"
4641 typedef unsigned char OnigUChar;
4642 typedef unsigned int OnigCodePoint;
4643 typedef unsigned int OnigCtype;
4644 typedef unsigned int OnigDistance;
4645
4646
4647
4648 typedef unsigned int OnigCaseFoldType;
4649
4650 extern OnigCaseFoldType OnigDefaultCaseFoldFlag;
4651 # 135 "./include/ruby/oniguruma.h"
4652 typedef struct {
4653   int byte_len;
4654   int code_len;
4655   OnigCodePoint code[3];
4656 } OnigCaseFoldCodeItem;
4657
4658 typedef struct {
4659   OnigCodePoint esc;
4660   OnigCodePoint anychar;
4661   OnigCodePoint anytime;
4662   OnigCodePoint zero_or_one_time;
4663   OnigCodePoint one_or_more_time;
4664   OnigCodePoint anychar_anytime;
4665 } OnigMetaCharTableType;
4666
4667 typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
4668
4669 typedef struct OnigEncodingTypeST {
4670   int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
4671   const char* name;
4672   int max_enc_len;
4673   int min_enc_len;
4674   int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
4675   OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
4676   int (*code_to_mbclen)(OnigCodePoint code, struct OnigEncodingTypeST* enc);
4677   int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, struct OnigEncodingTypeST* enc);
4678   int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, struct OnigEncodingTypeST* enc);
4679   int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, struct OnigEncodingTypeST* enc);
4680   int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], struct OnigEncodingTypeST* enc);
4681   int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end);
4682   int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, struct OnigEncodingTypeST* enc);
4683   int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], struct OnigEncodingTypeST* enc);
4684   OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
4685   int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
4686   int ruby_encoding_index;
4687 } OnigEncodingType;
4688
4689 typedef OnigEncodingType* OnigEncoding;
4690
4691 extern OnigEncodingType OnigEncodingASCII;
4692 # 244 "./include/ruby/oniguruma.h"
4693 extern
4694 int onigenc_mbclen_approximate (const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
4695 # 292 "./include/ruby/oniguruma.h"
4696 extern
4697 OnigUChar* onigenc_step_back (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
4698
4699
4700
4701 extern
4702 int onigenc_init (void);
4703 extern
4704 int onigenc_set_default_encoding (OnigEncoding enc);
4705 extern
4706 OnigEncoding onigenc_get_default_encoding (void);
4707 extern
4708 void onigenc_set_default_caseconv_table (const OnigUChar* table);
4709 extern
4710 OnigUChar* onigenc_get_right_adjust_char_head_with_prev (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
4711 extern
4712 OnigUChar* onigenc_get_prev_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
4713 extern
4714 OnigUChar* onigenc_get_left_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
4715 extern
4716 OnigUChar* onigenc_get_right_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
4717 extern
4718 int onigenc_strlen (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
4719 extern
4720 int onigenc_strlen_null (OnigEncoding enc, const OnigUChar* p);
4721 extern
4722 int onigenc_str_bytelen_null (OnigEncoding enc, const OnigUChar* p);
4723 # 332 "./include/ruby/oniguruma.h"
4724 typedef unsigned int OnigOptionType;
4725 # 358 "./include/ruby/oniguruma.h"
4726 typedef struct {
4727   unsigned int op;
4728   unsigned int op2;
4729   unsigned int behavior;
4730   OnigOptionType options;
4731   OnigMetaCharTableType meta_char_table;
4732 } OnigSyntaxType;
4733
4734 extern const OnigSyntaxType OnigSyntaxASIS;
4735 extern const OnigSyntaxType OnigSyntaxPosixBasic;
4736 extern const OnigSyntaxType OnigSyntaxPosixExtended;
4737 extern const OnigSyntaxType OnigSyntaxEmacs;
4738 extern const OnigSyntaxType OnigSyntaxGrep;
4739 extern const OnigSyntaxType OnigSyntaxGnuRegex;
4740 extern const OnigSyntaxType OnigSyntaxJava;
4741 extern const OnigSyntaxType OnigSyntaxPerl;
4742 extern const OnigSyntaxType OnigSyntaxPerl_NG;
4743 extern const OnigSyntaxType OnigSyntaxRuby;
4744 # 390 "./include/ruby/oniguruma.h"
4745 extern const OnigSyntaxType* OnigDefaultSyntax;
4746 # 559 "./include/ruby/oniguruma.h"
4747 typedef struct OnigCaptureTreeNodeStruct {
4748   int group;
4749   int beg;
4750   int end;
4751   int allocated;
4752   int num_childs;
4753   struct OnigCaptureTreeNodeStruct** childs;
4754 } OnigCaptureTreeNode;
4755
4756
4757 struct re_registers {
4758   int allocated;
4759   int num_regs;
4760   int* beg;
4761   int* end;
4762
4763   OnigCaptureTreeNode* history_root;
4764 };
4765 # 587 "./include/ruby/oniguruma.h"
4766 typedef struct re_registers OnigRegion;
4767
4768 typedef struct {
4769   OnigEncoding enc;
4770   OnigUChar* par;
4771   OnigUChar* par_end;
4772 } OnigErrorInfo;
4773
4774 typedef struct {
4775   int lower;
4776   int upper;
4777 } OnigRepeatRange;
4778
4779 typedef void (*OnigWarnFunc) (const char* s);
4780 extern void onig_null_warn (const char* s);
4781 # 615 "./include/ruby/oniguruma.h"
4782 typedef struct re_pattern_buffer {
4783
4784   unsigned char* p;
4785   unsigned int used;
4786   unsigned int alloc;
4787
4788   int state;
4789   int num_mem;
4790   int num_repeat;
4791   int num_null_check;
4792   int num_comb_exp_check;
4793   int num_call;
4794   unsigned int capture_history;
4795   unsigned int bt_mem_start;
4796   unsigned int bt_mem_end;
4797   int stack_pop_level;
4798   int repeat_range_alloc;
4799   OnigRepeatRange* repeat_range;
4800
4801   OnigEncoding enc;
4802   OnigOptionType options;
4803   const OnigSyntaxType* syntax;
4804   OnigCaseFoldType case_fold_flag;
4805   void* name_table;
4806
4807
4808   int optimize;
4809   int threshold_len;
4810   int anchor;
4811   OnigDistance anchor_dmin;
4812   OnigDistance anchor_dmax;
4813   int sub_anchor;
4814   unsigned char *exact;
4815   unsigned char *exact_end;
4816   unsigned char map[256];
4817   int *int_map;
4818   int *int_map_backward;
4819   OnigDistance dmin;
4820   OnigDistance dmax;
4821
4822
4823   struct re_pattern_buffer* chain;
4824 } OnigRegexType;
4825
4826 typedef OnigRegexType* OnigRegex;
4827
4828
4829   typedef OnigRegexType regex_t;
4830
4831
4832
4833 typedef struct {
4834   int num_of_elements;
4835   OnigEncoding pattern_enc;
4836   OnigEncoding target_enc;
4837   OnigSyntaxType* syntax;
4838   OnigOptionType option;
4839   OnigCaseFoldType case_fold_flag;
4840 } OnigCompileInfo;
4841
4842
4843 extern
4844 int onig_init (void);
4845 extern
4846 int onig_error_code_to_str (OnigUChar* s, int err_code, ...);
4847 extern
4848 void onig_set_warn_func (OnigWarnFunc f);
4849 extern
4850 void onig_set_verb_warn_func (OnigWarnFunc f);
4851 extern
4852 int onig_new (OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
4853 extern
4854 int onig_new_deluxe (OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
4855 extern
4856 void onig_free (OnigRegex);
4857 extern
4858 int onig_recompile (OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo);
4859 extern
4860 int onig_recompile_deluxe (OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
4861 extern
4862 int onig_search (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
4863 extern
4864 int onig_match (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
4865 extern
4866 OnigRegion* onig_region_new (void);
4867 extern
4868 void onig_region_init (OnigRegion* region);
4869 extern
4870 void onig_region_free (OnigRegion* region, int free_self);
4871 extern
4872 void onig_region_copy (OnigRegion* to, OnigRegion* from);
4873 extern
4874 void onig_region_clear (OnigRegion* region);
4875 extern
4876 int onig_region_resize (OnigRegion* region, int n);
4877 extern
4878 int onig_region_set (OnigRegion* region, int at, int beg, int end);
4879 extern
4880 int onig_name_to_group_numbers (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
4881 extern
4882 int onig_name_to_backref_number (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region);
4883 extern
4884 int onig_foreach_name (OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
4885 extern
4886 int onig_number_of_names (OnigRegex reg);
4887 extern
4888 int onig_number_of_captures (OnigRegex reg);
4889 extern
4890 int onig_number_of_capture_histories (OnigRegex reg);
4891 extern
4892 OnigCaptureTreeNode* onig_get_capture_tree (OnigRegion* region);
4893 extern
4894 int onig_capture_tree_traverse (OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg);
4895 extern
4896 int onig_noname_group_capture_is_active (OnigRegex reg);
4897 extern
4898 OnigEncoding onig_get_encoding (OnigRegex reg);
4899 extern
4900 OnigOptionType onig_get_options (OnigRegex reg);
4901 extern
4902 OnigCaseFoldType onig_get_case_fold_flag (OnigRegex reg);
4903 extern
4904 const OnigSyntaxType* onig_get_syntax (OnigRegex reg);
4905 extern
4906 int onig_set_default_syntax (const OnigSyntaxType* syntax);
4907 extern
4908 void onig_copy_syntax (OnigSyntaxType* to, const OnigSyntaxType* from);
4909 extern
4910 unsigned int onig_get_syntax_op (OnigSyntaxType* syntax);
4911 extern
4912 unsigned int onig_get_syntax_op2 (OnigSyntaxType* syntax);
4913 extern
4914 unsigned int onig_get_syntax_behavior (OnigSyntaxType* syntax);
4915 extern
4916 OnigOptionType onig_get_syntax_options (OnigSyntaxType* syntax);
4917 extern
4918 void onig_set_syntax_op (OnigSyntaxType* syntax, unsigned int op);
4919 extern
4920 void onig_set_syntax_op2 (OnigSyntaxType* syntax, unsigned int op2);
4921 extern
4922 void onig_set_syntax_behavior (OnigSyntaxType* syntax, unsigned int behavior);
4923 extern
4924 void onig_set_syntax_options (OnigSyntaxType* syntax, OnigOptionType options);
4925 extern
4926 int onig_set_meta_char (OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
4927 extern
4928 void onig_copy_encoding (OnigEncoding to, OnigEncoding from);
4929 extern
4930 OnigCaseFoldType onig_get_default_case_fold_flag (void);
4931 extern
4932 int onig_set_default_case_fold_flag (OnigCaseFoldType case_fold_flag);
4933 extern
4934 unsigned int onig_get_match_stack_limit_size (void);
4935 extern
4936 int onig_set_match_stack_limit_size (unsigned int size);
4937 extern
4938 int onig_end (void);
4939 extern
4940 const char* onig_version (void);
4941 extern
4942 const char* onig_copyright (void);
4943 # 17 "./include/ruby/encoding.h" 2
4944 # 69 "./include/ruby/encoding.h"
4945 typedef OnigEncodingType rb_encoding;
4946
4947 int rb_enc_replicate(const char *, rb_encoding *);
4948 int rb_define_dummy_encoding(const char *);
4949
4950 int rb_enc_get_index(VALUE obj);
4951 void rb_enc_set_index(VALUE obj, int encindex);
4952 int rb_enc_find_index(const char *name);
4953 int rb_to_encoding_index(VALUE);
4954 rb_encoding* rb_to_encoding(VALUE);
4955 rb_encoding* rb_enc_get(VALUE);
4956 rb_encoding* rb_enc_compatible(VALUE,VALUE);
4957 rb_encoding* rb_enc_check(VALUE,VALUE);
4958 VALUE rb_enc_associate_index(VALUE, int);
4959 VALUE rb_enc_associate(VALUE, rb_encoding*);
4960 void rb_enc_copy(VALUE dst, VALUE src);
4961
4962 VALUE rb_enc_str_new(const char*, long, rb_encoding*);
4963 VALUE rb_enc_reg_new(const char*, long, rb_encoding*, int);
4964 VALUE rb_enc_sprintf(rb_encoding *, const char*, ...) __attribute__((format(printf, 2, 3)));
4965 VALUE rb_enc_vsprintf(rb_encoding *, const char*, va_list);
4966 long rb_enc_strlen(const char*, const char*, rb_encoding*);
4967 char* rb_enc_nth(const char*, const char*, int, rb_encoding*);
4968 VALUE rb_obj_encoding(VALUE);
4969 VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc);
4970
4971 VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *);
4972 VALUE rb_str_export_to_enc(VALUE, rb_encoding *);
4973 VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
4974
4975
4976 rb_encoding* rb_enc_from_index(int idx);
4977
4978
4979 rb_encoding * rb_enc_find(const char *name);
4980 # 113 "./include/ruby/encoding.h"
4981 int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc);
4982
4983
4984 int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc);
4985
4986
4987
4988
4989
4990
4991
4992 int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc);
4993
4994
4995 unsigned int rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc);
4996
4997
4998
4999 int rb_enc_codelen(int code, rb_encoding *enc);
5000 # 158 "./include/ruby/encoding.h"
5001 int rb_enc_casefold(char *to, const char *p, const char *e, rb_encoding *enc);
5002 int rb_enc_toupper(int c, rb_encoding *enc);
5003 int rb_enc_tolower(int c, rb_encoding *enc);
5004 ID rb_intern3(const char*, long, rb_encoding*);
5005 ID rb_interned_id_p(const char *, long, rb_encoding *);
5006 int rb_enc_symname_p(const char*, rb_encoding*);
5007 int rb_enc_str_coderange(VALUE);
5008 long rb_str_coderange_scan_restartable(const char*, const char*, rb_encoding*, int*);
5009 int rb_enc_str_asciionly_p(VALUE);
5010
5011 VALUE rb_enc_from_encoding(rb_encoding *enc);
5012 rb_encoding *rb_ascii8bit_encoding(void);
5013 rb_encoding *rb_utf8_encoding(void);
5014 rb_encoding *rb_usascii_encoding(void);
5015 rb_encoding *rb_locale_encoding(void);
5016 rb_encoding *rb_filesystem_encoding(void);
5017 rb_encoding *rb_default_external_encoding(void);
5018 rb_encoding *rb_default_internal_encoding(void);
5019 int rb_ascii8bit_encindex(void);
5020 int rb_utf8_encindex(void);
5021 int rb_usascii_encindex(void);
5022 VALUE rb_enc_default_external(void);
5023 VALUE rb_enc_default_internal(void);
5024 void rb_enc_set_default_external(VALUE encoding);
5025 void rb_enc_set_default_internal(VALUE encoding);
5026 VALUE rb_locale_charmap(VALUE klass);
5027 long rb_memsearch(const void*,long,const void*,long,rb_encoding*);
5028
5029 extern VALUE rb_cEncoding;
5030 # 198 "./include/ruby/encoding.h"
5031 static inline int
5032 rb_enc_dummy_p(rb_encoding *enc)
5033 {
5034     return ((enc)->ruby_encoding_index & (1<<24)) != 0;
5035 }
5036
5037
5038
5039 typedef enum {
5040     econv_invalid_byte_sequence,
5041     econv_undefined_conversion,
5042     econv_destination_buffer_full,
5043     econv_source_buffer_empty,
5044     econv_finished,
5045     econv_after_output,
5046     econv_incomplete_input
5047 } rb_econv_result_t;
5048
5049 typedef struct rb_econv_t rb_econv_t;
5050
5051 VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts);
5052 int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding);
5053
5054 int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts);
5055
5056 rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags);
5057 rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts);
5058
5059 rb_econv_result_t rb_econv_convert(rb_econv_t *ec,
5060     const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end,
5061     unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end,
5062     int flags);
5063 void rb_econv_close(rb_econv_t *ec);
5064
5065
5066 int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname);
5067
5068
5069 int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name);
5070 int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name);
5071
5072 VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags);
5073
5074
5075 int rb_econv_insert_output(rb_econv_t *ec,
5076     const unsigned char *str, size_t len, const char *str_encoding);
5077
5078
5079 const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec);
5080
5081
5082 void rb_econv_check_error(rb_econv_t *ec);
5083
5084
5085 VALUE rb_econv_make_exception(rb_econv_t *ec);
5086
5087 int rb_econv_putbackable(rb_econv_t *ec);
5088 void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n);
5089
5090
5091
5092 const char *rb_econv_asciicompat_encoding(const char *encname);
5093
5094 VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags);
5095 VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags);
5096 VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags);
5097 VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags);
5098
5099 void rb_econv_binmode(rb_econv_t *ec);
5100 # 21 "parse.y" 2
5101 # 1 "node.h" 1
5102 # 22 "node.h"
5103 enum node_type {
5104     NODE_METHOD,
5105
5106     NODE_FBODY,
5107
5108     NODE_CFUNC,
5109
5110     NODE_SCOPE,
5111
5112     NODE_BLOCK,
5113
5114     NODE_IF,
5115
5116     NODE_CASE,
5117
5118     NODE_WHEN,
5119
5120     NODE_OPT_N,
5121
5122     NODE_WHILE,
5123
5124     NODE_UNTIL,
5125
5126     NODE_ITER,
5127
5128     NODE_FOR,
5129
5130     NODE_BREAK,
5131
5132     NODE_NEXT,
5133
5134     NODE_REDO,
5135
5136     NODE_RETRY,
5137
5138     NODE_BEGIN,
5139
5140     NODE_RESCUE,
5141
5142     NODE_RESBODY,
5143
5144     NODE_ENSURE,
5145
5146     NODE_AND,
5147
5148     NODE_OR,
5149
5150     NODE_MASGN,
5151
5152     NODE_LASGN,
5153
5154     NODE_DASGN,
5155
5156     NODE_DASGN_CURR,
5157
5158     NODE_GASGN,
5159
5160     NODE_IASGN,
5161
5162     NODE_IASGN2,
5163
5164     NODE_CDECL,
5165
5166     NODE_CVASGN,
5167
5168     NODE_CVDECL,
5169
5170     NODE_OP_ASGN1,
5171
5172     NODE_OP_ASGN2,
5173
5174     NODE_OP_ASGN_AND,
5175
5176     NODE_OP_ASGN_OR,
5177
5178     NODE_CALL,
5179
5180     NODE_FCALL,
5181
5182     NODE_VCALL,
5183
5184     NODE_SUPER,
5185
5186     NODE_ZSUPER,
5187
5188     NODE_ARRAY,
5189
5190     NODE_ZARRAY,
5191
5192     NODE_VALUES,
5193
5194     NODE_HASH,
5195
5196     NODE_RETURN,
5197
5198     NODE_YIELD,
5199
5200     NODE_LVAR,
5201
5202     NODE_DVAR,
5203
5204     NODE_GVAR,
5205
5206     NODE_IVAR,
5207
5208     NODE_CONST,
5209
5210     NODE_CVAR,
5211
5212     NODE_NTH_REF,
5213
5214     NODE_BACK_REF,
5215
5216     NODE_MATCH,
5217
5218     NODE_MATCH2,
5219
5220     NODE_MATCH3,
5221
5222     NODE_LIT,
5223
5224     NODE_STR,
5225
5226     NODE_DSTR,
5227
5228     NODE_XSTR,
5229
5230     NODE_DXSTR,
5231
5232     NODE_EVSTR,
5233
5234     NODE_DREGX,
5235
5236     NODE_DREGX_ONCE,
5237
5238     NODE_ARGS,
5239
5240     NODE_ARGS_AUX,
5241
5242     NODE_OPT_ARG,
5243
5244     NODE_POSTARG,
5245
5246     NODE_ARGSCAT,
5247
5248     NODE_ARGSPUSH,
5249
5250     NODE_SPLAT,
5251
5252     NODE_TO_ARY,
5253
5254     NODE_BLOCK_ARG,
5255
5256     NODE_BLOCK_PASS,
5257
5258     NODE_DEFN,
5259
5260     NODE_DEFS,
5261
5262     NODE_ALIAS,
5263
5264     NODE_VALIAS,
5265
5266     NODE_UNDEF,
5267
5268     NODE_CLASS,
5269
5270     NODE_MODULE,
5271
5272     NODE_SCLASS,
5273
5274     NODE_COLON2,
5275
5276     NODE_COLON3,
5277
5278     NODE_DOT2,
5279
5280     NODE_DOT3,
5281
5282     NODE_FLIP2,
5283
5284     NODE_FLIP3,
5285
5286     NODE_ATTRSET,
5287
5288     NODE_SELF,
5289
5290     NODE_NIL,
5291
5292     NODE_TRUE,
5293
5294     NODE_FALSE,
5295
5296     NODE_ERRINFO,
5297
5298     NODE_DEFINED,
5299
5300     NODE_POSTEXE,
5301
5302     NODE_ALLOCA,
5303
5304     NODE_BMETHOD,
5305
5306     NODE_MEMO,
5307
5308     NODE_IFUNC,
5309
5310     NODE_DSYM,
5311
5312     NODE_ATTRASGN,
5313
5314     NODE_PRELUDE,
5315
5316     NODE_LAMBDA,
5317
5318     NODE_OPTBLOCK,
5319
5320     NODE_LAST
5321
5322 };
5323
5324 typedef struct RNode {
5325     unsigned long flags;
5326     char *nd_file;
5327     union {
5328  struct RNode *node;
5329  ID id;
5330  VALUE value;
5331  VALUE (*cfunc)();
5332  ID *tbl;
5333     } u1;
5334     union {
5335  struct RNode *node;
5336  ID id;
5337  long argc;
5338  VALUE value;
5339     } u2;
5340     union {
5341  struct RNode *node;
5342  ID id;
5343  long state;
5344  struct global_entry *entry;
5345  long cnt;
5346  VALUE value;
5347     } u3;
5348 } NODE;
5349 # 486 "node.h"
5350 VALUE rb_parser_new(void);
5351 VALUE rb_parser_end_seen_p(VALUE);
5352 VALUE rb_parser_encoding(VALUE);
5353
5354 NODE *rb_parser_compile_cstr(volatile VALUE, const char*, const char*, int, int);
5355 NODE *rb_parser_compile_string(volatile VALUE, const char*, VALUE, int);
5356 NODE *rb_parser_compile_file(volatile VALUE, const char*, VALUE, int);
5357
5358 NODE *rb_compile_cstr(const char*, const char*, int, int);
5359 NODE *rb_compile_string(const char*, VALUE, int);
5360 NODE *rb_compile_file(const char*, VALUE, int);
5361
5362 void rb_add_method(VALUE, ID, NODE *, int);
5363 NODE *rb_node_newnode(enum node_type,VALUE,VALUE,VALUE);
5364
5365 NODE* rb_method_node(VALUE klass, ID id);
5366 int rb_node_arity(NODE* node);
5367
5368 struct global_entry *rb_global_entry(ID);
5369 VALUE rb_gvar_get(struct global_entry *);
5370 VALUE rb_gvar_set(struct global_entry *, VALUE);
5371 VALUE rb_gvar_defined(struct global_entry *);
5372 # 22 "parse.y" 2
5373 # 1 "parse.h" 1
5374 # 288 "parse.h"
5375 typedef union YYSTYPE
5376 {
5377     VALUE val;
5378     NODE *node;
5379     ID id;
5380     int num;
5381 }
5382
5383  YYSTYPE;
5384 # 23 "parse.y" 2
5385 # 1 "id.h" 1
5386 # 38 "id.h"
5387 enum ruby_method_ids {
5388 # 73 "id.h"
5389     idPLUS = '+',
5390     idMINUS = '-',
5391     idMULT = '*',
5392     idDIV = '/',
5393     idMOD = '%',
5394     idLT = '<',
5395     idLTLT = 338,
5396     idLE = 329,
5397     idGT = '>',
5398     idGE = 328,
5399     idEq = 325,
5400     idEqq = 326,
5401     idNeq = 327,
5402     idNot = '!',
5403     idBackquote = '`',
5404     idEqTilde = 332,
5405     idAREF = 336,
5406     idASET = 337,
5407     idLAST_TOKEN = 376 >> 3,
5408     tIntern,
5409     tMethodMissing,
5410     tLength,
5411     tGets,
5412     tSucc,
5413     tEach,
5414     tLambda,
5415     tSend,
5416     t__send__,
5417     tInitialize,
5418
5419
5420
5421
5422     tLAST_ID,
5423
5424
5425
5426
5427
5428     idIntern = ((tIntern<<3)|0x00),
5429     idMethodMissing = ((tMethodMissing<<3)|0x00),
5430     idLength = ((tLength<<3)|0x00),
5431     idGets = ((tGets<<3)|0x00),
5432     idSucc = ((tSucc<<3)|0x00),
5433     idEach = ((tEach<<3)|0x00),
5434     idLambda = ((tLambda<<3)|0x00),
5435     idSend = ((tSend<<3)|0x00),
5436     id__send__ = ((t__send__<<3)|0x00),
5437     idInitialize = ((tInitialize<<3)|0x00)
5438 };
5439
5440
5441 struct ruby_method_ids_check {
5442
5443
5444 int checking_for_tUPLUS[321 == 321 ? 1 : -1];
5445 int checking_for_tUMINUS[322 == 322 ? 1 : -1];
5446 int checking_for_tPOW[323 == 323 ? 1 : -1];
5447 int checking_for_tCMP[324 == 324 ? 1 : -1];
5448 int checking_for_tEQ[325 == 325 ? 1 : -1];
5449 int checking_for_tEQQ[326 == 326 ? 1 : -1];
5450 int checking_for_tNEQ[327 == 327 ? 1 : -1];
5451 int checking_for_tGEQ[328 == 328 ? 1 : -1];
5452 int checking_for_tLEQ[329 == 329 ? 1 : -1];
5453 int checking_for_tANDOP[330 == 330 ? 1 : -1];
5454 int checking_for_tOROP[331 == 331 ? 1 : -1];
5455 int checking_for_tMATCH[332 == 332 ? 1 : -1];
5456 int checking_for_tNMATCH[333 == 333 ? 1 : -1];
5457 int checking_for_tDOT2[334 == 334 ? 1 : -1];
5458 int checking_for_tDOT3[335 == 335 ? 1 : -1];
5459 int checking_for_tAREF[336 == 336 ? 1 : -1];
5460 int checking_for_tASET[337 == 337 ? 1 : -1];
5461 int checking_for_tLSHFT[338 == 338 ? 1 : -1];
5462 int checking_for_tRSHFT[339 == 339 ? 1 : -1];
5463 int checking_for_tLAMBDA[352 == 352 ? 1 : -1];
5464 int checking_for_idNULL[365 == 365 ? 1 : -1];
5465 int checking_for_idRespond_to[366 == 366 ? 1 : -1];
5466 int checking_for_idIFUNC[367 == 367 ? 1 : -1];
5467 int checking_for_idCFUNC[368 == 368 ? 1 : -1];
5468 int checking_for_idThrowState[369 == 369 ? 1 : -1];
5469 int checking_for_id_core_set_method_alias[370 == 370 ? 1 : -1];
5470 int checking_for_id_core_set_variable_alias[371 == 371 ? 1 : -1];
5471 int checking_for_id_core_undef_method[372 == 372 ? 1 : -1];
5472 int checking_for_id_core_define_method[373 == 373 ? 1 : -1];
5473 int checking_for_id_core_define_singleton_method[374 == 374 ? 1 : -1];
5474 int checking_for_id_core_set_postexe[375 == 375 ? 1 : -1];
5475 int checking_for_tLAST_TOKEN[376 == 376 ? 1 : -1];
5476 };
5477 # 24 "parse.y" 2
5478 # 1 "regenc.h" 1
5479 # 42 "regenc.h"
5480 typedef struct {
5481   OnigCodePoint from;
5482   OnigCodePoint to;
5483 } OnigPairCaseFoldCodes;
5484 # 98 "regenc.h"
5485 typedef struct {
5486   OnigUChar *name;
5487   int ctype;
5488   short int len;
5489 } PosixBracketEntryType;
5490 # 114 "regenc.h"
5491 extern int onigenc_ascii_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
5492 extern int onigenc_ascii_get_case_fold_codes_by_str (OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc);
5493 extern int onigenc_apply_all_case_fold_with_map (int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg);
5494 extern int onigenc_get_case_fold_codes_by_str_with_map (int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
5495 extern int onigenc_not_support_get_ctype_code_range (OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
5496 extern int onigenc_is_mbc_newline_0x0a (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
5497
5498
5499
5500 extern int onigenc_ascii_mbc_case_fold (OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower, OnigEncoding enc);
5501 extern int onigenc_single_byte_mbc_enc_len (const OnigUChar* p, const OnigUChar* e, OnigEncoding enc);
5502 extern OnigCodePoint onigenc_single_byte_mbc_to_code (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
5503 extern int onigenc_single_byte_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
5504 extern int onigenc_single_byte_code_to_mbc (OnigCodePoint code, OnigUChar *buf, OnigEncoding enc);
5505 extern OnigUChar* onigenc_single_byte_left_adjust_char_head (const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
5506 extern int onigenc_always_true_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
5507 extern int onigenc_always_false_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
5508 extern int onigenc_ascii_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
5509
5510
5511 extern OnigCodePoint onigenc_mbn_mbc_to_code (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
5512 extern int onigenc_mbn_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower);
5513 extern int onigenc_mb2_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
5514 extern int onigenc_mb2_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
5515 extern int onigenc_minimum_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
5516 extern int onigenc_unicode_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
5517 extern int onigenc_mb2_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
5518 extern int onigenc_mb4_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
5519 extern int onigenc_mb4_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
5520 extern int onigenc_mb4_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
5521
5522
5523
5524 extern int onigenc_unicode_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
5525 extern int onigenc_utf16_32_get_ctype_code_range (OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
5526 extern int onigenc_unicode_ctype_code_range (int ctype, const OnigCodePoint* ranges[]);
5527 extern int onigenc_unicode_get_case_fold_codes_by_str (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
5528 extern int onigenc_unicode_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* fold);
5529 extern int onigenc_unicode_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
5530
5531
5532
5533
5534
5535
5536
5537 extern const OnigUChar OnigEncISO_8859_1_ToLowerCaseTable[];
5538 extern const OnigUChar OnigEncISO_8859_1_ToUpperCaseTable[];
5539
5540 extern int
5541 onigenc_with_ascii_strncmp (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, const OnigUChar* sascii , int n);
5542 extern OnigUChar*
5543 onigenc_step (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, int n);
5544
5545
5546 extern int onig_is_in_code_range (const OnigUChar* p, OnigCodePoint code);
5547
5548 extern OnigEncoding OnigEncDefaultCharEncoding;
5549 extern const OnigUChar OnigEncAsciiToLowerCaseTable[];
5550 extern const OnigUChar OnigEncAsciiToUpperCaseTable[];
5551 extern const unsigned short OnigEncAsciiCtypeTable[];
5552 # 25 "parse.y" 2
5553
5554 # 1 "/usr/include/errno.h" 1 3 4
5555 # 32 "/usr/include/errno.h" 3 4
5556
5557
5558
5559
5560 # 1 "/usr/include/bits/errno.h" 1 3 4
5561 # 25 "/usr/include/bits/errno.h" 3 4
5562 # 1 "/usr/include/linux/errno.h" 1 3 4
5563
5564
5565
5566 # 1 "/usr/include/asm/errno.h" 1 3 4
5567 # 1 "/usr/include/asm-generic/errno.h" 1 3 4
5568
5569
5570
5571 # 1 "/usr/include/asm-generic/errno-base.h" 1 3 4
5572 # 5 "/usr/include/asm-generic/errno.h" 2 3 4
5573 # 1 "/usr/include/asm/errno.h" 2 3 4
5574 # 5 "/usr/include/linux/errno.h" 2 3 4
5575 # 26 "/usr/include/bits/errno.h" 2 3 4
5576 # 43 "/usr/include/bits/errno.h" 3 4
5577 extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
5578 # 37 "/usr/include/errno.h" 2 3 4
5579 # 55 "/usr/include/errno.h" 3 4
5580 extern char *program_invocation_name, *program_invocation_short_name;
5581
5582
5583
5584
5585 # 69 "/usr/include/errno.h" 3 4
5586 typedef int error_t;
5587 # 27 "parse.y" 2
5588 # 1 "/usr/include/ctype.h" 1 3 4
5589 # 30 "/usr/include/ctype.h" 3 4
5590
5591 # 48 "/usr/include/ctype.h" 3 4
5592 enum
5593 {
5594   _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
5595   _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
5596   _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
5597   _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
5598   _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
5599   _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
5600   _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
5601   _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
5602   _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
5603   _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
5604   _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
5605   _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
5606 };
5607 # 81 "/usr/include/ctype.h" 3 4
5608 extern __const unsigned short int **__ctype_b_loc (void)
5609      __attribute__ ((__const));
5610 extern __const __int32_t **__ctype_tolower_loc (void)
5611      __attribute__ ((__const));
5612 extern __const __int32_t **__ctype_toupper_loc (void)
5613      __attribute__ ((__const));
5614 # 96 "/usr/include/ctype.h" 3 4
5615
5616
5617
5618
5619
5620
5621 extern int isalnum (int) __attribute__ ((__nothrow__));
5622 extern int isalpha (int) __attribute__ ((__nothrow__));
5623 extern int iscntrl (int) __attribute__ ((__nothrow__));
5624 extern int isdigit (int) __attribute__ ((__nothrow__));
5625 extern int islower (int) __attribute__ ((__nothrow__));
5626 extern int isgraph (int) __attribute__ ((__nothrow__));
5627 extern int isprint (int) __attribute__ ((__nothrow__));
5628 extern int ispunct (int) __attribute__ ((__nothrow__));
5629 extern int isspace (int) __attribute__ ((__nothrow__));
5630 extern int isupper (int) __attribute__ ((__nothrow__));
5631 extern int isxdigit (int) __attribute__ ((__nothrow__));
5632
5633
5634
5635 extern int tolower (int __c) __attribute__ ((__nothrow__));
5636
5637
5638 extern int toupper (int __c) __attribute__ ((__nothrow__));
5639
5640
5641
5642
5643
5644
5645
5646
5647 extern int isblank (int) __attribute__ ((__nothrow__));
5648
5649
5650
5651
5652
5653
5654 extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__));
5655
5656
5657
5658
5659
5660
5661 extern int isascii (int __c) __attribute__ ((__nothrow__));
5662
5663
5664
5665 extern int toascii (int __c) __attribute__ ((__nothrow__));
5666
5667
5668
5669 extern int _toupper (int) __attribute__ ((__nothrow__));
5670 extern int _tolower (int) __attribute__ ((__nothrow__));
5671 # 190 "/usr/include/ctype.h" 3 4
5672 extern __inline int
5673 __attribute__ ((__nothrow__)) tolower (int __c)
5674 {
5675   return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
5676 }
5677
5678 extern __inline int
5679 __attribute__ ((__nothrow__)) toupper (int __c)
5680 {
5681   return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
5682 }
5683 # 247 "/usr/include/ctype.h" 3 4
5684 extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
5685 extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
5686 extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
5687 extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
5688 extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
5689 extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
5690 extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
5691 extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
5692 extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
5693 extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
5694 extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
5695
5696 extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));
5697
5698
5699
5700 extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
5701 extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
5702
5703
5704 extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
5705 extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
5706 # 323 "/usr/include/ctype.h" 3 4
5707
5708 # 28 "parse.y" 2
5709 # 39 "parse.y"
5710 static ID register_symid(ID, const char *, long, rb_encoding *);
5711
5712 # 1 "id.c" 1
5713 # 16 "id.c"
5714 static void
5715 Init_id(void)
5716 {
5717
5718
5719     rb_encoding *enc = rb_usascii_encoding();
5720
5721     register_symid(365, "", strlen(""), enc);
5722     register_symid(367, "<IFUNC>", strlen("<IFUNC>"), enc),
5723     register_symid(368, "<CFUNC>", strlen("<CFUNC>"), enc),
5724     register_symid(366, "respond_to?", strlen("respond_to?"), enc),
5725     register_symid(369, "#__ThrowState__", strlen("#__ThrowState__"), enc),
5726
5727     register_symid(370, "core#set_method_alias", strlen("core#set_method_alias"), enc),
5728     register_symid(371, "core#set_variable_alias", strlen("core#set_variable_alias"), enc),
5729     register_symid(372, "core#undef_method", strlen("core#undef_method"), enc),
5730     register_symid(373, "core#define_method", strlen("core#define_method"), enc),
5731     register_symid(374, "core#define_singleton_method", strlen("core#define_singleton_method"), enc),
5732     register_symid(375, "core#set_postexe", strlen("core#set_postexe"), enc),
5733
5734     register_symid(idEach, "each", strlen("each"), enc);
5735     register_symid(idLength, "length", strlen("length"), enc);
5736     register_symid(idLambda, "lambda", strlen("lambda"), enc);
5737     register_symid(idIntern, "intern", strlen("intern"), enc);
5738     register_symid(idGets, "gets", strlen("gets"), enc);
5739     register_symid(idSucc, "succ", strlen("succ"), enc);
5740     register_symid(idMethodMissing, "method_missing", strlen("method_missing"), enc);
5741
5742
5743
5744
5745     register_symid(idSend, "send", strlen("send"), enc);
5746     register_symid(id__send__, "__send__", strlen("__send__"), enc);
5747     register_symid(idInitialize, "initialize", strlen("initialize"), enc);
5748 }
5749 # 42 "parse.y" 2
5750 # 58 "parse.y"
5751 enum lex_state_e {
5752     EXPR_BEG,
5753     EXPR_END,
5754     EXPR_ENDARG,
5755     EXPR_ARG,
5756     EXPR_CMDARG,
5757     EXPR_MID,
5758     EXPR_FNAME,
5759     EXPR_DOT,
5760     EXPR_CLASS,
5761     EXPR_VALUE
5762 };
5763
5764
5765 typedef unsigned long long stack_type;
5766 # 92 "parse.y"
5767 struct vtable {
5768     ID *tbl;
5769     int pos;
5770     int capa;
5771     struct vtable *prev;
5772 };
5773
5774 struct local_vars {
5775     struct vtable *args;
5776     struct vtable *vars;
5777     struct local_vars *prev;
5778 };
5779
5780
5781
5782
5783
5784
5785
5786 static int
5787 vtable_size(const struct vtable *tbl)
5788 {
5789     if (((VALUE)(tbl) & ~(VALUE)3)) {
5790         return tbl->pos;
5791     }
5792     else {
5793         return 0;
5794     }
5795 }
5796
5797
5798
5799 static struct vtable *
5800 vtable_alloc(struct vtable *prev)
5801 {
5802     struct vtable *tbl = (struct vtable*)ruby_xmalloc(sizeof(struct vtable));
5803     tbl->pos = 0;
5804     tbl->capa = 8;
5805     tbl->tbl = (ID*)ruby_xmalloc2((tbl->capa),sizeof(ID));
5806     tbl->prev = prev;
5807     if (0) printf("vtable_alloc: %p\n", (void *)tbl);
5808     return tbl;
5809 }
5810
5811 static void
5812 vtable_free(struct vtable *tbl)
5813 {
5814     if (0)printf("vtable_free: %p\n", (void *)tbl);
5815     if (((VALUE)(tbl) & ~(VALUE)3)) {
5816         if (tbl->tbl) {
5817             ruby_xfree(tbl->tbl);
5818         }
5819         ruby_xfree(tbl);
5820     }
5821 }
5822
5823 static void
5824 vtable_add(struct vtable *tbl, ID id)
5825 {
5826     if (!((VALUE)(tbl) & ~(VALUE)3)) {
5827         rb_bug("vtable_add: vtable is not allocated (%p)", (void *)tbl);
5828     }
5829     if (0) printf("vtable_add: %p, %s\n", (void *)tbl, rb_id2name(id));
5830
5831     if (tbl->pos == tbl->capa) {
5832         tbl->capa = tbl->capa * 2;
5833         (tbl->tbl)=(ID*)ruby_xrealloc2((char*)(tbl->tbl),(tbl->capa),sizeof(ID));
5834     }
5835     tbl->tbl[tbl->pos++] = id;
5836 }
5837
5838 static int
5839 vtable_included(const struct vtable * tbl, ID id)
5840 {
5841     int i;
5842
5843     if (((VALUE)(tbl) & ~(VALUE)3)) {
5844         for (i = 0; i < tbl->pos; i++) {
5845             if (tbl->tbl[i] == id) {
5846                 return 1;
5847             }
5848         }
5849     }
5850     return 0;
5851 }
5852
5853
5854 typedef struct token_info {
5855     const char *token;
5856     int linenum;
5857     int column;
5858     int nonspc;
5859     struct token_info *next;
5860 } token_info;
5861 # 197 "parse.y"
5862 struct parser_params {
5863     int is_ripper;
5864     NODE *heap;
5865
5866     YYSTYPE *parser_yylval;
5867     VALUE eofp;
5868
5869     NODE *parser_lex_strterm;
5870     enum lex_state_e parser_lex_state;
5871     stack_type parser_cond_stack;
5872     stack_type parser_cmdarg_stack;
5873     int parser_class_nest;
5874     int parser_paren_nest;
5875     int parser_lpar_beg;
5876     int parser_in_single;
5877     int parser_in_def;
5878     int parser_compile_for_eval;
5879     VALUE parser_cur_mid;
5880     int parser_in_defined;
5881     char *parser_tokenbuf;
5882     int parser_tokidx;
5883     int parser_toksiz;
5884     VALUE parser_lex_input;
5885     VALUE parser_lex_lastline;
5886     VALUE parser_lex_nextline;
5887     const char *parser_lex_pbeg;
5888     const char *parser_lex_p;
5889     const char *parser_lex_pend;
5890     int parser_heredoc_end;
5891     int parser_command_start;
5892     NODE *parser_deferred_nodes;
5893     int parser_lex_gets_ptr;
5894     VALUE (*parser_lex_gets)(struct parser_params*,VALUE);
5895     struct local_vars *parser_lvtbl;
5896     int parser_ruby__end__seen;
5897     int line_count;
5898     int has_shebang;
5899     char *parser_ruby_sourcefile;
5900     int parser_ruby_sourceline;
5901     rb_encoding *enc;
5902     rb_encoding *utf8;
5903
5904     int parser_yydebug;
5905
5906
5907
5908     NODE *parser_eval_tree_begin;
5909     NODE *parser_eval_tree;
5910     VALUE debug_lines;
5911     VALUE coverage;
5912     int nerr;
5913
5914     token_info *parser_token_info;
5915 # 263 "parse.y"
5916 };
5917 # 275 "parse.y"
5918 void *rb_parser_malloc(struct parser_params *, size_t);
5919 void *rb_parser_realloc(struct parser_params *, void *, size_t);
5920 void *rb_parser_calloc(struct parser_params *, size_t, size_t);
5921 void rb_parser_free(struct parser_params *, void *);
5922
5923
5924 static int parser_yyerror(struct parser_params*, const char*);
5925 # 325 "parse.y"
5926 static int yylex(void*, void*);
5927
5928
5929
5930
5931 static NODE* node_newnode(struct parser_params *, enum node_type, VALUE, VALUE, VALUE);
5932
5933
5934 static NODE *cond_gen(struct parser_params*,NODE*);
5935
5936 static NODE *logop_gen(struct parser_params*,enum node_type,NODE*,NODE*);
5937
5938
5939 static NODE *newline_node(NODE*);
5940 static void fixpos(NODE*,NODE*);
5941
5942 static int value_expr_gen(struct parser_params*,NODE*);
5943 static void void_expr_gen(struct parser_params*,NODE*);
5944 static NODE *remove_begin(NODE*);
5945
5946
5947
5948 static void void_stmts_gen(struct parser_params*,NODE*);
5949
5950 static void reduce_nodes_gen(struct parser_params*,NODE**);
5951
5952 static void block_dup_check_gen(struct parser_params*,NODE*,NODE*);
5953
5954
5955 static NODE *block_append_gen(struct parser_params*,NODE*,NODE*);
5956
5957 static NODE *list_append_gen(struct parser_params*,NODE*,NODE*);
5958
5959 static NODE *list_concat_gen(struct parser_params*,NODE*,NODE*);
5960
5961 static NODE *arg_append_gen(struct parser_params*,NODE*,NODE*);
5962
5963 static NODE *arg_concat_gen(struct parser_params*,NODE*,NODE*);
5964
5965 static NODE *literal_concat_gen(struct parser_params*,NODE*,NODE*);
5966
5967 static NODE *new_evstr_gen(struct parser_params*,NODE*);
5968
5969 static NODE *evstr2dstr_gen(struct parser_params*,NODE*);
5970
5971 static NODE *splat_array(NODE*);
5972
5973 static NODE *call_bin_op_gen(struct parser_params*,NODE*,ID,NODE*);
5974
5975 static NODE *call_uni_op_gen(struct parser_params*,NODE*,ID);
5976
5977
5978 static NODE *new_args_gen(struct parser_params*,NODE*,NODE*,ID,NODE*,ID);
5979
5980 static void shadowing_lvar_gen(struct parser_params*,ID);
5981
5982
5983 static NODE *negate_lit(NODE*);
5984 static NODE *ret_args_gen(struct parser_params*,NODE*);
5985
5986 static NODE *arg_blk_pass(NODE*,NODE*);
5987 static NODE *new_yield_gen(struct parser_params*,NODE*);
5988
5989
5990 static NODE *gettable_gen(struct parser_params*,ID);
5991
5992 static NODE *assignable_gen(struct parser_params*,ID,NODE*);
5993
5994 static void new_bv_gen(struct parser_params*,ID);
5995
5996 static NODE *aryset_gen(struct parser_params*,NODE*,NODE*);
5997
5998 static NODE *attrset_gen(struct parser_params*,NODE*,ID);
5999
6000
6001 static void rb_backref_error_gen(struct parser_params*,NODE*);
6002
6003 static NODE *node_assign_gen(struct parser_params*,NODE*,NODE*);
6004
6005
6006 static NODE *match_op_gen(struct parser_params*,NODE*,NODE*);
6007
6008
6009 static void local_push_gen(struct parser_params*,int);
6010
6011 static void local_pop_gen(struct parser_params*);
6012
6013 static int local_var_gen(struct parser_params*, ID);
6014
6015 static int arg_var_gen(struct parser_params*, ID);
6016
6017 static int local_id_gen(struct parser_params*, ID);
6018
6019 static ID *local_tbl_gen(struct parser_params*);
6020
6021 static ID internal_id_gen(struct parser_params*);
6022
6023
6024 static void dyna_push_gen(struct parser_params*);
6025
6026 static void dyna_pop_gen(struct parser_params*);
6027
6028 static int dyna_in_block_gen(struct parser_params*);
6029
6030
6031 static int dvar_defined_gen(struct parser_params*,ID);
6032
6033 static int dvar_curr_gen(struct parser_params*,ID);
6034
6035
6036 static void fixup_nodes(NODE **);
6037
6038 extern int rb_dvar_defined(ID);
6039 extern int rb_local_defined(ID);
6040 extern int rb_parse_in_eval(void);
6041
6042 static VALUE reg_compile_gen(struct parser_params*, VALUE, int);
6043
6044 static void reg_fragment_setenc_gen(struct parser_params*, VALUE, int);
6045
6046 static void reg_fragment_check_gen(struct parser_params*, VALUE, int);
6047
6048 static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match);
6049
6050 int rb_enc_symname2_p(const char *, int, rb_encoding *);
6051
6052
6053
6054 static int lvar_defined_gen(struct parser_params*, ID);
6055 # 590 "parse.y"
6056 static void token_info_push(struct parser_params*, const char *token);
6057 static void token_info_pop(struct parser_params*, const char *token);
6058 # 941 "parse.c"
6059 # 949 "parse.c"
6060 typedef unsigned char yytype_uint8;
6061
6062
6063
6064
6065
6066
6067 typedef signed char yytype_int8;
6068
6069
6070
6071
6072
6073
6074
6075 typedef unsigned short int yytype_uint16;
6076
6077
6078
6079
6080
6081 typedef short int yytype_int16;
6082 # 1101 "parse.c"
6083 union yyalloc
6084 {
6085   yytype_int16 yyss;
6086   YYSTYPE yyvs;
6087   };
6088 # 1174 "parse.c"
6089 static const yytype_uint8 yytranslate[] =
6090 {
6091        0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6092      148, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6093        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6094        2, 2, 147, 123, 2, 2, 2, 121, 116, 2,
6095      143, 144, 119, 117, 141, 118, 140, 120, 2, 2,
6096        2, 2, 2, 2, 2, 2, 2, 2, 111, 146,
6097      113, 109, 112, 110, 2, 2, 2, 2, 2, 2,
6098        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6099        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6100        2, 139, 2, 145, 115, 2, 142, 2, 2, 2,
6101        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6102        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6103        2, 2, 2, 137, 114, 138, 124, 2, 2, 2,
6104        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6105        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6106        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6107        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6108        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6109        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6110        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6111        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6112        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6113        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6114        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6115        2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
6116        2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
6117        5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
6118       15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
6119       25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
6120       35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
6121       45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6122       55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
6123       65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
6124       75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
6125       85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
6126       95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
6127      105, 106, 107, 108, 122, 125, 126, 127, 128, 129,
6128      130, 131, 132, 133, 134, 135, 136
6129 };
6130
6131
6132
6133
6134 static const yytype_uint16 yyprhs[] =
6135 {
6136        0, 0, 3, 4, 7, 12, 15, 17, 19, 23,
6137       26, 27, 32, 36, 40, 44, 47, 51, 55, 59,
6138       63, 67, 68, 74, 79, 83, 87, 91, 98, 104,
6139      110, 116, 120, 124, 128, 132, 134, 136, 140, 144,
6140      148, 151, 153, 155, 157, 159, 162, 165, 168, 170,
6141      175, 180, 181, 187, 190, 194, 199, 205, 210, 216,
6142      219, 222, 224, 228, 230, 234, 236, 239, 243, 249,
6143      252, 257, 260, 265, 267, 271, 273, 277, 280, 284,
6144      286, 290, 292, 297, 301, 305, 309, 313, 316, 318,
6145      320, 325, 329, 333, 337, 341, 344, 346, 348, 350,
6146      353, 355, 359, 361, 363, 365, 367, 369, 371, 373,
6147      375, 377, 379, 380, 385, 387, 389, 391, 393, 395,
6148      397, 399, 401, 403, 405, 407, 409, 411, 413, 415,
6149      417, 419, 421, 423, 425, 427, 429, 431, 433, 435,
6150      437, 439, 441, 443, 445, 447, 449, 451, 453, 455,
6151      457, 459, 461, 463, 465, 467, 469, 471, 473, 475,
6152      477, 479, 481, 483, 485, 487, 489, 491, 493, 495,
6153      497, 499, 501, 503, 505, 507, 509, 511, 513, 515,
6154      517, 519, 521, 523, 525, 529, 535, 539, 545, 552,
6155      558, 564, 570, 576, 581, 585, 589, 593, 597, 601,
6156      605, 609, 613, 617, 622, 627, 630, 633, 637, 641,
6157      645, 649, 653, 657, 661, 665, 669, 673, 677, 681,
6158      685, 688, 691, 695, 699, 703, 707, 708, 713, 720,
6159      722, 724, 726, 729, 734, 737, 741, 743, 745, 747,
6160      749, 751, 754, 757, 762, 764, 765, 768, 771, 774,
6161      776, 778, 780, 783, 787, 792, 796, 801, 804, 806,
6162      808, 810, 812, 814, 816, 818, 820, 822, 823, 828,
6163      829, 834, 838, 842, 845, 849, 853, 855, 860, 864,
6164      866, 867, 874, 879, 883, 886, 888, 891, 894, 901,
6165      908, 909, 910, 918, 919, 920, 928, 934, 939, 940,
6166      941, 951, 952, 959, 960, 961, 970, 971, 977, 978,
6167      985, 986, 987, 997, 999, 1001, 1003, 1005, 1007, 1009,
6168     1011, 1013, 1015, 1017, 1019, 1021, 1023, 1025, 1027, 1029,
6169     1031, 1033, 1036, 1038, 1040, 1042, 1048, 1050, 1053, 1055,
6170     1057, 1059, 1063, 1065, 1069, 1071, 1076, 1083, 1087, 1093,
6171     1096, 1101, 1103, 1107, 1114, 1123, 1128, 1135, 1140, 1143,
6172     1150, 1153, 1158, 1165, 1168, 1173, 1176, 1181, 1183, 1185,
6173     1187, 1191, 1193, 1198, 1200, 1203, 1205, 1209, 1211, 1213,
6174     1214, 1218, 1223, 1225, 1229, 1233, 1234, 1240, 1243, 1248,
6175     1253, 1256, 1261, 1266, 1270, 1274, 1278, 1281, 1283, 1288,
6176     1289, 1295, 1296, 1302, 1308, 1310, 1312, 1319, 1321, 1323,
6177     1325, 1327, 1330, 1332, 1335, 1337, 1339, 1341, 1343, 1345,
6178     1347, 1349, 1352, 1356, 1360, 1364, 1368, 1372, 1373, 1377,
6179     1379, 1382, 1386, 1390, 1391, 1395, 1396, 1399, 1400, 1403,
6180     1405, 1406, 1410, 1411, 1416, 1418, 1420, 1422, 1424, 1427,
6181     1429, 1431, 1433, 1435, 1439, 1441, 1443, 1446, 1449, 1451,
6182     1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471,
6183     1473, 1475, 1477, 1479, 1481, 1483, 1484, 1489, 1492, 1496,
6184     1499, 1506, 1515, 1520, 1527, 1532, 1539, 1542, 1547, 1554,
6185     1557, 1562, 1565, 1570, 1572, 1573, 1575, 1577, 1579, 1581,
6186     1583, 1585, 1587, 1591, 1593, 1597, 1601, 1605, 1607, 1611,
6187     1613, 1617, 1619, 1621, 1624, 1626, 1628, 1630, 1633, 1636,
6188     1638, 1640, 1641, 1646, 1648, 1651, 1653, 1657, 1661, 1664,
6189     1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684,
6190     1686, 1688, 1689, 1691, 1692, 1694, 1697, 1700, 1701, 1703,
6191     1705, 1707, 1709, 1711, 1714
6192 };
6193
6194
6195 static const yytype_int16 yyrhs[] =
6196 {
6197      150, 0, -1, -1, 151, 153, -1, 153, 252, 228,
6198      255, -1, 154, 307, -1, 314, -1, 155, -1, 154,
6199      313, 155, -1, 1, 155, -1, -1, 45, 177, 156,
6200      177, -1, 45, 54, 54, -1, 45, 54, 64, -1,
6201       45, 54, 63, -1, 6, 178, -1, 155, 40, 159,
6202       -1, 155, 41, 159, -1, 155, 42, 159, -1, 155,
6203       43, 159, -1, 155, 44, 155, -1, -1, 47, 157,
6204      137, 153, 138, -1, 48, 137, 153, 138, -1, 172,
6205      109, 160, -1, 165, 109, 160, -1, 279, 87, 160,
6206       -1, 213, 139, 188, 310, 87, 160, -1, 213, 140,
6207       52, 87, 160, -1, 213, 140, 56, 87, 160, -1,
6208      213, 85, 52, 87, 160, -1, 280, 87, 160, -1,
6209      172, 109, 195, -1, 165, 109, 184, -1, 165, 109,
6210      195, -1, 158, -1, 160, -1, 158, 37, 158, -1,
6211      158, 38, 158, -1, 39, 308, 158, -1, 123, 160,
6212       -1, 182, -1, 158, -1, 164, -1, 161, -1, 30,
6213      189, -1, 21, 189, -1, 22, 189, -1, 245, -1,
6214      245, 140, 304, 190, -1, 245, 85, 304, 190, -1,
6215       -1, 94, 163, 234, 153, 138, -1, 303, 190, -1,
6216      303, 190, 162, -1, 213, 140, 304, 190, -1, 213,
6217      140, 304, 190, 162, -1, 213, 85, 304, 190, -1,
6218      213, 85, 304, 190, 162, -1, 32, 190, -1, 31,
6219      190, -1, 167, -1, 89, 166, 309, -1, 167, -1,
6220       89, 166, 309, -1, 169, -1, 169, 168, -1, 169,
6221       95, 171, -1, 169, 95, 171, 141, 170, -1, 169,
6222       95, -1, 169, 95, 141, 170, -1, 95, 171, -1,
6223       95, 171, 141, 170, -1, 95, -1, 95, 141, 170,
6224       -1, 171, -1, 89, 166, 309, -1, 168, 141, -1,
6225      169, 168, 141, -1, 168, -1, 170, 141, 168, -1,
6226      277, -1, 213, 139, 188, 310, -1, 213, 140, 52,
6227       -1, 213, 85, 52, -1, 213, 140, 56, -1, 213,
6228       85, 56, -1, 86, 56, -1, 280, -1, 277, -1,
6229      213, 139, 188, 310, -1, 213, 140, 52, -1, 213,
6230       85, 52, -1, 213, 140, 56, -1, 213, 85, 56,
6231       -1, 86, 56, -1, 280, -1, 52, -1, 56, -1,
6232       86, 173, -1, 173, -1, 213, 85, 173, -1, 52,
6233       -1, 56, -1, 53, -1, 180, -1, 181, -1, 175,
6234       -1, 273, -1, 176, -1, 275, -1, 177, -1, -1,
6235      178, 141, 179, 177, -1, 114, -1, 115, -1, 116,
6236       -1, 69, -1, 70, -1, 71, -1, 77, -1, 78,
6237       -1, 112, -1, 73, -1, 113, -1, 74, -1, 72,
6238       -1, 83, -1, 84, -1, 117, -1, 118, -1, 119,
6239       -1, 95, -1, 120, -1, 121, -1, 68, -1, 123,
6240       -1, 124, -1, 66, -1, 67, -1, 81, -1, 82,
6241       -1, 142, -1, 49, -1, 50, -1, 51, -1, 47,
6242       -1, 48, -1, 45, -1, 37, -1, 7, -1, 21,
6243       -1, 16, -1, 3, -1, 5, -1, 46, -1, 26,
6244       -1, 15, -1, 14, -1, 10, -1, 9, -1, 36,
6245       -1, 20, -1, 25, -1, 4, -1, 22, -1, 34,
6246       -1, 39, -1, 38, -1, 23, -1, 8, -1, 24,
6247       -1, 30, -1, 33, -1, 32, -1, 13, -1, 35,
6248       -1, 6, -1, 17, -1, 31, -1, 11, -1, 12,
6249       -1, 18, -1, 19, -1, 172, 109, 182, -1, 172,
6250      109, 182, 44, 182, -1, 279, 87, 182, -1, 279,
6251       87, 182, 44, 182, -1, 213, 139, 188, 310, 87,
6252      182, -1, 213, 140, 52, 87, 182, -1, 213, 140,
6253       56, 87, 182, -1, 213, 85, 52, 87, 182, -1,
6254      213, 85, 56, 87, 182, -1, 86, 56, 87, 182,
6255       -1, 280, 87, 182, -1, 182, 79, 182, -1, 182,
6256       80, 182, -1, 182, 117, 182, -1, 182, 118, 182,
6257       -1, 182, 119, 182, -1, 182, 120, 182, -1, 182,
6258      121, 182, -1, 182, 68, 182, -1, 122, 59, 68,
6259      182, -1, 122, 60, 68, 182, -1, 66, 182, -1,
6260       67, 182, -1, 182, 114, 182, -1, 182, 115, 182,
6261       -1, 182, 116, 182, -1, 182, 69, 182, -1, 182,
6262      112, 182, -1, 182, 73, 182, -1, 182, 113, 182,
6263       -1, 182, 74, 182, -1, 182, 70, 182, -1, 182,
6264       71, 182, -1, 182, 72, 182, -1, 182, 77, 182,
6265       -1, 182, 78, 182, -1, 123, 182, -1, 124, 182,
6266       -1, 182, 83, 182, -1, 182, 84, 182, -1, 182,
6267       75, 182, -1, 182, 76, 182, -1, -1, 46, 308,
6268      183, 182, -1, 182, 110, 182, 308, 111, 182, -1,
6269      196, -1, 182, -1, 314, -1, 194, 311, -1, 194,
6270      141, 301, 311, -1, 301, 311, -1, 143, 188, 309,
6271       -1, 314, -1, 186, -1, 314, -1, 189, -1, 164,
6272       -1, 194, 193, -1, 301, 193, -1, 194, 141, 301,
6273      193, -1, 192, -1, -1, 191, 189, -1, 96, 184,
6274       -1, 141, 192, -1, 141, -1, 314, -1, 184, -1,
6275       95, 184, -1, 194, 141, 184, -1, 194, 141, 95,
6276      184, -1, 194, 141, 184, -1, 194, 141, 95, 184,
6277       -1, 95, 184, -1, 256, -1, 257, -1, 260, -1,
6278      261, -1, 262, -1, 265, -1, 278, -1, 280, -1,
6279       53, -1, -1, 214, 197, 152, 224, -1, -1, 90,
6280      158, 198, 309, -1, 89, 153, 144, -1, 213, 85,
6281       56, -1, 86, 56, -1, 92, 185, 145, -1, 93,
6282      300, 138, -1, 30, -1, 31, 143, 189, 309, -1,
6283       31, 143, 309, -1, 31, -1, -1, 46, 308, 143,
6284      199, 158, 309, -1, 39, 143, 158, 309, -1, 39,
6285      143, 309, -1, 303, 247, -1, 246, -1, 246, 247,
6286       -1, 97, 239, -1, 215, 159, 225, 153, 227, 224,
6287       -1, 216, 159, 225, 153, 228, 224, -1, -1, -1,
6288      217, 200, 159, 226, 201, 153, 224, -1, -1, -1,
6289      218, 202, 159, 226, 203, 153, 224, -1, 219, 159,
6290      307, 250, 224, -1, 219, 307, 250, 224, -1, -1,
6291       -1, 220, 229, 25, 204, 159, 226, 205, 153, 224,
6292       -1, -1, 221, 174, 281, 206, 152, 224, -1, -1,
6293       -1, 221, 83, 158, 207, 312, 208, 152, 224, -1,
6294       -1, 222, 174, 209, 152, 224, -1, -1, 223, 175,
6295      210, 283, 152, 224, -1, -1, -1, 223, 298, 306,
6296      211, 175, 212, 283, 152, 224, -1, 21, -1, 22,
6297       -1, 23, -1, 24, -1, 196, -1, 7, -1, 11,
6298       -1, 12, -1, 18, -1, 19, -1, 16, -1, 20,
6299       -1, 3, -1, 4, -1, 5, -1, 10, -1, 312,
6300       -1, 13, -1, 312, 13, -1, 312, -1, 27, -1,
6301      228, -1, 14, 159, 225, 153, 227, -1, 314, -1,
6302       15, 153, -1, 172, -1, 165, -1, 286, -1, 89,
6303      232, 309, -1, 230, -1, 231, 141, 230, -1, 231,
6304       -1, 231, 141, 95, 286, -1, 231, 141, 95, 286,
6305      141, 231, -1, 231, 141, 95, -1, 231, 141, 95,
6306      141, 231, -1, 95, 286, -1, 95, 286, 141, 231,
6307       -1, 95, -1, 95, 141, 231, -1, 288, 141, 291,
6308      141, 294, 297, -1, 288, 141, 291, 141, 294, 141,
6309      288, 297, -1, 288, 141, 291, 297, -1, 288, 141,
6310      291, 141, 288, 297, -1, 288, 141, 294, 297, -1,
6311      288, 141, -1, 288, 141, 294, 141, 288, 297, -1,
6312      288, 297, -1, 291, 141, 294, 297, -1, 291, 141,
6313      294, 141, 288, 297, -1, 291, 297, -1, 291, 141,
6314      288, 297, -1, 294, 297, -1, 294, 141, 288, 297,
6315       -1, 296, -1, 314, -1, 235, -1, 114, 236, 114,
6316       -1, 76, -1, 114, 233, 236, 114, -1, 314, -1,
6317      146, 237, -1, 238, -1, 237, 141, 238, -1, 52,
6318       -1, 285, -1, -1, 240, 241, 242, -1, 143, 284,
6319      236, 309, -1, 284, -1, 107, 153, 138, -1, 29,
6320      153, 10, -1, -1, 28, 244, 234, 153, 10, -1,
6321      164, 243, -1, 245, 140, 304, 187, -1, 245, 85,
6322      304, 187, -1, 303, 186, -1, 213, 140, 304, 187,
6323       -1, 213, 85, 304, 186, -1, 213, 85, 305, -1,
6324      213, 140, 186, -1, 213, 85, 186, -1, 32, 186,
6325       -1, 32, -1, 213, 139, 188, 310, -1, -1, 137,
6326      248, 234, 153, 138, -1, -1, 26, 249, 234, 153,
6327       10, -1, 17, 194, 225, 153, 251, -1, 228, -1,
6328      250, -1, 8, 253, 254, 225, 153, 252, -1, 314,
6329       -1, 184, -1, 195, -1, 314, -1, 88, 172, -1,
6330      314, -1, 9, 153, -1, 314, -1, 276, -1, 273,
6331       -1, 275, -1, 258, -1, 62, -1, 259, -1, 258,
6332      259, -1, 99, 267, 106, -1, 100, 268, 106, -1,
6333      101, 268, 65, -1, 102, 147, 106, -1, 102, 263,
6334      106, -1, -1, 263, 264, 147, -1, 269, -1, 264,
6335      269, -1, 103, 147, 106, -1, 103, 266, 106, -1,
6336       -1, 266, 61, 147, -1, -1, 267, 269, -1, -1,
6337      268, 269, -1, 61, -1, -1, 105, 270, 272, -1,
6338       -1, 104, 271, 153, 138, -1, 54, -1, 55, -1,
6339       57, -1, 280, -1, 98, 274, -1, 175, -1, 55,
6340       -1, 54, -1, 57, -1, 98, 268, 106, -1, 59,
6341       -1, 60, -1, 122, 59, -1, 122, 60, -1, 52,
6342       -1, 55, -1, 54, -1, 56, -1, 57, -1, 34,
6343       -1, 33, -1, 35, -1, 36, -1, 50, -1, 49,
6344       -1, 51, -1, 277, -1, 277, -1, 63, -1, 64,
6345       -1, 312, -1, -1, 113, 282, 159, 312, -1, 1,
6346      312, -1, 143, 284, 309, -1, 284, 312, -1, 288,
6347      141, 292, 141, 294, 297, -1, 288, 141, 292, 141,
6348      294, 141, 288, 297, -1, 288, 141, 292, 297, -1,
6349      288, 141, 292, 141, 288, 297, -1, 288, 141, 294,
6350      297, -1, 288, 141, 294, 141, 288, 297, -1, 288,
6351      297, -1, 292, 141, 294, 297, -1, 292, 141, 294,
6352      141, 288, 297, -1, 292, 297, -1, 292, 141, 288,
6353      297, -1, 294, 297, -1, 294, 141, 288, 297, -1,
6354      296, -1, -1, 56, -1, 55, -1, 54, -1, 57,
6355       -1, 285, -1, 52, -1, 286, -1, 89, 232, 309,
6356       -1, 287, -1, 288, 141, 287, -1, 52, 109, 184,
6357       -1, 52, 109, 213, -1, 290, -1, 291, 141, 290,
6358       -1, 289, -1, 292, 141, 289, -1, 119, -1, 95,
6359       -1, 293, 52, -1, 293, -1, 116, -1, 96, -1,
6360      295, 52, -1, 141, 296, -1, 314, -1, 278, -1,
6361       -1, 143, 299, 158, 309, -1, 314, -1, 301, 311,
6362       -1, 302, -1, 301, 141, 302, -1, 184, 88, 184,
6363       -1, 58, 184, -1, 52, -1, 56, -1, 53, -1,
6364       52, -1, 56, -1, 53, -1, 180, -1, 52, -1,
6365       53, -1, 180, -1, 140, -1, 85, -1, -1, 313,
6366       -1, -1, 148, -1, 308, 144, -1, 308, 145, -1,
6367       -1, 148, -1, 141, -1, 146, -1, 148, -1, 312,
6368       -1, 313, 146, -1, -1
6369 };
6370
6371
6372 static const yytype_uint16 yyrline[] =
6373 {
6374        0, 763, 763, 763, 793, 826, 837, 846, 854, 862,
6375      868, 868, 876, 884, 895, 905, 913, 922, 931, 944,
6376      957, 967, 966, 988, 1000, 1009, 1019, 1048, 1069, 1086,
6377     1103, 1120, 1130, 1139, 1148, 1157, 1160, 1161, 1169, 1177,
6378     1185, 1193, 1196, 1208, 1209, 1210, 1218, 1226, 1236, 1237,
6379     1246, 1258, 1257, 1279, 1288, 1300, 1309, 1321, 1330, 1342,
6380     1351, 1362, 1363, 1373, 1374, 1384, 1392, 1400, 1408, 1416,
6381     1424, 1432, 1440, 1448, 1456, 1466, 1467, 1477, 1485, 1495,
6382     1503, 1513, 1521, 1529, 1537, 1545, 1553, 1565, 1575, 1587,
6383     1595, 1603, 1611, 1619, 1627, 1640, 1653, 1664, 1672, 1675,
6384     1683, 1691, 1701, 1702, 1703, 1704, 1714, 1726, 1727, 1730,
6385     1738, 1741, 1749, 1749, 1759, 1760, 1761, 1762, 1763, 1764,
6386     1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774,
6387     1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784,
6388     1785, 1786, 1787, 1790, 1790, 1790, 1791, 1791, 1792, 1792,
6389     1792, 1793, 1793, 1793, 1793, 1794, 1794, 1794, 1794, 1795,
6390     1795, 1795, 1796, 1796, 1796, 1796, 1797, 1797, 1797, 1797,
6391     1798, 1798, 1798, 1798, 1799, 1799, 1799, 1799, 1800, 1800,
6392     1800, 1800, 1801, 1801, 1804, 1813, 1823, 1852, 1883, 1904,
6393     1921, 1938, 1955, 1966, 1977, 1988, 2002, 2016, 2024, 2032,
6394     2040, 2048, 2056, 2064, 2073, 2082, 2090, 2098, 2106, 2114,
6395     2122, 2130, 2138, 2146, 2154, 2162, 2170, 2178, 2186, 2197,
6396     2205, 2213, 2221, 2229, 2237, 2245, 2253, 2253, 2263, 2273,
6397     2279, 2291, 2292, 2296, 2304, 2314, 2324, 2325, 2328, 2329,
6398     2332, 2340, 2348, 2358, 2367, 2376, 2376, 2388, 2398, 2402,
6399     2406, 2412, 2420, 2428, 2442, 2458, 2472, 2487, 2497, 2498,
6400     2499, 2500, 2501, 2502, 2503, 2504, 2505, 2514, 2513, 2538,
6401     2538, 2547, 2555, 2563, 2571, 2584, 2592, 2600, 2608, 2616,
6402     2624, 2624, 2634, 2642, 2650, 2661, 2662, 2673, 2677, 2689,
6403     2701, 2701, 2701, 2712, 2712, 2712, 2723, 2734, 2743, 2745,
6404     2742, 2809, 2808, 2830, 2835, 2829, 2857, 2856, 2878, 2877,
6405     2904, 2905, 2904, 2929, 2937, 2945, 2953, 2963, 2975, 2982,
6406     2989, 2996, 3003, 3010, 3017, 3024, 3031, 3038, 3045, 3052,
6407     3057, 3058, 3065, 3070, 3073, 3074, 3087, 3088, 3098, 3099,
6408     3102, 3110, 3120, 3128, 3138, 3146, 3154, 3162, 3170, 3178,
6409     3186, 3197, 3205, 3215, 3223, 3231, 3239, 3247, 3255, 3264,
6410     3272, 3280, 3288, 3296, 3304, 3312, 3320, 3328, 3338, 3339,
6411     3345, 3354, 3363, 3374, 3375, 3385, 3392, 3401, 3409, 3415,
6412     3415, 3437, 3445, 3455, 3459, 3466, 3465, 3486, 3502, 3511,
6413     3522, 3531, 3541, 3551, 3559, 3570, 3581, 3589, 3597, 3612,
6414     3611, 3633, 3632, 3653, 3665, 3666, 3669, 3688, 3691, 3699,
6415     3707, 3710, 3714, 3717, 3725, 3728, 3729, 3737, 3740, 3757,
6416     3758, 3759, 3769, 3779, 3806, 3848, 3856, 3863, 3870, 3880,
6417     3888, 3898, 3906, 3913, 3920, 3931, 3938, 3949, 3956, 3966,
6418     3968, 3967, 3984, 3983, 4005, 4013, 4021, 4029, 4032, 4044,
6419     4045, 4046, 4047, 4050, 4081, 4082, 4083, 4091, 4101, 4102,
6420     4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112,
6421     4115, 4125, 4135, 4136, 4139, 4148, 4147, 4155, 4167, 4179,
6422     4185, 4193, 4201, 4209, 4217, 4225, 4233, 4241, 4249, 4257,
6423     4265, 4273, 4281, 4289, 4298, 4307, 4316, 4325, 4334, 4345,
6424     4346, 4358, 4366, 4385, 4392, 4405, 4419, 4433, 4441, 4457,
6425     4465, 4481, 4482, 4485, 4497, 4508, 4509, 4512, 4528, 4532,
6426     4542, 4552, 4552, 4581, 4582, 4592, 4599, 4609, 4617, 4627,
6427     4628, 4629, 4632, 4633, 4634, 4635, 4638, 4639, 4640, 4643,
6428     4648, 4655, 4656, 4659, 4660, 4663, 4666, 4669, 4670, 4671,
6429     4674, 4675, 4678, 4679, 4683
6430 };
6431
6432
6433
6434
6435
6436 static const char *const yytname[] =
6437 {
6438   "$end", "error", "$undefined", "keyword_class", "keyword_module",
6439   "keyword_def", "keyword_undef", "keyword_begin", "keyword_rescue",
6440   "keyword_ensure", "keyword_end", "keyword_if", "keyword_unless",
6441   "keyword_then", "keyword_elsif", "keyword_else", "keyword_case",
6442   "keyword_when", "keyword_while", "keyword_until", "keyword_for",
6443   "keyword_break", "keyword_next", "keyword_redo", "keyword_retry",
6444   "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block",
6445   "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super",
6446   "keyword_self", "keyword_nil", "keyword_true", "keyword_false",
6447   "keyword_and", "keyword_or", "keyword_not", "modifier_if",
6448   "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue",
6449   "keyword_alias", "keyword_defined", "keyword_BEGIN", "keyword_END",
6450   "keyword__LINE__", "keyword__FILE__", "keyword__ENCODING__",
6451   "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tCVAR", "tLABEL",
6452   "tINTEGER", "tFLOAT", "tSTRING_CONTENT", "tCHAR", "tNTH_REF",
6453   "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW", "tCMP", "tEQ",
6454   "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH",
6455   "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2",
6456   "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN_ARG", "tRPAREN",
6457   "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tAMPER", "tLAMBDA",
6458   "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tWORDS_BEG",
6459   "tQWORDS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tLAMBEG",
6460   "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'", "'^'", "'&'", "'+'",
6461   "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'", "'~'", "idNULL",
6462   "idRespond_to", "idIFUNC", "idCFUNC", "idThrowState",
6463   "id_core_set_method_alias", "id_core_set_variable_alias",
6464   "id_core_undef_method", "id_core_define_method",
6465   "id_core_define_singleton_method", "id_core_set_postexe", "tLAST_TOKEN",
6466   "'{'", "'}'", "'['", "'.'", "','", "'`'", "'('", "')'", "']'", "';'",
6467   "' '", "'\\n'", "$accept", "program", "@1", "bodystmt", "compstmt",
6468   "stmts", "stmt", "@2", "@3", "expr", "expr_value", "command_call",
6469   "block_command", "cmd_brace_block", "@4", "command", "mlhs",
6470   "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post",
6471   "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", "fitem",
6472   "undef_list", "@5", "op", "reswords", "arg", "@6", "arg_value",
6473   "aref_args", "paren_args", "opt_paren_args", "opt_call_args",
6474   "call_args", "command_args", "@7", "block_arg", "opt_block_arg", "args",
6475   "mrhs", "primary", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15",
6476   "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "primary_value",
6477   "k_begin", "k_if", "k_unless", "k_while", "k_until", "k_case", "k_for",
6478   "k_class", "k_module", "k_def", "k_end", "then", "do", "if_tail",
6479   "opt_else", "for_var", "f_marg", "f_marg_list", "f_margs", "block_param",
6480   "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar",
6481   "lambda", "@24", "f_larglist", "lambda_body", "do_block", "@25",
6482   "block_call", "method_call", "brace_block", "@26", "@27", "case_body",
6483   "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal",
6484   "strings", "string", "string1", "xstring", "regexp", "words",
6485   "word_list", "word", "qwords", "qword_list", "string_contents",
6486   "xstring_contents", "string_content", "@28", "@29", "string_dvar",
6487   "symbol", "sym", "dsym", "numeric", "variable", "var_ref", "var_lhs",
6488   "backref", "superclass", "@30", "f_arglist", "f_args", "f_bad_arg",
6489   "f_norm_arg", "f_arg_item", "f_arg", "f_opt", "f_block_opt",
6490   "f_block_optarg", "f_optarg", "restarg_mark", "f_rest_arg",
6491   "blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "@31",
6492   "assoc_list", "assocs", "assoc", "operation", "operation2", "operation3",
6493   "dot_or_colon", "opt_terms", "opt_nl", "rparen", "rbracket", "trailer",
6494   "term", "terms", "none", 0
6495 };
6496 # 1607 "parse.c"
6497 static const yytype_uint16 yyr1[] =
6498 {
6499        0, 149, 151, 150, 152, 153, 154, 154, 154, 154,
6500      156, 155, 155, 155, 155, 155, 155, 155, 155, 155,
6501      155, 157, 155, 155, 155, 155, 155, 155, 155, 155,
6502      155, 155, 155, 155, 155, 155, 158, 158, 158, 158,
6503      158, 158, 159, 160, 160, 160, 160, 160, 161, 161,
6504      161, 163, 162, 164, 164, 164, 164, 164, 164, 164,
6505      164, 165, 165, 166, 166, 167, 167, 167, 167, 167,
6506      167, 167, 167, 167, 167, 168, 168, 169, 169, 170,
6507      170, 171, 171, 171, 171, 171, 171, 171, 171, 172,
6508      172, 172, 172, 172, 172, 172, 172, 173, 173, 174,
6509      174, 174, 175, 175, 175, 175, 175, 176, 176, 177,
6510      177, 178, 179, 178, 180, 180, 180, 180, 180, 180,
6511      180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
6512      180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
6513      180, 180, 180, 181, 181, 181, 181, 181, 181, 181,
6514      181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
6515      181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
6516      181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
6517      181, 181, 181, 181, 182, 182, 182, 182, 182, 182,
6518      182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
6519      182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
6520      182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
6521      182, 182, 182, 182, 182, 182, 183, 182, 182, 182,
6522      184, 185, 185, 185, 185, 186, 187, 187, 188, 188,
6523      189, 189, 189, 189, 189, 191, 190, 192, 193, 193,
6524      193, 194, 194, 194, 194, 195, 195, 195, 196, 196,
6525      196, 196, 196, 196, 196, 196, 196, 197, 196, 198,
6526      196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
6527      199, 196, 196, 196, 196, 196, 196, 196, 196, 196,
6528      200, 201, 196, 202, 203, 196, 196, 196, 204, 205,
6529      196, 206, 196, 207, 208, 196, 209, 196, 210, 196,
6530      211, 212, 196, 196, 196, 196, 196, 213, 214, 215,
6531      216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
6532      225, 225, 226, 226, 227, 227, 228, 228, 229, 229,
6533      230, 230, 231, 231, 232, 232, 232, 232, 232, 232,
6534      232, 232, 232, 233, 233, 233, 233, 233, 233, 233,
6535      233, 233, 233, 233, 233, 233, 233, 233, 234, 234,
6536      235, 235, 235, 236, 236, 237, 237, 238, 238, 240,
6537      239, 241, 241, 242, 242, 244, 243, 245, 245, 245,
6538      246, 246, 246, 246, 246, 246, 246, 246, 246, 248,
6539      247, 249, 247, 250, 251, 251, 252, 252, 253, 253,
6540      253, 254, 254, 255, 255, 256, 256, 256, 257, 258,
6541      258, 258, 259, 260, 261, 262, 262, 263, 263, 264,
6542      264, 265, 265, 266, 266, 267, 267, 268, 268, 269,
6543      270, 269, 271, 269, 272, 272, 272, 272, 273, 274,
6544      274, 274, 274, 275, 276, 276, 276, 276, 277, 277,
6545      277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
6546      278, 279, 280, 280, 281, 282, 281, 281, 283, 283,
6547      284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
6548      284, 284, 284, 284, 284, 285, 285, 285, 285, 286,
6549      286, 287, 287, 288, 288, 289, 290, 291, 291, 292,
6550      292, 293, 293, 294, 294, 295, 295, 296, 297, 297,
6551      298, 299, 298, 300, 300, 301, 301, 302, 302, 303,
6552      303, 303, 304, 304, 304, 304, 305, 305, 305, 306,
6553      306, 307, 307, 308, 308, 309, 310, 311, 311, 311,
6554      312, 312, 313, 313, 314
6555 };
6556
6557
6558 static const yytype_uint8 yyr2[] =
6559 {
6560        0, 2, 0, 2, 4, 2, 1, 1, 3, 2,
6561        0, 4, 3, 3, 3, 2, 3, 3, 3, 3,
6562        3, 0, 5, 4, 3, 3, 3, 6, 5, 5,
6563        5, 3, 3, 3, 3, 1, 1, 3, 3, 3,
6564        2, 1, 1, 1, 1, 2, 2, 2, 1, 4,
6565        4, 0, 5, 2, 3, 4, 5, 4, 5, 2,
6566        2, 1, 3, 1, 3, 1, 2, 3, 5, 2,
6567        4, 2, 4, 1, 3, 1, 3, 2, 3, 1,
6568        3, 1, 4, 3, 3, 3, 3, 2, 1, 1,
6569        4, 3, 3, 3, 3, 2, 1, 1, 1, 2,
6570        1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
6571        1, 1, 0, 4, 1, 1, 1, 1, 1, 1,
6572        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6573        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6574        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6575        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6576        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6577        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6578        1, 1, 1, 1, 3, 5, 3, 5, 6, 5,
6579        5, 5, 5, 4, 3, 3, 3, 3, 3, 3,
6580        3, 3, 3, 4, 4, 2, 2, 3, 3, 3,
6581        3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
6582        2, 2, 3, 3, 3, 3, 0, 4, 6, 1,
6583        1, 1, 2, 4, 2, 3, 1, 1, 1, 1,
6584        1, 2, 2, 4, 1, 0, 2, 2, 2, 1,
6585        1, 1, 2, 3, 4, 3, 4, 2, 1, 1,
6586        1, 1, 1, 1, 1, 1, 1, 0, 4, 0,
6587        4, 3, 3, 2, 3, 3, 1, 4, 3, 1,
6588        0, 6, 4, 3, 2, 1, 2, 2, 6, 6,
6589        0, 0, 7, 0, 0, 7, 5, 4, 0, 0,
6590        9, 0, 6, 0, 0, 8, 0, 5, 0, 6,
6591        0, 0, 9, 1, 1, 1, 1, 1, 1, 1,
6592        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6593        1, 2, 1, 1, 1, 5, 1, 2, 1, 1,
6594        1, 3, 1, 3, 1, 4, 6, 3, 5, 2,
6595        4, 1, 3, 6, 8, 4, 6, 4, 2, 6,
6596        2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
6597        3, 1, 4, 1, 2, 1, 3, 1, 1, 0,
6598        3, 4, 1, 3, 3, 0, 5, 2, 4, 4,
6599        2, 4, 4, 3, 3, 3, 2, 1, 4, 0,
6600        5, 0, 5, 5, 1, 1, 6, 1, 1, 1,
6601        1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
6602        1, 2, 3, 3, 3, 3, 3, 0, 3, 1,
6603        2, 3, 3, 0, 3, 0, 2, 0, 2, 1,
6604        0, 3, 0, 4, 1, 1, 1, 1, 2, 1,
6605        1, 1, 1, 3, 1, 1, 2, 2, 1, 1,
6606        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6607        1, 1, 1, 1, 1, 0, 4, 2, 3, 2,
6608        6, 8, 4, 6, 4, 6, 2, 4, 6, 2,
6609        4, 2, 4, 1, 0, 1, 1, 1, 1, 1,
6610        1, 1, 3, 1, 3, 3, 3, 1, 3, 1,
6611        3, 1, 1, 2, 1, 1, 1, 2, 2, 1,
6612        1, 0, 4, 1, 2, 1, 3, 3, 2, 1,
6613        1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6614        1, 0, 1, 0, 1, 2, 2, 0, 1, 1,
6615        1, 1, 1, 2, 0
6616 };
6617
6618
6619
6620
6621 static const yytype_uint16 yydefact[] =
6622 {
6623        2, 0, 0, 1, 0, 325, 326, 327, 0, 318,
6624      319, 320, 323, 321, 322, 324, 313, 314, 315, 316,
6625      276, 245, 245, 464, 463, 465, 466, 543, 0, 543,
6626       21, 0, 468, 467, 469, 458, 531, 460, 459, 461,
6627      462, 454, 455, 419, 472, 473, 0, 0, 0, 0,
6628        0, 554, 554, 73, 379, 437, 435, 437, 437, 427,
6629      433, 0, 0, 0, 3, 541, 7, 35, 36, 44,
6630       43, 0, 61, 0, 65, 75, 0, 41, 229, 0,
6631      267, 0, 0, 290, 293, 541, 0, 0, 0, 0,
6632       48, 285, 258, 259, 418, 420, 260, 261, 262, 263,
6633      416, 417, 415, 470, 264, 0, 265, 245, 6, 9,
6634      153, 164, 154, 177, 150, 170, 160, 159, 180, 181,
6635      175, 158, 157, 152, 178, 182, 183, 162, 151, 165,
6636      169, 171, 163, 156, 172, 179, 174, 173, 166, 176,
6637      161, 149, 168, 167, 148, 155, 146, 147, 143, 144,
6638      145, 102, 104, 103, 138, 139, 135, 117, 118, 119,
6639      126, 123, 125, 120, 121, 140, 141, 127, 128, 132,
6640      122, 124, 114, 115, 116, 129, 130, 131, 133, 134,
6641      136, 137, 142, 107, 109, 111, 15, 105, 106, 108,
6642      110, 313, 314, 276, 0, 0, 0, 0, 0, 0,
6643        0, 240, 0, 230, 251, 46, 244, 554, 0, 470,
6644        0, 265, 554, 525, 47, 45, 543, 60, 0, 554,
6645      396, 59, 543, 544, 0, 0, 10, 226, 0, 0,
6646      279, 397, 205, 0, 0, 206, 273, 0, 0, 543,
6647       63, 269, 0, 547, 547, 231, 0, 0, 547, 523,
6648      543, 0, 0, 0, 71, 317, 0, 81, 88, 287,
6649      494, 451, 450, 452, 449, 0, 448, 0, 0, 0,
6650        0, 0, 0, 0, 456, 457, 40, 220, 221, 550,
6651      551, 5, 552, 542, 0, 0, 0, 0, 0, 0,
6652        0, 385, 387, 0, 77, 0, 69, 66, 0, 0,
6653        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6654        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6655        0, 0, 0, 0, 0, 0, 554, 0, 0, 42,
6656        0, 0, 0, 0, 541, 0, 542, 0, 339, 338,
6657        0, 0, 470, 265, 97, 98, 0, 0, 100, 0,
6658        0, 470, 265, 306, 173, 166, 176, 161, 143, 144,
6659      145, 102, 103, 521, 308, 520, 0, 0, 0, 401,
6660      399, 286, 421, 0, 0, 390, 53, 284, 112, 528,
6661      273, 252, 247, 0, 0, 249, 241, 250, 0, 554,
6662        0, 0, 0, 249, 242, 543, 0, 278, 246, 543,
6663      239, 238, 543, 283, 39, 12, 14, 13, 0, 280,
6664        0, 0, 0, 0, 0, 0, 543, 271, 62, 543,
6665      274, 549, 548, 232, 549, 234, 275, 524, 0, 87,
6666      456, 457, 79, 74, 0, 0, 554, 0, 500, 497,
6667      496, 495, 498, 0, 512, 516, 515, 511, 494, 0,
6668      382, 499, 501, 503, 554, 509, 554, 514, 554, 0,
6669      493, 439, 442, 440, 453, 438, 422, 436, 423, 424,
6670      425, 426, 0, 429, 431, 0, 432, 0, 0, 553,
6671        8, 16, 17, 18, 19, 20, 37, 38, 554, 0,
6672       25, 33, 0, 34, 543, 0, 67, 78, 24, 184,
6673      251, 32, 202, 210, 215, 216, 217, 212, 214, 224,
6674      225, 218, 219, 195, 196, 222, 223, 543, 211, 213,
6675      207, 208, 209, 197, 198, 199, 200, 201, 532, 537,
6676      533, 538, 395, 245, 393, 543, 532, 534, 533, 535,
6677      394, 245, 0, 554, 330, 0, 329, 0, 0, 0,
6678        0, 0, 0, 273, 0, 554, 0, 298, 303, 97,
6679       98, 99, 0, 475, 301, 474, 0, 554, 0, 0,
6680        0, 494, 540, 539, 310, 532, 533, 245, 245, 554,
6681      554, 26, 186, 31, 194, 51, 54, 0, 184, 527,
6682        0, 253, 248, 554, 536, 533, 543, 532, 533, 526,
6683      277, 545, 235, 282, 11, 0, 227, 0, 23, 0,
6684      554, 193, 64, 270, 547, 0, 72, 84, 86, 543,
6685      532, 533, 0, 500, 0, 351, 342, 344, 543, 340,
6686      554, 0, 0, 380, 0, 486, 519, 0, 489, 513,
6687        0, 491, 517, 0, 0, 428, 430, 434, 203, 204,
6688      371, 554, 0, 369, 368, 257, 0, 76, 70, 0,
6689        0, 0, 0, 0, 392, 57, 0, 398, 0, 0,
6690      237, 391, 55, 236, 328, 268, 554, 554, 407, 554,
6691      331, 554, 333, 291, 332, 294, 0, 0, 297, 536,
6692      272, 543, 532, 533, 0, 0, 477, 0, 0, 97,
6693       98, 101, 543, 0, 543, 494, 0, 0, 0, 389,
6694       50, 388, 49, 0, 0, 0, 554, 113, 254, 243,
6695        0, 398, 0, 0, 543, 22, 233, 80, 82, 505,
6696      543, 0, 349, 0, 502, 0, 543, 373, 0, 0,
6697      504, 554, 554, 518, 554, 510, 554, 554, 0, 444,
6698      445, 446, 441, 447, 500, 554, 0, 554, 507, 554,
6699      554, 367, 0, 0, 255, 68, 185, 0, 30, 191,
6700      192, 58, 546, 0, 28, 189, 29, 190, 56, 408,
6701      409, 554, 410, 0, 554, 336, 0, 0, 334, 0,
6702        0, 0, 296, 0, 0, 398, 0, 304, 0, 0,
6703      398, 307, 522, 543, 0, 479, 311, 0, 0, 187,
6704        0, 0, 281, 341, 352, 0, 347, 343, 377, 374,
6705      375, 378, 381, 384, 383, 0, 482, 0, 484, 0,
6706      490, 0, 487, 492, 443, 0, 0, 370, 358, 360,
6707        0, 363, 0, 365, 386, 256, 228, 27, 188, 0,
6708        0, 412, 337, 0, 4, 414, 0, 288, 289, 0,
6709        0, 253, 554, 299, 0, 476, 302, 478, 309, 494,
6710      402, 400, 0, 0, 350, 0, 345, 0, 554, 554,
6711      554, 554, 0, 506, 372, 554, 554, 554, 508, 554,
6712      554, 0, 411, 0, 89, 96, 0, 413, 0, 292,
6713      295, 404, 405, 403, 0, 0, 0, 52, 348, 0,
6714      376, 483, 0, 480, 485, 488, 273, 0, 0, 355,
6715        0, 357, 364, 0, 361, 366, 95, 0, 554, 0,
6716      554, 554, 0, 305, 0, 346, 554, 536, 272, 554,
6717      554, 554, 554, 536, 94, 543, 532, 533, 406, 335,
6718      300, 312, 481, 356, 0, 353, 359, 362, 398, 554,
6719      354
6720 };
6721
6722
6723 static const yytype_int16 yydefgoto[] =
6724 {
6725       -1, 1, 2, 542, 543, 65, 66, 408, 228, 67,
6726      330, 68, 69, 586, 716, 70, 71, 239, 72, 73,
6727       74, 433, 75, 202, 348, 349, 183, 184, 185, 186,
6728      587, 539, 188, 77, 410, 204, 242, 532, 671, 399,
6729      400, 217, 218, 206, 386, 207, 493, 78, 328, 419,
6730      605, 332, 790, 333, 791, 694, 904, 698, 695, 864,
6731      569, 571, 708, 869, 233, 80, 81, 82, 83, 84,
6732       85, 86, 87, 88, 89, 675, 545, 683, 787, 788,
6733      341, 626, 627, 628, 755, 652, 653, 736, 819, 820,
6734      259, 260, 449, 633, 292, 488, 90, 91, 377, 580,
6735      579, 552, 903, 677, 781, 850, 854, 92, 93, 94,
6736       95, 96, 97, 98, 271, 472, 99, 273, 267, 265,
6737      465, 644, 643, 752, 100, 266, 101, 102, 209, 104,
6738      210, 211, 564, 697, 706, 707, 451, 452, 453, 454,
6739      455, 758, 759, 456, 457, 458, 459, 743, 635, 366,
6740      570, 247, 212, 213, 234, 609, 534, 574, 281, 396,
6741      397, 667, 423, 546, 336, 108
6742 };
6743
6744
6745
6746
6747 static const yytype_int16 yypact[] =
6748 {
6749     -747, 103, 2364, -747, 6711, -747, -747, -747, 6222, -747,
6750     -747, -747, -747, -747, -747, -747, 6820, 6820, -747, -747,
6751     6820, 3057, 2631, -747, -747, -747, -747, 282, 6082, -24,
6752     -747, 64, -747, -747, -747, 5317, 2773, -747, -747, 5445,
6753     -747, -747, -747, -747, -747, -747, 8019, 8019, 74, 4131,
6754     8128, 7038, 7365, 6487, -747, 5942, -747, -747, -747, 142,
6755      154, 84, 8237, 8019, -747, 473, 925, 71, -747, -747,
6756      238, 234, -747, 205, 8346, -747, 268, 2472, 31, 46,
6757     -747, 8128, 8128, -747, -747, 4792, 8451, 8556, 8661, 5189,
6758       14, 70, -747, -747, 290, -747, -747, -747, -747, -747,
6759     -747, -747, -747, 26, -747, 366, 355, 210, -747, 925,
6760     -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
6761     -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
6762     -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
6763     -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
6764     -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
6765     -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
6766     -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
6767     -747, -747, -747, -747, -747, -747, 321, -747, -747, -747,
6768     -747, -747, -747, -747, 328, 8019, 433, 4262, 8019, 8019,
6769     8019, -747, 403, 2472, 440, -747, -747, 418, 300, 13,
6770      457, 24, 437, -747, -747, -747, 4670, -747, 6820, 6820,
6771     -747, -747, 4923, -747, 8128, 438, -747, 436, 449, 4393,
6772      452, 463, -747, 346, 210, 546, 451, 4131, 474, -24,
6773      525, 71, 477, 165, 276, -747, 440, 498, 276, -747,
6774      -24, 582, 250, 8766, 501, -747, 374, 384, 394, -747,
6775      933, -747, -747, -747, -747, 595, -747, 659, 673, 76,
6776      552, 721, 553, 43, 584, 596, -747, -747, -747, -747,
6777     -747, -747, -747, 5045, 8128, 8128, 8128, 8128, 6711, 8128,
6778     8128, -747, -747, 7474, -747, 4131, 6599, 524, 7474, 8019,
6779     8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
6780     8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
6781     8019, 8019, 8019, 8019, 8019, 9033, 6820, 9111, 3431, 71,
6782      119, 119, 8128, 8128, 473, 652, 528, 614, -747, -747,
6783      424, 654, 56, 92, 335, 344, 8128, 131, -747, 42,
6784      444, -747, -747, -747, 33, 35, 53, 217, 227, 235,
6785      265, 298, 333, -747, -747, -747, 358, 10047, 10047, -747,
6786     -747, -747, -747, 8237, 8237, -747, 587, -747, -747, -747,
6787      305, -747, -747, 8019, 8019, 6929, -747, -747, 9189, 6820,
6788     9267, 8019, 8019, 7147, -747, -24, 540, -747, -747, -24,
6789     -747, -747, 242, -747, -747, -747, -747, -747, 6222, -747,
6790     8019, 4393, 555, 9189, 9267, 8019, -24, -747, 556, -24,
6791     -747, 7256, -747, -747, 7365, -747, -747, -747, 436, 470,
6792     -747, -747, -747, 557, 8766, 9345, 6820, 9423, 585, -747,
6793     -747, -747, -747, 843, -747, -747, -747, -747, 835, 49,
6794     -747, -747, -747, -747, 564, -747, 565, 658, 572, 662,
6795     -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
6796     -747, -747, 21, -747, -747, 569, -747, 8019, 8019, -747,
6797      925, -747, -747, -747, -747, -747, -747, -747, 38, 8019,
6798     -747, 577, 578, -747, -24, 8766, 581, -747, -747, 2225,
6799     -747, -747, 546, 2143, 2143, 2143, 2143, 1115, 1115, 2614,
6800     2024, 2143, 2143, 1738, 1738, 718, 718, 1856, 1115, 1115,
6801      619, 619, 692, 274, 274, 546, 546, 546, 3199, 5687,
6802     3285, 5801, -747, 463, -747, -24, 460, -747, 471, -747,
6803     -747, 2915, 715, 734, -747, 3577, 713, 3869, 175, 175,
6804      652, 7583, 715, 96, 9501, 6820, 9579, -747, 71, -747,
6805      470, -747, 473, -747, -747, -747, 9657, 6820, 9735, 3431,
6806     8128, 1108, -747, -747, -747, -747, -747, 996, 996, 38,
6807       38, -747, 2242, -747, 2472, -747, -747, 6222, 10104, -747,
6808     8019, 440, -747, 437, 5573, 2489, -24, 367, 390, -747,
6809     -747, -747, -747, -747, -747, 8128, 2472, 605, -747, 463,
6810      463, 2472, -7, -747, 276, 8766, 557, 500, 267, -24,
6811       48, 50, 8019, -747, 843, 592, -747, 603, -24, -747,
6812      600, 4539, 4393, -747, 835, -747, -747, 835, -747, -747,
6813      634, -747, -747, 4393, 865, -747, -747, -747, 546, 546,
6814     -747, 411, 4539, -747, -747, 607, 7692, -747, 557, 8766,
6815     8019, 644, 8237, 8019, -747, 587, 612, 544, 8237, 8237,
6816     -747, -747, 587, -747, -747, -747, 7801, 744, -747, 413,
6817     -747, 744, -747, -747, -747, -747, 715, 208, -747, 62,
6818       85, -24, 117, 120, 8128, 473, -747, 8128, 3431, 500,
6819      267, -747, -24, 715, 242, 835, 3431, 473, 6362, -747,
6820     -747, -747, -747, 4539, 4393, 8019, 38, -747, -747, -747,
6821     8019, 432, 8019, 8019, 242, -747, -747, -747, 465, -747,
6822      -24, 788, 620, 854, -747, 885, -24, -747, 756, 631,
6823     -747, 629, 633, -747, 639, -747, 642, 639, 657, -747,
6824     -747, -747, -747, -747, 681, 600, 683, 665, -747, 666,
6825      676, -747, 789, 8019, 680, 557, 2472, 8019, -747, 2472,
6826     2472, -747, -747, 8237, -747, 2472, -747, 2472, -747, 577,
6827     -747, 710, -747, 4000, 814, -747, 8128, 715, -747, 715,
6828     4539, 4539, -747, 7910, 3723, 133, 175, -747, 473, 715,
6829     -747, -747, -747, -24, 715, -747, -747, 822, 696, 2472,
6830     4393, 8019, -747, -747, 700, 788, 621, -747, -747, 705,
6831     -747, -747, -747, -747, -747, 835, -747, 634, -747, 634,
6832     -747, 634, -747, -747, -747, 8871, 736, -747, 1125, -747,
6833     1125, -747, 634, -747, -747, 711, 2472, -747, 2472, 8976,
6834      119, -747, -747, 4539, -747, -747, 119, -747, -747, 715,
6835      715, -747, 505, -747, 3431, -747, -747, -747, -747, 1108,
6836     -747, -747, 717, 788, 700, 788, 716, 885, 639, 720,
6837      639, 639, 807, 487, -747, 725, 726, 639, -747, 728,
6838      639, 815, -747, 522, 384, 394, 3431, -747, 3577, -747,
6839     -747, -747, -747, -747, 4539, 715, 3431, -747, 700, 788,
6840     -747, -747, 634, -747, -747, -747, -747, 9813, 1125, -747,
6841      634, -747, -747, 634, -747, -747, 470, 9891, 6820, 9969,
6842      734, 413, 715, -747, 715, 700, 639, 727, 730, 639,
6843      738, 639, 639, 212, 267, -24, 152, 187, -747, -747,
6844     -747, -747, -747, -747, 634, -747, -747, -747, 193, 639,
6845     -747
6846 };
6847
6848
6849 static const yytype_int16 yypgoto[] =
6850 {
6851     -747, -747, -747, -537, 976, -747, 20, -747, -747, -14,
6852       30, -45, -747, -133, -747, 22, 772, -149, 9, -69,
6853     -747, -400, -4, 1540, -303, 793, -54, -747, -12, -747,
6854     -747, 0, -747, 802, -747, -48, -747, -16, -29, -313,
6855       81, 55, -747, -245, -192, -41, -272, -34, -747, -747,
6856     -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
6857     -747, -747, -747, -747, -2, -747, -747, -747, -747, -747,
6858     -747, -747, -747, -747, -747, -31, -319, -519, -49, -607,
6859     -747, -664, -641, 260, -747, -487, -747, -532, -747, 8,
6860     -747, -747, -747, -747, -747, -747, -747, -747, 795, -747,
6861     -747, -528, -747, -42, -747, -747, -747, -747, -747, -747,
6862      799, -747, -747, -747, -747, -747, -747, -747, -747, 513,
6863     -208, -747, -747, -747, -5, -747, 29, -747, 1251, 816,
6864      747, 1369, -747, -747, 47, -235, -673, -393, -569, -40,
6865     -576, -746, 69, 278, -747, -474, -747, -249, 959, -747,
6866     -747, -747, -6, -288, 162, -261, -747, -747, -56, -20,
6867       17, -563, -217, -44, 850, 752
6868 };
6869
6870
6871
6872
6873
6874
6875 static const yytype_int16 yytable[] =
6876 {
6877       79, 264, 79, 189, 246, 297, 220, 224, 187, 227,
6878      243, 460, 547, 535, 208, 208, 226, 276, 208, 255,
6879      394, 282, 686, 189, 109, 450, 501, 425, 187, 335,
6880      685, 427, 703, 721, 616, 364, 241, 190, 201, 201,
6881      255, 282, 201, 562, 561, 244, 248, 79, 208, 254,
6882      629, 256, 255, 255, 255, 187, 728, 190, 240, 467,
6883      208, 745, 821, 473, 533, 740, 541, 329, 329, 817,
6884      784, 329, 256, -83, 789, -85, 596, 221, 631, 208,
6885      208, -89, 461, 208, 340, 350, 350, -92, 416, 187,
6886      814, 375, 713, 714, 888, 658, 369, 205, 214, 367,
6887     -471, 215, -62, 3, 475, 599, 577, 578, 289, 290,
6888      -94, 392, 331, -471, 650, 334, -317, -96, -464, 756,
6889     -463, -95, -89, 619, 223, 462, 463, 533, 795, 541,
6890      236, 325, 544, -96, -76, -89, 599, 461, -465, 800,
6891      592, 469, -91, 274, 275, -93, 494, 379, 592, 476,
6892      381, 382, 651, 610, 368, 563, 632, -83, -90, -85,
6893      742, 799, 376, 746, 107, -91, 107, -81, 645, 804,
6894     -317, -317, 888, -464, 874, -463, 610, 760, 107, 107,
6895      462, 463, 107, 559, 432, 326, 327, 560, 279, -83,
6896      280, -85, -83, -465, -85, 79, -83, -81, -85, 460,
6897      -93, 229, 682, -84, 821, -532, -90, 370, 402, 817,
6898      404, 107, 107, 630, 208, 220, 208, 208, 375, 255,
6899      208, 544, 208, 836, 107, -92, -86, 79, -533, 810,
6900      428, 629, 732, -88, 908, 79, 369, -87, 201, 403,
6901      201, 201, 691, 107, 107, 491, 240, 107, 490, 745,
6902      500, 256, 492, 498, 702, 901, 418, 492, -83, 765,
6903      740, -85, 255, 701, 646, 279, 291, 280, 935, 740,
6904      329, 329, 329, 329, -82, 486, 487, 863, 550, 289,
6905      290, 79, 208, 208, 208, 208, 79, 208, 208, 270,
6906      282, 208, 496, 79, 256, 610, 208, 395, -91, 398,
6907      -91, 272, -466, 480, 240, 565, 421, 610, 485, 430,
6908      431, 540, -468, 422, 481, 482, 483, 484, 329, 329,
6909     -467, 279, 460, 280, 208, 531, 79, 905, 581, 583,
6910      208, 208, 558, -93, 902, -93, 589, 591, 629, -90,
6911      629, -90, 299, 293, 208, 246, 294, 370, 201, 793,
6912     -469, 879, -272, 219, 279, -532, 280, -466, -92, 107,
6913      -92, -529, 548, 549, 886, 432, 889, -468, 794, 934,
6914     -530, 208, 208, 591, 540, -467, 246, 298, 107, 593,
6915      107, 107, 958, -458, 107, 388, 107, 208, 531, 56,
6916      223, 107, 415, 322, 323, 324, 604, 726, 540, 107,
6917      255, 719, 761, 189, 780, -469, -272, -272, 187, 79,
6918     -533, 201, 600, 531, -95, 614, 602, 424, -461, 603,
6919     -458, 540, 629, 876, 422, 222, 432, 786, 783, -461,
6920      223, 413, 256, 612, 208, 531, 613, 190, -458, 389,
6921      390, 655, 374, 572, 940, 107, 107, 107, 107, 107,
6922      107, 107, 107, 373, 722, 107, 460, 107, 201, 435,
6923      107, 255, 378, 754, -96, 439, 440, 441, 442, -470,
6924      803, 222, -529, -461, -458, -458, -91, 723, -529, -265,
6925      629, -530, 629, -461, -461, 389, 414, -530, 107, 380,
6926      107, -398, 405, 256, 107, 107, -88, 661, 573, -93,
6927      443, 406, 407, 500, 684, 684, 444, 445, 107, 554,
6928      687, 657, 383, 436, 437, 666, 629, 664, 696, 811,
6929      783, 688, 551, -470, -470, 670, -536, 446, 384, 566,
6930      447, 896, 771, -265, -265, 107, 107, 898, 415, 778,
6931      540, -90, 718, 79, 391, 79, 727, 668, 709, 711,
6932     -398, 107, 540, 208, 531, -273, 704, 735, 669, 385,
6933      -95, 670, 670, 555, 556, 208, 531, 79, 208, -91,
6934      268, 269, 917, 107, 729, 717, 666, 201, 393, 409,
6935      -93, 255, 189, 567, 568, -536, 411, 187, 665, 201,
6936      432, 724, -87, 664, 670, 216, 672, 744, 107, 666,
6937      747, -83, -398, 208, -398, -398, 219, 927, 764, -273,
6938     -273, 757, -85, 256, 299, 945, 190, 768, 417, 279,
6939      460, 280, 420, 774, 776, 255, 567, 568, 779, 79,
6940       79, 773, 710, 712, -61, 492, 426, -536, 429, -536,
6941     -536, 79, 434, -532, 623, 734, 439, 440, 441, 442,
6942       79, 797, 477, -90, 806, 792, 461, 256, 470, 474,
6943      208, 928, 929, 805, 478, 497, 208, 208, 610, 551,
6944      553, 666, 801, 623, 479, 439, 440, 441, 442, 557,
6945      329, 585, 666, 329, 601, -82, 623, 299, 439, 440,
6946      441, 442, 208, 608, 622, 208, 79, -76, 615, 462,
6947      463, 464, 312, 313, 79, 634, 637, 107, 187, 107,
6948      639, 79, 79, 640, 642, 845, 647, 107, -251, 656,
6949      461, 802, 659, 443, 796, 674, 680, 798, 847, 107,
6950      445, 107, 107, 731, 461, 319, 320, 321, 322, 323,
6951      324, 812, 676, 725, 733, 861, 735, 813, -252, 105,
6952      446, 105, 684, 822, 865, 767, 857, 772, 858, 783,
6953      299, 815, 875, 462, 463, 466, 823, 107, 866, 824,
6954      825, 208, 329, 868, 827, 312, 313, 462, 463, 468,
6955      829, 79, 461, 831, 208, 878, 299, 880, 79, 79,
6956      835, 881, 79, 107, 107, 834, 105, 837, 849, 844,
6957      887, 255, 890, 245, 249, 107, 838, 840, 79, 320,
6958      321, 322, 323, 324, 107, 255, 856, 842, 203, 203,
6959      867, -253, 203, 853, 107, 462, 463, 471, 899, 900,
6960      107, 107, 870, 883, 871, 320, 321, 322, 323, 324,
6961      623, 873, 439, 440, 441, 442, 877, 893, 232, 235,
6962      884, 79, -254, 203, 203, 907, 107, 909, 338, 107,
6963      107, 912, 79, 916, 277, 278, 918, 920, 107, 923,
6964     -532, 926, 936, -533, 933, 107, 107, 624, 939, 954,
6965      941, 353, 949, 942, 730, 910, 371, 438, 948, 439,
6966      440, 441, 442, 372, 79, 623, 79, 439, 440, 441,
6967      442, 950, 79, 951, 79, 365, 623, 885, 439, 440,
6968      441, 442, 741, 540, 959, 283, 906, 531, 0, 749,
6969      750, 0, 751, 0, 443, 666, 208, 531, 44, 45,
6970      444, 445, 624, 0, 0, 107, 0, 818, 625, 439,
6971      440, 441, 442, 624, 105, 107, 0, 0, 107, 816,
6972      201, 446, 107, 107, 447, 0, 107, 0, 0, 387,
6973        0, 0, 0, 0, 387, 284, 285, 286, 287, 288,
6974        0, 401, 107, 0, 0, 0, 105, 0, 64, 0,
6975        0, 0, 0, 0, 105, 438, 0, 439, 440, 441,
6976      442, 0, 0, 0, 0, 0, -554, 203, 0, 0,
6977      203, 203, 277, 0, -554, -554, -554, 0, 0, -554,
6978     -554, -554, 0, -554, 0, 107, 0, 0, 203, 0,
6979      203, 203, 443, -554, 0, 238, 107, 0, 444, 445,
6980      105, 0, 0, -554, -554, 105, -554, -554, -554, -554,
6981     -554, 0, 105, 0, 0, 0, 0, 0, 0, 446,
6982        0, 0, 447, 0, 0, 0, 0, 0, 107, 0,
6983      107, 0, 0, 0, 0, 0, 107, 0, 107, 0,
6984        0, 0, 0, 0, 0, 105, 448, 0, 401, 0,
6985        0, -554, 0, 0, 0, 0, 0, 0, 0, 0,
6986      107, 0, 0, 0, 0, 203, 0, 0, 0, 0,
6987      499, 502, 503, 504, 505, 506, 507, 508, 509, 510,
6988      511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
6989      521, 522, 523, 524, 525, 526, 527, 0, 203, 0,
6990        0, 0, 0, 0, -554, 0, -554, 0, 0, 219,
6991     -554, 401, -554, 0, -554, 0, 0, 0, 0, 0,
6992        0, 0, 0, 0, 0, 0, 0, 0, 105, 0,
6993      438, 0, 439, 440, 441, 442, 0, 0, 0, 0,
6994        0, 0, 0, 238, 0, 582, 584, 754, 0, 439,
6995      440, 441, 442, 299, 0, 588, 203, 203, 401, 0,
6996        0, 203, 0, 582, 584, 203, 0, 443, 312, 313,
6997        0, 0, 0, 444, 445, 412, 636, 0, 636, 0,
6998      636, 0, 606, 238, 443, 0, 0, 611, 0, 0,
6999      444, 445, 0, 203, 446, 0, 203, 447, 0, 317,
7000      318, 319, 320, 321, 322, 323, 324, 0, 203, 0,
7001      654, 446, 0, 0, 447, 0, 0, 0, 0, 0,
7002        0, 705, 0, 103, 0, 103, 0, 0, 0, 0,
7003        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7004        0, 238, 0, 0, 0, 0, 0, 0, 0, 648,
7005      649, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7006        0, 203, 105, 673, 105, 678, 0, 0, 0, 0,
7007      103, 0, 0, 0, 257, 0, 0, 401, 0, 0,
7008        0, 0, 0, 0, 0, 0, 105, 0, 0, 401,
7009        0, 0, 0, 0, 0, 257, 0, 0, 0, 673,
7010      673, 654, 654, 0, 0, 0, 0, 342, 351, 351,
7011      351, 0, 0, 0, 0, 387, 0, 0, 0, 0,
7012        0, 0, 0, 203, 0, 0, 0, 203, 0, 0,
7013        0, 0, 673, 0, 0, 0, 0, 0, 0, 203,
7014        0, 106, 0, 106, 0, 0, 0, 0, 105, 105,
7015        0, 0, 737, 0, 0, 0, 0, 607, 0, 0,
7016      105, 0, 203, 0, 0, 0, 0, 0, 0, 105,
7017        0, 0, 0, 737, 0, 0, 0, 0, 0, 0,
7018        0, 0, 0, 0, 0, 638, 0, 641, 106, 0,
7019        0, 0, 258, 0, 203, 0, 0, 0, 782, 785,
7020        0, 785, 0, 785, 0, 0, 0, 0, 0, 0,
7021        0, 0, 0, 258, 0, 105, 0, 0, 103, 0,
7022        0, 0, 0, 105, 0, 343, 352, 352, 203, 0,
7023      105, 105, 766, 0, 769, 770, 0, 0, 654, 0,
7024      775, 777, 0, 0, 0, 0, 0, 0, 203, 0,
7025      103, 0, 0, 0, 0, 0, 0, 0, 103, 0,
7026        0, 0, 0, 636, 636, 0, 636, 0, 636, 636,
7027        0, 0, 0, 0, 257, 0, 0, 737, 0, 636,
7028        0, 636, 636, 0, 0, 0, 0, 809, 0, 0,
7029        0, 679, 769, 681, 775, 777, 0, 0, 0, 0,
7030      105, 0, 0, 851, 103, 0, 855, 105, 105, 103,
7031        0, 105, 76, 0, 76, 0, 103, 257, 0, 0,
7032        0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
7033        0, 0, 0, 0, 0, 203, 106, 0, 0, 846,
7034        0, 0, 0, 0, 0, 848, 0, 0, 0, 103,
7035        0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
7036        0, 0, 0, 0, 0, 203, 0, 0, 106, 0,
7037      105, 0, 0, 0, 0, 0, 106, 738, 739, 0,
7038        0, 105, 0, 848, 785, 0, 0, 0, 0, 748,
7039        0, 0, 258, 0, 0, 0, 339, 0, 762, 0,
7040      636, 636, 636, 636, 0, 0, 0, 636, 636, 636,
7041        0, 636, 636, 105, 0, 105, 0, 0, 0, 0,
7042        0, 105, 106, 105, 0, 0, 0, 106, 0, 0,
7043        0, 0, 103, 0, 106, 258, 0, 0, 0, 0,
7044        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7045      401, 0, 678, 785, 0, 257, 0, 0, 636, 807,
7046      808, 636, 636, 636, 636, 0, 0, 106, 0, 0,
7047      826, 828, 0, 830, 0, 832, 833, 0, 0, 0,
7048        0, 636, 0, 0, 0, 0, 839, 0, 841, 843,
7049        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7050      203, 0, 0, 0, 0, 0, 0, 76, 0, 0,
7051        0, 0, 0, 0, 0, 0, 257, 0, 0, 0,
7052        0, 0, 0, 0, 0, 0, 0, 0, 0, 852,
7053        0, 0, 0, 0, 0, 0, 859, 860, 0, 76,
7054      862, 0, 0, 0, 0, 0, 0, 76, 0, 0,
7055      106, 0, 0, 0, 0, 0, 872, 0, 0, 0,
7056        0, 0, 0, 0, 0, 0, 103, 0, 103, 0,
7057        0, 0, 0, 258, 0, 0, 299, 300, 301, 302,
7058      303, 304, 305, 306, 307, 308, 309, -555, -555, 0,
7059      103, 312, 313, 76, 0, 0, 0, 0, 76, 897,
7060        0, 0, 0, 0, 0, 76, 0, 911, 913, 914,
7061      915, 0, 0, 0, 919, 921, 922, 0, 924, 925,
7062      315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
7063        0, 0, 0, 0, 258, 0, 257, 0, 76, 0,
7064        0, 0, 930, 0, 931, 0, 0, 0, 0, 0,
7065      932, 0, 103, 103, 0, 0, 0, 0, 0, 0,
7066        0, 0, 0, 0, 103, 952, 0, 0, 953, 955,
7067      956, 957, 0, 103, 0, 0, 0, 0, 0, 0,
7068      257, 0, 0, 0, 106, 0, 106, 0, 960, 0,
7069        0, 0, 0, 0, 299, 300, 301, 302, 303, 304,
7070      305, 306, 307, 308, 309, 310, 311, 0, 106, 312,
7071      313, 0, 0, 0, 0, 0, 0, 0, 0, 103,
7072        0, 76, 0, 0, 0, 0, 0, 103, 0, 0,
7073        0, 0, 0, 0, 103, 103, 314, 0, 315, 316,
7074      317, 318, 319, 320, 321, 322, 323, 324, 0, 0,
7075        0, 0, 0, 0, 258, 0, 0, 0, 0, 0,
7076        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7077      106, 106, 0, 0, 223, 0, 0, 0, 0, 0,
7078        0, 0, 106, 753, 0, 0, 0, 0, 0, 0,
7079        0, 106, 0, 0, 0, 0, 0, 0, 258, 0,
7080        0, 0, 0, 0, 103, 0, 0, 0, 0, 0,
7081        0, 103, 103, 0, 0, 103, 0, 0, 0, 0,
7082        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7083        0, 103, 0, 0, 0, 0, 0, 106, 0, 0,
7084        0, 0, 0, 0, 0, 106, 0, 0, 0, 0,
7085        0, 0, 106, 106, 0, 76, 351, 76, 0, 0,
7086        0, 0, 299, 300, 301, 302, 303, 304, 305, 306,
7087      894, 308, 309, 0, 103, 0, 0, 312, 313, 76,
7088        0, 0, 0, 0, 0, 103, 0, 0, 0, 0,
7089        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7090        0, 0, 0, 0, 0, 0, 315, 316, 317, 318,
7091      319, 320, 321, 322, 323, 324, 0, 103, 0, 103,
7092        0, 0, 106, 0, 0, 103, 0, 103, 0, 106,
7093      106, 0, 0, 106, 0, 0, 0, 0, 0, 0,
7094        0, 76, 76, 0, 0, 0, 0, 0, 0, 106,
7095        0, 0, 0, 76, 0, 0, 0, 0, 0, 0,
7096        0, 0, 76, 0, 0, 0, 0, 0, 0, 0,
7097        0, 0, 0, 0, 352, 0, 0, 0, 0, 0,
7098        0, 299, -555, -555, -555, -555, 304, 305, 895, 0,
7099     -555, -555, 106, 0, 0, 0, 312, 313, 0, 0,
7100        0, 0, 0, 106, 0, 0, 0, 0, 76, 0,
7101        0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
7102        0, 0, 0, 76, 76, 315, 316, 317, 318, 319,
7103      320, 321, 322, 323, 324, 106, 0, 106, 0, 660,
7104        0, 0, 0, 106, 0, 106, 0, 0, 0, 0,
7105        0, 0, 0, 0, 0, 0, 715, 0, 0, 0,
7106        0, 0, 0, 299, 300, 301, 302, 303, 304, 305,
7107      306, 307, 308, 309, 310, 311, 0, 0, 312, 313,
7108      299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
7109      309, 310, 311, 76, 0, 312, 313, 0, 0, 0,
7110       76, 76, 0, 0, 76, 314, 0, 315, 316, 317,
7111      318, 319, 320, 321, 322, 323, 324, 0, 0, 0,
7112       76, 0, 314, 0, 315, 316, 317, 318, 319, 320,
7113      321, 322, 323, 324, -554, 4, -230, 5, 6, 7,
7114        8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
7115       12, 0, 13, 14, 15, 16, 17, 18, 19, 892,
7116        0, 0, 0, 76, 20, 21, 22, 23, 24, 25,
7117       26, 0, 0, 27, 76, 0, 0, 0, 0, 28,
7118       29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
7119       39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
7120       46, 47, 0, 0, 0, 0, 76, 0, 76, 0,
7121        0, 0, 0, 0, 76, 0, 76, 0, 0, 0,
7122       48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
7123        0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
7124        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7125        0, 0, 0, 0, 0, 0, 61, 62, 63, -272,
7126        0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
7127        0, 0, -272, -272, -272, 0, -272, 0, 0, 0,
7128     -554, 0, -554, 0, 0, 0, -272, -272, -272, 0,
7129        0, 0, 0, 0, 0, 0, -272, -272, 0, -272,
7130     -272, -272, -272, -272, 0, 0, 0, 0, 0, 0,
7131      299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
7132      309, 310, 311, 0, 0, 312, 313, -272, -272, -272,
7133     -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
7134        0, 0, -272, -272, -272, 0, 663, -272, 0, 0,
7135        0, 0, 314, -272, 315, 316, 317, 318, 319, 320,
7136      321, 322, 323, 324, 0, 0, -272, 0, -94, -272,
7137     -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
7138     -272, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7139        0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
7140     -272, -397, 0, -272, -272, -272, 0, -272, 0, -397,
7141     -397, -397, 0, 0, -397, -397, -397, 0, -397, 0,
7142        0, 0, 0, 0, 0, 0, 0, -397, -397, -397,
7143        0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
7144        0, -397, -397, -397, -397, -397, 0, 0, 0, 0,
7145        0, 0, 299, 300, 301, 302, 303, 304, 305, 0,
7146        0, 308, 309, 0, 0, 0, 0, 312, 313, -397,
7147     -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
7148     -397, -397, 0, 0, -397, -397, -397, 0, 0, -397,
7149        0, 0, 0, 0, 0, -397, 315, 316, 317, 318,
7150      319, 320, 321, 322, 323, 324, 0, 0, 0, 0,
7151        0, -397, 0, -397, -397, -397, -397, -397, -397, -397,
7152     -397, -397, -397, 0, 0, 0, 0, 0, 0, 0,
7153        0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
7154     -397, -397, -397, -266, 219, -397, -397, -397, 0, -397,
7155        0, -266, -266, -266, 0, 0, -266, -266, -266, 0,
7156     -266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7157     -266, -266, -266, 0, 0, 0, 0, 0, 0, 0,
7158     -266, -266, 0, -266, -266, -266, -266, -266, 0, 0,
7159        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7160        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7161        0, -266, -266, -266, -266, -266, -266, -266, -266, -266,
7162     -266, -266, -266, -266, 0, 0, -266, -266, -266, 0,
7163        0, -266, 0, 0, 0, 0, 0, -266, 0, 0,
7164        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7165     -266, 0, 0, -266, -266, -266, -266, -266, -266, -266,
7166     -266, -266, -266, -266, -266, 0, 0, 0, 0, 0,
7167        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7168        0, -266, -266, -266, -266, -554, 0, -266, -266, -266,
7169        0, -266, 0, -554, -554, -554, 0, 0, -554, -554,
7170     -554, 0, -554, 0, 0, 0, 0, 0, 0, 0,
7171        0, -554, -554, -554, 0, 0, 0, 0, 0, 0,
7172        0, 0, -554, -554, 0, -554, -554, -554, -554, -554,
7173        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7174        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7175        0, 0, 0, -554, -554, -554, -554, -554, -554, -554,
7176     -554, -554, -554, -554, -554, -554, 0, 0, -554, -554,
7177     -554, 0, 0, -554, 0, 0, 0, 0, 0, -554,
7178        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7179        0, 0, 0, 0, 0, -554, 0, -554, -554, -554,
7180     -554, -554, -554, -554, -554, -554, -554, 0, 0, 0,
7181        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7182        0, 0, -554, -554, -554, -554, -554, -279, 219, -554,
7183     -554, -554, 0, -554, 0, -279, -279, -279, 0, 0,
7184     -279, -279, -279, 0, -279, 0, 0, 0, 0, 0,
7185        0, 0, 0, 0, -279, -279, 0, 0, 0, 0,
7186        0, 0, 0, 0, -279, -279, 0, -279, -279, -279,
7187     -279, -279, 0, 0, 0, 0, 0, 0, 0, 0,
7188        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7189        0, 0, 0, 0, 0, -279, -279, -279, -279, -279,
7190     -279, -279, -279, -279, -279, -279, -279, -279, 0, 0,
7191     -279, -279, -279, 0, 0, -279, 0, 0, 0, 0,
7192        0, -279, 0, 0, 0, 0, 0, 0, 0, 0,
7193        0, 0, 0, 0, 0, 0, 0, -279, 0, -279,
7194     -279, -279, -279, -279, -279, -279, -279, -279, -279, 0,
7195        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7196        0, 0, 0, 0, 0, -279, -279, -279, -279, -536,
7197      216, -279, -279, -279, 0, -279, 0, -536, -536, -536,
7198        0, 0, 0, -536, -536, 0, -536, 0, 0, 0,
7199        0, 0, 0, 0, 0, -536, 0, 0, 0, 0,
7200        0, 0, 0, 0, 0, 0, -536, -536, 0, -536,
7201     -536, -536, -536, -536, 0, 0, 0, 0, 0, 0,
7202        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7203        0, 0, 0, 0, 0, 0, 0, -536, -536, -536,
7204     -536, -536, -536, -536, -536, -536, -536, -536, -536, -536,
7205        0, 0, -536, -536, -536, -272, 662, 0, 0, 0,
7206        0, 0, 0, -272, -272, -272, 0, 0, 0, -272,
7207     -272, 0, -272, 0, 0, 0, 0, 0, -92, -536,
7208        0, -536, -536, -536, -536, -536, -536, -536, -536, -536,
7209     -536, 0, -272, -272, 0, -272, -272, -272, -272, -272,
7210        0, 0, 0, 0, 0, 0, -536, -536, -536, -536,
7211      -84, 0, 0, -536, 0, -536, 0, -536, 0, 0,
7212        0, 0, 0, -272, -272, -272, -272, -272, -272, -272,
7213     -272, -272, -272, -272, -272, -272, 0, 0, -272, -272,
7214     -272, 0, 663, 0, 0, 0, 0, 0, 0, 0,
7215        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7216        0, 0, 0, 0, -94, -272, 0, -272, -272, -272,
7217     -272, -272, -272, -272, -272, -272, -272, 0, 0, 0,
7218        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7219        0, 0, 0, -272, -272, -272, -86, 0, 0, -272,
7220        0, -272, 4, -272, 5, 6, 7, 8, 9, -554,
7221     -554, -554, 10, 11, 0, 0, -554, 12, 0, 13,
7222       14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
7223        0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
7224       27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
7225       32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
7226       41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
7227        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7228        0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
7229       49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
7230       56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
7231        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7232        0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
7233        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7234        0, 0, 0, 0, 0, 0, 0, -554, 4, -554,
7235        5, 6, 7, 8, 9, 0, 0, -554, 10, 11,
7236        0, -554, -554, 12, 0, 13, 14, 15, 16, 17,
7237       18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
7238       23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
7239        0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
7240       36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
7241       44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
7242        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7243        0, 0, 0, 48, 0, 0, 49, 50, 0, 51,
7244       52, 0, 53, 0, 54, 55, 56, 57, 58, 59,
7245       60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7246        0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
7247       62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
7248        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7249        0, 0, 0, -554, 4, -554, 5, 6, 7, 8,
7250        9, 0, 0, -554, 10, 11, 0, 0, -554, 12,
7251     -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
7252        0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
7253        0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
7254       30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
7255       40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
7256       47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7257        0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
7258        0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
7259       54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
7260        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7261        0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
7262        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7263        0, 0, 0, 0, 0, 0, 0, 0, 0, -554,
7264        4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
7265       10, 11, 0, 0, -554, 12, 0, 13, 14, 15,
7266       16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
7267       21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
7268        0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
7269       34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
7270        0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
7271        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7272        0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
7273        0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
7274       58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
7275        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7276        0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
7277        0, 4, 0, 5, 6, 7, 8, 9, 0, -554,
7278     -554, 10, 11, 0, 0, -554, 12, -554, 13, 14,
7279       15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
7280       20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
7281        0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
7282       33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
7283       42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
7284        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7285        0, 0, 0, 0, 0, 0, 48, 0, 0, 49,
7286       50, 0, 51, 52, 0, 53, 0, 54, 55, 56,
7287       57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
7288        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7289        0, 0, 61, 62, 63, 0, 0, 0, 0, 0,
7290        0, 0, 4, 0, 5, 6, 7, 8, 9, 0,
7291        0, 0, 10, 11, 0, 0, -554, 12, -554, 13,
7292       14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
7293        0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
7294       27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
7295       32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
7296       41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
7297        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7298        0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
7299      237, 50, 0, 51, 52, 0, 53, 0, 54, 55,
7300       56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
7301        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7302        0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
7303        0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
7304        0, 0, 0, 10, 11, -554, 0, -554, 12, -554,
7305       13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
7306        0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
7307        0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
7308       31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
7309        0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
7310        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7311        0, 0, 0, 0, 0, 0, 0, 0, 48, 0,
7312        0, 49, 50, 0, 51, 52, 0, 53, 0, 54,
7313       55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
7314        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7315        0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
7316        0, 0, 0, 0, 4, 0, 5, 6, 7, 8,
7317        9, 0, 0, 0, 10, 11, -554, 0, -554, 12,
7318     -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
7319        0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
7320        0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
7321       30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
7322       40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
7323       47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7324        0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
7325        0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
7326       54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
7327        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7328        0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
7329        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7330        0, -554, 0, 0, 0, 0, 0, 0, 0, -554,
7331        4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
7332       10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
7333       16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
7334       21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
7335        0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
7336       34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
7337        0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
7338        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7339        0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
7340        0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
7341       58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
7342        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7343        0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
7344        0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
7345        0, 10, 11, 0, 0, -554, 12, -554, 13, 14,
7346       15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
7347      193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
7348        0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
7349       33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
7350       42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
7351        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7352        0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
7353       50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
7354       57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
7355        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7356        0, 0, 61, 200, 63, 5, 6, 7, 0, 9,
7357        0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
7358       13, 14, 15, 16, 17, 18, 19, 0, 223, 0,
7359        0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
7360        0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
7361        0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
7362        0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
7363        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7364        0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
7365        0, 197, 50, 0, 51, 52, 0, 0, 0, 54,
7366       55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
7367        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7368        0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
7369        0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
7370        9, 0, 0, 0, 10, 11, 0, 0, 279, 12,
7371      280, 13, 14, 15, 16, 17, 18, 19, 0, 0,
7372        0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
7373        0, 0, 27, 0, 0, 0, 0, 0, 0, 29,
7374        0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
7375       40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
7376       47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7377        0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
7378        0, 0, 197, 50, 0, 51, 52, 0, 0, 0,
7379       54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
7380        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7381        0, 0, 0, 0, 0, 61, 62, 63, 5, 6,
7382        7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
7383        0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
7384        0, 223, 0, 0, 0, 20, 21, 22, 23, 24,
7385       25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
7386       28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
7387       38, 39, 40, 0, 41, 42, 0, 43, 44, 45,
7388        0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
7389        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7390        0, 48, 0, 0, 49, 50, 0, 51, 52, 0,
7391       53, 0, 54, 55, 56, 57, 58, 59, 60, 0,
7392        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7393        0, 0, 0, 0, 0, 0, 0, 61, 62, 63,
7394        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7395        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7396        0, 479, 110, 111, 112, 113, 114, 115, 116, 117,
7397      118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
7398      128, 129, 130, 131, 132, 133, 0, 0, 0, 134,
7399      135, 136, 354, 355, 356, 357, 141, 142, 143, 0,
7400        0, 0, 0, 0, 144, 145, 146, 147, 358, 359,
7401      360, 361, 152, 37, 38, 362, 40, 0, 0, 0,
7402        0, 0, 0, 0, 0, 154, 155, 156, 157, 158,
7403      159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
7404      165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
7405        0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
7406        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7407        0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
7408      179, 0, 180, 181, 0, 0, 0, 0, 0, 0,
7409     -529, -529, -529, 0, -529, 0, 0, 0, -529, -529,
7410        0, 182, 363, -529, 0, -529, -529, -529, -529, -529,
7411     -529, -529, 0, -529, 0, 0, 0, -529, -529, -529,
7412     -529, -529, -529, -529, 0, 0, -529, 0, 0, 0,
7413        0, 0, 0, -529, 0, 0, -529, -529, -529, -529,
7414     -529, -529, -529, -529, -529, -529, -529, -529, 0, -529,
7415     -529, -529, 0, -529, -529, 0, 0, 0, 0, 0,
7416        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7417        0, 0, 0, -529, 0, 0, -529, -529, 0, -529,
7418     -529, 0, -529, -529, -529, -529, -529, -529, -529, -529,
7419     -529, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7420        0, 0, 0, 0, 0, 0, 0, 0, 0, -529,
7421     -529, -529, 0, 0, 0, 0, 0, 0, -530, -530,
7422     -530, 0, -530, 0, -529, 0, -530, -530, 0, 0,
7423     -529, -530, 0, -530, -530, -530, -530, -530, -530, -530,
7424        0, -530, 0, 0, 0, -530, -530, -530, -530, -530,
7425     -530, -530, 0, 0, -530, 0, 0, 0, 0, 0,
7426        0, -530, 0, 0, -530, -530, -530, -530, -530, -530,
7427     -530, -530, -530, -530, -530, -530, 0, -530, -530, -530,
7428        0, -530, -530, 0, 0, 0, 0, 0, 0, 0,
7429        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7430        0, -530, 0, 0, -530, -530, 0, -530, -530, 0,
7431     -530, -530, -530, -530, -530, -530, -530, -530, -530, 0,
7432        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7433        0, 0, 0, 0, 0, 0, 0, -530, -530, -530,
7434        0, 0, 0, 0, 0, 0, -532, -532, -532, 0,
7435     -532, 0, -530, 0, -532, -532, 0, 0, -530, -532,
7436        0, -532, -532, -532, -532, -532, -532, -532, 0, 0,
7437        0, 0, 0, -532, -532, -532, -532, -532, -532, -532,
7438        0, 0, -532, 0, 0, 0, 0, 0, 0, -532,
7439        0, 0, -532, -532, -532, -532, -532, -532, -532, -532,
7440     -532, -532, -532, -532, 0, -532, -532, -532, 0, -532,
7441     -532, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7442        0, 0, 0, 0, 0, 0, 0, 0, 0, -532,
7443      720, 0, -532, -532, 0, -532, -532, 0, -532, -532,
7444     -532, -532, -532, -532, -532, -532, -532, 0, 0, 0,
7445        0, 0, -92, 0, 0, 0, 0, 0, 0, 0,
7446     -534, -534, -534, 0, -534, -532, -532, -532, -534, -534,
7447        0, 0, 0, -534, 0, -534, -534, -534, -534, -534,
7448     -534, -534, 0, 0, 0, 0, -532, -534, -534, -534,
7449     -534, -534, -534, -534, 0, 0, -534, 0, 0, 0,
7450        0, 0, 0, -534, 0, 0, -534, -534, -534, -534,
7451     -534, -534, -534, -534, -534, -534, -534, -534, 0, -534,
7452     -534, -534, 0, -534, -534, 0, 0, 0, 0, 0,
7453        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7454        0, 0, 0, -534, 0, 0, -534, -534, 0, -534,
7455     -534, 0, -534, -534, -534, -534, -534, -534, -534, -534,
7456     -534, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7457        0, 0, 0, 0, -535, -535, -535, 0, -535, -534,
7458     -534, -534, -535, -535, 0, 0, 0, -535, 0, -535,
7459     -535, -535, -535, -535, -535, -535, 0, 0, 0, 0,
7460     -534, -535, -535, -535, -535, -535, -535, -535, 0, 0,
7461     -535, 0, 0, 0, 0, 0, 0, -535, 0, 0,
7462     -535, -535, -535, -535, -535, -535, -535, -535, -535, -535,
7463     -535, -535, 0, -535, -535, -535, 0, -535, -535, 0,
7464        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7465        0, 0, 0, 0, 0, 0, 0, -535, 0, 0,
7466     -535, -535, 0, -535, -535, 0, -535, -535, -535, -535,
7467     -535, -535, -535, -535, -535, 0, 0, 0, 0, 0,
7468        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7469        0, 0, 0, -535, -535, -535, 0, 0, 0, 0,
7470        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7471        0, 0, 0, 0, -535, 110, 111, 112, 113, 114,
7472      115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
7473      125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
7474        0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
7475      142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
7476      147, 148, 149, 150, 151, 152, 261, 262, 153, 263,
7477        0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
7478      156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
7479      164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
7480        0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
7481        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7482        0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
7483      176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
7484        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7485        0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
7486      115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
7487      125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
7488        0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
7489      142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
7490      147, 148, 149, 150, 151, 152, 225, 0, 153, 0,
7491        0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
7492      156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
7493      164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
7494        0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
7495       55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7496        0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
7497      176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
7498        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7499        0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
7500      115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
7501      125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
7502        0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
7503      142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
7504      147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
7505        0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
7506      156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
7507      164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
7508        0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
7509       55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7510        0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
7511      176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
7512        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7513        0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
7514      115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
7515      125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
7516        0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
7517      142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
7518      147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
7519        0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
7520      156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
7521      164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
7522        0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
7523        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7524        0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
7525      176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
7526        5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
7527        0, 0, 0, 12, 182, 13, 14, 15, 191, 192,
7528       18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
7529       23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
7530        0, 0, 0, 250, 0, 0, 32, 33, 34, 35,
7531       36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
7532       44, 45, 0, 0, 0, 0, 0, 0, 0, 0,
7533        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7534        0, 0, 0, 251, 0, 0, 197, 50, 0, 51,
7535       52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
7536       60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7537        0, 0, 5, 6, 7, 0, 9, 0, 0, 252,
7538       10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
7539      191, 192, 18, 19, 0, 0, 0, 0, 253, 193,
7540      230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
7541        0, 0, 0, 0, 0, 250, 0, 0, 32, 33,
7542       34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
7543        0, 43, 44, 45, 0, 0, 0, 0, 0, 0,
7544        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7545        0, 0, 0, 0, 0, 251, 0, 0, 197, 50,
7546        0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
7547       58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
7548        0, 0, 0, 0, 5, 6, 7, 8, 9, 0,
7549        0, 252, 10, 11, 0, 0, 0, 12, 0, 13,
7550       14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
7551      495, 20, 21, 22, 23, 24, 25, 26, 0, 0,
7552       27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
7553       32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
7554       41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
7555        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7556        0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
7557       49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
7558       56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
7559        0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
7560        0, 10, 11, 61, 62, 63, 12, 0, 13, 14,
7561       15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
7562      193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
7563        0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
7564       33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
7565       42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
7566        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7567        0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
7568       50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
7569       57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
7570        0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
7571       10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
7572      191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
7573      230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
7574        0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
7575       34, 35, 36, 37, 38, 39, 40, 195, 41, 42,
7576        0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
7577        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7578        0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
7579        0, 51, 52, 0, 590, 199, 54, 55, 56, 57,
7580       58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
7581        0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
7582       11, 61, 200, 63, 12, 0, 13, 14, 15, 191,
7583      192, 18, 19, 0, 0, 0, 0, 0, 193, 230,
7584      231, 23, 24, 25, 26, 0, 0, 194, 0, 0,
7585        0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
7586       35, 36, 37, 38, 39, 40, 195, 41, 42, 0,
7587       43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
7588        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7589        0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
7590       51, 52, 0, 198, 0, 54, 55, 56, 57, 58,
7591       59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
7592        5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
7593       61, 200, 63, 12, 0, 13, 14, 15, 191, 192,
7594       18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
7595       23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
7596        0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
7597       36, 37, 38, 39, 40, 195, 41, 42, 0, 43,
7598       44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
7599        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7600        0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
7601       52, 0, 0, 199, 54, 55, 56, 57, 58, 59,
7602       60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
7603        6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
7604      200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
7605       19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
7606       24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
7607        0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
7608       37, 38, 39, 40, 195, 41, 42, 0, 43, 44,
7609       45, 0, 46, 47, 0, 0, 0, 0, 0, 0,
7610        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7611        0, 0, 196, 0, 0, 197, 50, 0, 51, 52,
7612        0, 590, 0, 54, 55, 56, 57, 58, 59, 60,
7613        0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
7614        7, 0, 9, 0, 0, 0, 10, 11, 61, 200,
7615       63, 12, 0, 13, 14, 15, 191, 192, 18, 19,
7616        0, 0, 0, 0, 0, 193, 230, 231, 23, 24,
7617       25, 26, 0, 0, 194, 0, 0, 0, 0, 0,
7618        0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
7619       38, 39, 40, 195, 41, 42, 0, 43, 44, 45,
7620        0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
7621        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7622        0, 196, 0, 0, 197, 50, 0, 51, 52, 0,
7623        0, 0, 54, 55, 56, 57, 58, 59, 60, 0,
7624        0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
7625        0, 9, 0, 0, 0, 10, 11, 61, 200, 63,
7626       12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
7627        0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
7628       26, 0, 0, 194, 0, 0, 0, 0, 0, 0,
7629       29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
7630       39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
7631       46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
7632        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7633      196, 0, 0, 197, 50, 0, 51, 52, 0, 489,
7634        0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
7635        0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
7636        9, 0, 0, 0, 10, 11, 61, 200, 63, 12,
7637        0, 13, 14, 15, 191, 192, 18, 19, 0, 0,
7638        0, 0, 0, 193, 230, 231, 23, 24, 25, 26,
7639        0, 0, 194, 0, 0, 0, 0, 0, 0, 29,
7640        0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
7641       40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
7642       47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7643        0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
7644        0, 0, 197, 50, 0, 51, 52, 0, 198, 0,
7645       54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
7646        0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
7647        0, 0, 0, 10, 11, 61, 200, 63, 12, 0,
7648       13, 14, 15, 191, 192, 18, 19, 0, 0, 0,
7649        0, 0, 193, 230, 231, 23, 24, 25, 26, 0,
7650        0, 194, 0, 0, 0, 0, 0, 0, 29, 0,
7651        0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
7652        0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
7653        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7654        0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
7655        0, 197, 50, 0, 51, 52, 0, 763, 0, 54,
7656       55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
7657        0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
7658        0, 0, 10, 11, 61, 200, 63, 12, 0, 13,
7659       14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
7660        0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
7661      194, 0, 0, 0, 0, 0, 0, 29, 0, 0,
7662       32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
7663       41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
7664        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7665        0, 0, 0, 0, 0, 0, 0, 196, 0, 0,
7666      197, 50, 0, 51, 52, 0, 489, 0, 54, 55,
7667       56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
7668        0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
7669        0, 10, 11, 61, 200, 63, 12, 0, 13, 14,
7670       15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
7671      193, 230, 231, 23, 24, 25, 26, 0, 0, 194,
7672        0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
7673       33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
7674       42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
7675        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7676        0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
7677       50, 0, 51, 52, 0, 590, 0, 54, 55, 56,
7678       57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
7679        0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
7680       10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
7681      191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
7682      230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
7683        0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
7684       34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
7685        0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
7686        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7687        0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
7688        0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
7689       58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
7690        0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
7691       11, 61, 200, 63, 12, 0, 13, 14, 15, 16,
7692       17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
7693       22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
7694        0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
7695       35, 36, 37, 38, 39, 40, 0, 41, 42, 0,
7696       43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
7697        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7698        0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
7699       51, 52, 0, 0, 0, 54, 55, 56, 57, 58,
7700       59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
7701        5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
7702       61, 62, 63, 12, 0, 13, 14, 15, 16, 17,
7703       18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
7704       23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
7705        0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
7706       36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
7707       44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
7708        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7709        0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
7710       52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
7711       60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
7712        6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
7713      200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
7714       19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
7715       24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
7716        0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
7717       37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
7718       45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7719        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7720        0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
7721        0, 296, 0, 54, 55, 56, 57, 58, 59, 60,
7722        0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
7723        0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
7724       14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
7725        0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
7726      194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
7727       32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
7728       41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
7729        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7730        0, 0, 0, 0, 0, 0, 0, 337, 0, 0,
7731       49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
7732       56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
7733        6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
7734        0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
7735       19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
7736       24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
7737        0, 0, 250, 0, 0, 32, 33, 34, 344, 36,
7738       37, 38, 345, 40, 0, 41, 42, 0, 43, 44,
7739       45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7740        0, 0, 0, 0, 0, 0, 0, 0, 0, 346,
7741        0, 0, 347, 0, 0, 197, 50, 0, 51, 52,
7742        0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
7743        0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
7744        0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
7745       14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
7746        0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
7747      194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
7748       32, 33, 34, 344, 36, 37, 38, 345, 40, 0,
7749       41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
7750        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7751        0, 0, 0, 0, 0, 0, 0, 347, 0, 0,
7752      197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
7753       56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
7754        6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
7755        0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
7756       19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
7757       24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
7758        0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
7759       37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
7760       45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7761        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7762        0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
7763        0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
7764        0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
7765        0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
7766       14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
7767        0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
7768      194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
7769       32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
7770       41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
7771        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7772        0, 0, 0, 0, 0, 0, 0, 882, 0, 0,
7773      197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
7774       56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
7775        6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
7776        0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
7777       19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
7778       24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
7779        0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
7780       37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
7781       45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7782        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7783        0, 0, 891, 0, 0, 197, 50, 0, 51, 52,
7784        0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
7785        0, 0, 0, 0, 0, 528, 529, 0, 0, 530,
7786        0, 0, 0, 0, 0, 0, 0, 0, 252, 154,
7787      155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
7788      163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
7789        0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
7790        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7791        0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
7792      175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
7793        0, 0, 0, 536, 537, 0, 0, 538, 0, 0,
7794        0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
7795      157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
7796        0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
7797        0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
7798        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7799        0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
7800      177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
7801        0, 594, 529, 0, 0, 595, 0, 0, 0, 0,
7802        0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
7803      159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
7804      165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
7805        0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
7806        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7807        0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
7808      179, 0, 180, 181, 0, 0, 0, 0, 0, 597,
7809      537, 0, 0, 598, 0, 0, 0, 0, 0, 0,
7810        0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
7811      161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
7812      167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
7813        0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
7814        0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
7815      171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
7816      180, 181, 0, 0, 0, 0, 0, 617, 529, 0,
7817        0, 618, 0, 0, 0, 0, 0, 0, 0, 182,
7818      219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
7819        0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
7820        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7821      169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7822        0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
7823      173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
7824        0, 0, 0, 0, 0, 620, 537, 0, 0, 621,
7825        0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
7826      155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
7827      163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
7828        0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
7829        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7830        0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
7831      175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
7832        0, 0, 0, 689, 529, 0, 0, 690, 0, 0,
7833        0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
7834      157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
7835        0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
7836        0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
7837        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7838        0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
7839      177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
7840        0, 692, 537, 0, 0, 693, 0, 0, 0, 0,
7841        0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
7842      159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
7843      165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
7844        0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
7845        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7846        0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
7847      179, 0, 180, 181, 0, 0, 0, 0, 0, 699,
7848      529, 0, 0, 700, 0, 0, 0, 0, 0, 0,
7849        0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
7850      161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
7851      167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
7852        0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
7853        0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
7854      171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
7855      180, 181, 0, 0, 0, 0, 0, 575, 537, 0,
7856        0, 576, 0, 0, 0, 0, 0, 0, 0, 182,
7857      219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
7858        0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
7859        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7860      169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7861        0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
7862      173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
7863        0, 0, 0, 0, 0, 937, 529, 0, 0, 938,
7864        0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
7865      155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
7866      163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
7867        0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
7868        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7869        0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
7870      175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
7871        0, 0, 0, 943, 529, 0, 0, 944, 0, 0,
7872        0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
7873      157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
7874        0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
7875        0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
7876        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7877        0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
7878      177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
7879        0, 946, 537, 0, 0, 947, 0, 0, 0, 0,
7880        0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
7881      159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
7882      165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
7883        0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
7884        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7885        0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
7886      179, 0, 180, 181, 0, 0, 0, 0, 0, 575,
7887      537, 0, 0, 576, 0, 0, 0, 0, 0, 0,
7888        0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
7889      161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
7890      167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
7891        0, 0, 169, 0, 0, 0, 0, 0, 660, 0,
7892        0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
7893      171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
7894      180, 181, 299, 300, 301, 302, 303, 304, 305, 306,
7895      307, 308, 309, 310, 311, 0, 0, 312, 313, 182,
7896        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7897        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
7898        0, 0, 0, 0, 314, 0, 315, 316, 317, 318,
7899      319, 320, 321, 322, 323, 324
7900 };
7901
7902 static const yytype_int16 yycheck[] =
7903 {
7904        2, 55, 4, 8, 52, 74, 22, 27, 8, 29,
7905       51, 260, 331, 326, 16, 17, 28, 62, 20, 53,
7906      212, 65, 550, 28, 4, 260, 298, 244, 28, 85,
7907      549, 248, 569, 596, 434, 89, 50, 8, 16, 17,
7908       74, 85, 20, 1, 347, 51, 52, 49, 50, 53,
7909      443, 53, 86, 87, 88, 55, 619, 28, 49, 267,
7910       62, 637, 735, 271, 325, 634, 327, 81, 82, 733,
7911      677, 85, 74, 25, 681, 25, 389, 22, 29, 81,
7912       82, 25, 61, 85, 86, 87, 88, 25, 237, 89,
7913      731, 107, 579, 580, 840, 495, 26, 16, 17, 85,
7914       87, 20, 109, 0, 61, 393, 367, 368, 37, 38,
7915       25, 87, 82, 87, 76, 85, 85, 25, 85, 651,
7916       85, 25, 109, 436, 148, 104, 105, 388, 691, 390,
7917       56, 85, 13, 109, 141, 109, 424, 61, 85, 702,
7918      385, 65, 25, 59, 60, 25, 295, 195, 393, 106,
7919      198, 199, 114, 414, 140, 113, 107, 109, 25, 109,
7920      634, 698, 107, 637, 2, 13, 4, 141, 147, 706,
7921      139, 140, 918, 140, 815, 140, 437, 651, 16, 17,
7922      104, 105, 20, 52, 253, 139, 140, 56, 146, 141,
7923      148, 141, 144, 140, 144, 197, 148, 141, 148, 448,
7924       13, 137, 27, 141, 877, 143, 13, 137, 222, 873,
7925      224, 49, 50, 448, 216, 231, 218, 219, 234, 253,
7926      222, 13, 224, 755, 62, 13, 141, 229, 143, 716,
7927      250, 624, 625, 141, 875, 237, 26, 141, 216, 222,
7928      218, 219, 555, 81, 82, 293, 237, 85, 293, 825,
7929      298, 253, 293, 298, 567, 862, 239, 298, 141, 659,
7930      829, 141, 296, 566, 472, 146, 28, 148, 909, 838,
7931      284, 285, 286, 287, 141, 289, 290, 796, 334, 37,
7932       38, 283, 284, 285, 286, 287, 288, 289, 290, 147,
7933      334, 293, 296, 295, 296, 556, 298, 216, 146, 218,
7934      148, 147, 85, 283, 295, 349, 141, 568, 288, 59,
7935       60, 327, 85, 148, 284, 285, 286, 287, 332, 333,
7936       85, 146, 571, 148, 326, 325, 328, 864, 373, 374,
7937      332, 333, 346, 146, 862, 148, 384, 385, 731, 146,
7938      733, 148, 68, 109, 346, 393, 141, 137, 326, 141,
7939       85, 825, 85, 143, 146, 143, 148, 140, 146, 197,
7940      148, 26, 332, 333, 838, 434, 840, 140, 687, 906,
7941       26, 373, 374, 421, 390, 140, 424, 109, 216, 385,
7942      218, 219, 945, 85, 222, 85, 224, 389, 388, 99,
7943      148, 229, 87, 119, 120, 121, 408, 614, 414, 237,
7944      434, 593, 651, 408, 676, 140, 139, 140, 408, 411,
7945      143, 389, 395, 413, 109, 421, 399, 141, 85, 402,
7946       85, 437, 815, 816, 148, 143, 495, 14, 15, 85,
7947      148, 85, 434, 416, 436, 435, 419, 408, 140, 139,
7948      140, 489, 87, 85, 918, 283, 284, 285, 286, 287,
7949      288, 289, 290, 87, 87, 293, 705, 295, 436, 85,
7950      298, 495, 141, 52, 109, 54, 55, 56, 57, 85,
7951      705, 143, 137, 140, 139, 140, 109, 87, 143, 85,
7952      873, 137, 875, 139, 140, 139, 140, 143, 326, 56,
7953      328, 26, 54, 495, 332, 333, 141, 517, 140, 109,
7954       89, 63, 64, 551, 548, 549, 95, 96, 346, 85,
7955      551, 494, 109, 139, 140, 535, 909, 533, 562, 87,
7956       15, 552, 17, 139, 140, 541, 26, 116, 88, 85,
7957      119, 850, 665, 139, 140, 373, 374, 856, 87, 672,
7958      556, 109, 590, 545, 87, 547, 615, 87, 577, 578,
7959       85, 389, 568, 555, 554, 85, 570, 146, 87, 141,
7960      109, 577, 578, 139, 140, 567, 566, 569, 570, 109,
7961       57, 58, 85, 411, 622, 587, 596, 555, 141, 143,
7962      109, 615, 587, 139, 140, 85, 137, 587, 533, 567,
7963      659, 605, 141, 609, 610, 143, 541, 637, 436, 619,
7964      640, 141, 137, 605, 139, 140, 143, 85, 656, 139,
7965      140, 651, 141, 615, 68, 928, 587, 662, 144, 146,
7966      869, 148, 145, 668, 669, 659, 139, 140, 676, 631,
7967      632, 87, 577, 578, 109, 676, 138, 137, 56, 139,
7968      140, 643, 141, 143, 52, 628, 54, 55, 56, 57,
7969      652, 695, 68, 109, 708, 686, 61, 659, 106, 106,
7970      662, 139, 140, 707, 68, 141, 668, 669, 929, 17,
7971       56, 691, 703, 52, 146, 54, 55, 56, 57, 25,
7972      694, 94, 702, 697, 144, 141, 52, 68, 54, 55,
7973       56, 57, 694, 138, 109, 697, 698, 141, 141, 104,
7974      105, 106, 83, 84, 706, 141, 141, 545, 708, 547,
7975       52, 713, 714, 141, 52, 763, 147, 555, 141, 141,
7976       61, 704, 141, 89, 694, 10, 13, 697, 773, 567,
7977       96, 569, 570, 141, 61, 116, 117, 118, 119, 120,
7978      121, 724, 8, 138, 141, 793, 146, 730, 141, 2,
7979      116, 4, 796, 736, 798, 111, 787, 145, 789, 15,
7980       68, 141, 141, 104, 105, 106, 10, 605, 799, 138,
7981      141, 773, 786, 804, 141, 83, 84, 104, 105, 106,
7982      141, 783, 61, 141, 786, 825, 68, 827, 790, 791,
7983      109, 831, 794, 631, 632, 138, 49, 114, 88, 10,
7984      840, 835, 842, 51, 52, 643, 141, 141, 810, 117,
7985      118, 119, 120, 121, 652, 849, 786, 141, 16, 17,
7986      803, 141, 20, 9, 662, 104, 105, 106, 859, 860,
7987      668, 669, 10, 835, 138, 117, 118, 119, 120, 121,
7988       52, 141, 54, 55, 56, 57, 141, 849, 46, 47,
7989      114, 853, 141, 51, 52, 138, 694, 141, 86, 697,
7990      698, 141, 864, 56, 62, 63, 141, 141, 706, 141,
7991      143, 56, 912, 143, 905, 713, 714, 89, 918, 141,
7992      920, 88, 931, 923, 624, 877, 91, 52, 930, 54,
7993       55, 56, 57, 94, 896, 52, 898, 54, 55, 56,
7994       57, 932, 904, 934, 906, 89, 52, 838, 54, 55,
7995       56, 57, 634, 929, 954, 65, 869, 917, -1, 54,
7996       55, -1, 57, -1, 89, 945, 928, 927, 63, 64,
7997       95, 96, 89, -1, -1, 773, -1, 52, 95, 54,
7998       55, 56, 57, 89, 197, 783, -1, -1, 786, 95,
7999      928, 116, 790, 791, 119, -1, 794, -1, -1, 207,
8000       -1, -1, -1, -1, 212, 40, 41, 42, 43, 44,
8001       -1, 219, 810, -1, -1, -1, 229, -1, 2, -1,
8002       -1, -1, -1, -1, 237, 52, -1, 54, 55, 56,
8003       57, -1, -1, -1, -1, -1, 0, 195, -1, -1,
8004      198, 199, 200, -1, 8, 9, 10, -1, -1, 13,
8005       14, 15, -1, 17, -1, 853, -1, -1, 216, -1,
8006      218, 219, 89, 27, -1, 49, 864, -1, 95, 96,
8007      283, -1, -1, 37, 38, 288, 40, 41, 42, 43,
8008       44, -1, 295, -1, -1, -1, -1, -1, -1, 116,
8009       -1, -1, 119, -1, -1, -1, -1, -1, 896, -1,
8010      898, -1, -1, -1, -1, -1, 904, -1, 906, -1,
8011       -1, -1, -1, -1, -1, 328, 143, -1, 326, -1,
8012       -1, 85, -1, -1, -1, -1, -1, -1, -1, -1,
8013      928, -1, -1, -1, -1, 293, -1, -1, -1, -1,
8014      298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
8015      308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
8016      318, 319, 320, 321, 322, 323, 324, -1, 326, -1,
8017       -1, -1, -1, -1, 138, -1, 140, -1, -1, 143,
8018      144, 389, 146, -1, 148, -1, -1, -1, -1, -1,
8019       -1, -1, -1, -1, -1, -1, -1, -1, 411, -1,
8020       52, -1, 54, 55, 56, 57, -1, -1, -1, -1,
8021       -1, -1, -1, 197, -1, 373, 374, 52, -1, 54,
8022       55, 56, 57, 68, -1, 383, 384, 385, 436, -1,
8023       -1, 389, -1, 391, 392, 393, -1, 89, 83, 84,
8024       -1, -1, -1, 95, 96, 229, 454, -1, 456, -1,
8025      458, -1, 410, 237, 89, -1, -1, 415, -1, -1,
8026       95, 96, -1, 421, 116, -1, 424, 119, -1, 114,
8027      115, 116, 117, 118, 119, 120, 121, -1, 436, -1,
8028      488, 116, -1, -1, 119, -1, -1, -1, -1, -1,
8029       -1, 143, -1, 2, -1, 4, -1, -1, -1, -1,
8030       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8031       -1, 295, -1, -1, -1, -1, -1, -1, -1, 477,
8032      478, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8033       -1, 489, 545, 541, 547, 543, -1, -1, -1, -1,
8034       49, -1, -1, -1, 53, -1, -1, 555, -1, -1,
8035       -1, -1, -1, -1, -1, -1, 569, -1, -1, 567,
8036       -1, -1, -1, -1, -1, 74, -1, -1, -1, 577,
8037      578, 579, 580, -1, -1, -1, -1, 86, 87, 88,
8038       89, -1, -1, -1, -1, 593, -1, -1, -1, -1,
8039       -1, -1, -1, 551, -1, -1, -1, 555, -1, -1,
8040       -1, -1, 610, -1, -1, -1, -1, -1, -1, 567,
8041       -1, 2, -1, 4, -1, -1, -1, -1, 631, 632,
8042       -1, -1, 630, -1, -1, -1, -1, 411, -1, -1,
8043      643, -1, 590, -1, -1, -1, -1, -1, -1, 652,
8044       -1, -1, -1, 651, -1, -1, -1, -1, -1, -1,
8045       -1, -1, -1, -1, -1, 456, -1, 458, 49, -1,
8046       -1, -1, 53, -1, 622, -1, -1, -1, 676, 677,
8047       -1, 679, -1, 681, -1, -1, -1, -1, -1, -1,
8048       -1, -1, -1, 74, -1, 698, -1, -1, 197, -1,
8049       -1, -1, -1, 706, -1, 86, 87, 88, 656, -1,
8050      713, 714, 660, -1, 662, 663, -1, -1, 716, -1,
8051      668, 669, -1, -1, -1, -1, -1, -1, 676, -1,
8052      229, -1, -1, -1, -1, -1, -1, -1, 237, -1,
8053       -1, -1, -1, 741, 742, -1, 744, -1, 746, 747,
8054       -1, -1, -1, -1, 253, -1, -1, 755, -1, 757,
8055       -1, 759, 760, -1, -1, -1, -1, 715, -1, -1,
8056       -1, 545, 720, 547, 722, 723, -1, -1, -1, -1,
8057      783, -1, -1, 781, 283, -1, 784, 790, 791, 288,
8058       -1, 794, 2, -1, 4, -1, 295, 296, -1, -1,
8059       -1, -1, -1, -1, -1, -1, -1, 810, -1, -1,
8060       -1, -1, -1, -1, -1, 763, 197, -1, -1, 767,
8061       -1, -1, -1, -1, -1, 773, -1, -1, -1, 328,
8062       -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
8063       -1, -1, -1, -1, -1, 793, -1, -1, 229, -1,
8064      853, -1, -1, -1, -1, -1, 237, 631, 632, -1,
8065       -1, 864, -1, 811, 862, -1, -1, -1, -1, 643,
8066       -1, -1, 253, -1, -1, -1, 86, -1, 652, -1,
8067      878, 879, 880, 881, -1, -1, -1, 885, 886, 887,
8068       -1, 889, 890, 896, -1, 898, -1, -1, -1, -1,
8069       -1, 904, 283, 906, -1, -1, -1, 288, -1, -1,
8070       -1, -1, 411, -1, 295, 296, -1, -1, -1, -1,
8071       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8072      928, -1, 930, 931, -1, 434, -1, -1, 936, 713,
8073      714, 939, 940, 941, 942, -1, -1, 328, -1, -1,
8074      741, 742, -1, 744, -1, 746, 747, -1, -1, -1,
8075       -1, 959, -1, -1, -1, -1, 757, -1, 759, 760,
8076       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8077      928, -1, -1, -1, -1, -1, -1, 197, -1, -1,
8078       -1, -1, -1, -1, -1, -1, 495, -1, -1, -1,
8079       -1, -1, -1, -1, -1, -1, -1, -1, -1, 783,
8080       -1, -1, -1, -1, -1, -1, 790, 791, -1, 229,
8081      794, -1, -1, -1, -1, -1, -1, 237, -1, -1,
8082      411, -1, -1, -1, -1, -1, 810, -1, -1, -1,
8083       -1, -1, -1, -1, -1, -1, 545, -1, 547, -1,
8084       -1, -1, -1, 434, -1, -1, 68, 69, 70, 71,
8085       72, 73, 74, 75, 76, 77, 78, 79, 80, -1,
8086      569, 83, 84, 283, -1, -1, -1, -1, 288, 853,
8087       -1, -1, -1, -1, -1, 295, -1, 878, 879, 880,
8088      881, -1, -1, -1, 885, 886, 887, -1, 889, 890,
8089      112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
8090       -1, -1, -1, -1, 495, -1, 615, -1, 328, -1,
8091       -1, -1, 896, -1, 898, -1, -1, -1, -1, -1,
8092      904, -1, 631, 632, -1, -1, -1, -1, -1, -1,
8093       -1, -1, -1, -1, 643, 936, -1, -1, 939, 940,
8094      941, 942, -1, 652, -1, -1, -1, -1, -1, -1,
8095      659, -1, -1, -1, 545, -1, 547, -1, 959, -1,
8096       -1, -1, -1, -1, 68, 69, 70, 71, 72, 73,
8097       74, 75, 76, 77, 78, 79, 80, -1, 569, 83,
8098       84, -1, -1, -1, -1, -1, -1, -1, -1, 698,
8099       -1, 411, -1, -1, -1, -1, -1, 706, -1, -1,
8100       -1, -1, -1, -1, 713, 714, 110, -1, 112, 113,
8101      114, 115, 116, 117, 118, 119, 120, 121, -1, -1,
8102       -1, -1, -1, -1, 615, -1, -1, -1, -1, -1,
8103       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8104      631, 632, -1, -1, 148, -1, -1, -1, -1, -1,
8105       -1, -1, 643, 644, -1, -1, -1, -1, -1, -1,
8106       -1, 652, -1, -1, -1, -1, -1, -1, 659, -1,
8107       -1, -1, -1, -1, 783, -1, -1, -1, -1, -1,
8108       -1, 790, 791, -1, -1, 794, -1, -1, -1, -1,
8109       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8110       -1, 810, -1, -1, -1, -1, -1, 698, -1, -1,
8111       -1, -1, -1, -1, -1, 706, -1, -1, -1, -1,
8112       -1, -1, 713, 714, -1, 545, 835, 547, -1, -1,
8113       -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
8114      849, 77, 78, -1, 853, -1, -1, 83, 84, 569,
8115       -1, -1, -1, -1, -1, 864, -1, -1, -1, -1,
8116       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8117       -1, -1, -1, -1, -1, -1, 112, 113, 114, 115,
8118      116, 117, 118, 119, 120, 121, -1, 896, -1, 898,
8119       -1, -1, 783, -1, -1, 904, -1, 906, -1, 790,
8120      791, -1, -1, 794, -1, -1, -1, -1, -1, -1,
8121       -1, 631, 632, -1, -1, -1, -1, -1, -1, 810,
8122       -1, -1, -1, 643, -1, -1, -1, -1, -1, -1,
8123       -1, -1, 652, -1, -1, -1, -1, -1, -1, -1,
8124       -1, -1, -1, -1, 835, -1, -1, -1, -1, -1,
8125       -1, 68, 69, 70, 71, 72, 73, 74, 849, -1,
8126       77, 78, 853, -1, -1, -1, 83, 84, -1, -1,
8127       -1, -1, -1, 864, -1, -1, -1, -1, 698, -1,
8128       -1, -1, -1, -1, -1, -1, 706, -1, -1, -1,
8129       -1, -1, -1, 713, 714, 112, 113, 114, 115, 116,
8130      117, 118, 119, 120, 121, 896, -1, 898, -1, 44,
8131       -1, -1, -1, 904, -1, 906, -1, -1, -1, -1,
8132       -1, -1, -1, -1, -1, -1, 44, -1, -1, -1,
8133       -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
8134       75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
8135       68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
8136       78, 79, 80, 783, -1, 83, 84, -1, -1, -1,
8137      790, 791, -1, -1, 794, 110, -1, 112, 113, 114,
8138      115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
8139      810, -1, 110, -1, 112, 113, 114, 115, 116, 117,
8140      118, 119, 120, 121, 0, 1, 141, 3, 4, 5,
8141        6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
8142       16, -1, 18, 19, 20, 21, 22, 23, 24, 849,
8143       -1, -1, -1, 853, 30, 31, 32, 33, 34, 35,
8144       36, -1, -1, 39, 864, -1, -1, -1, -1, 45,
8145       46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
8146       56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
8147       66, 67, -1, -1, -1, -1, 896, -1, 898, -1,
8148       -1, -1, -1, -1, 904, -1, 906, -1, -1, -1,
8149       86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
8150       -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
8151       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8152       -1, -1, -1, -1, -1, -1, 122, 123, 124, 0,
8153       -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
8154       -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
8155      146, -1, 148, -1, -1, -1, 27, 28, 29, -1,
8156       -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
8157       41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
8158       68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
8159       78, 79, 80, -1, -1, 83, 84, 68, 69, 70,
8160       71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
8161       -1, -1, 83, 84, 85, -1, 87, 88, -1, -1,
8162       -1, -1, 110, 94, 112, 113, 114, 115, 116, 117,
8163      118, 119, 120, 121, -1, -1, 107, -1, 109, 110,
8164      111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
8165      121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8166       -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
8167      141, 0, -1, 144, 145, 146, -1, 148, -1, 8,
8168        9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
8169       -1, -1, -1, -1, -1, -1, -1, 26, 27, 28,
8170       -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
8171       -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
8172       -1, -1, 68, 69, 70, 71, 72, 73, 74, -1,
8173       -1, 77, 78, -1, -1, -1, -1, 83, 84, 68,
8174       69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
8175       79, 80, -1, -1, 83, 84, 85, -1, -1, 88,
8176       -1, -1, -1, -1, -1, 94, 112, 113, 114, 115,
8177      116, 117, 118, 119, 120, 121, -1, -1, -1, -1,
8178       -1, 110, -1, 112, 113, 114, 115, 116, 117, 118,
8179      119, 120, 121, -1, -1, -1, -1, -1, -1, -1,
8180       -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
8181      139, 140, 141, 0, 143, 144, 145, 146, -1, 148,
8182       -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
8183       17, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8184       27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
8185       37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
8186       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8187       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8188       -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
8189       77, 78, 79, 80, -1, -1, 83, 84, 85, -1,
8190       -1, 88, -1, -1, -1, -1, -1, 94, -1, -1,
8191       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8192      107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
8193      117, 118, 119, 120, 121, -1, -1, -1, -1, -1,
8194       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8195       -1, 138, 139, 140, 141, 0, -1, 144, 145, 146,
8196       -1, 148, -1, 8, 9, 10, -1, -1, 13, 14,
8197       15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
8198       -1, 26, 27, 28, -1, -1, -1, -1, -1, -1,
8199       -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
8200       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8201       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8202       -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
8203       75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
8204       85, -1, -1, 88, -1, -1, -1, -1, -1, 94,
8205       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8206       -1, -1, -1, -1, -1, 110, -1, 112, 113, 114,
8207      115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
8208       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8209       -1, -1, 137, 138, 139, 140, 141, 0, 143, 144,
8210      145, 146, -1, 148, -1, 8, 9, 10, -1, -1,
8211       13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
8212       -1, -1, -1, -1, 27, 28, -1, -1, -1, -1,
8213       -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
8214       43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
8215       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8216       -1, -1, -1, -1, -1, 68, 69, 70, 71, 72,
8217       73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
8218       83, 84, 85, -1, -1, 88, -1, -1, -1, -1,
8219       -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
8220       -1, -1, -1, -1, -1, -1, -1, 110, -1, 112,
8221      113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
8222       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8223       -1, -1, -1, -1, -1, 138, 139, 140, 141, 0,
8224      143, 144, 145, 146, -1, 148, -1, 8, 9, 10,
8225       -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
8226       -1, -1, -1, -1, -1, 26, -1, -1, -1, -1,
8227       -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
8228       41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
8229       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8230       -1, -1, -1, -1, -1, -1, -1, 68, 69, 70,
8231       71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
8232       -1, -1, 83, 84, 85, 0, 87, -1, -1, -1,
8233       -1, -1, -1, 8, 9, 10, -1, -1, -1, 14,
8234       15, -1, 17, -1, -1, -1, -1, -1, 109, 110,
8235       -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
8236      121, -1, 37, 38, -1, 40, 41, 42, 43, 44,
8237       -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
8238      141, -1, -1, 144, -1, 146, -1, 148, -1, -1,
8239       -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
8240       75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
8241       85, -1, 87, -1, -1, -1, -1, -1, -1, -1,
8242       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8243       -1, -1, -1, -1, 109, 110, -1, 112, 113, 114,
8244      115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
8245       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8246       -1, -1, -1, 138, 139, 140, 141, -1, -1, 144,
8247       -1, 146, 1, 148, 3, 4, 5, 6, 7, 8,
8248        9, 10, 11, 12, -1, -1, 15, 16, -1, 18,
8249       19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
8250       -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
8251       39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
8252       49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
8253       59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
8254       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8255       -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
8256       89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
8257       99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
8258       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8259       -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
8260       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8261       -1, -1, -1, -1, -1, -1, -1, 146, 1, 148,
8262        3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
8263       -1, 14, 15, 16, -1, 18, 19, 20, 21, 22,
8264       23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
8265       33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
8266       -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
8267       53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
8268       63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
8269       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8270       -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
8271       93, -1, 95, -1, 97, 98, 99, 100, 101, 102,
8272      103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8273       -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
8274      123, 124, -1, -1, -1, -1, -1, -1, -1, -1,
8275       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8276       -1, -1, -1, 146, 1, 148, 3, 4, 5, 6,
8277        7, -1, -1, 10, 11, 12, -1, -1, 15, 16,
8278       17, 18, 19, 20, 21, 22, 23, 24, -1, -1,
8279       -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
8280       -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
8281       47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
8282       57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
8283       67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8284       -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
8285       -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
8286       97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
8287       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8288       -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
8289       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8290       -1, -1, -1, -1, -1, -1, -1, -1, -1, 146,
8291        1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
8292       11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
8293       21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
8294       31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
8295       -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
8296       51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
8297       -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
8298       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8299       -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
8300       -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
8301      101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
8302       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8303       -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
8304       -1, 1, -1, 3, 4, 5, 6, 7, -1, 9,
8305       10, 11, 12, -1, -1, 146, 16, 148, 18, 19,
8306       20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
8307       30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
8308       -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
8309       50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
8310       60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
8311       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8312       -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
8313       90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
8314      100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
8315       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8316       -1, -1, 122, 123, 124, -1, -1, -1, -1, -1,
8317       -1, -1, 1, -1, 3, 4, 5, 6, 7, -1,
8318       -1, -1, 11, 12, -1, -1, 146, 16, 148, 18,
8319       19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
8320       -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
8321       39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
8322       49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
8323       59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
8324       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8325       -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
8326       89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
8327       99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
8328       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8329       -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
8330       -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
8331       -1, -1, -1, 11, 12, 144, -1, 146, 16, 148,
8332       18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
8333       -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
8334       -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
8335       48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8336       -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
8337       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8338       -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
8339       -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
8340       98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
8341       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8342       -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
8343       -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
8344        7, -1, -1, -1, 11, 12, 144, -1, 146, 16,
8345      148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
8346       -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
8347       -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
8348       47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
8349       57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
8350       67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8351       -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
8352       -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
8353       97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
8354       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8355       -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
8356       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8357       -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
8358        1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
8359       11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
8360       21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
8361       31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
8362       -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
8363       51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
8364       -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
8365       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8366       -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
8367       -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
8368      101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
8369       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8370       -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
8371       -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
8372       -1, 11, 12, -1, -1, 146, 16, 148, 18, 19,
8373       20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
8374       30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
8375       -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
8376       50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
8377       60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
8378       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8379       -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
8380       90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
8381      100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
8382       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8383       -1, -1, 122, 123, 124, 3, 4, 5, -1, 7,
8384       -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
8385       18, 19, 20, 21, 22, 23, 24, -1, 148, -1,
8386       -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
8387       -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
8388       -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8389       -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
8390       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8391       -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
8392       -1, 89, 90, -1, 92, 93, -1, -1, -1, 97,
8393       98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
8394       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8395       -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
8396       -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
8397        7, -1, -1, -1, 11, 12, -1, -1, 146, 16,
8398      148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
8399       -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
8400       -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
8401       -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
8402       57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
8403       67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8404       -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
8405       -1, -1, 89, 90, -1, 92, 93, -1, -1, -1,
8406       97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
8407       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8408       -1, -1, -1, -1, -1, 122, 123, 124, 3, 4,
8409        5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
8410       -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
8411       -1, 148, -1, -1, -1, 30, 31, 32, 33, 34,
8412       35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
8413       45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
8414       55, 56, 57, -1, 59, 60, -1, 62, 63, 64,
8415       -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
8416       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8417       -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
8418       95, -1, 97, 98, 99, 100, 101, 102, 103, -1,
8419       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8420       -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
8421       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8422       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8423       -1, 146, 3, 4, 5, 6, 7, 8, 9, 10,
8424       11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
8425       21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
8426       31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
8427       -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
8428       51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
8429       -1, -1, -1, -1, -1, 66, 67, 68, 69, 70,
8430       71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
8431       81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
8432       -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
8433       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8434       -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
8435      121, -1, 123, 124, -1, -1, -1, -1, -1, -1,
8436        3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
8437       -1, 142, 143, 16, -1, 18, 19, 20, 21, 22,
8438       23, 24, -1, 26, -1, -1, -1, 30, 31, 32,
8439       33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
8440       -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
8441       53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
8442       63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
8443       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8444       -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
8445       93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
8446      103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8447       -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
8448      123, 124, -1, -1, -1, -1, -1, -1, 3, 4,
8449        5, -1, 7, -1, 137, -1, 11, 12, -1, -1,
8450      143, 16, -1, 18, 19, 20, 21, 22, 23, 24,
8451       -1, 26, -1, -1, -1, 30, 31, 32, 33, 34,
8452       35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
8453       -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
8454       55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
8455       -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
8456       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8457       -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
8458       95, 96, 97, 98, 99, 100, 101, 102, 103, -1,
8459       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8460       -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
8461       -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
8462        7, -1, 137, -1, 11, 12, -1, -1, 143, 16,
8463       -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
8464       -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
8465       -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
8466       -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
8467       57, 58, 59, 60, -1, 62, 63, 64, -1, 66,
8468       67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8469       -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
8470       87, -1, 89, 90, -1, 92, 93, -1, 95, 96,
8471       97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
8472       -1, -1, 109, -1, -1, -1, -1, -1, -1, -1,
8473        3, 4, 5, -1, 7, 122, 123, 124, 11, 12,
8474       -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
8475       23, 24, -1, -1, -1, -1, 143, 30, 31, 32,
8476       33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
8477       -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
8478       53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
8479       63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
8480       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8481       -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
8482       93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
8483      103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8484       -1, -1, -1, -1, 3, 4, 5, -1, 7, 122,
8485      123, 124, 11, 12, -1, -1, -1, 16, -1, 18,
8486       19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
8487      143, 30, 31, 32, 33, 34, 35, 36, -1, -1,
8488       39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
8489       49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
8490       59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
8491       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8492       -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
8493       89, 90, -1, 92, 93, -1, 95, 96, 97, 98,
8494       99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
8495       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8496       -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
8497       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8498       -1, -1, -1, -1, 143, 3, 4, 5, 6, 7,
8499        8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
8500       18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
8501       -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
8502       38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
8503       48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8504       -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
8505       68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
8506       78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
8507       -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
8508       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8509       -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
8510      118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
8511       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8512       -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
8513        8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
8514       18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
8515       -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
8516       38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
8517       48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
8518       -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
8519       68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
8520       78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
8521       -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
8522       98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8523       -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
8524      118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
8525       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8526       -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
8527        8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
8528       18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
8529       -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
8530       38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
8531       48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
8532       -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
8533       68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
8534       78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
8535       -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
8536       98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8537       -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
8538      118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
8539       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8540       -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
8541        8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
8542       18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
8543       -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
8544       38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
8545       48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
8546       -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
8547       68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
8548       78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
8549       -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
8550       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8551       -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
8552      118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
8553        3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
8554       -1, -1, -1, 16, 142, 18, 19, 20, 21, 22,
8555       23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
8556       33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
8557       -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
8558       53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
8559       63, 64, -1, -1, -1, -1, -1, -1, -1, -1,
8560       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8561       -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
8562       93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
8563      103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8564       -1, -1, 3, 4, 5, -1, 7, -1, -1, 122,
8565       11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
8566       21, 22, 23, 24, -1, -1, -1, -1, 141, 30,
8567       31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
8568       -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
8569       51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
8570       -1, 62, 63, 64, -1, -1, -1, -1, -1, -1,
8571       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8572       -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
8573       -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
8574      101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
8575       -1, -1, -1, -1, 3, 4, 5, 6, 7, -1,
8576       -1, 122, 11, 12, -1, -1, -1, 16, -1, 18,
8577       19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
8578      141, 30, 31, 32, 33, 34, 35, 36, -1, -1,
8579       39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
8580       49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
8581       59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
8582       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8583       -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
8584       89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
8585       99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
8586       -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
8587       -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
8588       20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
8589       30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
8590       -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
8591       50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
8592       60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
8593       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8594       -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
8595       90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
8596      100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
8597       -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
8598       11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
8599       21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
8600       31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
8601       -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
8602       51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
8603       -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
8604       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8605       -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
8606       -1, 92, 93, -1, 95, 96, 97, 98, 99, 100,
8607      101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
8608       -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
8609       12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
8610       22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
8611       32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
8612       -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
8613       52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
8614       62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
8615       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8616       -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
8617       92, 93, -1, 95, -1, 97, 98, 99, 100, 101,
8618      102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
8619        3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
8620      122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
8621       23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
8622       33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
8623       -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
8624       53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
8625       63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
8626       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8627       -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
8628       93, -1, -1, 96, 97, 98, 99, 100, 101, 102,
8629      103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
8630        4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
8631      123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
8632       24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
8633       34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
8634       -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
8635       54, 55, 56, 57, 58, 59, 60, -1, 62, 63,
8636       64, -1, 66, 67, -1, -1, -1, -1, -1, -1,
8637       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8638       -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
8639       -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
8640       -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
8641        5, -1, 7, -1, -1, -1, 11, 12, 122, 123,
8642      124, 16, -1, 18, 19, 20, 21, 22, 23, 24,
8643       -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
8644       35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
8645       -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
8646       55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
8647       -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
8648       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8649       -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
8650       -1, -1, 97, 98, 99, 100, 101, 102, 103, -1,
8651       -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
8652       -1, 7, -1, -1, -1, 11, 12, 122, 123, 124,
8653       16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
8654       -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
8655       36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
8656       46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
8657       56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
8658       66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
8659       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8660       86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
8661       -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
8662       -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
8663        7, -1, -1, -1, 11, 12, 122, 123, 124, 16,
8664       -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
8665       -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
8666       -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
8667       -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
8668       57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
8669       67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8670       -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
8671       -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
8672       97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
8673       -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
8674       -1, -1, -1, 11, 12, 122, 123, 124, 16, -1,
8675       18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
8676       -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
8677       -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
8678       -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
8679       -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
8680       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8681       -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
8682       -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
8683       98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
8684       -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
8685       -1, -1, 11, 12, 122, 123, 124, 16, -1, 18,
8686       19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
8687       -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
8688       39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
8689       49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
8690       59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
8691       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8692       -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
8693       89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
8694       99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
8695       -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
8696       -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
8697       20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
8698       30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
8699       -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
8700       50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
8701       60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
8702       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8703       -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
8704       90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
8705      100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
8706       -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
8707       11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
8708       21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
8709       31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
8710       -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
8711       51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
8712       -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
8713       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8714       -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
8715       -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
8716      101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
8717       -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
8718       12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
8719       22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
8720       32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
8721       -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
8722       52, 53, 54, 55, 56, 57, -1, 59, 60, -1,
8723       62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
8724       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8725       -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
8726       92, 93, -1, -1, -1, 97, 98, 99, 100, 101,
8727      102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
8728        3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
8729      122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
8730       23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
8731       33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
8732       -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
8733       53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
8734       63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
8735       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8736       -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
8737       93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
8738      103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
8739        4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
8740      123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
8741       24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
8742       34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
8743       -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
8744       54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
8745       64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8746       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8747       -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
8748       -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
8749       -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
8750       -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
8751       19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
8752       -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
8753       39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
8754       49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
8755       59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
8756       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8757       -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
8758       89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
8759       99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
8760        4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
8761       -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
8762       24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
8763       34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
8764       -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
8765       54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
8766       64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8767       -1, -1, -1, -1, -1, -1, -1, -1, -1, 83,
8768       -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
8769       -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
8770       -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
8771       -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
8772       19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
8773       -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
8774       39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
8775       49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
8776       59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
8777       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8778       -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
8779       89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
8780       99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
8781        4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
8782       -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
8783       24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
8784       34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
8785       -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
8786       54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
8787       64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8788       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8789       -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
8790       -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
8791       -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
8792       -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
8793       19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
8794       -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
8795       39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
8796       49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
8797       59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
8798       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8799       -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
8800       89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
8801       99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
8802        4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
8803       -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
8804       24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
8805       34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
8806       -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
8807       54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
8808       64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8809       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8810       -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
8811       -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
8812       -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
8813       -1, -1, -1, -1, -1, -1, -1, -1, 122, 66,
8814       67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
8815       77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
8816       -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
8817       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8818       -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
8819      117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
8820       -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
8821       -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
8822       69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
8823       -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
8824       -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
8825       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8826       -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
8827      119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
8828       -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
8829       -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
8830       71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
8831       81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
8832       -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
8833       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8834       -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
8835      121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
8836       53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
8837       -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
8838       73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
8839       83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
8840       -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
8841       -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
8842      113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
8843      123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
8844       -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
8845      143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
8846       -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
8847       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8848       95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8849       -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
8850      115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
8851       -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
8852       -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
8853       67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
8854       77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
8855       -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
8856       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8857       -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
8858      117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
8859       -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
8860       -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
8861       69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
8862       -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
8863       -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
8864       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8865       -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
8866      119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
8867       -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
8868       -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
8869       71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
8870       81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
8871       -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
8872       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8873       -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
8874      121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
8875       53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
8876       -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
8877       73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
8878       83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
8879       -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
8880       -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
8881      113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
8882      123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
8883       -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
8884      143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
8885       -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
8886       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8887       95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8888       -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
8889      115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
8890       -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
8891       -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
8892       67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
8893       77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
8894       -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
8895       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8896       -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
8897      117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
8898       -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
8899       -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
8900       69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
8901       -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
8902       -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
8903       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8904       -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
8905      119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
8906       -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
8907       -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
8908       71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
8909       81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
8910       -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
8911       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8912       -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
8913      121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
8914       53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
8915       -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
8916       73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
8917       83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
8918       -1, -1, 95, -1, -1, -1, -1, -1, 44, -1,
8919       -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
8920      113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
8921      123, 124, 68, 69, 70, 71, 72, 73, 74, 75,
8922       76, 77, 78, 79, 80, -1, -1, 83, 84, 142,
8923       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8924       -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
8925       -1, -1, -1, -1, 110, -1, 112, 113, 114, 115,
8926      116, 117, 118, 119, 120, 121
8927 };
8928
8929
8930
8931 static const yytype_uint16 yystos[] =
8932 {
8933        0, 150, 151, 0, 1, 3, 4, 5, 6, 7,
8934       11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
8935       30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
8936       47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
8937       57, 59, 60, 62, 63, 64, 66, 67, 86, 89,
8938       90, 92, 93, 95, 97, 98, 99, 100, 101, 102,
8939      103, 122, 123, 124, 153, 154, 155, 158, 160, 161,
8940      164, 165, 167, 168, 169, 171, 172, 182, 196, 213,
8941      214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
8942      245, 246, 256, 257, 258, 259, 260, 261, 262, 265,
8943      273, 275, 276, 277, 278, 279, 280, 303, 314, 155,
8944        3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
8945       13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
8946       23, 24, 25, 26, 30, 31, 32, 33, 34, 35,
8947       36, 37, 38, 39, 45, 46, 47, 48, 49, 50,
8948       51, 52, 53, 56, 66, 67, 68, 69, 70, 71,
8949       72, 73, 74, 77, 78, 81, 82, 83, 84, 95,
8950      112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
8951      123, 124, 142, 175, 176, 177, 178, 180, 181, 273,
8952      275, 21, 22, 30, 39, 58, 86, 89, 95, 96,
8953      123, 164, 172, 182, 184, 189, 192, 194, 213, 277,
8954      279, 280, 301, 302, 189, 189, 143, 190, 191, 143,
8955      186, 190, 143, 148, 308, 54, 177, 308, 157, 137,
8956       31, 32, 182, 213, 303, 182, 56, 89, 153, 166,
8957      167, 158, 185, 194, 301, 314, 184, 300, 301, 314,
8958       46, 86, 122, 141, 171, 196, 213, 277, 280, 239,
8959      240, 54, 55, 57, 175, 268, 274, 267, 268, 268,
8960      147, 263, 147, 266, 59, 60, 160, 182, 182, 146,
8961      148, 307, 312, 313, 40, 41, 42, 43, 44, 37,
8962       38, 28, 243, 109, 141, 89, 95, 168, 109, 68,
8963       69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
8964       79, 80, 83, 84, 110, 112, 113, 114, 115, 116,
8965      117, 118, 119, 120, 121, 85, 139, 140, 197, 158,
8966      159, 159, 200, 202, 159, 307, 313, 86, 165, 172,
8967      213, 229, 277, 280, 52, 56, 83, 86, 173, 174,
8968      213, 277, 280, 174, 33, 34, 35, 36, 49, 50,
8969       51, 52, 56, 143, 175, 278, 298, 85, 140, 26,
8970      137, 247, 259, 87, 87, 186, 190, 247, 141, 184,
8971       56, 184, 184, 109, 88, 141, 193, 314, 85, 139,
8972      140, 87, 87, 141, 193, 189, 308, 309, 189, 188,
8973      189, 314, 158, 309, 158, 54, 63, 64, 156, 143,
8974      183, 137, 153, 85, 140, 87, 166, 144, 309, 198,
8975      145, 141, 148, 311, 141, 311, 138, 311, 308, 56,
8976       59, 60, 168, 170, 141, 85, 139, 140, 52, 54,
8977       55, 56, 57, 89, 95, 96, 116, 119, 143, 241,
8978      284, 285, 286, 287, 288, 289, 292, 293, 294, 295,
8979      296, 61, 104, 105, 106, 269, 106, 269, 106, 65,
8980      106, 106, 264, 269, 106, 61, 106, 68, 68, 146,
8981      155, 159, 159, 159, 159, 155, 158, 158, 244, 95,
8982      160, 184, 194, 195, 166, 141, 171, 141, 160, 182,
8983      184, 195, 182, 182, 182, 182, 182, 182, 182, 182,
8984      182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
8985      182, 182, 182, 182, 182, 182, 182, 182, 52, 53,
8986       56, 180, 186, 304, 305, 188, 52, 53, 56, 180,
8987      186, 304, 152, 153, 13, 225, 312, 225, 159, 159,
8988      307, 17, 250, 56, 85, 139, 140, 25, 158, 52,
8989       56, 173, 1, 113, 281, 312, 85, 139, 140, 209,
8990      299, 210, 85, 140, 306, 52, 56, 304, 304, 249,
8991      248, 160, 182, 160, 182, 94, 162, 179, 182, 184,
8992       95, 184, 192, 301, 52, 56, 188, 52, 56, 302,
8993      309, 144, 309, 309, 177, 199, 182, 153, 138, 304,
8994      304, 182, 309, 309, 301, 141, 170, 52, 56, 188,
8995       52, 56, 109, 52, 89, 95, 230, 231, 232, 286,
8996      284, 29, 107, 242, 141, 297, 314, 141, 297, 52,
8997      141, 297, 52, 271, 270, 147, 269, 147, 182, 182,
8998       76, 114, 234, 235, 314, 184, 141, 309, 170, 141,
8999       44, 308, 87, 87, 186, 190, 308, 310, 87, 87,
9000      186, 187, 190, 314, 10, 224, 8, 252, 314, 153,
9001       13, 153, 27, 226, 312, 226, 250, 194, 224, 52,
9002       56, 188, 52, 56, 204, 207, 312, 282, 206, 52,
9003       56, 173, 188, 152, 158, 143, 283, 284, 211, 187,
9004      190, 187, 190, 234, 234, 44, 163, 177, 184, 193,
9005       87, 310, 87, 87, 158, 138, 311, 168, 310, 184,
9006      232, 141, 286, 141, 309, 146, 236, 314, 153, 153,
9007      287, 292, 294, 296, 288, 289, 294, 288, 153, 54,
9008       55, 57, 272, 280, 52, 233, 236, 288, 290, 291,
9009      294, 296, 153, 95, 184, 170, 182, 111, 160, 182,
9010      182, 162, 145, 87, 160, 182, 160, 182, 162, 184,
9011      195, 253, 314, 15, 228, 314, 14, 227, 228, 228,
9012      201, 203, 224, 141, 225, 310, 159, 312, 159, 152,
9013      310, 224, 309, 284, 152, 312, 175, 153, 153, 182,
9014      234, 87, 309, 309, 231, 141, 95, 230, 52, 237,
9015      238, 285, 309, 10, 138, 141, 297, 141, 297, 141,
9016      297, 141, 297, 297, 138, 109, 236, 114, 141, 297,
9017      141, 297, 141, 297, 10, 184, 182, 160, 182, 88,
9018      254, 314, 153, 9, 255, 314, 159, 224, 224, 153,
9019      153, 184, 153, 226, 208, 312, 224, 309, 224, 212,
9020       10, 138, 153, 141, 231, 141, 286, 141, 288, 294,
9021      288, 288, 86, 213, 114, 291, 294, 288, 290, 294,
9022      288, 86, 172, 213, 277, 280, 225, 153, 225, 224,
9023      224, 228, 250, 251, 205, 152, 283, 138, 231, 141,
9024      238, 297, 141, 297, 297, 297, 56, 85, 141, 297,
9025      141, 297, 297, 141, 297, 297, 56, 85, 139, 140,
9026      153, 153, 153, 224, 152, 231, 288, 52, 56, 288,
9027      294, 288, 288, 52, 56, 188, 52, 56, 252, 227,
9028      224, 224, 297, 297, 141, 297, 297, 297, 310, 288,
9029      297
9030 };
9031 # 4265 "parse.c"
9032 static void
9033 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
9034 # 4275 "parse.c"
9035 {
9036   if (!yyvaluep)
9037     return;
9038   ((void) (parser));
9039
9040
9041
9042
9043   ((void) (yyoutput));
9044
9045   switch (yytype)
9046     {
9047       default:
9048  break;
9049     }
9050 }
9051 # 4299 "parse.c"
9052 static void
9053 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
9054 # 4309 "parse.c"
9055 {
9056   if (yytype < 149)
9057     fprintf (yyoutput, "token %s (", yytname[yytype]);
9058   else
9059     fprintf (yyoutput, "nterm %s (", yytname[yytype]);
9060
9061   yy_symbol_value_print (yyoutput, yytype, yyvaluep, parser);
9062   fprintf (yyoutput, ")");
9063 }
9064 # 4326 "parse.c"
9065 static void
9066 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
9067
9068
9069
9070
9071
9072
9073 {
9074   fprintf (stderr, "Stack now");
9075   for (; bottom <= top; ++bottom)
9076     fprintf (stderr, " %d", *bottom);
9077   fprintf (stderr, "\n");
9078 }
9079 # 4354 "parse.c"
9080 static void
9081 yy_reduce_print (YYSTYPE *yyvsp, int yyrule, struct parser_params *parser)
9082
9083
9084
9085
9086
9087
9088
9089 {
9090   int yynrhs = yyr2[yyrule];
9091   int yyi;
9092   unsigned long int yylno = yyrline[yyrule];
9093   fprintf (stderr, "Reducing stack by rule %d (line %lu):\n",
9094       yyrule - 1, yylno);
9095
9096   for (yyi = 0; yyi < yynrhs; yyi++)
9097     {
9098       fprintf (stderr, "   $%d = ", yyi + 1);
9099       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
9100          &(yyvsp[(yyi + 1) - (yynrhs)])
9101                   , parser);
9102       fprintf (stderr, "\n");
9103     }
9104 }
9105 # 4478 "parse.c"
9106 static unsigned int
9107 yytnamerr (char *yyres, const char *yystr)
9108 {
9109   if (*yystr == '"')
9110     {
9111       unsigned int yyn = 0;
9112       char const *yyp = yystr;
9113
9114       for (;;)
9115  switch (*++yyp)
9116    {
9117    case '\'':
9118    case ',':
9119      goto do_not_strip_quotes;
9120
9121    case '\\':
9122      if (*++yyp != '\\')
9123        goto do_not_strip_quotes;
9124
9125    default:
9126      if (yyres)
9127        yyres[yyn] = *yyp;
9128      yyn++;
9129      break;
9130
9131    case '"':
9132      if (yyres)
9133        yyres[yyn] = '\0';
9134      return yyn;
9135    }
9136     do_not_strip_quotes: ;
9137     }
9138
9139   if (! yyres)
9140     return strlen (yystr);
9141
9142   return __builtin_stpcpy (yyres, yystr) - yyres;
9143 }
9144 # 4525 "parse.c"
9145 static unsigned int
9146 yysyntax_error (char *yyresult, int yystate, int yychar)
9147 {
9148   int yyn = yypact[yystate];
9149
9150   if (! (-747 < yyn && yyn <= 10225))
9151     return 0;
9152   else
9153     {
9154       int yytype = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
9155       unsigned int yysize0 = yytnamerr (0, yytname[yytype]);
9156       unsigned int yysize = yysize0;
9157       unsigned int yysize1;
9158       int yysize_overflow = 0;
9159       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
9160       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
9161       int yyx;
9162 # 4552 "parse.c"
9163       char *yyfmt;
9164       char const *yyf;
9165       static char const yyunexpected[] = "syntax error, unexpected %s";
9166       static char const yyexpecting[] = ", expecting %s";
9167       static char const yyor[] = " or %s";
9168       char yyformat[sizeof yyunexpected
9169       + sizeof yyexpecting - 1
9170       + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
9171          * (sizeof yyor - 1))];
9172       char const *yyprefix = yyexpecting;
9173
9174
9175
9176       int yyxbegin = yyn < 0 ? -yyn : 0;
9177
9178
9179       int yychecklim = 10225 - yyn + 1;
9180       int yyxend = yychecklim < 149 ? yychecklim : 149;
9181       int yycount = 1;
9182
9183       yyarg[0] = yytname[yytype];
9184       yyfmt = __builtin_stpcpy (yyformat, yyunexpected);
9185
9186       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
9187  if (yycheck[yyx + yyn] == yyx && yyx != 1)
9188    {
9189      if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
9190        {
9191   yycount = 1;
9192   yysize = yysize0;
9193   yyformat[sizeof yyunexpected - 1] = '\0';
9194   break;
9195        }
9196      yyarg[yycount++] = yytname[yyx];
9197      yysize1 = yysize + yytnamerr (0, yytname[yyx]);
9198      yysize_overflow |= (yysize1 < yysize);
9199      yysize = yysize1;
9200      yyfmt = __builtin_stpcpy (yyfmt, yyprefix);
9201      yyprefix = yyor;
9202    }
9203
9204       yyf = yyformat;
9205       yysize1 = yysize + strlen (yyf);
9206       yysize_overflow |= (yysize1 < yysize);
9207       yysize = yysize1;
9208
9209       if (yysize_overflow)
9210  return ((unsigned int) -1);
9211
9212       if (yyresult)
9213  {
9214
9215
9216
9217    char *yyp = yyresult;
9218    int yyi = 0;
9219    while ((*yyp = *yyf) != '\0')
9220      {
9221        if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
9222   {
9223     yyp += yytnamerr (yyp, yyarg[yyi++]);
9224     yyf += 2;
9225   }
9226        else
9227   {
9228     yyp++;
9229     yyf++;
9230   }
9231      }
9232  }
9233       return yysize;
9234     }
9235 }
9236 # 4635 "parse.c"
9237 static void
9238 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_params *parser)
9239 # 4645 "parse.c"
9240 {
9241   ((void) (yyvaluep));
9242   ((void) (parser));
9243
9244   if (!yymsg)
9245     yymsg = "Deleting";
9246   do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", yymsg); yy_symbol_print (stderr, yytype, yyvaluep, parser); fprintf (stderr, "\n"); } } while ((0));
9247
9248   switch (yytype)
9249     {
9250
9251       default:
9252  break;
9253     }
9254 }
9255 # 4672 "parse.c"
9256 int ruby_yyparse (struct parser_params *parser);
9257 # 4700 "parse.c"
9258 int
9259 ruby_yyparse (struct parser_params *parser)
9260
9261
9262
9263
9264
9265
9266 {
9267
9268 int yychar;
9269
9270
9271 YYSTYPE yylval;
9272
9273
9274 int yynerrs;
9275
9276   int yystate;
9277   int yyn;
9278   int yyresult;
9279
9280   int yyerrstatus;
9281
9282   int yytoken = 0;
9283
9284
9285   char yymsgbuf[128];
9286   char *yymsg = yymsgbuf;
9287   unsigned int yymsg_alloc = sizeof yymsgbuf;
9288 # 4741 "parse.c"
9289   yytype_int16 yyssa[200];
9290   yytype_int16 *yyss = yyssa;
9291   yytype_int16 *yyssp;
9292
9293
9294   YYSTYPE yyvsa[200];
9295   YYSTYPE *yyvs = yyvsa;
9296   YYSTYPE *yyvsp;
9297
9298
9299
9300
9301
9302   unsigned int yystacksize = 200;
9303
9304
9305
9306   YYSTYPE yyval;
9307
9308
9309
9310
9311   int yylen = 0;
9312
9313   do { if ((parser->parser_yydebug)) fprintf (stderr, "Starting parse\n"); } while ((0));
9314
9315   yystate = 0;
9316   yyerrstatus = 0;
9317   yynerrs = 0;
9318   yychar = (-2);
9319
9320
9321
9322
9323
9324
9325   yyssp = yyss;
9326   yyvsp = yyvs;
9327
9328   goto yysetstate;
9329
9330
9331
9332
9333  yynewstate:
9334
9335
9336   yyssp++;
9337
9338  yysetstate:
9339   *yyssp = yystate;
9340
9341   if (yyss + yystacksize - 1 <= yyssp)
9342     {
9343
9344       unsigned int yysize = yyssp - yyss + 1;
9345 # 4825 "parse.c"
9346       if (10000 <= yystacksize)
9347  goto yyexhaustedlab;
9348       yystacksize *= 2;
9349       if (10000 < yystacksize)
9350  yystacksize = 10000;
9351
9352       {
9353  yytype_int16 *yyss1 = yyss;
9354  union yyalloc *yyptr =
9355    (union yyalloc *) rb_parser_malloc(parser, ((yystacksize) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) + (sizeof (union yyalloc) - 1)));
9356  if (! yyptr)
9357    goto yyexhaustedlab;
9358  do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyss, yyss, (yysize) * sizeof (*(yyss))); yyss = &yyptr->yyss; yynewbytes = yystacksize * sizeof (*yyss) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while ((0));
9359  do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyvs, yyvs, (yysize) * sizeof (*(yyvs))); yyvs = &yyptr->yyvs; yynewbytes = yystacksize * sizeof (*yyvs) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while ((0));
9360
9361
9362  if (yyss1 != yyssa)
9363    rb_parser_free(parser, yyss1);
9364       }
9365
9366
9367
9368       yyssp = yyss + yysize - 1;
9369       yyvsp = yyvs + yysize - 1;
9370
9371
9372       do { if ((parser->parser_yydebug)) fprintf (stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize); } while ((0));
9373
9374
9375       if (yyss + yystacksize - 1 <= yyssp)
9376  goto yyabortlab;
9377     }
9378
9379   do { if ((parser->parser_yydebug)) fprintf (stderr, "Entering state %d\n", yystate); } while ((0));
9380
9381   goto yybackup;
9382
9383
9384
9385
9386 yybackup:
9387
9388
9389
9390
9391
9392   yyn = yypact[yystate];
9393   if (yyn == -747)
9394     goto yydefault;
9395
9396
9397
9398
9399   if (yychar == (-2))
9400     {
9401       do { if ((parser->parser_yydebug)) fprintf (stderr, "Reading a token: "); } while ((0));
9402       yychar = yylex (&yylval, parser);
9403     }
9404
9405   if (yychar <= 0)
9406     {
9407       yychar = yytoken = 0;
9408       do { if ((parser->parser_yydebug)) fprintf (stderr, "Now at end of input.\n"); } while ((0));
9409     }
9410   else
9411     {
9412       yytoken = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
9413       do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Next token is"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
9414     }
9415
9416
9417
9418   yyn += yytoken;
9419   if (yyn < 0 || 10225 < yyn || yycheck[yyn] != yytoken)
9420     goto yydefault;
9421   yyn = yytable[yyn];
9422   if (yyn <= 0)
9423     {
9424       if (yyn == 0 || yyn == -555)
9425  goto yyerrlab;
9426       yyn = -yyn;
9427       goto yyreduce;
9428     }
9429
9430   if (yyn == 3)
9431     goto yyacceptlab;
9432
9433
9434
9435   if (yyerrstatus)
9436     yyerrstatus--;
9437
9438
9439   do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
9440
9441
9442   if (yychar != 0)
9443     yychar = (-2);
9444
9445   yystate = yyn;
9446   *++yyvsp = yylval;
9447
9448   goto yynewstate;
9449
9450
9451
9452
9453
9454 yydefault:
9455   yyn = yydefact[yystate];
9456   if (yyn == 0)
9457     goto yyerrlab;
9458   goto yyreduce;
9459
9460
9461
9462
9463
9464 yyreduce:
9465
9466   yylen = yyr2[yyn];
9467 # 4955 "parse.c"
9468   yyval = yyvsp[1-yylen];
9469
9470
9471   do { if ((parser->parser_yydebug)) yy_reduce_print (yyvsp, yyn, parser); } while ((0));
9472   switch (yyn)
9473     {
9474         case 2:
9475 # 763 "parse.y"
9476     {
9477    (parser->parser_lex_state) = EXPR_BEG;
9478
9479    local_push_gen(parser,(parser->parser_compile_for_eval));
9480
9481
9482       ;}
9483     break;
9484
9485   case 3:
9486 # 771 "parse.y"
9487     {
9488
9489    if ((yyvsp[(2) - (2)].node) && !(parser->parser_compile_for_eval)) {
9490
9491        if (((int) (((((struct RNode*)((yyvsp[(2) - (2)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) void_expr_gen(parser, (((yyvsp[(2) - (2)].node)) = remove_begin((yyvsp[(2) - (2)].node))));
9492        else {
9493     NODE *node = (yyvsp[(2) - (2)].node);
9494     while (node->u3.node) {
9495         node = node->u3.node;
9496     }
9497     void_expr_gen(parser, ((node->u1.node) = remove_begin(node->u1.node)));
9498        }
9499    }
9500    (parser->parser_eval_tree) = node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(block_append_gen(parser,(parser->parser_eval_tree),(yyvsp[(2) - (2)].node))), (VALUE)(0));
9501    local_pop_gen(parser);
9502
9503
9504
9505
9506       ;}
9507     break;
9508
9509   case 4:
9510 # 797 "parse.y"
9511     {
9512
9513    (yyval.node) = (yyvsp[(1) - (4)].node);
9514    if ((yyvsp[(2) - (4)].node)) {
9515        (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].node)));
9516    }
9517    else if ((yyvsp[(3) - (4)].node)) {
9518        rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "else without rescue is useless");
9519        (yyval.node) = block_append_gen(parser,(yyval.node),(yyvsp[(3) - (4)].node));
9520    }
9521    if ((yyvsp[(4) - (4)].node)) {
9522        if ((yyval.node)) {
9523     (yyval.node) = node_newnode(parser, (NODE_ENSURE), (VALUE)((yyval.node)), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)));
9524        }
9525        else {
9526     (yyval.node) = block_append_gen(parser,(yyvsp[(4) - (4)].node),node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
9527        }
9528    }
9529    fixpos((yyval.node), (yyvsp[(1) - (4)].node));
9530
9531
9532
9533
9534
9535
9536
9537       ;}
9538     break;
9539
9540   case 5:
9541 # 827 "parse.y"
9542     {
9543
9544    void_stmts_gen(parser, (yyvsp[(1) - (2)].node));
9545    fixup_nodes(&(parser->parser_deferred_nodes));
9546
9547
9548    (yyval.node) = (yyvsp[(1) - (2)].node);
9549       ;}
9550     break;
9551
9552   case 6:
9553 # 838 "parse.y"
9554     {
9555
9556    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
9557
9558
9559
9560
9561       ;}
9562     break;
9563
9564   case 7:
9565 # 847 "parse.y"
9566     {
9567
9568    (yyval.node) = newline_node((yyvsp[(1) - (1)].node));
9569
9570
9571
9572       ;}
9573     break;
9574
9575   case 8:
9576 # 855 "parse.y"
9577     {
9578
9579    (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (3)].node),newline_node((yyvsp[(3) - (3)].node)));
9580
9581
9582
9583       ;}
9584     break;
9585
9586   case 9:
9587 # 863 "parse.y"
9588     {
9589    (yyval.node) = remove_begin((yyvsp[(2) - (2)].node));
9590       ;}
9591     break;
9592
9593   case 10:
9594 # 868 "parse.y"
9595     {(parser->parser_lex_state) = EXPR_FNAME;;}
9596     break;
9597
9598   case 11:
9599 # 869 "parse.y"
9600     {
9601
9602    (yyval.node) = node_newnode(parser, (NODE_ALIAS), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0));
9603
9604
9605
9606       ;}
9607     break;
9608
9609   case 12:
9610 # 877 "parse.y"
9611     {
9612
9613    (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
9614
9615
9616
9617       ;}
9618     break;
9619
9620   case 13:
9621 # 885 "parse.y"
9622     {
9623
9624    char buf[3];
9625
9626    sprintf(buf, "$%c", (char)(yyvsp[(3) - (3)].node)->u2.argc);
9627    (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((__builtin_constant_p(buf) ? __extension__ (rb_intern2(buf, strlen(buf))) : (rb_intern)(buf))), (VALUE)(0));
9628
9629
9630
9631       ;}
9632     break;
9633
9634   case 14:
9635 # 896 "parse.y"
9636     {
9637
9638    parser_yyerror(parser, "can't make alias for the number variables");
9639    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
9640
9641
9642
9643
9644       ;}
9645     break;
9646
9647   case 15:
9648 # 906 "parse.y"
9649     {
9650
9651    (yyval.node) = (yyvsp[(2) - (2)].node);
9652
9653
9654
9655       ;}
9656     break;
9657
9658   case 16:
9659 # 914 "parse.y"
9660     {
9661
9662    (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(0));
9663    fixpos((yyval.node), (yyvsp[(3) - (3)].node));
9664
9665
9666
9667       ;}
9668     break;
9669
9670   case 17:
9671 # 923 "parse.y"
9672     {
9673
9674    (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))));
9675    fixpos((yyval.node), (yyvsp[(3) - (3)].node));
9676
9677
9678
9679       ;}
9680     break;
9681
9682   case 18:
9683 # 932 "parse.y"
9684     {
9685
9686    if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
9687        (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
9688    }
9689    else {
9690        (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
9691    }
9692
9693
9694
9695       ;}
9696     break;
9697
9698   case 19:
9699 # 945 "parse.y"
9700     {
9701
9702    if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
9703        (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
9704    }
9705    else {
9706        (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
9707    }
9708
9709
9710
9711       ;}
9712     break;
9713
9714   case 20:
9715 # 958 "parse.y"
9716     {
9717
9718    NODE *resq = node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(3) - (3)].node))), (VALUE)(0));
9719    (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(resq), (VALUE)(0));
9720
9721
9722
9723       ;}
9724     break;
9725
9726   case 21:
9727 # 967 "parse.y"
9728     {
9729    if ((parser->parser_in_def) || (parser->parser_in_single)) {
9730        parser_yyerror(parser, "BEGIN in method");
9731    }
9732
9733
9734
9735
9736       ;}
9737     break;
9738
9739   case 22:
9740 # 977 "parse.y"
9741     {
9742
9743    (parser->parser_eval_tree_begin) = block_append_gen(parser,(parser->parser_eval_tree_begin),(yyvsp[(4) - (5)].node));
9744
9745
9746
9747    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
9748
9749
9750
9751       ;}
9752     break;
9753
9754   case 23:
9755 # 989 "parse.y"
9756     {
9757    if ((parser->parser_in_def) || (parser->parser_in_single)) {
9758        rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "END in method; use at_exit");
9759    }
9760
9761    (yyval.node) = node_newnode(parser, (NODE_POSTEXE), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0))), (VALUE)(0));
9762
9763
9764
9765
9766       ;}
9767     break;
9768
9769   case 24:
9770 # 1001 "parse.y"
9771     {
9772
9773    value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
9774    (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
9775
9776
9777
9778       ;}
9779     break;
9780
9781   case 25:
9782 # 1010 "parse.y"
9783     {
9784
9785    value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
9786    (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
9787    (yyval.node) = (yyvsp[(1) - (3)].node);
9788
9789
9790
9791       ;}
9792     break;
9793
9794   case 26:
9795 # 1020 "parse.y"
9796     {
9797
9798    value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
9799    if ((yyvsp[(1) - (3)].node)) {
9800        ID vid = (yyvsp[(1) - (3)].node)->u1.id;
9801        if ((yyvsp[(2) - (3)].id) == 331) {
9802     (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
9803     (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
9804     if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
9805         (yyval.node)->u3.id = vid;
9806     }
9807        }
9808        else if ((yyvsp[(2) - (3)].id) == 330) {
9809     (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
9810     (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
9811        }
9812        else {
9813     (yyval.node) = (yyvsp[(1) - (3)].node);
9814     (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(1), (VALUE)(0))));
9815        }
9816    }
9817    else {
9818        (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
9819    }
9820
9821
9822
9823       ;}
9824     break;
9825
9826   case 27:
9827 # 1049 "parse.y"
9828     {
9829
9830    NODE *args;
9831
9832    value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
9833    if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
9834    args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
9835    if ((yyvsp[(5) - (6)].id) == 331) {
9836        (yyvsp[(5) - (6)].id) = 0;
9837    }
9838    else if ((yyvsp[(5) - (6)].id) == 330) {
9839        (yyvsp[(5) - (6)].id) = 1;
9840    }
9841    (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
9842    fixpos((yyval.node), (yyvsp[(1) - (6)].node));
9843
9844
9845
9846
9847       ;}
9848     break;
9849
9850   case 28:
9851 # 1070 "parse.y"
9852     {
9853
9854    value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
9855    if ((yyvsp[(4) - (5)].id) == 331) {
9856        (yyvsp[(4) - (5)].id) = 0;
9857    }
9858    else if ((yyvsp[(4) - (5)].id) == 330) {
9859        (yyvsp[(4) - (5)].id) = 1;
9860    }
9861    (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
9862    fixpos((yyval.node), (yyvsp[(1) - (5)].node));
9863
9864
9865
9866
9867       ;}
9868     break;
9869
9870   case 29:
9871 # 1087 "parse.y"
9872     {
9873
9874    value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
9875    if ((yyvsp[(4) - (5)].id) == 331) {
9876        (yyvsp[(4) - (5)].id) = 0;
9877    }
9878    else if ((yyvsp[(4) - (5)].id) == 330) {
9879        (yyvsp[(4) - (5)].id) = 1;
9880    }
9881    (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
9882    fixpos((yyval.node), (yyvsp[(1) - (5)].node));
9883
9884
9885
9886
9887       ;}
9888     break;
9889
9890   case 30:
9891 # 1104 "parse.y"
9892     {
9893
9894    value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
9895    if ((yyvsp[(4) - (5)].id) == 331) {
9896        (yyvsp[(4) - (5)].id) = 0;
9897    }
9898    else if ((yyvsp[(4) - (5)].id) == 330) {
9899        (yyvsp[(4) - (5)].id) = 1;
9900    }
9901    (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
9902    fixpos((yyval.node), (yyvsp[(1) - (5)].node));
9903
9904
9905
9906
9907       ;}
9908     break;
9909
9910   case 31:
9911 # 1121 "parse.y"
9912     {
9913
9914    rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
9915    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
9916
9917
9918
9919
9920       ;}
9921     break;
9922
9923   case 32:
9924 # 1131 "parse.y"
9925     {
9926
9927    value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
9928    (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
9929
9930
9931
9932       ;}
9933     break;
9934
9935   case 33:
9936 # 1140 "parse.y"
9937     {
9938
9939    (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
9940    (yyval.node) = (yyvsp[(1) - (3)].node);
9941
9942
9943
9944       ;}
9945     break;
9946
9947   case 34:
9948 # 1149 "parse.y"
9949     {
9950
9951    (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
9952    (yyval.node) = (yyvsp[(1) - (3)].node);
9953
9954
9955
9956       ;}
9957     break;
9958
9959   case 37:
9960 # 1162 "parse.y"
9961     {
9962
9963    (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
9964
9965
9966
9967       ;}
9968     break;
9969
9970   case 38:
9971 # 1170 "parse.y"
9972     {
9973
9974    (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
9975
9976
9977
9978       ;}
9979     break;
9980
9981   case 39:
9982 # 1178 "parse.y"
9983     {
9984
9985    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (3)].node)),'!');
9986
9987
9988
9989       ;}
9990     break;
9991
9992   case 40:
9993 # 1186 "parse.y"
9994     {
9995
9996    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
9997
9998
9999
10000       ;}
10001     break;
10002
10003   case 42:
10004 # 1197 "parse.y"
10005     {
10006
10007    value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
10008    (yyval.node) = (yyvsp[(1) - (1)].node);
10009           if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
10010
10011
10012
10013       ;}
10014     break;
10015
10016   case 45:
10017 # 1211 "parse.y"
10018     {
10019
10020    (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
10021
10022
10023
10024       ;}
10025     break;
10026
10027   case 46:
10028 # 1219 "parse.y"
10029     {
10030
10031    (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
10032
10033
10034
10035       ;}
10036     break;
10037
10038   case 47:
10039 # 1227 "parse.y"
10040     {
10041
10042    (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
10043
10044
10045
10046       ;}
10047     break;
10048
10049   case 49:
10050 # 1238 "parse.y"
10051     {
10052
10053    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
10054
10055
10056
10057
10058       ;}
10059     break;
10060
10061   case 50:
10062 # 1247 "parse.y"
10063     {
10064
10065    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
10066
10067
10068
10069
10070       ;}
10071     break;
10072
10073   case 51:
10074 # 1258 "parse.y"
10075     {
10076
10077    dyna_push_gen(parser);
10078    (yyval.num) = (parser->parser_ruby_sourceline);
10079
10080
10081       ;}
10082     break;
10083
10084   case 52:
10085 # 1268 "parse.y"
10086     {
10087
10088    (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
10089    ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
10090    dyna_pop_gen(parser);
10091
10092
10093
10094       ;}
10095     break;
10096
10097   case 53:
10098 # 1280 "parse.y"
10099     {
10100
10101    (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
10102    fixpos((yyval.node), (yyvsp[(2) - (2)].node));
10103
10104
10105
10106       ;}
10107     break;
10108
10109   case 54:
10110 # 1289 "parse.y"
10111     {
10112
10113    block_dup_check_gen(parser,(yyvsp[(2) - (3)].node),(yyvsp[(3) - (3)].node));
10114           (yyvsp[(3) - (3)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (3)].id)), (VALUE)((yyvsp[(2) - (3)].node)));
10115    (yyval.node) = (yyvsp[(3) - (3)].node);
10116    fixpos((yyval.node), (yyvsp[(2) - (3)].node));
10117
10118
10119
10120
10121       ;}
10122     break;
10123
10124   case 55:
10125 # 1301 "parse.y"
10126     {
10127
10128    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
10129    fixpos((yyval.node), (yyvsp[(1) - (4)].node));
10130
10131
10132
10133       ;}
10134     break;
10135
10136   case 56:
10137 # 1310 "parse.y"
10138     {
10139
10140    block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
10141           (yyvsp[(5) - (5)].node)->u3.node = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].node)));
10142    (yyval.node) = (yyvsp[(5) - (5)].node);
10143    fixpos((yyval.node), (yyvsp[(1) - (5)].node));
10144
10145
10146
10147
10148      ;}
10149     break;
10150
10151   case 57:
10152 # 1322 "parse.y"
10153     {
10154
10155    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
10156    fixpos((yyval.node), (yyvsp[(1) - (4)].node));
10157
10158
10159
10160       ;}
10161     break;
10162
10163   case 58:
10164 # 1331 "parse.y"
10165     {
10166
10167    block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
10168           (yyvsp[(5) - (5)].node)->u3.node = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].node)));
10169    (yyval.node) = (yyvsp[(5) - (5)].node);
10170    fixpos((yyval.node), (yyvsp[(1) - (5)].node));
10171
10172
10173
10174
10175      ;}
10176     break;
10177
10178   case 59:
10179 # 1343 "parse.y"
10180     {
10181
10182    (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
10183    fixpos((yyval.node), (yyvsp[(2) - (2)].node));
10184
10185
10186
10187       ;}
10188     break;
10189
10190   case 60:
10191 # 1352 "parse.y"
10192     {
10193
10194    (yyval.node) = new_yield_gen(parser, (yyvsp[(2) - (2)].node));
10195    fixpos((yyval.node), (yyvsp[(2) - (2)].node));
10196
10197
10198
10199       ;}
10200     break;
10201
10202   case 62:
10203 # 1364 "parse.y"
10204     {
10205
10206    (yyval.node) = (yyvsp[(2) - (3)].node);
10207
10208
10209
10210       ;}
10211     break;
10212
10213   case 64:
10214 # 1375 "parse.y"
10215     {
10216
10217    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(1), (VALUE)(0))), (VALUE)(0), (VALUE)(0));
10218
10219
10220
10221       ;}
10222     break;
10223
10224   case 65:
10225 # 1385 "parse.y"
10226     {
10227
10228    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
10229
10230
10231
10232       ;}
10233     break;
10234
10235   case 66:
10236 # 1393 "parse.y"
10237     {
10238
10239    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(list_append_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
10240
10241
10242
10243       ;}
10244     break;
10245
10246   case 67:
10247 # 1401 "parse.y"
10248     {
10249
10250    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)((yyvsp[(3) - (3)].node)));
10251
10252
10253
10254       ;}
10255     break;
10256
10257   case 68:
10258 # 1409 "parse.y"
10259     {
10260
10261    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))));
10262
10263
10264
10265       ;}
10266     break;
10267
10268   case 69:
10269 # 1417 "parse.y"
10270     {
10271
10272    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(-1));
10273
10274
10275
10276       ;}
10277     break;
10278
10279   case 70:
10280 # 1425 "parse.y"
10281     {
10282
10283    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
10284
10285
10286
10287       ;}
10288     break;
10289
10290   case 71:
10291 # 1433 "parse.y"
10292     {
10293
10294    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
10295
10296
10297
10298       ;}
10299     break;
10300
10301   case 72:
10302 # 1441 "parse.y"
10303     {
10304
10305    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
10306
10307
10308
10309       ;}
10310     break;
10311
10312   case 73:
10313 # 1449 "parse.y"
10314     {
10315
10316    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
10317
10318
10319
10320       ;}
10321     break;
10322
10323   case 74:
10324 # 1457 "parse.y"
10325     {
10326
10327    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0))));
10328
10329
10330
10331       ;}
10332     break;
10333
10334   case 76:
10335 # 1468 "parse.y"
10336     {
10337
10338    (yyval.node) = (yyvsp[(2) - (3)].node);
10339
10340
10341
10342       ;}
10343     break;
10344
10345   case 77:
10346 # 1478 "parse.y"
10347     {
10348
10349    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(1), (VALUE)(0));
10350
10351
10352
10353       ;}
10354     break;
10355
10356   case 78:
10357 # 1486 "parse.y"
10358     {
10359
10360    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
10361
10362
10363
10364       ;}
10365     break;
10366
10367   case 79:
10368 # 1496 "parse.y"
10369     {
10370
10371    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
10372
10373
10374
10375       ;}
10376     break;
10377
10378   case 80:
10379 # 1504 "parse.y"
10380     {
10381
10382    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
10383
10384
10385
10386       ;}
10387     break;
10388
10389   case 81:
10390 # 1514 "parse.y"
10391     {
10392
10393    (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
10394
10395
10396
10397       ;}
10398     break;
10399
10400   case 82:
10401 # 1522 "parse.y"
10402     {
10403
10404    (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
10405
10406
10407
10408       ;}
10409     break;
10410
10411   case 83:
10412 # 1530 "parse.y"
10413     {
10414
10415    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
10416
10417
10418
10419       ;}
10420     break;
10421
10422   case 84:
10423 # 1538 "parse.y"
10424     {
10425
10426    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
10427
10428
10429
10430       ;}
10431     break;
10432
10433   case 85:
10434 # 1546 "parse.y"
10435     {
10436
10437    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
10438
10439
10440
10441       ;}
10442     break;
10443
10444   case 86:
10445 # 1554 "parse.y"
10446     {
10447
10448    if ((parser->parser_in_def) || (parser->parser_in_single))
10449        parser_yyerror(parser, "dynamic constant assignment");
10450    (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0))));
10451
10452
10453
10454
10455
10456       ;}
10457     break;
10458
10459   case 87:
10460 # 1566 "parse.y"
10461     {
10462
10463    if ((parser->parser_in_def) || (parser->parser_in_single))
10464        parser_yyerror(parser, "dynamic constant assignment");
10465    (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0))));
10466
10467
10468
10469       ;}
10470     break;
10471
10472   case 88:
10473 # 1576 "parse.y"
10474     {
10475
10476    rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
10477    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
10478
10479
10480
10481
10482       ;}
10483     break;
10484
10485   case 89:
10486 # 1588 "parse.y"
10487     {
10488
10489    if (!((yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
10490
10491
10492
10493       ;}
10494     break;
10495
10496   case 90:
10497 # 1596 "parse.y"
10498     {
10499
10500    (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
10501
10502
10503
10504       ;}
10505     break;
10506
10507   case 91:
10508 # 1604 "parse.y"
10509     {
10510
10511    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
10512
10513
10514
10515       ;}
10516     break;
10517
10518   case 92:
10519 # 1612 "parse.y"
10520     {
10521
10522    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
10523
10524
10525
10526       ;}
10527     break;
10528
10529   case 93:
10530 # 1620 "parse.y"
10531     {
10532
10533    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
10534
10535
10536
10537       ;}
10538     break;
10539
10540   case 94:
10541 # 1628 "parse.y"
10542     {
10543
10544    if ((parser->parser_in_def) || (parser->parser_in_single))
10545        parser_yyerror(parser, "dynamic constant assignment");
10546    (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0))));
10547
10548
10549
10550
10551
10552
10553       ;}
10554     break;
10555
10556   case 95:
10557 # 1641 "parse.y"
10558     {
10559
10560    if ((parser->parser_in_def) || (parser->parser_in_single))
10561        parser_yyerror(parser, "dynamic constant assignment");
10562    (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0))));
10563
10564
10565
10566
10567
10568
10569       ;}
10570     break;
10571
10572   case 96:
10573 # 1654 "parse.y"
10574     {
10575
10576    rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
10577    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
10578
10579
10580
10581       ;}
10582     break;
10583
10584   case 97:
10585 # 1665 "parse.y"
10586     {
10587
10588    parser_yyerror(parser, "class/module name must be CONSTANT");
10589
10590
10591
10592       ;}
10593     break;
10594
10595   case 99:
10596 # 1676 "parse.y"
10597     {
10598
10599    (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
10600
10601
10602
10603       ;}
10604     break;
10605
10606   case 100:
10607 # 1684 "parse.y"
10608     {
10609
10610    (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)(0), (VALUE)((yyval.node)), (VALUE)(0));
10611
10612
10613
10614       ;}
10615     break;
10616
10617   case 101:
10618 # 1692 "parse.y"
10619     {
10620
10621    (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
10622
10623
10624
10625       ;}
10626     break;
10627
10628   case 105:
10629 # 1705 "parse.y"
10630     {
10631
10632    (parser->parser_lex_state) = EXPR_END;
10633    (yyval.id) = (yyvsp[(1) - (1)].id);
10634
10635
10636
10637
10638       ;}
10639     break;
10640
10641   case 106:
10642 # 1715 "parse.y"
10643     {
10644
10645    (parser->parser_lex_state) = EXPR_END;
10646    (yyval.id) = (yyvsp[(1) - (1)].id);
10647
10648
10649
10650
10651       ;}
10652     break;
10653
10654   case 109:
10655 # 1731 "parse.y"
10656     {
10657
10658    (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
10659
10660
10661
10662       ;}
10663     break;
10664
10665   case 111:
10666 # 1742 "parse.y"
10667     {
10668
10669    (yyval.node) = node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0));
10670
10671
10672
10673       ;}
10674     break;
10675
10676   case 112:
10677 # 1749 "parse.y"
10678     {(parser->parser_lex_state) = EXPR_FNAME;;}
10679     break;
10680
10681   case 113:
10682 # 1750 "parse.y"
10683     {
10684
10685    (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0)));
10686
10687
10688
10689       ;}
10690     break;
10691
10692   case 114:
10693 # 1759 "parse.y"
10694     { (yyval.id) = '|'; ;}
10695     break;
10696
10697   case 115:
10698 # 1760 "parse.y"
10699     { (yyval.id) = '^'; ;}
10700     break;
10701
10702   case 116:
10703 # 1761 "parse.y"
10704     { (yyval.id) = '&'; ;}
10705     break;
10706
10707   case 117:
10708 # 1762 "parse.y"
10709     { (yyval.id) = 324; ;}
10710     break;
10711
10712   case 118:
10713 # 1763 "parse.y"
10714     { (yyval.id) = 325; ;}
10715     break;
10716
10717   case 119:
10718 # 1764 "parse.y"
10719     { (yyval.id) = 326; ;}
10720     break;
10721
10722   case 120:
10723 # 1765 "parse.y"
10724     { (yyval.id) = 332; ;}
10725     break;
10726
10727   case 121:
10728 # 1766 "parse.y"
10729     { (yyval.id) = 333; ;}
10730     break;
10731
10732   case 122:
10733 # 1767 "parse.y"
10734     { (yyval.id) = '>'; ;}
10735     break;
10736
10737   case 123:
10738 # 1768 "parse.y"
10739     { (yyval.id) = 328; ;}
10740     break;
10741
10742   case 124:
10743 # 1769 "parse.y"
10744     { (yyval.id) = '<'; ;}
10745     break;
10746
10747   case 125:
10748 # 1770 "parse.y"
10749     { (yyval.id) = 329; ;}
10750     break;
10751
10752   case 126:
10753 # 1771 "parse.y"
10754     { (yyval.id) = 327; ;}
10755     break;
10756
10757   case 127:
10758 # 1772 "parse.y"
10759     { (yyval.id) = 338; ;}
10760     break;
10761
10762   case 128:
10763 # 1773 "parse.y"
10764     { (yyval.id) = 339; ;}
10765     break;
10766
10767   case 129:
10768 # 1774 "parse.y"
10769     { (yyval.id) = '+'; ;}
10770     break;
10771
10772   case 130:
10773 # 1775 "parse.y"
10774     { (yyval.id) = '-'; ;}
10775     break;
10776
10777   case 131:
10778 # 1776 "parse.y"
10779     { (yyval.id) = '*'; ;}
10780     break;
10781
10782   case 132:
10783 # 1777 "parse.y"
10784     { (yyval.id) = '*'; ;}
10785     break;
10786
10787   case 133:
10788 # 1778 "parse.y"
10789     { (yyval.id) = '/'; ;}
10790     break;
10791
10792   case 134:
10793 # 1779 "parse.y"
10794     { (yyval.id) = '%'; ;}
10795     break;
10796
10797   case 135:
10798 # 1780 "parse.y"
10799     { (yyval.id) = 323; ;}
10800     break;
10801
10802   case 136:
10803 # 1781 "parse.y"
10804     { (yyval.id) = '!'; ;}
10805     break;
10806
10807   case 137:
10808 # 1782 "parse.y"
10809     { (yyval.id) = '~'; ;}
10810     break;
10811
10812   case 138:
10813 # 1783 "parse.y"
10814     { (yyval.id) = 321; ;}
10815     break;
10816
10817   case 139:
10818 # 1784 "parse.y"
10819     { (yyval.id) = 322; ;}
10820     break;
10821
10822   case 140:
10823 # 1785 "parse.y"
10824     { (yyval.id) = 336; ;}
10825     break;
10826
10827   case 141:
10828 # 1786 "parse.y"
10829     { (yyval.id) = 337; ;}
10830     break;
10831
10832   case 142:
10833 # 1787 "parse.y"
10834     { (yyval.id) = '`'; ;}
10835     break;
10836
10837   case 184:
10838 # 1805 "parse.y"
10839     {
10840
10841    value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
10842    (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
10843
10844
10845
10846       ;}
10847     break;
10848
10849   case 185:
10850 # 1814 "parse.y"
10851     {
10852
10853    value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
10854           (yyvsp[(3) - (5)].node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))), (VALUE)(0));
10855    (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node));
10856
10857
10858
10859       ;}
10860     break;
10861
10862   case 186:
10863 # 1824 "parse.y"
10864     {
10865
10866    value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
10867    if ((yyvsp[(1) - (3)].node)) {
10868        ID vid = (yyvsp[(1) - (3)].node)->u1.id;
10869        if ((yyvsp[(2) - (3)].id) == 331) {
10870     (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
10871     (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
10872     if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
10873         (yyval.node)->u3.id = vid;
10874     }
10875        }
10876        else if ((yyvsp[(2) - (3)].id) == 330) {
10877     (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
10878     (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
10879        }
10880        else {
10881     (yyval.node) = (yyvsp[(1) - (3)].node);
10882     (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(1), (VALUE)(0))));
10883        }
10884    }
10885    else {
10886        (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
10887    }
10888
10889
10890
10891       ;}
10892     break;
10893
10894   case 187:
10895 # 1853 "parse.y"
10896     {
10897
10898    value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
10899           (yyvsp[(3) - (5)].node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))), (VALUE)(0));
10900    if ((yyvsp[(1) - (5)].node)) {
10901        ID vid = (yyvsp[(1) - (5)].node)->u1.id;
10902        if ((yyvsp[(2) - (5)].id) == 331) {
10903     (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
10904     (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
10905     if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
10906         (yyval.node)->u3.id = vid;
10907     }
10908        }
10909        else if ((yyvsp[(2) - (5)].id) == 330) {
10910     (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
10911     (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
10912        }
10913        else {
10914     (yyval.node) = (yyvsp[(1) - (5)].node);
10915     (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (5)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(1), (VALUE)(0))));
10916        }
10917    }
10918    else {
10919        (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
10920    }
10921
10922
10923
10924
10925       ;}
10926     break;
10927
10928   case 188:
10929 # 1884 "parse.y"
10930     {
10931
10932    NODE *args;
10933
10934    value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
10935    if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
10936    args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
10937    if ((yyvsp[(5) - (6)].id) == 331) {
10938        (yyvsp[(5) - (6)].id) = 0;
10939    }
10940    else if ((yyvsp[(5) - (6)].id) == 330) {
10941        (yyvsp[(5) - (6)].id) = 1;
10942    }
10943    (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
10944    fixpos((yyval.node), (yyvsp[(1) - (6)].node));
10945
10946
10947
10948
10949       ;}
10950     break;
10951
10952   case 189:
10953 # 1905 "parse.y"
10954     {
10955
10956    value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
10957    if ((yyvsp[(4) - (5)].id) == 331) {
10958        (yyvsp[(4) - (5)].id) = 0;
10959    }
10960    else if ((yyvsp[(4) - (5)].id) == 330) {
10961        (yyvsp[(4) - (5)].id) = 1;
10962    }
10963    (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
10964    fixpos((yyval.node), (yyvsp[(1) - (5)].node));
10965
10966
10967
10968
10969       ;}
10970     break;
10971
10972   case 190:
10973 # 1922 "parse.y"
10974     {
10975
10976    value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
10977    if ((yyvsp[(4) - (5)].id) == 331) {
10978        (yyvsp[(4) - (5)].id) = 0;
10979    }
10980    else if ((yyvsp[(4) - (5)].id) == 330) {
10981        (yyvsp[(4) - (5)].id) = 1;
10982    }
10983    (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
10984    fixpos((yyval.node), (yyvsp[(1) - (5)].node));
10985
10986
10987
10988
10989       ;}
10990     break;
10991
10992   case 191:
10993 # 1939 "parse.y"
10994     {
10995
10996    value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
10997    if ((yyvsp[(4) - (5)].id) == 331) {
10998        (yyvsp[(4) - (5)].id) = 0;
10999    }
11000    else if ((yyvsp[(4) - (5)].id) == 330) {
11001        (yyvsp[(4) - (5)].id) = 1;
11002    }
11003    (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
11004    fixpos((yyval.node), (yyvsp[(1) - (5)].node));
11005
11006
11007
11008
11009       ;}
11010     break;
11011
11012   case 192:
11013 # 1956 "parse.y"
11014     {
11015
11016    parser_yyerror(parser, "constant re-assignment");
11017    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
11018
11019
11020
11021
11022
11023       ;}
11024     break;
11025
11026   case 193:
11027 # 1967 "parse.y"
11028     {
11029
11030    parser_yyerror(parser, "constant re-assignment");
11031    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
11032
11033
11034
11035
11036
11037       ;}
11038     break;
11039
11040   case 194:
11041 # 1978 "parse.y"
11042     {
11043
11044    rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
11045    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
11046
11047
11048
11049
11050
11051       ;}
11052     break;
11053
11054   case 195:
11055 # 1989 "parse.y"
11056     {
11057
11058    value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
11059    value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
11060    (yyval.node) = node_newnode(parser, (NODE_DOT2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
11061    if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(1) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG) &&
11062        ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
11063        (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
11064    }
11065
11066
11067
11068       ;}
11069     break;
11070
11071   case 196:
11072 # 2003 "parse.y"
11073     {
11074
11075    value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
11076    value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
11077    (yyval.node) = node_newnode(parser, (NODE_DOT3), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
11078    if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(1) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG) &&
11079        ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
11080        (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
11081    }
11082
11083
11084
11085       ;}
11086     break;
11087
11088   case 197:
11089 # 2017 "parse.y"
11090     {
11091
11092    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'+',(yyvsp[(3) - (3)].node));
11093
11094
11095
11096       ;}
11097     break;
11098
11099   case 198:
11100 # 2025 "parse.y"
11101     {
11102
11103    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'-',(yyvsp[(3) - (3)].node));
11104
11105
11106
11107       ;}
11108     break;
11109
11110   case 199:
11111 # 2033 "parse.y"
11112     {
11113
11114    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'*',(yyvsp[(3) - (3)].node));
11115
11116
11117
11118       ;}
11119     break;
11120
11121   case 200:
11122 # 2041 "parse.y"
11123     {
11124
11125    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'/',(yyvsp[(3) - (3)].node));
11126
11127
11128
11129       ;}
11130     break;
11131
11132   case 201:
11133 # 2049 "parse.y"
11134     {
11135
11136    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'%',(yyvsp[(3) - (3)].node));
11137
11138
11139
11140       ;}
11141     break;
11142
11143   case 202:
11144 # 2057 "parse.y"
11145     {
11146
11147    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),323,(yyvsp[(3) - (3)].node));
11148
11149
11150
11151       ;}
11152     break;
11153
11154   case 203:
11155 # 2065 "parse.y"
11156     {
11157
11158    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)(call_bin_op_gen(parser, (yyvsp[(2) - (4)].node),323,(yyvsp[(4) - (4)].node))), (VALUE)(322), (VALUE)(0));
11159
11160
11161
11162
11163       ;}
11164     break;
11165
11166   case 204:
11167 # 2074 "parse.y"
11168     {
11169
11170    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)(call_bin_op_gen(parser, (yyvsp[(2) - (4)].node),323,(yyvsp[(4) - (4)].node))), (VALUE)(322), (VALUE)(0));
11171
11172
11173
11174
11175       ;}
11176     break;
11177
11178   case 205:
11179 # 2083 "parse.y"
11180     {
11181
11182    (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),321);
11183
11184
11185
11186       ;}
11187     break;
11188
11189   case 206:
11190 # 2091 "parse.y"
11191     {
11192
11193    (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),322);
11194
11195
11196
11197       ;}
11198     break;
11199
11200   case 207:
11201 # 2099 "parse.y"
11202     {
11203
11204    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'|',(yyvsp[(3) - (3)].node));
11205
11206
11207
11208       ;}
11209     break;
11210
11211   case 208:
11212 # 2107 "parse.y"
11213     {
11214
11215    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'^',(yyvsp[(3) - (3)].node));
11216
11217
11218
11219       ;}
11220     break;
11221
11222   case 209:
11223 # 2115 "parse.y"
11224     {
11225
11226    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'&',(yyvsp[(3) - (3)].node));
11227
11228
11229
11230       ;}
11231     break;
11232
11233   case 210:
11234 # 2123 "parse.y"
11235     {
11236
11237    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),324,(yyvsp[(3) - (3)].node));
11238
11239
11240
11241       ;}
11242     break;
11243
11244   case 211:
11245 # 2131 "parse.y"
11246     {
11247
11248    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'>',(yyvsp[(3) - (3)].node));
11249
11250
11251
11252       ;}
11253     break;
11254
11255   case 212:
11256 # 2139 "parse.y"
11257     {
11258
11259    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),328,(yyvsp[(3) - (3)].node));
11260
11261
11262
11263       ;}
11264     break;
11265
11266   case 213:
11267 # 2147 "parse.y"
11268     {
11269
11270    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'<',(yyvsp[(3) - (3)].node));
11271
11272
11273
11274       ;}
11275     break;
11276
11277   case 214:
11278 # 2155 "parse.y"
11279     {
11280
11281    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),329,(yyvsp[(3) - (3)].node));
11282
11283
11284
11285       ;}
11286     break;
11287
11288   case 215:
11289 # 2163 "parse.y"
11290     {
11291
11292    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),325,(yyvsp[(3) - (3)].node));
11293
11294
11295
11296       ;}
11297     break;
11298
11299   case 216:
11300 # 2171 "parse.y"
11301     {
11302
11303    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),326,(yyvsp[(3) - (3)].node));
11304
11305
11306
11307       ;}
11308     break;
11309
11310   case 217:
11311 # 2179 "parse.y"
11312     {
11313
11314    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),327,(yyvsp[(3) - (3)].node));
11315
11316
11317
11318       ;}
11319     break;
11320
11321   case 218:
11322 # 2187 "parse.y"
11323     {
11324
11325    (yyval.node) = match_op_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
11326                         if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && rb_type((VALUE)((yyvsp[(1) - (3)].node)->u1.value)) == RUBY_T_REGEXP) {
11327                             (yyval.node) = reg_named_capture_assign_gen(parser,(yyvsp[(1) - (3)].node)->u1.value,(yyval.node));
11328                         }
11329
11330
11331
11332       ;}
11333     break;
11334
11335   case 219:
11336 # 2198 "parse.y"
11337     {
11338
11339    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),333,(yyvsp[(3) - (3)].node));
11340
11341
11342
11343       ;}
11344     break;
11345
11346   case 220:
11347 # 2206 "parse.y"
11348     {
11349
11350    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
11351
11352
11353
11354       ;}
11355     break;
11356
11357   case 221:
11358 # 2214 "parse.y"
11359     {
11360
11361    (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),'~');
11362
11363
11364
11365       ;}
11366     break;
11367
11368   case 222:
11369 # 2222 "parse.y"
11370     {
11371
11372    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),338,(yyvsp[(3) - (3)].node));
11373
11374
11375
11376       ;}
11377     break;
11378
11379   case 223:
11380 # 2230 "parse.y"
11381     {
11382
11383    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),339,(yyvsp[(3) - (3)].node));
11384
11385
11386
11387       ;}
11388     break;
11389
11390   case 224:
11391 # 2238 "parse.y"
11392     {
11393
11394    (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
11395
11396
11397
11398       ;}
11399     break;
11400
11401   case 225:
11402 # 2246 "parse.y"
11403     {
11404
11405    (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
11406
11407
11408
11409       ;}
11410     break;
11411
11412   case 226:
11413 # 2253 "parse.y"
11414     {(parser->parser_in_defined) = 1;;}
11415     break;
11416
11417   case 227:
11418 # 2254 "parse.y"
11419     {
11420
11421    (parser->parser_in_defined) = 0;
11422    (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0), (VALUE)(0));
11423
11424
11425
11426
11427       ;}
11428     break;
11429
11430   case 228:
11431 # 2264 "parse.y"
11432     {
11433
11434    value_expr_gen(parser, ((yyvsp[(1) - (6)].node)) = remove_begin((yyvsp[(1) - (6)].node)));
11435    (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(1) - (6)].node))), (VALUE)((yyvsp[(3) - (6)].node)), (VALUE)((yyvsp[(6) - (6)].node)));
11436    fixpos((yyval.node), (yyvsp[(1) - (6)].node));
11437
11438
11439
11440       ;}
11441     break;
11442
11443   case 229:
11444 # 2274 "parse.y"
11445     {
11446    (yyval.node) = (yyvsp[(1) - (1)].node);
11447       ;}
11448     break;
11449
11450   case 230:
11451 # 2280 "parse.y"
11452     {
11453
11454    value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
11455    (yyval.node) = (yyvsp[(1) - (1)].node);
11456           if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
11457
11458
11459
11460       ;}
11461     break;
11462
11463   case 232:
11464 # 2293 "parse.y"
11465     {
11466    (yyval.node) = (yyvsp[(1) - (2)].node);
11467       ;}
11468     break;
11469
11470   case 233:
11471 # 2297 "parse.y"
11472     {
11473
11474    (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
11475
11476
11477
11478       ;}
11479     break;
11480
11481   case 234:
11482 # 2305 "parse.y"
11483     {
11484
11485    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
11486
11487
11488
11489       ;}
11490     break;
11491
11492   case 235:
11493 # 2315 "parse.y"
11494     {
11495
11496    (yyval.node) = (yyvsp[(2) - (3)].node);
11497
11498
11499
11500       ;}
11501     break;
11502
11503   case 240:
11504 # 2333 "parse.y"
11505     {
11506
11507    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
11508
11509
11510
11511       ;}
11512     break;
11513
11514   case 241:
11515 # 2341 "parse.y"
11516     {
11517
11518    (yyval.node) = arg_blk_pass((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
11519
11520
11521
11522       ;}
11523     break;
11524
11525   case 242:
11526 # 2349 "parse.y"
11527     {
11528
11529    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
11530    (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(2) - (2)].node));
11531
11532
11533
11534
11535       ;}
11536     break;
11537
11538   case 243:
11539 # 2359 "parse.y"
11540     {
11541
11542    (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
11543    (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(4) - (4)].node));
11544
11545
11546
11547       ;}
11548     break;
11549
11550   case 245:
11551 # 2376 "parse.y"
11552     {
11553    (yyval.num) = (parser->parser_cmdarg_stack);
11554    ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((1)&1));
11555       ;}
11556     break;
11557
11558   case 246:
11559 # 2381 "parse.y"
11560     {
11561
11562    (parser->parser_cmdarg_stack) = (yyvsp[(1) - (2)].num);
11563    (yyval.node) = (yyvsp[(2) - (2)].node);
11564       ;}
11565     break;
11566
11567   case 247:
11568 # 2389 "parse.y"
11569     {
11570
11571    (yyval.node) = node_newnode(parser, (NODE_BLOCK_PASS), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0));
11572
11573
11574
11575       ;}
11576     break;
11577
11578   case 248:
11579 # 2399 "parse.y"
11580     {
11581    (yyval.node) = (yyvsp[(2) - (2)].node);
11582       ;}
11583     break;
11584
11585   case 249:
11586 # 2403 "parse.y"
11587     {
11588    (yyval.node) = 0;
11589       ;}
11590     break;
11591
11592   case 250:
11593 # 2407 "parse.y"
11594     {
11595    (yyval.node) = 0;
11596       ;}
11597     break;
11598
11599   case 251:
11600 # 2413 "parse.y"
11601     {
11602
11603    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
11604
11605
11606
11607       ;}
11608     break;
11609
11610   case 252:
11611 # 2421 "parse.y"
11612     {
11613
11614    (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
11615
11616
11617
11618       ;}
11619     break;
11620
11621   case 253:
11622 # 2429 "parse.y"
11623     {
11624
11625    NODE *n1;
11626    if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
11627        (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
11628    }
11629    else {
11630        (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
11631    }
11632
11633
11634
11635       ;}
11636     break;
11637
11638   case 254:
11639 # 2443 "parse.y"
11640     {
11641
11642    NODE *n1;
11643    if ((((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) && (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
11644        (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
11645    }
11646    else {
11647        (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
11648    }
11649
11650
11651
11652       ;}
11653     break;
11654
11655   case 255:
11656 # 2459 "parse.y"
11657     {
11658
11659    NODE *n1;
11660    if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
11661        (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
11662    }
11663    else {
11664        (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
11665    }
11666
11667
11668
11669       ;}
11670     break;
11671
11672   case 256:
11673 # 2473 "parse.y"
11674     {
11675
11676    NODE *n1;
11677    if (((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY &&
11678        (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
11679        (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
11680    }
11681    else {
11682        (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
11683    }
11684
11685
11686
11687       ;}
11688     break;
11689
11690   case 257:
11691 # 2488 "parse.y"
11692     {
11693
11694    (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
11695
11696
11697
11698       ;}
11699     break;
11700
11701   case 266:
11702 # 2506 "parse.y"
11703     {
11704
11705    (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0));
11706
11707
11708
11709       ;}
11710     break;
11711
11712   case 267:
11713 # 2514 "parse.y"
11714     {
11715
11716    (yyval.num) = (parser->parser_ruby_sourceline);
11717
11718
11719       ;}
11720     break;
11721
11722   case 268:
11723 # 2522 "parse.y"
11724     {
11725
11726    if ((yyvsp[(3) - (4)].node) == ((void *)0)) {
11727        (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
11728    }
11729    else {
11730        if (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_RESCUE ||
11731     ((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ENSURE)
11732     ((struct RNode*)((yyvsp[(3) - (4)].node)))->flags=((((struct RNode*)((yyvsp[(3) - (4)].node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (4)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
11733        (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
11734    }
11735    ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (4)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
11736
11737
11738
11739       ;}
11740     break;
11741
11742   case 269:
11743 # 2538 "parse.y"
11744     {(parser->parser_lex_state) = EXPR_ENDARG;;}
11745     break;
11746
11747   case 270:
11748 # 2539 "parse.y"
11749     {
11750    rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "(...) interpreted as grouped expression");
11751
11752    (yyval.node) = (yyvsp[(2) - (4)].node);
11753
11754
11755
11756       ;}
11757     break;
11758
11759   case 271:
11760 # 2548 "parse.y"
11761     {
11762
11763    (yyval.node) = (yyvsp[(2) - (3)].node);
11764
11765
11766
11767       ;}
11768     break;
11769
11770   case 272:
11771 # 2556 "parse.y"
11772     {
11773
11774    (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
11775
11776
11777
11778       ;}
11779     break;
11780
11781   case 273:
11782 # 2564 "parse.y"
11783     {
11784
11785    (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
11786
11787
11788
11789       ;}
11790     break;
11791
11792   case 274:
11793 # 2572 "parse.y"
11794     {
11795
11796    if ((yyvsp[(2) - (3)].node) == 0) {
11797        (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
11798    }
11799    else {
11800        (yyval.node) = (yyvsp[(2) - (3)].node);
11801    }
11802
11803
11804
11805       ;}
11806     break;
11807
11808   case 275:
11809 # 2585 "parse.y"
11810     {
11811
11812    (yyval.node) = node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(0), (VALUE)(0));
11813
11814
11815
11816       ;}
11817     break;
11818
11819   case 276:
11820 # 2593 "parse.y"
11821     {
11822
11823    (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
11824
11825
11826
11827       ;}
11828     break;
11829
11830   case 277:
11831 # 2601 "parse.y"
11832     {
11833
11834    (yyval.node) = new_yield_gen(parser, (yyvsp[(3) - (4)].node));
11835
11836
11837
11838       ;}
11839     break;
11840
11841   case 278:
11842 # 2609 "parse.y"
11843     {
11844
11845    (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
11846
11847
11848
11849       ;}
11850     break;
11851
11852   case 279:
11853 # 2617 "parse.y"
11854     {
11855
11856    (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
11857
11858
11859
11860       ;}
11861     break;
11862
11863   case 280:
11864 # 2624 "parse.y"
11865     {(parser->parser_in_defined) = 1;;}
11866     break;
11867
11868   case 281:
11869 # 2625 "parse.y"
11870     {
11871
11872    (parser->parser_in_defined) = 0;
11873    (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0), (VALUE)(0));
11874
11875
11876
11877
11878       ;}
11879     break;
11880
11881   case 282:
11882 # 2635 "parse.y"
11883     {
11884
11885    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (4)].node)),'!');
11886
11887
11888
11889       ;}
11890     break;
11891
11892   case 283:
11893 # 2643 "parse.y"
11894     {
11895
11896    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0))),'!');
11897
11898
11899
11900       ;}
11901     break;
11902
11903   case 284:
11904 # 2651 "parse.y"
11905     {
11906
11907    (yyvsp[(2) - (2)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)(0));
11908    (yyval.node) = (yyvsp[(2) - (2)].node);
11909    fixpos((yyvsp[(2) - (2)].node)->u3.node, (yyvsp[(2) - (2)].node));
11910
11911
11912
11913
11914       ;}
11915     break;
11916
11917   case 286:
11918 # 2663 "parse.y"
11919     {
11920
11921    block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
11922    (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
11923    (yyval.node) = (yyvsp[(2) - (2)].node);
11924    fixpos((yyval.node), (yyvsp[(1) - (2)].node));
11925
11926
11927
11928       ;}
11929     break;
11930
11931   case 287:
11932 # 2674 "parse.y"
11933     {
11934    (yyval.node) = (yyvsp[(2) - (2)].node);
11935       ;}
11936     break;
11937
11938   case 288:
11939 # 2681 "parse.y"
11940     {
11941
11942    (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (6)].node))), (VALUE)((yyvsp[(4) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].node)));
11943    fixpos((yyval.node), (yyvsp[(2) - (6)].node));
11944
11945
11946
11947       ;}
11948     break;
11949
11950   case 289:
11951 # 2693 "parse.y"
11952     {
11953
11954    (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (6)].node))), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)((yyvsp[(4) - (6)].node)));
11955    fixpos((yyval.node), (yyvsp[(2) - (6)].node));
11956
11957
11958
11959       ;}
11960     break;
11961
11962   case 290:
11963 # 2701 "parse.y"
11964     {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
11965     break;
11966
11967   case 291:
11968 # 2701 "parse.y"
11969     {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
11970     break;
11971
11972   case 292:
11973 # 2704 "parse.y"
11974     {
11975
11976    (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
11977    fixpos((yyval.node), (yyvsp[(3) - (7)].node));
11978
11979
11980
11981       ;}
11982     break;
11983
11984   case 293:
11985 # 2712 "parse.y"
11986     {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
11987     break;
11988
11989   case 294:
11990 # 2712 "parse.y"
11991     {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
11992     break;
11993
11994   case 295:
11995 # 2715 "parse.y"
11996     {
11997
11998    (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
11999    fixpos((yyval.node), (yyvsp[(3) - (7)].node));
12000
12001
12002
12003       ;}
12004     break;
12005
12006   case 296:
12007 # 2726 "parse.y"
12008     {
12009
12010    (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)(0));
12011    fixpos((yyval.node), (yyvsp[(2) - (5)].node));
12012
12013
12014
12015       ;}
12016     break;
12017
12018   case 297:
12019 # 2735 "parse.y"
12020     {
12021
12022    (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
12023
12024
12025
12026       ;}
12027     break;
12028
12029   case 298:
12030 # 2743 "parse.y"
12031     {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
12032     break;
12033
12034   case 299:
12035 # 2745 "parse.y"
12036     {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
12037     break;
12038
12039   case 300:
12040 # 2748 "parse.y"
12041     {
12042 # 2759 "parse.y"
12043    ID id = internal_id_gen(parser);
12044    ID *tbl = (ID*)ruby_xmalloc2((2),sizeof(ID));
12045    NODE *m = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12046    NODE *args, *scope;
12047
12048    if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_MASGN) {
12049
12050
12051
12052
12053        NODE *one = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(1))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
12054        NODE *zero = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
12055        m->u3.node = block_append_gen(parser,node_newnode(parser, (NODE_IF), (VALUE)(node_newnode(parser, (NODE_AND), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("length") ? __extension__ (rb_intern2("length", strlen("length"))) : (rb_intern)("length"))), (VALUE)(0))), (VALUE)((__builtin_constant_p("==") ? __extension__ (rb_intern2("==", strlen("=="))) : (rb_intern)("=="))), (VALUE)(one))), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("[]") ? __extension__ (rb_intern2("[]", strlen("[]"))) : (rb_intern)("[]"))), (VALUE)(zero))), (VALUE)((__builtin_constant_p("kind_of?") ? __extension__ (rb_intern2("kind_of?", strlen("kind_of?"))) : (rb_intern)("kind_of?"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(rb_cArray), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0))))), (VALUE)(0))), (VALUE)(node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("[]") ? __extension__ (rb_intern2("[]", strlen("[]"))) : (rb_intern)("[]"))), (VALUE)(zero))), (VALUE)(0))), (VALUE)(0)),node_assign_gen(parser, (yyvsp[(2) - (9)].node), node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))));
12056 # 2784 "parse.y"
12057        args = new_args_gen(parser, m,0,id,0,0);
12058    }
12059    else {
12060        if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LASGN ||
12061     ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN ||
12062     ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN_CURR) {
12063     (yyvsp[(2) - (9)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
12064     m->u2.argc = 1;
12065     m->u3.node = (yyvsp[(2) - (9)].node);
12066     args = new_args_gen(parser, m,0,0,0,0);
12067        }
12068        else {
12069     m->u3.node = node_assign_gen(parser, node_newnode(parser, (NODE_MASGN), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(2) - (9)].node)), (VALUE)(1), (VALUE)(0))), (VALUE)(0), (VALUE)(0)), node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0)));
12070     args = new_args_gen(parser, m,0,id,0,0);
12071        }
12072    }
12073    scope = node_newnode(parser, (NODE_SCOPE), (VALUE)(tbl), (VALUE)((yyvsp[(8) - (9)].node)), (VALUE)(args));
12074    tbl[0] = 1; tbl[1] = id;
12075    (yyval.node) = node_newnode(parser, (NODE_FOR), (VALUE)(0), (VALUE)(scope), (VALUE)((yyvsp[(5) - (9)].node)));
12076    fixpos((yyval.node), (yyvsp[(2) - (9)].node));
12077
12078
12079
12080       ;}
12081     break;
12082
12083   case 301:
12084 # 2809 "parse.y"
12085     {
12086    if ((parser->parser_in_def) || (parser->parser_in_single))
12087        parser_yyerror(parser, "class definition in method body");
12088
12089    local_push_gen(parser,0);
12090    (yyval.num) = (parser->parser_ruby_sourceline);
12091
12092
12093       ;}
12094     break;
12095
12096   case 302:
12097 # 2820 "parse.y"
12098     {
12099
12100    (yyval.node) = node_newnode(parser, (NODE_CLASS), (VALUE)((yyvsp[(2) - (6)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0))), (VALUE)(((yyvsp[(3) - (6)].node))));
12101    ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(4) - (6)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
12102    local_pop_gen(parser);
12103
12104
12105
12106       ;}
12107     break;
12108
12109   case 303:
12110 # 2830 "parse.y"
12111     {
12112    (yyval.num) = (parser->parser_in_def);
12113    (parser->parser_in_def) = 0;
12114       ;}
12115     break;
12116
12117   case 304:
12118 # 2835 "parse.y"
12119     {
12120    (yyval.num) = (parser->parser_in_single);
12121    (parser->parser_in_single) = 0;
12122
12123    local_push_gen(parser,0);
12124
12125
12126       ;}
12127     break;
12128
12129   case 305:
12130 # 2845 "parse.y"
12131     {
12132
12133    (yyval.node) = node_newnode(parser, (NODE_SCLASS), (VALUE)((yyvsp[(3) - (8)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(7) - (8)].node)), (VALUE)(0))), (VALUE)(0));
12134    fixpos((yyval.node), (yyvsp[(3) - (8)].node));
12135    local_pop_gen(parser);
12136
12137
12138
12139    (parser->parser_in_def) = (yyvsp[(4) - (8)].num);
12140    (parser->parser_in_single) = (yyvsp[(6) - (8)].num);
12141       ;}
12142     break;
12143
12144   case 306:
12145 # 2857 "parse.y"
12146     {
12147    if ((parser->parser_in_def) || (parser->parser_in_single))
12148        parser_yyerror(parser, "module definition in method body");
12149
12150    local_push_gen(parser,0);
12151    (yyval.num) = (parser->parser_ruby_sourceline);
12152
12153
12154       ;}
12155     break;
12156
12157   case 307:
12158 # 2868 "parse.y"
12159     {
12160
12161    (yyval.node) = node_newnode(parser, (NODE_MODULE), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)(0))), (VALUE)(0));
12162    ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(3) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
12163    local_pop_gen(parser);
12164
12165
12166
12167       ;}
12168     break;
12169
12170   case 308:
12171 # 2878 "parse.y"
12172     {
12173    (yyval.id) = (parser->parser_cur_mid);
12174    (parser->parser_cur_mid) = (yyvsp[(2) - (2)].id);
12175    (parser->parser_in_def)++;
12176
12177    local_push_gen(parser,0);
12178
12179
12180       ;}
12181     break;
12182
12183   case 309:
12184 # 2890 "parse.y"
12185     {
12186
12187    NODE *body = remove_begin((yyvsp[(5) - (6)].node));
12188    reduce_nodes_gen(parser,&body);
12189    (yyval.node) = node_newnode(parser, (NODE_DEFN), (VALUE)(0), (VALUE)((yyvsp[(2) - (6)].id)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(body), (VALUE)((yyvsp[(4) - (6)].node)))));
12190    fixpos((yyval.node), (yyvsp[(4) - (6)].node));
12191    fixpos((yyval.node)->u3.node, (yyvsp[(4) - (6)].node));
12192    local_pop_gen(parser);
12193
12194
12195
12196    (parser->parser_in_def)--;
12197    (parser->parser_cur_mid) = (yyvsp[(3) - (6)].id);
12198       ;}
12199     break;
12200
12201   case 310:
12202 # 2904 "parse.y"
12203     {(parser->parser_lex_state) = EXPR_FNAME;;}
12204     break;
12205
12206   case 311:
12207 # 2905 "parse.y"
12208     {
12209    (parser->parser_in_single)++;
12210    (parser->parser_lex_state) = EXPR_END;
12211
12212    local_push_gen(parser,0);
12213
12214
12215       ;}
12216     break;
12217
12218   case 312:
12219 # 2916 "parse.y"
12220     {
12221
12222    NODE *body = remove_begin((yyvsp[(8) - (9)].node));
12223    reduce_nodes_gen(parser,&body);
12224    (yyval.node) = node_newnode(parser, (NODE_DEFS), (VALUE)((yyvsp[(2) - (9)].node)), (VALUE)((yyvsp[(5) - (9)].id)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(body), (VALUE)((yyvsp[(7) - (9)].node)))));
12225    fixpos((yyval.node), (yyvsp[(2) - (9)].node));
12226    fixpos((yyval.node)->u3.node, (yyvsp[(2) - (9)].node));
12227    local_pop_gen(parser);
12228
12229
12230
12231    (parser->parser_in_single)--;
12232       ;}
12233     break;
12234
12235   case 313:
12236 # 2930 "parse.y"
12237     {
12238
12239    (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12240
12241
12242
12243       ;}
12244     break;
12245
12246   case 314:
12247 # 2938 "parse.y"
12248     {
12249
12250    (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12251
12252
12253
12254       ;}
12255     break;
12256
12257   case 315:
12258 # 2946 "parse.y"
12259     {
12260
12261    (yyval.node) = node_newnode(parser, (NODE_REDO), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12262
12263
12264
12265       ;}
12266     break;
12267
12268   case 316:
12269 # 2954 "parse.y"
12270     {
12271
12272    (yyval.node) = node_newnode(parser, (NODE_RETRY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12273
12274
12275
12276       ;}
12277     break;
12278
12279   case 317:
12280 # 2964 "parse.y"
12281     {
12282
12283    value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
12284    (yyval.node) = (yyvsp[(1) - (1)].node);
12285           if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12286
12287
12288
12289       ;}
12290     break;
12291
12292   case 318:
12293 # 2976 "parse.y"
12294     {
12295
12296    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "begin");
12297
12298       ;}
12299     break;
12300
12301   case 319:
12302 # 2983 "parse.y"
12303     {
12304
12305    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "if");
12306
12307       ;}
12308     break;
12309
12310   case 320:
12311 # 2990 "parse.y"
12312     {
12313
12314    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "unless");
12315
12316       ;}
12317     break;
12318
12319   case 321:
12320 # 2997 "parse.y"
12321     {
12322
12323    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "while");
12324
12325       ;}
12326     break;
12327
12328   case 322:
12329 # 3004 "parse.y"
12330     {
12331
12332    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "until");
12333
12334       ;}
12335     break;
12336
12337   case 323:
12338 # 3011 "parse.y"
12339     {
12340
12341    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "case");
12342
12343       ;}
12344     break;
12345
12346   case 324:
12347 # 3018 "parse.y"
12348     {
12349
12350    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "for");
12351
12352       ;}
12353     break;
12354
12355   case 325:
12356 # 3025 "parse.y"
12357     {
12358
12359    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "class");
12360
12361       ;}
12362     break;
12363
12364   case 326:
12365 # 3032 "parse.y"
12366     {
12367
12368    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "module");
12369
12370       ;}
12371     break;
12372
12373   case 327:
12374 # 3039 "parse.y"
12375     {
12376
12377    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "def");
12378
12379       ;}
12380     break;
12381
12382   case 328:
12383 # 3046 "parse.y"
12384     {
12385
12386    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_pop(parser, "end");
12387
12388       ;}
12389     break;
12390
12391   case 335:
12392 # 3077 "parse.y"
12393     {
12394
12395    (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (5)].node))), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
12396    fixpos((yyval.node), (yyvsp[(2) - (5)].node));
12397
12398
12399
12400       ;}
12401     break;
12402
12403   case 337:
12404 # 3089 "parse.y"
12405     {
12406
12407    (yyval.node) = (yyvsp[(2) - (2)].node);
12408
12409
12410
12411       ;}
12412     break;
12413
12414   case 340:
12415 # 3103 "parse.y"
12416     {
12417
12418    (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
12419
12420
12421
12422       ;}
12423     break;
12424
12425   case 341:
12426 # 3111 "parse.y"
12427     {
12428
12429    (yyval.node) = (yyvsp[(2) - (3)].node);
12430
12431
12432
12433       ;}
12434     break;
12435
12436   case 342:
12437 # 3121 "parse.y"
12438     {
12439
12440    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
12441
12442
12443
12444       ;}
12445     break;
12446
12447   case 343:
12448 # 3129 "parse.y"
12449     {
12450
12451    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
12452
12453
12454
12455       ;}
12456     break;
12457
12458   case 344:
12459 # 3139 "parse.y"
12460     {
12461
12462    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
12463
12464
12465
12466       ;}
12467     break;
12468
12469   case 345:
12470 # 3147 "parse.y"
12471     {
12472
12473    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (4)].id), 0)));
12474
12475
12476
12477       ;}
12478     break;
12479
12480   case 346:
12481 # 3155 "parse.y"
12482     {
12483
12484    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (6)].id), 0)), (VALUE)((yyvsp[(6) - (6)].node)), (VALUE)(0))));
12485
12486
12487
12488       ;}
12489     break;
12490
12491   case 347:
12492 # 3163 "parse.y"
12493     {
12494
12495    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)(-1));
12496
12497
12498
12499       ;}
12500     break;
12501
12502   case 348:
12503 # 3171 "parse.y"
12504     {
12505
12506    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))));
12507
12508
12509
12510       ;}
12511     break;
12512
12513   case 349:
12514 # 3179 "parse.y"
12515     {
12516
12517    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (2)].id), 0)));
12518
12519
12520
12521       ;}
12522     break;
12523
12524   case 350:
12525 # 3187 "parse.y"
12526     {
12527
12528    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (4)].id), 0)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
12529
12530
12531
12532
12533
12534
12535       ;}
12536     break;
12537
12538   case 351:
12539 # 3198 "parse.y"
12540     {
12541
12542    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
12543
12544
12545
12546       ;}
12547     break;
12548
12549   case 352:
12550 # 3206 "parse.y"
12551     {
12552
12553    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0))));
12554
12555
12556
12557       ;}
12558     break;
12559
12560   case 353:
12561 # 3216 "parse.y"
12562     {
12563
12564    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
12565
12566
12567
12568       ;}
12569     break;
12570
12571   case 354:
12572 # 3224 "parse.y"
12573     {
12574
12575    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (8)].node),(yyvsp[(3) - (8)].node),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].node),(yyvsp[(8) - (8)].id));
12576
12577
12578
12579       ;}
12580     break;
12581
12582   case 355:
12583 # 3232 "parse.y"
12584     {
12585
12586    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
12587
12588
12589
12590       ;}
12591     break;
12592
12593   case 356:
12594 # 3240 "parse.y"
12595     {
12596
12597    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
12598
12599
12600
12601       ;}
12602     break;
12603
12604   case 357:
12605 # 3248 "parse.y"
12606     {
12607
12608    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
12609
12610
12611
12612       ;}
12613     break;
12614
12615   case 358:
12616 # 3256 "parse.y"
12617     {
12618
12619    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,1,0,0);
12620
12621
12622
12623
12624       ;}
12625     break;
12626
12627   case 359:
12628 # 3265 "parse.y"
12629     {
12630
12631    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
12632
12633
12634
12635       ;}
12636     break;
12637
12638   case 360:
12639 # 3273 "parse.y"
12640     {
12641
12642    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
12643
12644
12645
12646       ;}
12647     break;
12648
12649   case 361:
12650 # 3281 "parse.y"
12651     {
12652
12653    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
12654
12655
12656
12657       ;}
12658     break;
12659
12660   case 362:
12661 # 3289 "parse.y"
12662     {
12663
12664    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
12665
12666
12667
12668       ;}
12669     break;
12670
12671   case 363:
12672 # 3297 "parse.y"
12673     {
12674
12675    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
12676
12677
12678
12679       ;}
12680     break;
12681
12682   case 364:
12683 # 3305 "parse.y"
12684     {
12685
12686    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
12687
12688
12689
12690       ;}
12691     break;
12692
12693   case 365:
12694 # 3313 "parse.y"
12695     {
12696
12697    (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
12698
12699
12700
12701       ;}
12702     break;
12703
12704   case 366:
12705 # 3321 "parse.y"
12706     {
12707
12708    (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
12709
12710
12711
12712       ;}
12713     break;
12714
12715   case 367:
12716 # 3329 "parse.y"
12717     {
12718
12719    (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
12720
12721
12722
12723       ;}
12724     break;
12725
12726   case 369:
12727 # 3340 "parse.y"
12728     {
12729    (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
12730       ;}
12731     break;
12732
12733   case 370:
12734 # 3346 "parse.y"
12735     {
12736
12737    (yyval.node) = 0;
12738
12739
12740
12741
12742       ;}
12743     break;
12744
12745   case 371:
12746 # 3355 "parse.y"
12747     {
12748
12749    (yyval.node) = 0;
12750
12751
12752
12753
12754       ;}
12755     break;
12756
12757   case 372:
12758 # 3364 "parse.y"
12759     {
12760
12761    (yyval.node) = (yyvsp[(2) - (4)].node);
12762
12763
12764
12765       ;}
12766     break;
12767
12768   case 374:
12769 # 3376 "parse.y"
12770     {
12771
12772    (yyval.node) = 0;
12773
12774
12775
12776       ;}
12777     break;
12778
12779   case 377:
12780 # 3402 "parse.y"
12781     {
12782
12783    new_bv_gen(parser, (yyvsp[(1) - (1)].id));
12784
12785
12786
12787       ;}
12788     break;
12789
12790   case 378:
12791 # 3410 "parse.y"
12792     {
12793    (yyval.node) = 0;
12794       ;}
12795     break;
12796
12797   case 379:
12798 # 3415 "parse.y"
12799     {
12800
12801    dyna_push_gen(parser);
12802
12803
12804    (yyval.num) = (parser->parser_lpar_beg);
12805    (parser->parser_lpar_beg) = ++(parser->parser_paren_nest);
12806       ;}
12807     break;
12808
12809   case 380:
12810 # 3425 "parse.y"
12811     {
12812    (parser->parser_lpar_beg) = (yyvsp[(1) - (3)].num);
12813
12814    (yyval.node) = (yyvsp[(2) - (3)].node);
12815    (yyval.node)->u2.node = node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)((yyvsp[(2) - (3)].node)->u1.node));
12816    dyna_pop_gen(parser);
12817
12818
12819
12820       ;}
12821     break;
12822
12823   case 381:
12824 # 3438 "parse.y"
12825     {
12826
12827    (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)(0), (VALUE)(0));
12828
12829
12830
12831       ;}
12832     break;
12833
12834   case 382:
12835 # 3446 "parse.y"
12836     {
12837
12838    (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
12839
12840
12841
12842       ;}
12843     break;
12844
12845   case 383:
12846 # 3456 "parse.y"
12847     {
12848    (yyval.node) = (yyvsp[(2) - (3)].node);
12849       ;}
12850     break;
12851
12852   case 384:
12853 # 3460 "parse.y"
12854     {
12855    (yyval.node) = (yyvsp[(2) - (3)].node);
12856       ;}
12857     break;
12858
12859   case 385:
12860 # 3466 "parse.y"
12861     {
12862
12863    dyna_push_gen(parser);
12864    (yyval.num) = (parser->parser_ruby_sourceline);
12865
12866       ;}
12867     break;
12868
12869   case 386:
12870 # 3475 "parse.y"
12871     {
12872
12873    (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
12874    ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
12875    dyna_pop_gen(parser);
12876
12877
12878
12879       ;}
12880     break;
12881
12882   case 387:
12883 # 3487 "parse.y"
12884     {
12885
12886    if (((int) (((((struct RNode*)((yyvsp[(1) - (2)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_YIELD) {
12887        parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block given to yield");
12888    }
12889    else {
12890        block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
12891    }
12892    (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
12893    (yyval.node) = (yyvsp[(2) - (2)].node);
12894    fixpos((yyval.node), (yyvsp[(1) - (2)].node));
12895
12896
12897
12898       ;}
12899     break;
12900
12901   case 388:
12902 # 3503 "parse.y"
12903     {
12904
12905    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
12906
12907
12908
12909
12910       ;}
12911     break;
12912
12913   case 389:
12914 # 3512 "parse.y"
12915     {
12916
12917    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
12918
12919
12920
12921
12922       ;}
12923     break;
12924
12925   case 390:
12926 # 3523 "parse.y"
12927     {
12928
12929    (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
12930    fixpos((yyval.node), (yyvsp[(2) - (2)].node));
12931
12932
12933
12934       ;}
12935     break;
12936
12937   case 391:
12938 # 3532 "parse.y"
12939     {
12940
12941    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
12942    fixpos((yyval.node), (yyvsp[(1) - (4)].node));
12943
12944
12945
12946
12947       ;}
12948     break;
12949
12950   case 392:
12951 # 3542 "parse.y"
12952     {
12953
12954    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
12955    fixpos((yyval.node), (yyvsp[(1) - (4)].node));
12956
12957
12958
12959
12960       ;}
12961     break;
12962
12963   case 393:
12964 # 3552 "parse.y"
12965     {
12966
12967    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
12968
12969
12970
12971       ;}
12972     break;
12973
12974   case 394:
12975 # 3560 "parse.y"
12976     {
12977
12978    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((__builtin_constant_p("call") ? __extension__ (rb_intern2("call", strlen("call"))) : (rb_intern)("call"))), (VALUE)((yyvsp[(3) - (3)].node)));
12979    fixpos((yyval.node), (yyvsp[(1) - (3)].node));
12980
12981
12982
12983
12984
12985       ;}
12986     break;
12987
12988   case 395:
12989 # 3571 "parse.y"
12990     {
12991
12992    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((__builtin_constant_p("call") ? __extension__ (rb_intern2("call", strlen("call"))) : (rb_intern)("call"))), (VALUE)((yyvsp[(3) - (3)].node)));
12993    fixpos((yyval.node), (yyvsp[(1) - (3)].node));
12994
12995
12996
12997
12998
12999       ;}
13000     break;
13001
13002   case 396:
13003 # 3582 "parse.y"
13004     {
13005
13006    (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
13007
13008
13009
13010       ;}
13011     break;
13012
13013   case 397:
13014 # 3590 "parse.y"
13015     {
13016
13017    (yyval.node) = node_newnode(parser, (NODE_ZSUPER), (VALUE)(0), (VALUE)(0), (VALUE)(0));
13018
13019
13020
13021       ;}
13022     break;
13023
13024   case 398:
13025 # 3598 "parse.y"
13026     {
13027
13028    if ((yyvsp[(1) - (4)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
13029        (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
13030    else
13031        (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
13032    fixpos((yyval.node), (yyvsp[(1) - (4)].node));
13033
13034
13035
13036       ;}
13037     break;
13038
13039   case 399:
13040 # 3612 "parse.y"
13041     {
13042
13043    dyna_push_gen(parser);
13044    (yyval.num) = (parser->parser_ruby_sourceline);
13045
13046
13047       ;}
13048     break;
13049
13050   case 400:
13051 # 3621 "parse.y"
13052     {
13053
13054    (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
13055    ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
13056    ((struct RNode*)((yyval.node)->u2.node))->flags=((((struct RNode*)((yyval.node)->u2.node))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
13057    ((struct RNode*)((yyval.node)->u2.node->u2.node))->flags=((((struct RNode*)((yyval.node)->u2.node->u2.node))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
13058    dyna_pop_gen(parser);
13059
13060
13061
13062       ;}
13063     break;
13064
13065   case 401:
13066 # 3633 "parse.y"
13067     {
13068
13069    dyna_push_gen(parser);
13070    (yyval.num) = (parser->parser_ruby_sourceline);
13071
13072
13073       ;}
13074     break;
13075
13076   case 402:
13077 # 3642 "parse.y"
13078     {
13079
13080    (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
13081    ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
13082    dyna_pop_gen(parser);
13083
13084
13085
13086       ;}
13087     break;
13088
13089   case 403:
13090 # 3656 "parse.y"
13091     {
13092
13093    (yyval.node) = node_newnode(parser, (NODE_WHEN), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
13094
13095
13096
13097       ;}
13098     break;
13099
13100   case 406:
13101 # 3672 "parse.y"
13102     {
13103
13104    if ((yyvsp[(3) - (6)].node)) {
13105        (yyvsp[(3) - (6)].node) = node_assign_gen(parser, (yyvsp[(3) - (6)].node), node_newnode(parser, (NODE_ERRINFO), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
13106        (yyvsp[(5) - (6)].node) = block_append_gen(parser,(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].node));
13107    }
13108    (yyval.node) = node_newnode(parser, (NODE_RESBODY), (VALUE)((yyvsp[(6) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)((yyvsp[(2) - (6)].node)));
13109    fixpos((yyval.node), (yyvsp[(2) - (6)].node)?(yyvsp[(2) - (6)].node):(yyvsp[(5) - (6)].node));
13110
13111
13112
13113
13114
13115
13116
13117       ;}
13118     break;
13119
13120   case 408:
13121 # 3692 "parse.y"
13122     {
13123
13124    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
13125
13126
13127
13128       ;}
13129     break;
13130
13131   case 409:
13132 # 3700 "parse.y"
13133     {
13134
13135    if (!((yyval.node) = splat_array((yyvsp[(1) - (1)].node)))) (yyval.node) = (yyvsp[(1) - (1)].node);
13136
13137
13138
13139       ;}
13140     break;
13141
13142   case 411:
13143 # 3711 "parse.y"
13144     {
13145    (yyval.node) = (yyvsp[(2) - (2)].node);
13146       ;}
13147     break;
13148
13149   case 413:
13150 # 3718 "parse.y"
13151     {
13152
13153    (yyval.node) = (yyvsp[(2) - (2)].node);
13154
13155
13156
13157       ;}
13158     break;
13159
13160   case 416:
13161 # 3730 "parse.y"
13162     {
13163
13164    (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
13165
13166
13167
13168       ;}
13169     break;
13170
13171   case 418:
13172 # 3741 "parse.y"
13173     {
13174
13175    NODE *node = (yyvsp[(1) - (1)].node);
13176    if (!node) {
13177        node = node_newnode(parser, (NODE_STR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
13178    }
13179    else {
13180        node = evstr2dstr_gen(parser,node);
13181    }
13182    (yyval.node) = node;
13183
13184
13185
13186       ;}
13187     break;
13188
13189   case 421:
13190 # 3760 "parse.y"
13191     {
13192
13193    (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
13194
13195
13196
13197       ;}
13198     break;
13199
13200   case 422:
13201 # 3770 "parse.y"
13202     {
13203
13204    (yyval.node) = (yyvsp[(2) - (3)].node);
13205
13206
13207
13208       ;}
13209     break;
13210
13211   case 423:
13212 # 3780 "parse.y"
13213     {
13214
13215    NODE *node = (yyvsp[(2) - (3)].node);
13216    if (!node) {
13217        node = node_newnode(parser, (NODE_XSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
13218    }
13219    else {
13220        switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
13221          case NODE_STR:
13222     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_XSTR)<<8)&(((VALUE)0x7f)<<8)));
13223     break;
13224          case NODE_DSTR:
13225     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DXSTR)<<8)&(((VALUE)0x7f)<<8)));
13226     break;
13227          default:
13228     node = node_newnode(parser, (NODE_DXSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node), (VALUE)(1), (VALUE)(0))));
13229     break;
13230        }
13231    }
13232    (yyval.node) = node;
13233
13234
13235
13236       ;}
13237     break;
13238
13239   case 424:
13240 # 3807 "parse.y"
13241     {
13242
13243    int options = (yyvsp[(3) - (3)].num);
13244    NODE *node = (yyvsp[(2) - (3)].node);
13245                         NODE *list;
13246    if (!node) {
13247        node = node_newnode(parser, (NODE_LIT), (VALUE)(reg_compile_gen(parser, rb_enc_str_new(0,0,parser->enc), options)), (VALUE)(0), (VALUE)(0));
13248    }
13249    else switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
13250      case NODE_STR:
13251        {
13252     VALUE src = node->u1.value;
13253     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
13254     node->u1.value = reg_compile_gen(parser, src, options);
13255        }
13256        break;
13257      default:
13258        node = node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node), (VALUE)(1), (VALUE)(0))));
13259      case NODE_DSTR:
13260        if (options & (1<<16)) {
13261     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX_ONCE)<<8)&(((VALUE)0x7f)<<8)));
13262        }
13263        else {
13264     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX)<<8)&(((VALUE)0x7f)<<8)));
13265        }
13266        node->u2.id = options & 0xff;
13267                             reg_fragment_check_gen(parser, node->u1.value, options);
13268                             for (list = node->u3.node; list; list = list->u3.node) {
13269                                 if (((int) (((((struct RNode*)(list->u1.node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_STR) {
13270                                     reg_fragment_check_gen(parser, list->u1.node->u1.value, options);
13271                                 }
13272                             }
13273        break;
13274    }
13275    (yyval.node) = node;
13276
13277
13278
13279       ;}
13280     break;
13281
13282   case 425:
13283 # 3849 "parse.y"
13284     {
13285
13286    (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
13287
13288
13289
13290       ;}
13291     break;
13292
13293   case 426:
13294 # 3857 "parse.y"
13295     {
13296    (yyval.node) = (yyvsp[(2) - (3)].node);
13297       ;}
13298     break;
13299
13300   case 427:
13301 # 3863 "parse.y"
13302     {
13303
13304    (yyval.node) = 0;
13305
13306
13307
13308       ;}
13309     break;
13310
13311   case 428:
13312 # 3871 "parse.y"
13313     {
13314
13315    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),evstr2dstr_gen(parser,(yyvsp[(2) - (3)].node)));
13316
13317
13318
13319       ;}
13320     break;
13321
13322   case 430:
13323 # 3889 "parse.y"
13324     {
13325
13326    (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
13327
13328
13329
13330       ;}
13331     break;
13332
13333   case 431:
13334 # 3899 "parse.y"
13335     {
13336
13337    (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
13338
13339
13340
13341       ;}
13342     break;
13343
13344   case 432:
13345 # 3907 "parse.y"
13346     {
13347    (yyval.node) = (yyvsp[(2) - (3)].node);
13348       ;}
13349     break;
13350
13351   case 433:
13352 # 3913 "parse.y"
13353     {
13354
13355    (yyval.node) = 0;
13356
13357
13358
13359       ;}
13360     break;
13361
13362   case 434:
13363 # 3921 "parse.y"
13364     {
13365
13366    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
13367
13368
13369
13370       ;}
13371     break;
13372
13373   case 435:
13374 # 3931 "parse.y"
13375     {
13376
13377    (yyval.node) = 0;
13378
13379
13380
13381       ;}
13382     break;
13383
13384   case 436:
13385 # 3939 "parse.y"
13386     {
13387
13388    (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
13389
13390
13391
13392       ;}
13393     break;
13394
13395   case 437:
13396 # 3949 "parse.y"
13397     {
13398
13399    (yyval.node) = 0;
13400
13401
13402
13403       ;}
13404     break;
13405
13406   case 438:
13407 # 3957 "parse.y"
13408     {
13409
13410    (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
13411
13412
13413
13414       ;}
13415     break;
13416
13417   case 440:
13418 # 3968 "parse.y"
13419     {
13420    (yyval.node) = (parser->parser_lex_strterm);
13421    (parser->parser_lex_strterm) = 0;
13422    (parser->parser_lex_state) = EXPR_BEG;
13423       ;}
13424     break;
13425
13426   case 441:
13427 # 3974 "parse.y"
13428     {
13429
13430    (parser->parser_lex_strterm) = (yyvsp[(2) - (3)].node);
13431    (yyval.node) = node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)(((yyvsp[(3) - (3)].node))), (VALUE)(0));
13432
13433
13434
13435
13436       ;}
13437     break;
13438
13439   case 442:
13440 # 3984 "parse.y"
13441     {
13442    (yyval.node) = (parser->parser_lex_strterm);
13443    (parser->parser_lex_strterm) = 0;
13444    (parser->parser_lex_state) = EXPR_BEG;
13445    ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
13446    ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
13447       ;}
13448     break;
13449
13450   case 443:
13451 # 3992 "parse.y"
13452     {
13453    (parser->parser_lex_strterm) = (yyvsp[(2) - (4)].node);
13454    ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
13455    ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
13456
13457    if ((yyvsp[(3) - (4)].node)) (yyvsp[(3) - (4)].node)->flags &= ~(((VALUE)1)<<7);
13458    (yyval.node) = new_evstr_gen(parser,(yyvsp[(3) - (4)].node));
13459
13460
13461
13462       ;}
13463     break;
13464
13465   case 444:
13466 # 4006 "parse.y"
13467     {
13468
13469    (yyval.node) = node_newnode(parser, (NODE_GVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(rb_global_entry((yyvsp[(1) - (1)].id))));
13470
13471
13472
13473       ;}
13474     break;
13475
13476   case 445:
13477 # 4014 "parse.y"
13478     {
13479
13480    (yyval.node) = node_newnode(parser, (NODE_IVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
13481
13482
13483
13484       ;}
13485     break;
13486
13487   case 446:
13488 # 4022 "parse.y"
13489     {
13490
13491    (yyval.node) = node_newnode(parser, (NODE_CVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
13492
13493
13494
13495       ;}
13496     break;
13497
13498   case 448:
13499 # 4033 "parse.y"
13500     {
13501
13502    (parser->parser_lex_state) = EXPR_END;
13503    (yyval.id) = (yyvsp[(2) - (2)].id);
13504
13505
13506
13507
13508       ;}
13509     break;
13510
13511   case 453:
13512 # 4051 "parse.y"
13513     {
13514
13515    (parser->parser_lex_state) = EXPR_END;
13516    if (!((yyval.node) = (yyvsp[(2) - (3)].node))) {
13517        (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((__builtin_constant_p("") ? __extension__ (rb_intern2("", strlen(""))) : (rb_intern)("")))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
13518    }
13519    else {
13520        VALUE lit;
13521
13522        switch (((int) (((((struct RNode*)((yyval.node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
13523          case NODE_DSTR:
13524     ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSYM)<<8)&(((VALUE)0x7f)<<8)));
13525     break;
13526          case NODE_STR:
13527     lit = (yyval.node)->u1.value;
13528     (yyval.node)->u1.value = (((VALUE)(rb_intern_str(lit))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG);
13529     ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
13530     break;
13531          default:
13532     (yyval.node) = node_newnode(parser, (NODE_DSYM), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyval.node)), (VALUE)(1), (VALUE)(0))));
13533     break;
13534        }
13535    }
13536
13537
13538
13539
13540       ;}
13541     break;
13542
13543   case 456:
13544 # 4084 "parse.y"
13545     {
13546
13547    (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
13548
13549
13550
13551       ;}
13552     break;
13553
13554   case 457:
13555 # 4092 "parse.y"
13556     {
13557
13558    (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
13559
13560
13561
13562       ;}
13563     break;
13564
13565   case 463:
13566 # 4106 "parse.y"
13567     {(yyval.id) = 289;;}
13568     break;
13569
13570   case 464:
13571 # 4107 "parse.y"
13572     {(yyval.id) = 288;;}
13573     break;
13574
13575   case 465:
13576 # 4108 "parse.y"
13577     {(yyval.id) = 290;;}
13578     break;
13579
13580   case 466:
13581 # 4109 "parse.y"
13582     {(yyval.id) = 291;;}
13583     break;
13584
13585   case 467:
13586 # 4110 "parse.y"
13587     {(yyval.id) = 305;;}
13588     break;
13589
13590   case 468:
13591 # 4111 "parse.y"
13592     {(yyval.id) = 304;;}
13593     break;
13594
13595   case 469:
13596 # 4112 "parse.y"
13597     {(yyval.id) = 306;;}
13598     break;
13599
13600   case 470:
13601 # 4116 "parse.y"
13602     {
13603
13604    if (!((yyval.node) = gettable_gen(parser,(yyvsp[(1) - (1)].id)))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
13605
13606
13607
13608       ;}
13609     break;
13610
13611   case 471:
13612 # 4126 "parse.y"
13613     {
13614
13615    (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
13616
13617
13618
13619       ;}
13620     break;
13621
13622   case 474:
13623 # 4140 "parse.y"
13624     {
13625
13626    (yyval.node) = 0;
13627
13628
13629
13630       ;}
13631     break;
13632
13633   case 475:
13634 # 4148 "parse.y"
13635     {
13636    (parser->parser_lex_state) = EXPR_BEG;
13637       ;}
13638     break;
13639
13640   case 476:
13641 # 4152 "parse.y"
13642     {
13643    (yyval.node) = (yyvsp[(3) - (4)].node);
13644       ;}
13645     break;
13646
13647   case 477:
13648 # 4156 "parse.y"
13649     {
13650
13651    (yyerrstatus = 0);
13652    (yyval.node) = 0;
13653
13654
13655
13656
13657       ;}
13658     break;
13659
13660   case 478:
13661 # 4168 "parse.y"
13662     {
13663
13664    (yyval.node) = (yyvsp[(2) - (3)].node);
13665    (parser->parser_lex_state) = EXPR_BEG;
13666    (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
13667
13668
13669
13670
13671
13672       ;}
13673     break;
13674
13675   case 479:
13676 # 4180 "parse.y"
13677     {
13678    (yyval.node) = (yyvsp[(1) - (2)].node);
13679       ;}
13680     break;
13681
13682   case 480:
13683 # 4186 "parse.y"
13684     {
13685
13686    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
13687
13688
13689
13690       ;}
13691     break;
13692
13693   case 481:
13694 # 4194 "parse.y"
13695     {
13696
13697    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (8)].node),(yyvsp[(3) - (8)].node),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].node),(yyvsp[(8) - (8)].id));
13698
13699
13700
13701       ;}
13702     break;
13703
13704   case 482:
13705 # 4202 "parse.y"
13706     {
13707
13708    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
13709
13710
13711
13712       ;}
13713     break;
13714
13715   case 483:
13716 # 4210 "parse.y"
13717     {
13718
13719    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
13720
13721
13722
13723       ;}
13724     break;
13725
13726   case 484:
13727 # 4218 "parse.y"
13728     {
13729
13730    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
13731
13732
13733
13734       ;}
13735     break;
13736
13737   case 485:
13738 # 4226 "parse.y"
13739     {
13740
13741    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
13742
13743
13744
13745       ;}
13746     break;
13747
13748   case 486:
13749 # 4234 "parse.y"
13750     {
13751
13752    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
13753
13754
13755
13756       ;}
13757     break;
13758
13759   case 487:
13760 # 4242 "parse.y"
13761     {
13762
13763    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
13764
13765
13766
13767       ;}
13768     break;
13769
13770   case 488:
13771 # 4250 "parse.y"
13772     {
13773
13774    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
13775
13776
13777
13778       ;}
13779     break;
13780
13781   case 489:
13782 # 4258 "parse.y"
13783     {
13784
13785    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
13786
13787
13788
13789       ;}
13790     break;
13791
13792   case 490:
13793 # 4266 "parse.y"
13794     {
13795
13796    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
13797
13798
13799
13800       ;}
13801     break;
13802
13803   case 491:
13804 # 4274 "parse.y"
13805     {
13806
13807    (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
13808
13809
13810
13811       ;}
13812     break;
13813
13814   case 492:
13815 # 4282 "parse.y"
13816     {
13817
13818    (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
13819
13820
13821
13822       ;}
13823     break;
13824
13825   case 493:
13826 # 4290 "parse.y"
13827     {
13828
13829    (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
13830
13831
13832
13833       ;}
13834     break;
13835
13836   case 494:
13837 # 4298 "parse.y"
13838     {
13839
13840    (yyval.node) = new_args_gen(parser, 0,0,0,0,0);
13841
13842
13843
13844       ;}
13845     break;
13846
13847   case 495:
13848 # 4308 "parse.y"
13849     {
13850
13851    parser_yyerror(parser, "formal argument cannot be a constant");
13852    (yyval.id) = 0;
13853
13854
13855
13856       ;}
13857     break;
13858
13859   case 496:
13860 # 4317 "parse.y"
13861     {
13862
13863    parser_yyerror(parser, "formal argument cannot be an instance variable");
13864    (yyval.id) = 0;
13865
13866
13867
13868       ;}
13869     break;
13870
13871   case 497:
13872 # 4326 "parse.y"
13873     {
13874
13875    parser_yyerror(parser, "formal argument cannot be a global variable");
13876    (yyval.id) = 0;
13877
13878
13879
13880       ;}
13881     break;
13882
13883   case 498:
13884 # 4335 "parse.y"
13885     {
13886
13887    parser_yyerror(parser, "formal argument cannot be a class variable");
13888    (yyval.id) = 0;
13889
13890
13891
13892       ;}
13893     break;
13894
13895   case 500:
13896 # 4347 "parse.y"
13897     {
13898
13899    if (!((((yyvsp[(1) - (1)].id))>376)&&(((yyvsp[(1) - (1)].id))&0x07)==0x00))
13900        parser_yyerror(parser, "formal argument must be local variable");
13901    shadowing_lvar_gen(parser, (yyvsp[(1) - (1)].id));
13902
13903
13904    (yyval.id) = (yyvsp[(1) - (1)].id);
13905       ;}
13906     break;
13907
13908   case 501:
13909 # 4359 "parse.y"
13910     {
13911
13912    arg_var_gen(parser, (yyvsp[(1) - (1)].id));
13913    (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(1), (VALUE)(0));
13914
13915
13916       ;}
13917     break;
13918
13919   case 502:
13920 # 4367 "parse.y"
13921     {
13922
13923    ID tid = internal_id_gen(parser);
13924    arg_var_gen(parser, tid);
13925    if (dyna_in_block_gen(parser)) {
13926        (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
13927    }
13928    else {
13929        (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_LVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
13930    }
13931    (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(tid), (VALUE)(1), (VALUE)(0));
13932    (yyval.node)->u3.node = (yyvsp[(2) - (3)].node);
13933
13934
13935
13936       ;}
13937     break;
13938
13939   case 504:
13940 # 4393 "parse.y"
13941     {
13942
13943    (yyval.node) = (yyvsp[(1) - (3)].node);
13944    (yyval.node)->u2.argc++;
13945    (yyval.node)->u3.node = block_append_gen(parser,(yyval.node)->u3.node,(yyvsp[(3) - (3)].node)->u3.node);
13946    rb_gc_force_recycle((VALUE)(yyvsp[(3) - (3)].node));
13947
13948
13949
13950       ;}
13951     break;
13952
13953   case 505:
13954 # 4406 "parse.y"
13955     {
13956
13957    if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
13958        parser_yyerror(parser, "formal argument must be local variable");
13959    shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
13960    arg_var_gen(parser, (yyvsp[(1) - (3)].id));
13961    (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
13962
13963
13964
13965       ;}
13966     break;
13967
13968   case 506:
13969 # 4420 "parse.y"
13970     {
13971
13972    if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
13973        parser_yyerror(parser, "formal argument must be local variable");
13974    shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
13975    arg_var_gen(parser, (yyvsp[(1) - (3)].id));
13976    (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
13977
13978
13979
13980       ;}
13981     break;
13982
13983   case 507:
13984 # 4434 "parse.y"
13985     {
13986
13987    (yyval.node) = (yyvsp[(1) - (1)].node);
13988
13989
13990
13991       ;}
13992     break;
13993
13994   case 508:
13995 # 4442 "parse.y"
13996     {
13997
13998    NODE *opts = (yyvsp[(1) - (3)].node);
13999
14000    while (opts->u3.node) {
14001        opts = opts->u3.node;
14002    }
14003    opts->u3.node = (yyvsp[(3) - (3)].node);
14004    (yyval.node) = (yyvsp[(1) - (3)].node);
14005
14006
14007
14008       ;}
14009     break;
14010
14011   case 509:
14012 # 4458 "parse.y"
14013     {
14014
14015    (yyval.node) = (yyvsp[(1) - (1)].node);
14016
14017
14018
14019       ;}
14020     break;
14021
14022   case 510:
14023 # 4466 "parse.y"
14024     {
14025
14026    NODE *opts = (yyvsp[(1) - (3)].node);
14027
14028    while (opts->u3.node) {
14029        opts = opts->u3.node;
14030    }
14031    opts->u3.node = (yyvsp[(3) - (3)].node);
14032    (yyval.node) = (yyvsp[(1) - (3)].node);
14033
14034
14035
14036       ;}
14037     break;
14038
14039   case 513:
14040 # 4486 "parse.y"
14041     {
14042
14043    if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
14044        parser_yyerror(parser, "rest argument must be local variable");
14045    shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
14046    arg_var_gen(parser, (yyvsp[(2) - (2)].id));
14047    (yyval.id) = (yyvsp[(2) - (2)].id);
14048
14049
14050
14051       ;}
14052     break;
14053
14054   case 514:
14055 # 4498 "parse.y"
14056     {
14057
14058    (yyval.id) = internal_id_gen(parser);
14059    arg_var_gen(parser, (yyval.id));
14060
14061
14062
14063       ;}
14064     break;
14065
14066   case 517:
14067 # 4513 "parse.y"
14068     {
14069
14070    if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
14071        parser_yyerror(parser, "block argument must be local variable");
14072    else if (!dyna_in_block_gen(parser) && local_id_gen(parser, (yyvsp[(2) - (2)].id)))
14073        parser_yyerror(parser, "duplicated block argument name");
14074    shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
14075    arg_var_gen(parser, (yyvsp[(2) - (2)].id));
14076    (yyval.id) = (yyvsp[(2) - (2)].id);
14077
14078
14079
14080       ;}
14081     break;
14082
14083   case 518:
14084 # 4529 "parse.y"
14085     {
14086    (yyval.id) = (yyvsp[(2) - (2)].id);
14087       ;}
14088     break;
14089
14090   case 519:
14091 # 4533 "parse.y"
14092     {
14093
14094    (yyval.id) = 0;
14095
14096
14097
14098       ;}
14099     break;
14100
14101   case 520:
14102 # 4543 "parse.y"
14103     {
14104
14105    value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
14106    (yyval.node) = (yyvsp[(1) - (1)].node);
14107           if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
14108
14109
14110
14111       ;}
14112     break;
14113
14114   case 521:
14115 # 4552 "parse.y"
14116     {(parser->parser_lex_state) = EXPR_BEG;;}
14117     break;
14118
14119   case 522:
14120 # 4553 "parse.y"
14121     {
14122
14123    if ((yyvsp[(3) - (4)].node) == 0) {
14124        parser_yyerror(parser, "can't define singleton method for ().");
14125    }
14126    else {
14127        switch (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
14128          case NODE_STR:
14129          case NODE_DSTR:
14130          case NODE_XSTR:
14131          case NODE_DXSTR:
14132          case NODE_DREGX:
14133          case NODE_LIT:
14134          case NODE_ARRAY:
14135          case NODE_ZARRAY:
14136     parser_yyerror(parser, "can't define singleton method for literals");
14137          default:
14138     value_expr_gen(parser, ((yyvsp[(3) - (4)].node)) = remove_begin((yyvsp[(3) - (4)].node)));
14139     break;
14140        }
14141    }
14142    (yyval.node) = (yyvsp[(3) - (4)].node);
14143
14144
14145
14146       ;}
14147     break;
14148
14149   case 524:
14150 # 4583 "parse.y"
14151     {
14152
14153    (yyval.node) = (yyvsp[(1) - (2)].node);
14154
14155
14156
14157       ;}
14158     break;
14159
14160   case 526:
14161 # 4600 "parse.y"
14162     {
14163
14164    (yyval.node) = list_concat_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
14165
14166
14167
14168       ;}
14169     break;
14170
14171   case 527:
14172 # 4610 "parse.y"
14173     {
14174
14175    (yyval.node) = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1), (VALUE)(0)),(yyvsp[(3) - (3)].node));
14176
14177
14178
14179       ;}
14180     break;
14181
14182   case 528:
14183 # 4618 "parse.y"
14184     {
14185
14186    (yyval.node) = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (2)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0)),(yyvsp[(2) - (2)].node));
14187
14188
14189
14190       ;}
14191     break;
14192
14193   case 550:
14194 # 4674 "parse.y"
14195     {(yyerrstatus = 0);;}
14196     break;
14197
14198   case 553:
14199 # 4679 "parse.y"
14200     {(yyerrstatus = 0);;}
14201     break;
14202
14203   case 554:
14204 # 4683 "parse.y"
14205     {
14206
14207    (yyval.node) = 0;
14208
14209
14210
14211       ;}
14212     break;
14213 # 9722 "parse.c"
14214       default: break;
14215     }
14216   do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "-> $$ ="); yy_symbol_print (stderr, yyr1[yyn], &yyval, parser); fprintf (stderr, "\n"); } } while ((0));
14217
14218   (yyvsp -= (yylen), yyssp -= (yylen));
14219   yylen = 0;
14220   do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
14221
14222   *++yyvsp = yyval;
14223
14224
14225
14226
14227
14228
14229   yyn = yyr1[yyn];
14230
14231   yystate = yypgoto[yyn - 149] + *yyssp;
14232   if (0 <= yystate && yystate <= 10225 && yycheck[yystate] == *yyssp)
14233     yystate = yytable[yystate];
14234   else
14235     yystate = yydefgoto[yyn - 149];
14236
14237   goto yynewstate;
14238
14239
14240
14241
14242
14243 yyerrlab:
14244
14245   if (!yyerrstatus)
14246     {
14247       ++yynerrs;
14248
14249
14250
14251       {
14252  unsigned int yysize = yysyntax_error (0, yystate, yychar);
14253  if (yymsg_alloc < yysize && yymsg_alloc < ((unsigned int) -1))
14254    {
14255      unsigned int yyalloc = 2 * yysize;
14256      if (! (yysize <= yyalloc && yyalloc <= ((unsigned int) -1)))
14257        yyalloc = ((unsigned int) -1);
14258      if (yymsg != yymsgbuf)
14259        rb_parser_free(parser, yymsg);
14260      yymsg = (char *) rb_parser_malloc(parser, yyalloc);
14261      if (yymsg)
14262        yymsg_alloc = yyalloc;
14263      else
14264        {
14265   yymsg = yymsgbuf;
14266   yymsg_alloc = sizeof yymsgbuf;
14267        }
14268    }
14269
14270  if (0 < yysize && yysize <= yymsg_alloc)
14271    {
14272      (void) yysyntax_error (yymsg, yystate, yychar);
14273      parser_yyerror (parser, yymsg);
14274    }
14275  else
14276    {
14277      parser_yyerror (parser, "syntax error");
14278      if (yysize != 0)
14279        goto yyexhaustedlab;
14280    }
14281       }
14282
14283     }
14284
14285
14286
14287   if (yyerrstatus == 3)
14288     {
14289
14290
14291
14292       if (yychar <= 0)
14293  {
14294
14295    if (yychar == 0)
14296      goto yyabortlab;
14297  }
14298       else
14299  {
14300    yydestruct ("Error: discarding",
14301         yytoken, &yylval, parser);
14302    yychar = (-2);
14303  }
14304     }
14305
14306
14307
14308   goto yyerrlab1;
14309
14310
14311
14312
14313
14314 yyerrorlab:
14315
14316
14317
14318
14319   if ( 0)
14320      goto yyerrorlab;
14321
14322
14323
14324   (yyvsp -= (yylen), yyssp -= (yylen));
14325   yylen = 0;
14326   do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
14327   yystate = *yyssp;
14328   goto yyerrlab1;
14329
14330
14331
14332
14333
14334 yyerrlab1:
14335   yyerrstatus = 3;
14336
14337   for (;;)
14338     {
14339       yyn = yypact[yystate];
14340       if (yyn != -747)
14341  {
14342    yyn += 1;
14343    if (0 <= yyn && yyn <= 10225 && yycheck[yyn] == 1)
14344      {
14345        yyn = yytable[yyn];
14346        if (0 < yyn)
14347   break;
14348      }
14349  }
14350
14351
14352       if (yyssp == yyss)
14353  goto yyabortlab;
14354
14355
14356       yydestruct ("Error: popping",
14357     yystos[yystate], yyvsp, parser);
14358       (yyvsp -= (1), yyssp -= (1));
14359       yystate = *yyssp;
14360       do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
14361     }
14362
14363   if (yyn == 3)
14364     goto yyacceptlab;
14365
14366   *++yyvsp = yylval;
14367
14368
14369
14370   do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yystos[yyn], yyvsp, parser); fprintf (stderr, "\n"); } } while ((0));
14371
14372   yystate = yyn;
14373   goto yynewstate;
14374
14375
14376
14377
14378
14379 yyacceptlab:
14380   yyresult = 0;
14381   goto yyreturn;
14382
14383
14384
14385
14386 yyabortlab:
14387   yyresult = 1;
14388   goto yyreturn;
14389
14390
14391
14392
14393
14394 yyexhaustedlab:
14395   parser_yyerror (parser, "memory exhausted");
14396   yyresult = 2;
14397
14398
14399
14400 yyreturn:
14401   if (yychar != 0 && yychar != (-2))
14402      yydestruct ("Cleanup: discarding lookahead",
14403    yytoken, &yylval, parser);
14404
14405
14406   (yyvsp -= (yylen), yyssp -= (yylen));
14407   do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
14408   while (yyssp != yyss)
14409     {
14410       yydestruct ("Cleanup: popping",
14411     yystos[*yyssp], yyvsp, parser);
14412       (yyvsp -= (1), yyssp -= (1));
14413     }
14414
14415   if (yyss != yyssa)
14416     rb_parser_free(parser, yyss);
14417
14418
14419   if (yymsg != yymsgbuf)
14420     rb_parser_free(parser, yymsg);
14421
14422
14423   return (yyresult);
14424 }
14425 # 4691 "parse.y"
14426
14427
14428
14429
14430
14431
14432 static int parser_regx_options(struct parser_params*);
14433 static int parser_tokadd_string(struct parser_params*,int,int,int,long*,rb_encoding**);
14434 static void parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc);
14435 static int parser_parse_string(struct parser_params*,NODE*);
14436 static int parser_here_document(struct parser_params*,NODE*);
14437 # 4773 "parse.y"
14438 # 1 "./include/ruby/regex.h" 1
14439 # 29 "./include/ruby/regex.h"
14440 extern OnigEncoding OnigEncDefaultCharEncoding;
14441 # 4774 "parse.y" 2
14442 # 1 "./include/ruby/util.h" 1
14443 # 44 "./include/ruby/util.h"
14444 unsigned long ruby_scan_oct(const char *, int, int *);
14445
14446 unsigned long ruby_scan_hex(const char *, int, int *);
14447
14448
14449
14450
14451
14452 void ruby_qsort(void *, const int, const int,
14453   int (*)(const void *, const void *, void *), void *);
14454
14455 void ruby_setenv(const char *, const char *);
14456 void ruby_unsetenv(const char *);
14457
14458
14459
14460
14461
14462 char *ruby_strdup(const char *);
14463
14464
14465
14466 char *ruby_getcwd(void);
14467
14468
14469 double ruby_strtod(const char *, char **);
14470
14471
14472
14473 void ruby_each_words(const char *, void (*)(const char*, int, void*), void *);
14474 # 4775 "parse.y" 2
14475 # 4797 "parse.y"
14476 static int
14477 token_info_get_column(struct parser_params *parser, const char *token)
14478 {
14479     int column = 1;
14480     const char *p, *pend = (parser->parser_lex_p) - strlen(token);
14481     for (p = (parser->parser_lex_pbeg); p < pend; p++) {
14482  if (*p == '\t') {
14483      column = (((column - 1) / 8) + 1) * 8;
14484  }
14485  column++;
14486     }
14487     return column;
14488 }
14489
14490 static int
14491 token_info_has_nonspaces(struct parser_params *parser, const char *token)
14492 {
14493     const char *p, *pend = (parser->parser_lex_p) - strlen(token);
14494     for (p = (parser->parser_lex_pbeg); p < pend; p++) {
14495  if (*p != ' ' && *p != '\t') {
14496      return 1;
14497  }
14498     }
14499     return 0;
14500 }
14501
14502 static void
14503 token_info_push(struct parser_params *parser, const char *token)
14504 {
14505     token_info *ptinfo;
14506
14507     if ((parser->parser_compile_for_eval)) return;
14508     ptinfo = (token_info*)ruby_xmalloc(sizeof(token_info));
14509     ptinfo->token = token;
14510     ptinfo->linenum = (parser->parser_ruby_sourceline);
14511     ptinfo->column = token_info_get_column(parser, token);
14512     ptinfo->nonspc = token_info_has_nonspaces(parser, token);
14513     ptinfo->next = parser->parser_token_info;
14514
14515     parser->parser_token_info = ptinfo;
14516 }
14517
14518 static void
14519 token_info_pop(struct parser_params *parser, const char *token)
14520 {
14521     int linenum;
14522     token_info *ptinfo = parser->parser_token_info;
14523
14524     if (!ptinfo) return;
14525     parser->parser_token_info = ptinfo->next;
14526     if (token_info_get_column(parser, token) == ptinfo->column) {
14527  goto finish;
14528     }
14529     linenum = (parser->parser_ruby_sourceline);
14530     if (linenum == ptinfo->linenum) {
14531  goto finish;
14532     }
14533     if (token_info_has_nonspaces(parser, token) || ptinfo->nonspc) {
14534  goto finish;
14535     }
14536     rb_compile_warning((parser->parser_ruby_sourcefile), linenum,
14537                "mismatched indentations at '%s' with '%s' at %d",
14538         token, ptinfo->token, ptinfo->linenum);
14539
14540   finish:
14541     ruby_xfree(ptinfo);
14542 }
14543
14544
14545 static int
14546 parser_yyerror(struct parser_params *parser, const char *msg)
14547 {
14548
14549     const int max_line_margin = 30;
14550     const char *p, *pe;
14551     char *buf;
14552     int len, i;
14553
14554     parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", msg);
14555     p = (parser->parser_lex_p);
14556     while ((parser->parser_lex_pbeg) <= p) {
14557  if (*p == '\n') break;
14558  p--;
14559     }
14560     p++;
14561
14562     pe = (parser->parser_lex_p);
14563     while (pe < (parser->parser_lex_pend)) {
14564  if (*pe == '\n') break;
14565  pe++;
14566     }
14567
14568     len = pe - p;
14569     if (len > 4) {
14570  char *p2;
14571  const char *pre = "", *post = "";
14572
14573  if (len > max_line_margin * 2 + 10) {
14574      if ((parser->parser_lex_p) - p > max_line_margin) {
14575   p = (char *)onigenc_get_prev_char_head(rb_enc_get((parser->parser_lex_lastline)),(OnigUChar*)(p),(OnigUChar*)((parser->parser_lex_p) - max_line_margin),(OnigUChar*)(pe));
14576   pre = "...";
14577      }
14578      if (pe - (parser->parser_lex_p) > max_line_margin) {
14579   pe = (char *)onigenc_get_prev_char_head(rb_enc_get((parser->parser_lex_lastline)),(OnigUChar*)((parser->parser_lex_p)),(OnigUChar*)((parser->parser_lex_p) + max_line_margin),(OnigUChar*)(pe));
14580   post = "...";
14581      }
14582      len = pe - p;
14583  }
14584  buf = (char*)__builtin_alloca (sizeof(char)*(len+2));
14585  memcpy((buf), (p), sizeof(char)*(len));
14586  buf[len] = '\0';
14587  rb_compile_error_append("%s%s%s", pre, buf, post);
14588
14589  i = (parser->parser_lex_p) - p;
14590  p2 = buf; pe = buf + len;
14591
14592  while (p2 < pe) {
14593      if (*p2 != '\t') *p2 = ' ';
14594      p2++;
14595  }
14596  buf[i] = '^';
14597  buf[i+1] = '\0';
14598  rb_compile_error_append("%s%s", pre, buf);
14599     }
14600
14601
14602
14603     return 0;
14604 }
14605
14606 static void parser_prepare(struct parser_params *parser);
14607
14608
14609 VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
14610
14611 static VALUE
14612 debug_lines(const char *f)
14613 {
14614     if (rb_const_defined_at(rb_cObject, (__builtin_constant_p("SCRIPT_LINES__") ? __extension__ (rb_intern2("SCRIPT_LINES__", strlen("SCRIPT_LINES__"))) : (rb_intern)("SCRIPT_LINES__")))) {
14615  VALUE hash = rb_const_get_at(rb_cObject, (__builtin_constant_p("SCRIPT_LINES__") ? __extension__ (rb_intern2("SCRIPT_LINES__", strlen("SCRIPT_LINES__"))) : (rb_intern)("SCRIPT_LINES__")));
14616  if (rb_type((VALUE)(hash)) == RUBY_T_HASH) {
14617      VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
14618      VALUE lines = rb_ary_new();
14619      rb_hash_aset(hash, fname, lines);
14620      return lines;
14621  }
14622     }
14623     return 0;
14624 }
14625
14626 static VALUE
14627 coverage(const char *f, int n)
14628 {
14629     extern VALUE rb_get_coverages(void);
14630     VALUE coverages = rb_get_coverages();
14631     if ((((VALUE)(coverages) & ~((VALUE)RUBY_Qnil)) != 0) && ((struct RBasic*)(coverages))->klass == 0) {
14632  VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
14633  VALUE lines = rb_ary_new2(n);
14634  int i;
14635  ((struct RBasic*)(lines))->klass = 0;
14636  for (i = 0; i < n; i++) ((((struct RBasic*)(lines))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RArray*)(lines))->as.ary : ((struct RArray*)(lines))->as.heap.ptr)[i] = ((VALUE)RUBY_Qnil);
14637  ((struct RArray*)(lines))->as.heap.len = n;
14638  rb_hash_aset(coverages, fname, lines);
14639  return lines;
14640     }
14641     return 0;
14642 }
14643
14644 static int
14645 e_option_supplied(struct parser_params *parser)
14646 {
14647     if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && __builtin_constant_p ("-e") && (__s1_len = strlen ((parser->parser_ruby_sourcefile)), __s2_len = strlen ("-e"), (!((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && ((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) && (__s1_len = strlen ((parser->parser_ruby_sourcefile)), __s1_len < 4) ? (__builtin_constant_p ("-e") && ((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("-e"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("-e") && ((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) && (__s2_len = strlen ("-e"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && ((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("-e"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("-e"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("-e"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("-e"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e")))); }) == 0)
14648  return ((VALUE)RUBY_Qtrue);
14649     return ((VALUE)RUBY_Qfalse);
14650 }
14651
14652 static VALUE
14653 yycompile0(VALUE arg, int tracing)
14654 {
14655     int n;
14656     NODE *tree;
14657     struct parser_params *parser = (struct parser_params *)arg;
14658
14659     if (!(parser->parser_compile_for_eval) && rb_safe_level() == 0) {
14660  (parser->debug_lines) = debug_lines((parser->parser_ruby_sourcefile));
14661  if ((parser->debug_lines) && (parser->parser_ruby_sourceline) > 0) {
14662      VALUE str = rb_enc_str_new(0,0,parser->enc);
14663      n = (parser->parser_ruby_sourceline);
14664      do {
14665   rb_ary_push((parser->debug_lines), str);
14666      } while (--n);
14667  }
14668
14669  if (!e_option_supplied(parser)) {
14670      (parser->coverage) = coverage((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline));
14671  }
14672     }
14673
14674     parser_prepare(parser);
14675     (parser->parser_deferred_nodes) = 0;
14676     n = ruby_yyparse((void*)parser);
14677     (parser->debug_lines) = 0;
14678     (parser->coverage) = 0;
14679     (parser->parser_compile_for_eval) = 0;
14680
14681     (parser->parser_lex_strterm) = 0;
14682     (parser->parser_lex_p) = (parser->parser_lex_pbeg) = (parser->parser_lex_pend) = 0;
14683     (parser->parser_lex_lastline) = (parser->parser_lex_nextline) = 0;
14684     if (parser->nerr) {
14685  return 0;
14686     }
14687     tree = (parser->parser_eval_tree);
14688     if (!tree) {
14689  tree = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
14690     }
14691     if ((parser->parser_eval_tree_begin)) {
14692  NODE *scope = (parser->parser_eval_tree);
14693
14694         if (scope) {
14695      scope->u2.node = node_newnode(parser, (NODE_PRELUDE), (VALUE)((parser->parser_eval_tree_begin)), (VALUE)(scope->u2.node), (VALUE)(0));
14696  }
14697  tree = scope;
14698     }
14699     else {
14700  tree = (parser->parser_eval_tree);
14701     }
14702     return (VALUE)tree;
14703 }
14704
14705 static NODE*
14706 yycompile(struct parser_params *parser, const char *f, int line)
14707 {
14708     (parser->parser_ruby_sourcefile) = ruby_strdup(f);
14709     (parser->parser_ruby_sourceline) = line - 1;
14710     return (NODE *)ruby_suppress_tracing(yycompile0, (VALUE)parser, ((VALUE)RUBY_Qtrue));
14711 }
14712
14713
14714 static VALUE
14715 lex_get_str(struct parser_params *parser, VALUE s)
14716 {
14717     char *beg, *end, *pend;
14718
14719     beg = (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr);
14720     if ((parser->parser_lex_gets_ptr)) {
14721  if ((!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(s))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(s))->as.heap.len) == (parser->parser_lex_gets_ptr)) return ((VALUE)RUBY_Qnil);
14722  beg += (parser->parser_lex_gets_ptr);
14723     }
14724     pend = (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr) + (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(s))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(s))->as.heap.len);
14725     end = beg;
14726     while (end < pend) {
14727  if (*end++ == '\n') break;
14728     }
14729     (parser->parser_lex_gets_ptr) = end - (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr);
14730     return rb_enc_str_new(beg, end - beg, rb_enc_get(s));
14731 }
14732
14733 static VALUE
14734 lex_getline(struct parser_params *parser)
14735 {
14736     VALUE line = (*parser->parser_lex_gets)(parser, parser->parser_lex_input);
14737
14738     if ((parser->debug_lines) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
14739  rb_ary_push((parser->debug_lines), line);
14740     }
14741     if ((parser->coverage) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
14742  rb_ary_push((parser->coverage), ((VALUE)RUBY_Qnil));
14743     }
14744
14745     return line;
14746 }
14747
14748
14749 NODE*
14750 rb_compile_string(const char *f, VALUE s, int line)
14751 {
14752     VALUE volatile vparser = rb_parser_new();
14753
14754     return rb_parser_compile_string(vparser, f, s, line);
14755 }
14756
14757 NODE*
14758 rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
14759 {
14760     struct parser_params *parser;
14761     NODE *node;
14762     volatile VALUE tmp;
14763
14764     do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
14765     (parser->parser_lex_gets) = lex_get_str;
14766     (parser->parser_lex_gets_ptr) = 0;
14767     (parser->parser_lex_input) = s;
14768     (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
14769     (parser->parser_compile_for_eval) = rb_parse_in_eval();
14770
14771     node = yycompile(parser, f, line);
14772     tmp = vparser;
14773
14774     return node;
14775 }
14776
14777 NODE*
14778 rb_compile_cstr(const char *f, const char *s, int len, int line)
14779 {
14780     return rb_compile_string(f, rb_str_new(s, len), line);
14781 }
14782
14783 NODE*
14784 rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
14785 {
14786     return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
14787 }
14788
14789 static VALUE
14790 lex_io_gets(struct parser_params *parser, VALUE io)
14791 {
14792     return rb_io_gets(io);
14793 }
14794
14795 NODE*
14796 rb_compile_file(const char *f, VALUE file, int start)
14797 {
14798     VALUE volatile vparser = rb_parser_new();
14799
14800     return rb_parser_compile_file(vparser, f, file, start);
14801 }
14802
14803 NODE*
14804 rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
14805 {
14806     struct parser_params *parser;
14807     volatile VALUE tmp;
14808     NODE *node;
14809
14810     do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
14811     (parser->parser_lex_gets) = lex_io_gets;
14812     (parser->parser_lex_input) = file;
14813     (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
14814     (parser->parser_compile_for_eval) = rb_parse_in_eval();
14815
14816     node = yycompile(parser, f, start);
14817     tmp = vparser;
14818
14819     return node;
14820 }
14821 # 5151 "parse.y"
14822 enum string_type {
14823     str_squote = (0),
14824     str_dquote = (0x02),
14825     str_xquote = (0x02),
14826     str_regexp = (0x04|0x01|0x02),
14827     str_sword = (0x08),
14828     str_dword = (0x08|0x02),
14829     str_ssym = (0x10),
14830     str_dsym = (0x10|0x02)
14831 };
14832
14833 static VALUE
14834 parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *enc0)
14835 {
14836     VALUE str;
14837
14838     str = rb_enc_str_new(p, n, enc);
14839     if (!(func & 0x04) && ((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
14840  if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
14841  }
14842  else if (enc0 == rb_usascii_encoding() && enc != rb_utf8_encoding()) {
14843      rb_enc_associate(str, rb_ascii8bit_encoding());
14844  }
14845     }
14846
14847     return str;
14848 }
14849
14850
14851
14852
14853 static inline int
14854 parser_nextc(struct parser_params *parser)
14855 {
14856     int c;
14857
14858     if ((parser->parser_lex_p) == (parser->parser_lex_pend)) {
14859  VALUE v = (parser->parser_lex_nextline);
14860  (parser->parser_lex_nextline) = 0;
14861  if (!v) {
14862      if (parser->eofp)
14863   return -1;
14864
14865      if (!(parser->parser_lex_input) || ((VALUE)(v = lex_getline(parser)) == ((VALUE)RUBY_Qnil))) {
14866   parser->eofp = ((VALUE)RUBY_Qtrue);
14867   (parser->parser_lex_p = parser->parser_lex_pend);
14868   return -1;
14869      }
14870  }
14871  {
14872 # 5216 "parse.y"
14873      if ((parser->parser_heredoc_end) > 0) {
14874   (parser->parser_ruby_sourceline) = (parser->parser_heredoc_end);
14875   (parser->parser_heredoc_end) = 0;
14876      }
14877      (parser->parser_ruby_sourceline)++;
14878      parser->line_count++;
14879      (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (!(((struct RBasic*)(v))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(v))->as.ary : ((struct RString*)(v))->as.heap.ptr);
14880      (parser->parser_lex_pend) = (parser->parser_lex_p) + (!(((struct RBasic*)(v))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(v))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(v))->as.heap.len);
14881
14882
14883
14884      (parser->parser_lex_lastline) = v;
14885  }
14886     }
14887     c = (unsigned char)*(parser->parser_lex_p)++;
14888     if (c == '\r' && ((parser->parser_lex_p) < (parser->parser_lex_pend) && ('\n') == *(parser->parser_lex_p))) {
14889  (parser->parser_lex_p)++;
14890  c = '\n';
14891     }
14892
14893     return c;
14894 }
14895
14896 static void
14897 parser_pushback(struct parser_params *parser, int c)
14898 {
14899     if (c == -1) return;
14900     (parser->parser_lex_p)--;
14901     if ((parser->parser_lex_p) > (parser->parser_lex_pbeg) && (parser->parser_lex_p)[0] == '\n' && (parser->parser_lex_p)[-1] == '\r') {
14902  (parser->parser_lex_p)--;
14903     }
14904 }
14905 # 5256 "parse.y"
14906 static char*
14907 parser_newtok(struct parser_params *parser)
14908 {
14909     (parser->parser_tokidx) = 0;
14910     if (!(parser->parser_tokenbuf)) {
14911  (parser->parser_toksiz) = 60;
14912  (parser->parser_tokenbuf) = (char*)ruby_xmalloc2((60),sizeof(char));
14913     }
14914     if ((parser->parser_toksiz) > 4096) {
14915  (parser->parser_toksiz) = 60;
14916  ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),(60),sizeof(char));
14917     }
14918     return (parser->parser_tokenbuf);
14919 }
14920
14921 static char *
14922 parser_tokspace(struct parser_params *parser, int n)
14923 {
14924     (parser->parser_tokidx) += n;
14925
14926     if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
14927  do {(parser->parser_toksiz) *= 2;} while ((parser->parser_toksiz) < (parser->parser_tokidx));
14928  ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
14929     }
14930     return &(parser->parser_tokenbuf)[(parser->parser_tokidx)-n];
14931 }
14932
14933 static void
14934 parser_tokadd(struct parser_params *parser, int c)
14935 {
14936     (parser->parser_tokenbuf)[(parser->parser_tokidx)++] = (char)c;
14937     if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
14938  (parser->parser_toksiz) *= 2;
14939  ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
14940     }
14941 }
14942
14943 static int
14944 parser_tok_hex(struct parser_params *parser, int *numlen)
14945 {
14946     int c;
14947
14948     c = ruby_scan_hex((parser->parser_lex_p), 2, numlen);
14949     if (!*numlen) {
14950  parser_yyerror(parser, "invalid hex escape");
14951  return 0;
14952     }
14953     (parser->parser_lex_p) += *numlen;
14954     return c;
14955 }
14956
14957
14958
14959 static int
14960 parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp,
14961                    int string_literal, int symbol_literal, int regexp_literal)
14962 {
14963
14964
14965
14966
14967
14968
14969
14970     int codepoint;
14971     int numlen;
14972
14973     if (regexp_literal) { parser_tokadd(parser, '\\'); parser_tokadd(parser, 'u'); }
14974
14975     if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('{') == *(parser->parser_lex_p))) {
14976  do {
14977             if (regexp_literal) { parser_tokadd(parser, *(parser->parser_lex_p)); }
14978      parser_nextc(parser);
14979      codepoint = ruby_scan_hex((parser->parser_lex_p), 6, &numlen);
14980      if (numlen == 0) {
14981   parser_yyerror(parser, "invalid Unicode escape");
14982   return 0;
14983      }
14984      if (codepoint > 0x10ffff) {
14985   parser_yyerror(parser, "invalid Unicode codepoint (too large)");
14986   return 0;
14987      }
14988      (parser->parser_lex_p) += numlen;
14989             if (regexp_literal) {
14990                 memcpy(parser_tokspace(parser, numlen), (parser->parser_lex_p) - (numlen), (numlen));
14991             }
14992             else if (codepoint >= 0x80) {
14993   *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
14994   if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
14995      }
14996      else if (string_literal) {
14997   if (codepoint == 0 && symbol_literal) {
14998       parser_yyerror(parser, "symbol cannot contain '\\u{0}'");
14999       return 0;
15000   }
15001
15002   parser_tokadd(parser, codepoint);
15003      }
15004  } while (string_literal && (((parser->parser_lex_p) < (parser->parser_lex_pend) && (' ') == *(parser->parser_lex_p)) || ((parser->parser_lex_p) < (parser->parser_lex_pend) && ('\t') == *(parser->parser_lex_p))));
15005
15006  if (!((parser->parser_lex_p) < (parser->parser_lex_pend) && ('}') == *(parser->parser_lex_p))) {
15007      parser_yyerror(parser, "unterminated Unicode escape");
15008      return 0;
15009  }
15010
15011         if (regexp_literal) { parser_tokadd(parser, '}'); }
15012  parser_nextc(parser);
15013     }
15014     else {
15015  codepoint = ruby_scan_hex((parser->parser_lex_p), 4, &numlen);
15016  if (numlen < 4) {
15017      parser_yyerror(parser, "invalid Unicode escape");
15018      return 0;
15019  }
15020  (parser->parser_lex_p) += 4;
15021         if (regexp_literal) {
15022             memcpy(parser_tokspace(parser, 4), (parser->parser_lex_p) - (4), (4));
15023         }
15024  else if (codepoint >= 0x80) {
15025      *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
15026      if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
15027  }
15028  else if (string_literal) {
15029      if (codepoint == 0 && symbol_literal) {
15030   parser_yyerror(parser, "symbol cannot contain '\\u0000'");
15031   return 0;
15032      }
15033
15034      parser_tokadd(parser, codepoint);
15035  }
15036     }
15037
15038     return codepoint;
15039 }
15040
15041
15042
15043
15044 static int
15045 parser_read_escape(struct parser_params *parser, int flags,
15046      rb_encoding **encp)
15047 {
15048     int c;
15049     int numlen;
15050
15051     switch (c = parser_nextc(parser)) {
15052       case '\\':
15053  return c;
15054
15055       case 'n':
15056  return '\n';
15057
15058       case 't':
15059  return '\t';
15060
15061       case 'r':
15062  return '\r';
15063
15064       case 'f':
15065  return '\f';
15066
15067       case 'v':
15068  return '\13';
15069
15070       case 'a':
15071  return '\007';
15072
15073       case 'e':
15074  return 033;
15075
15076       case '0': case '1': case '2': case '3':
15077       case '4': case '5': case '6': case '7':
15078  if (flags & (1|2)) goto eof;
15079  {
15080      int numlen;
15081
15082      parser_pushback(parser, c);
15083      c = ruby_scan_oct((parser->parser_lex_p), 3, &numlen);
15084      (parser->parser_lex_p) += numlen;
15085  }
15086  return c;
15087
15088       case 'x':
15089  if (flags & (1|2)) goto eof;
15090  c = parser_tok_hex(parser, &numlen);
15091  if (numlen == 0) return 0;
15092  return c;
15093
15094       case 'b':
15095  return '\010';
15096
15097       case 's':
15098  return ' ';
15099
15100       case 'M':
15101  if (flags & 2) goto eof;
15102  if ((c = parser_nextc(parser)) != '-') {
15103      parser_pushback(parser, c);
15104      goto eof;
15105  }
15106  if ((c = parser_nextc(parser)) == '\\') {
15107      return parser_read_escape(parser, flags|2, encp) | 0x80;
15108  }
15109  else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
15110  else {
15111      return ((c & 0xff) | 0x80);
15112  }
15113
15114       case 'C':
15115  if ((c = parser_nextc(parser)) != '-') {
15116      parser_pushback(parser, c);
15117      goto eof;
15118  }
15119       case 'c':
15120  if (flags & 1) goto eof;
15121  if ((c = parser_nextc(parser))== '\\') {
15122      c = parser_read_escape(parser, flags|1, encp);
15123  }
15124  else if (c == '?')
15125      return 0177;
15126  else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
15127  return c & 0x9f;
15128
15129       eof:
15130       case -1:
15131         parser_yyerror(parser, "Invalid escape character syntax");
15132  return '\0';
15133
15134       default:
15135  return c;
15136     }
15137 }
15138
15139 static void
15140 parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc)
15141 {
15142     int len = rb_enc_codelen(c, enc);
15143     (enc)->code_to_mbc(c,(OnigUChar*)(parser_tokspace(parser, len)),enc);
15144 }
15145
15146 static int
15147 parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
15148 {
15149     int c;
15150     int flags = 0;
15151
15152   first:
15153     switch (c = parser_nextc(parser)) {
15154       case '\n':
15155  return 0;
15156
15157       case '0': case '1': case '2': case '3':
15158       case '4': case '5': case '6': case '7':
15159  if (flags & (1|2)) goto eof;
15160  {
15161      int numlen;
15162      int oct;
15163
15164      oct = ruby_scan_oct(--(parser->parser_lex_p), 3, &numlen);
15165      if (numlen == 0) goto eof;
15166      (parser->parser_lex_p) += numlen;
15167      memcpy(parser_tokspace(parser, numlen + 1), (parser->parser_lex_p) - (numlen + 1), (numlen + 1));
15168  }
15169  return 0;
15170
15171       case 'x':
15172  if (flags & (1|2)) goto eof;
15173  {
15174      int numlen;
15175      int hex;
15176
15177      hex = parser_tok_hex(parser, &numlen);
15178      if (numlen == 0) goto eof;
15179      memcpy(parser_tokspace(parser, numlen + 2), (parser->parser_lex_p) - (numlen + 2), (numlen + 2));
15180  }
15181  return 0;
15182
15183       case 'M':
15184  if (flags & 2) goto eof;
15185  if ((c = parser_nextc(parser)) != '-') {
15186      parser_pushback(parser, c);
15187      goto eof;
15188  }
15189  memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
15190  flags |= 2;
15191  goto escaped;
15192
15193       case 'C':
15194  if (flags & 1) goto eof;
15195  if ((c = parser_nextc(parser)) != '-') {
15196      parser_pushback(parser, c);
15197      goto eof;
15198  }
15199  memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
15200  goto escaped;
15201
15202       case 'c':
15203  if (flags & 1) goto eof;
15204  memcpy(parser_tokspace(parser, 2), (parser->parser_lex_p) - (2), (2));
15205  flags |= 1;
15206       escaped:
15207  if ((c = parser_nextc(parser)) == '\\') {
15208      goto first;
15209  }
15210  else if (c == -1) goto eof;
15211  parser_tokadd(parser, c);
15212  return 0;
15213
15214       eof:
15215       case -1:
15216         parser_yyerror(parser, "Invalid escape character syntax");
15217  return -1;
15218
15219       default:
15220         parser_tokadd(parser, '\\');
15221  parser_tokadd(parser, c);
15222     }
15223     return 0;
15224 }
15225
15226 extern int rb_char_to_option_kcode(int c, int *option, int *kcode);
15227
15228 static int
15229 parser_regx_options(struct parser_params *parser)
15230 {
15231     int kcode = 0;
15232     int options = 0;
15233     int c, opt, kc;
15234
15235     parser_newtok(parser);
15236     while (c = parser_nextc(parser), rb_isalpha((unsigned char)(c))) {
15237         if (c == 'o') {
15238             options |= (1<<16);
15239         }
15240         else if (rb_char_to_option_kcode(c, &opt, &kc)) {
15241             options |= opt;
15242      if (kc >= 0) kcode = c;
15243         }
15244         else {
15245      parser_tokadd(parser, c);
15246         }
15247     }
15248     parser_pushback(parser, c);
15249     if ((parser->parser_tokidx)) {
15250  ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
15251  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unknown regexp option%s - %s",
15252         (parser->parser_tokidx) > 1 ? "s" : "", (parser->parser_tokenbuf));
15253     }
15254     return options | (((kcode)&0xff)<<8);
15255 }
15256
15257 static void
15258 dispose_string(VALUE str)
15259 {
15260
15261     if (((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1)))
15262  ruby_xfree((!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr));
15263     rb_gc_force_recycle(str);
15264 }
15265
15266 static int
15267 parser_tokadd_mbchar(struct parser_params *parser, int c)
15268 {
15269     int len = rb_enc_precise_mbclen(((parser->parser_lex_p)-1),(parser->parser_lex_pend),parser->enc);
15270     if (!(0 < (len))) {
15271  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid multibyte char (%s)", (parser->enc->name));
15272  return -1;
15273     }
15274     parser_tokadd(parser, c);
15275     (parser->parser_lex_p) += --len;
15276     if (len > 0) memcpy(parser_tokspace(parser, len), (parser->parser_lex_p) - (len), (len));
15277     return c;
15278 }
15279
15280
15281
15282 static int
15283 parser_tokadd_string(struct parser_params *parser,
15284        int func, int term, int paren, long *nest,
15285        rb_encoding **encp)
15286 {
15287     int c;
15288     int has_nonascii = 0;
15289     rb_encoding *enc = *encp;
15290     char *errbuf = 0;
15291     static const char mixed_msg[] = "%s mixed within %s source";
15292 # 5660 "parse.y"
15293     while ((c = parser_nextc(parser)) != -1) {
15294  if (paren && c == paren) {
15295      ++*nest;
15296  }
15297  else if (c == term) {
15298      if (!nest || !*nest) {
15299   parser_pushback(parser, c);
15300   break;
15301      }
15302      --*nest;
15303  }
15304  else if ((func & 0x02) && c == '#' && (parser->parser_lex_p) < (parser->parser_lex_pend)) {
15305      int c2 = *(parser->parser_lex_p);
15306      if (c2 == '$' || c2 == '@' || c2 == '{') {
15307   parser_pushback(parser, c);
15308   break;
15309      }
15310  }
15311  else if (c == '\\') {
15312      const char *beg = (parser->parser_lex_p) - 1;
15313      c = parser_nextc(parser);
15314      switch (c) {
15315        case '\n':
15316   if (func & 0x08) break;
15317   if (func & 0x02) continue;
15318   parser_tokadd(parser, '\\');
15319   break;
15320
15321        case '\\':
15322   if (func & 0x01) parser_tokadd(parser, c);
15323   break;
15324
15325        case 'u':
15326   if ((func & 0x02) == 0) {
15327       parser_tokadd(parser, '\\');
15328       break;
15329   }
15330   parser_tokadd_utf8(parser, &enc, 1,
15331        func & 0x10,
15332                                    func & 0x04);
15333   if (has_nonascii && enc != *encp) {
15334       do { const char *pos = (parser->parser_lex_p); (parser->parser_lex_p) = beg; if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); }; (parser->parser_lex_p) = pos; } while (0);
15335   }
15336   continue;
15337
15338        default:
15339   if (func & 0x04) {
15340       parser_pushback(parser, c);
15341       if ((c = parser_tokadd_escape(parser, &enc)) < 0)
15342    return -1;
15343       if (has_nonascii && enc != *encp) {
15344    do { const char *pos = (parser->parser_lex_p); (parser->parser_lex_p) = beg; if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); }; (parser->parser_lex_p) = pos; } while (0);
15345       }
15346       continue;
15347   }
15348   else if (func & 0x02) {
15349       parser_pushback(parser, c);
15350       if (func & 0x01) parser_tokadd(parser, '\\');
15351       c = parser_read_escape(parser, 0, &enc);
15352   }
15353   else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
15354
15355   }
15356   else if (c != term && !(paren && c == paren)) {
15357       parser_tokadd(parser, '\\');
15358   }
15359      }
15360  }
15361  else if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
15362      has_nonascii = 1;
15363      if (enc != *encp) {
15364   if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); };
15365   continue;
15366      }
15367      if (parser_tokadd_mbchar(parser, c) == -1) return -1;
15368      continue;
15369  }
15370  else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
15371      parser_pushback(parser, c);
15372      break;
15373  }
15374  if (!c && (func & 0x10)) {
15375      func &= ~0x10;
15376      parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "symbol cannot contain '\\0'");
15377      continue;
15378  }
15379         if (c & 0x80) {
15380             has_nonascii = 1;
15381      if (enc != *encp) {
15382   if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); };
15383   continue;
15384      }
15385         }
15386  parser_tokadd(parser, c);
15387     }
15388     *encp = enc;
15389     return c;
15390 }
15391
15392
15393
15394
15395 static int
15396 parser_parse_string(struct parser_params *parser, NODE *quote)
15397 {
15398     int func = quote->u1.id;
15399     int term = ((signed short)(quote)->u2.id);
15400     int paren = (char)((quote)->u2.id >> 8*2);
15401     int c, space = 0;
15402     rb_encoding *enc = parser->enc;
15403
15404     if (func == -1) return 361;
15405     c = parser_nextc(parser);
15406     if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
15407  do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
15408  space = 1;
15409     }
15410     if (c == term && !quote->u3.cnt) {
15411  if (func & 0x08) {
15412      quote->u1.id = -1;
15413      return ' ';
15414  }
15415  if (!(func & 0x04)) return 361;
15416         (*((YYSTYPE*)(parser->parser_yylval))).num = parser_regx_options(parser);
15417  return 320;
15418     }
15419     if (space) {
15420  parser_pushback(parser, c);
15421  return ' ';
15422     }
15423     parser_newtok(parser);
15424     if ((func & 0x02) && c == '#') {
15425  switch (c = parser_nextc(parser)) {
15426    case '$':
15427    case '@':
15428      parser_pushback(parser, c);
15429      return 360;
15430    case '{':
15431      return 359;
15432  }
15433  parser_tokadd(parser, '#');
15434     }
15435     parser_pushback(parser, c);
15436     if (parser_tokadd_string(parser,func,term,paren,&quote->u3.cnt,&enc) == -1) {
15437
15438  (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(quote)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
15439  if (func & 0x04) {
15440      if (parser->eofp)
15441   parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated regexp meets end of file");
15442      return 320;
15443  }
15444  else {
15445      if (parser->eofp)
15446   parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated string meets end of file");
15447      return 361;
15448  }
15449     }
15450
15451     ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
15452     (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc)), (VALUE)(0), (VALUE)(0));
15453     return 316;
15454 }
15455
15456 static int
15457 parser_heredoc_identifier(struct parser_params *parser)
15458 {
15459     int c = parser_nextc(parser), term, func = 0, len;
15460
15461     if (c == '-') {
15462  c = parser_nextc(parser);
15463  func = 0x20;
15464     }
15465     switch (c) {
15466       case '\'':
15467  func |= str_squote; goto quoted;
15468       case '"':
15469  func |= str_dquote; goto quoted;
15470       case '`':
15471  func |= str_xquote;
15472       quoted:
15473  parser_newtok(parser);
15474  parser_tokadd(parser, func);
15475  term = c;
15476  while ((c = parser_nextc(parser)) != -1 && c != term) {
15477      if (parser_tokadd_mbchar(parser, c) == -1) return 0;
15478  }
15479  if (c == -1) {
15480      parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated here document identifier");
15481      return 0;
15482  }
15483  break;
15484
15485       default:
15486  if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
15487      parser_pushback(parser, c);
15488      if (func & 0x20) {
15489   parser_pushback(parser, '-');
15490      }
15491      return 0;
15492  }
15493  parser_newtok(parser);
15494  term = '"';
15495  parser_tokadd(parser, func |= str_dquote);
15496  do {
15497      if (parser_tokadd_mbchar(parser, c) == -1) return 0;
15498  } while ((c = parser_nextc(parser)) != -1 && (!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128))));
15499  parser_pushback(parser, c);
15500  break;
15501     }
15502
15503     ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
15504
15505
15506
15507     len = (parser->parser_lex_p) - (parser->parser_lex_pbeg);
15508     (parser->parser_lex_p = parser->parser_lex_pend);
15509     (parser->parser_lex_strterm) = node_newnode(parser, NODE_ARRAY, rb_enc_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),parser->enc), len, (parser->parser_lex_lastline));
15510
15511
15512
15513     ((struct RNode*)((parser->parser_lex_strterm)))->flags=((((struct RNode*)((parser->parser_lex_strterm)))->flags&~(-1<<(8 +7)))|((((parser->parser_ruby_sourceline))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
15514
15515
15516
15517     return term == '`' ? 355 : 354;
15518 }
15519
15520 static void
15521 parser_heredoc_restore(struct parser_params *parser, NODE *here)
15522 {
15523     VALUE line;
15524
15525
15526
15527
15528
15529
15530
15531     line = here->u3.value;
15532     (parser->parser_lex_lastline) = line;
15533     (parser->parser_lex_pbeg) = (!(((struct RBasic*)(line))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(line))->as.ary : ((struct RString*)(line))->as.heap.ptr);
15534     (parser->parser_lex_pend) = (parser->parser_lex_pbeg) + (!(((struct RBasic*)(line))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(line))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(line))->as.heap.len);
15535     (parser->parser_lex_p) = (parser->parser_lex_pbeg) + here->u2.argc;
15536     (parser->parser_heredoc_end) = (parser->parser_ruby_sourceline);
15537     (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(here)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
15538     dispose_string(here->u1.value);
15539     rb_gc_force_recycle((VALUE)here);
15540
15541
15542
15543 }
15544
15545 static int
15546 parser_whole_match_p(struct parser_params *parser,
15547     const char *eos, int len, int indent)
15548 {
15549     const char *p = (parser->parser_lex_pbeg);
15550     int n;
15551
15552     if (indent) {
15553  while (*p && rb_isspace((unsigned char)(*p))) p++;
15554     }
15555     n= (parser->parser_lex_pend) - (p + len);
15556     if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return ((VALUE)RUBY_Qfalse);
15557     if ((__extension__ (__builtin_constant_p (len) && ((__builtin_constant_p (eos) && strlen (eos) < ((size_t) (len))) || (__builtin_constant_p (p) && strlen (p) < ((size_t) (len)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (eos) && __builtin_constant_p (p) && (__s1_len = strlen (eos), __s2_len = strlen (p), (!((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) || __s2_len >= 4)) ? __builtin_strcmp (eos, p) : (__builtin_constant_p (eos) && ((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) && (__s1_len = strlen (eos), __s1_len < 4) ? (__builtin_constant_p (p) && ((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) ? __builtin_strcmp (eos, p) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (p); register int __result = (((__const unsigned char *) (__const char *) (eos))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (eos))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (eos))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (eos))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (p) && ((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) && (__s2_len = strlen (p), __s2_len < 4) ? (__builtin_constant_p (eos) && ((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) ? __builtin_strcmp (eos, p) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (eos); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (p))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (p))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (p))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (p))[3]); } } __result; }))) : __builtin_strcmp (eos, p)))); }) : strncmp (eos, p, len))) == 0) return ((VALUE)RUBY_Qtrue);
15558     return ((VALUE)RUBY_Qfalse);
15559 }
15560
15561 static int
15562 parser_here_document(struct parser_params *parser, NODE *here)
15563 {
15564     int c, func, indent = 0;
15565     const char *eos, *p, *pend;
15566     long len;
15567     VALUE str = 0;
15568
15569     eos = (!(((struct RBasic*)(here->u1.value))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(here->u1.value))->as.ary : ((struct RString*)(here->u1.value))->as.heap.ptr);
15570     len = (!(((struct RBasic*)(here->u1.value))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(here->u1.value))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(here->u1.value))->as.heap.len) - 1;
15571     indent = (func = *eos++) & 0x20;
15572
15573     if ((c = parser_nextc(parser)) == -1) {
15574       error:
15575  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "can't find string \"%s\" anywhere before EOF", eos);
15576       restore:
15577  parser_heredoc_restore(parser,(parser->parser_lex_strterm));
15578  (parser->parser_lex_strterm) = 0;
15579  return 0;
15580     }
15581     if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,eos,len,indent)) {
15582  parser_heredoc_restore(parser,(parser->parser_lex_strterm));
15583  return 361;
15584     }
15585
15586     if (!(func & 0x02)) {
15587  do {
15588      p = (!(((struct RBasic*)((parser->parser_lex_lastline)))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)((parser->parser_lex_lastline)))->as.ary : ((struct RString*)((parser->parser_lex_lastline)))->as.heap.ptr);
15589      pend = (parser->parser_lex_pend);
15590      if (pend > p) {
15591   switch (pend[-1]) {
15592     case '\n':
15593       if (--pend == p || pend[-1] != '\r') {
15594    pend++;
15595    break;
15596       }
15597     case '\r':
15598       --pend;
15599   }
15600      }
15601      if (str)
15602   rb_str_cat(str, p, pend - p);
15603      else
15604   str = rb_enc_str_new((p),(pend - p),parser->enc);
15605      if (pend < (parser->parser_lex_pend)) rb_str_cat(str, "\n", 1);
15606      (parser->parser_lex_p = parser->parser_lex_pend);
15607      if (parser_nextc(parser) == -1) {
15608   if (str) dispose_string(str);
15609   goto error;
15610      }
15611  } while (!parser_whole_match_p(parser,eos,len,indent));
15612     }
15613     else {
15614
15615  rb_encoding *enc = parser->enc;
15616  parser_newtok(parser);
15617  if (c == '#') {
15618      switch (c = parser_nextc(parser)) {
15619        case '$':
15620        case '@':
15621   parser_pushback(parser, c);
15622   return 360;
15623        case '{':
15624   return 359;
15625      }
15626      parser_tokadd(parser, '#');
15627  }
15628  do {
15629      parser_pushback(parser, c);
15630      if ((c = parser_tokadd_string(parser,func,'\n',0,((void *)0),&enc)) == -1) {
15631   if (parser->eofp) goto error;
15632   goto restore;
15633      }
15634      if (c != '\n') {
15635   (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc)), (VALUE)(0), (VALUE)(0));
15636   return 316;
15637      }
15638      parser_tokadd(parser, parser_nextc(parser));
15639
15640      if ((c = parser_nextc(parser)) == -1) goto error;
15641  } while (!parser_whole_match_p(parser,eos,len,indent));
15642  str = parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc);
15643     }
15644     parser_heredoc_restore(parser,(parser->parser_lex_strterm));
15645     (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (-1), (0) | ((0) << (8 * 2)), 0);
15646     (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(str), (VALUE)(0), (VALUE)(0));
15647     return 316;
15648 }
15649
15650 # 1 "lex.c" 1
15651 # 1 "keywords"
15652
15653 struct kwtable {const char *name; int id[2]; enum lex_state_e state;};
15654 const struct kwtable *rb_reserved_word(const char *, unsigned int);
15655 # 7 "keywords"
15656 struct kwtable;
15657 # 17 "keywords"
15658 __inline
15659
15660
15661
15662
15663
15664 static unsigned int
15665 hash (str, len)
15666      register const char *str;
15667      register unsigned int len;
15668 {
15669   static const unsigned char asso_values[] =
15670     {
15671       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15672       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15673       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15674       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15675       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15676       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15677       51, 51, 51, 26, 51, 51, 14, 51, 16, 8,
15678       11, 13, 51, 51, 51, 51, 10, 51, 13, 51,
15679       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15680       51, 51, 51, 51, 51, 11, 51, 13, 1, 26,
15681        4, 1, 8, 28, 51, 23, 51, 1, 1, 27,
15682        5, 19, 21, 51, 8, 3, 3, 11, 51, 21,
15683       24, 16, 51, 51, 51, 51, 51, 51, 51, 51,
15684       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15685       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15686       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15687       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15688       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15689       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15690       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15691       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15692       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15693       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15694       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15695       51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
15696       51, 51, 51, 51, 51, 51
15697     };
15698   register int hval = len;
15699
15700   switch (hval)
15701     {
15702       default:
15703         hval += asso_values[(unsigned char)str[2]];
15704
15705       case 2:
15706       case 1:
15707         hval += asso_values[(unsigned char)str[0]];
15708         break;
15709     }
15710   return hval + asso_values[(unsigned char)str[len - 1]];
15711 }
15712
15713
15714 __inline
15715
15716
15717
15718
15719 const struct kwtable *
15720 rb_reserved_word (str, len)
15721      register const char *str;
15722      register unsigned int len;
15723 {
15724   static const struct kwtable wordlist[] =
15725     {
15726       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
15727 # 17 "keywords"
15728       {"break", {276, 276}, EXPR_MID},
15729 # 23 "keywords"
15730       {"else", {270, 270}, EXPR_BEG},
15731 # 33 "keywords"
15732       {"nil", {289, 289}, EXPR_END},
15733 # 26 "keywords"
15734       {"ensure", {264, 264}, EXPR_BEG},
15735 # 25 "keywords"
15736       {"end", {265, 265}, EXPR_END},
15737 # 42 "keywords"
15738       {"then", {268, 268}, EXPR_BEG},
15739 # 34 "keywords"
15740       {"not", {294, 294}, EXPR_ARG},
15741 # 27 "keywords"
15742       {"false", {291, 291}, EXPR_END},
15743 # 40 "keywords"
15744       {"self", {288, 288}, EXPR_END},
15745 # 24 "keywords"
15746       {"elsif", {269, 269}, EXPR_VALUE},
15747 # 37 "keywords"
15748       {"rescue", {263, 299}, EXPR_MID},
15749 # 43 "keywords"
15750       {"true", {290, 290}, EXPR_END},
15751 # 46 "keywords"
15752       {"until", {274, 298}, EXPR_VALUE},
15753 # 45 "keywords"
15754       {"unless", {267, 296}, EXPR_VALUE},
15755 # 39 "keywords"
15756       {"return", {285, 285}, EXPR_MID},
15757 # 20 "keywords"
15758       {"def", {260, 260}, EXPR_FNAME},
15759 # 15 "keywords"
15760       {"and", {292, 292}, EXPR_VALUE},
15761 # 22 "keywords"
15762       {"do", {281, 281}, EXPR_BEG},
15763 # 49 "keywords"
15764       {"yield", {286, 286}, EXPR_ARG},
15765 # 28 "keywords"
15766       {"for", {275, 275}, EXPR_VALUE},
15767 # 44 "keywords"
15768       {"undef", {261, 261}, EXPR_FNAME},
15769 # 35 "keywords"
15770       {"or", {293, 293}, EXPR_VALUE},
15771 # 30 "keywords"
15772       {"in", {280, 280}, EXPR_VALUE},
15773 # 47 "keywords"
15774       {"when", {272, 272}, EXPR_VALUE},
15775 # 38 "keywords"
15776       {"retry", {279, 279}, EXPR_END},
15777 # 29 "keywords"
15778       {"if", {266, 295}, EXPR_VALUE},
15779 # 18 "keywords"
15780       {"case", {271, 271}, EXPR_VALUE},
15781 # 36 "keywords"
15782       {"redo", {278, 278}, EXPR_END},
15783 # 32 "keywords"
15784       {"next", {277, 277}, EXPR_MID},
15785 # 41 "keywords"
15786       {"super", {287, 287}, EXPR_ARG},
15787 # 31 "keywords"
15788       {"module", {259, 259}, EXPR_VALUE},
15789 # 16 "keywords"
15790       {"begin", {262, 262}, EXPR_BEG},
15791 # 10 "keywords"
15792       {"__LINE__", {304, 304}, EXPR_END},
15793 # 11 "keywords"
15794       {"__FILE__", {305, 305}, EXPR_END},
15795 # 9 "keywords"
15796       {"__ENCODING__", {306, 306}, EXPR_END},
15797 # 13 "keywords"
15798       {"END", {303, 303}, EXPR_END},
15799 # 14 "keywords"
15800       {"alias", {300, 300}, EXPR_FNAME},
15801 # 12 "keywords"
15802       {"BEGIN", {302, 302}, EXPR_END},
15803 # 21 "keywords"
15804       {"defined?", {301, 301}, EXPR_ARG},
15805 # 19 "keywords"
15806       {"class", {258, 258}, EXPR_CLASS},
15807       {""}, {""},
15808 # 48 "keywords"
15809       {"while", {273, 297}, EXPR_VALUE}
15810     };
15811
15812   if (len <= 12 && len >= 2)
15813     {
15814       register int key = hash (str, len);
15815
15816       if (key <= 50 && key >= 0)
15817         {
15818           register const char *s = wordlist[key].name;
15819
15820           if (*str == *s && !__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (str + 1) && __builtin_constant_p (s + 1) && (__s1_len = strlen (str + 1), __s2_len = strlen (s + 1), (!((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) || __s2_len >= 4)) ? __builtin_strcmp (str + 1, s + 1) : (__builtin_constant_p (str + 1) && ((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) && (__s1_len = strlen (str + 1), __s1_len < 4) ? (__builtin_constant_p (s + 1) && ((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) ? __builtin_strcmp (str + 1, s + 1) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (s + 1); register int __result = (((__const unsigned char *) (__const char *) (str + 1))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (str + 1))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (str + 1))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (str + 1))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (s + 1) && ((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) && (__s2_len = strlen (s + 1), __s2_len < 4) ? (__builtin_constant_p (str + 1) && ((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) ? __builtin_strcmp (str + 1, s + 1) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (str + 1); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (s + 1))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (s + 1))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (s + 1))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (s + 1))[3]); } } __result; }))) : __builtin_strcmp (str + 1, s + 1)))); }))
15821             return &wordlist[key];
15822         }
15823     }
15824   return 0;
15825 }
15826 # 50 "keywords"
15827 # 6018 "parse.y" 2
15828
15829
15830 static void
15831 arg_ambiguous_gen(struct parser_params *parser)
15832 {
15833     rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "ambiguous first argument; put parentheses or even spaces");
15834 }
15835 # 6034 "parse.y"
15836 static int
15837 lvar_defined_gen(struct parser_params *parser, ID id)
15838 {
15839
15840     return (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) || local_id_gen(parser, id);
15841
15842
15843
15844 }
15845
15846
15847 static int
15848 parser_encode_length(struct parser_params *parser, const char *name, int len)
15849 {
15850     int nlen;
15851
15852     if (len > 5 && name[nlen = len - 5] == '-') {
15853  if (rb_memcicmp(name + nlen + 1, "unix", 4) == 0)
15854      return nlen;
15855     }
15856     if (len > 4 && name[nlen = len - 5] == '-') {
15857  if (rb_memcicmp(name + nlen + 1, "dos", 3) == 0)
15858      return nlen;
15859  if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0)
15860      return nlen;
15861     }
15862     return len;
15863 }
15864
15865 static void
15866 parser_set_encode(struct parser_params *parser, const char *name)
15867 {
15868     int idx = rb_enc_find_index(name);
15869     rb_encoding *enc;
15870
15871     if (idx < 0) {
15872  rb_raise(rb_eArgError, "unknown encoding name: %s", name);
15873     }
15874     enc = rb_enc_from_index(idx);
15875     if (!((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
15876  rb_raise(rb_eArgError, "%s is not ASCII compatible", (enc)->name);
15877     }
15878     parser->enc = enc;
15879 }
15880
15881 static int
15882 comment_at_top(struct parser_params *parser)
15883 {
15884     const char *p = (parser->parser_lex_pbeg), *pend = (parser->parser_lex_p) - 1;
15885     if (parser->line_count != (parser->has_shebang ? 2 : 1)) return 0;
15886     while (p < pend) {
15887  if (!rb_isspace((unsigned char)(*p))) return 0;
15888  p++;
15889     }
15890     return 1;
15891 }
15892
15893
15894 typedef int (*rb_magic_comment_length_t)(struct parser_params *parser, const char *name, int len);
15895 typedef void (*rb_magic_comment_setter_t)(struct parser_params *parser, const char *name, const char *val);
15896
15897 static void
15898 magic_comment_encoding(struct parser_params *parser, const char *name, const char *val)
15899 {
15900     if (!comment_at_top(parser)) {
15901  rb_warning("encoding '%s' is ignored, valid only in the first line except for shebang line.",
15902      val);
15903  return;
15904     }
15905     parser_set_encode(parser, val);
15906 }
15907
15908 struct magic_comment {
15909     const char *name;
15910     rb_magic_comment_setter_t func;
15911     rb_magic_comment_length_t length;
15912 };
15913
15914 static const struct magic_comment magic_comments[] = {
15915     {"coding", magic_comment_encoding, parser_encode_length},
15916     {"encoding", magic_comment_encoding, parser_encode_length},
15917 };
15918
15919
15920 static const char *
15921 magic_comment_marker(const char *str, int len)
15922 {
15923     int i = 2;
15924
15925     while (i < len) {
15926  switch (str[i]) {
15927    case '-':
15928      if (str[i-1] == '*' && str[i-2] == '-') {
15929   return str + i + 1;
15930      }
15931      i += 2;
15932      break;
15933    case '*':
15934      if (i + 1 >= len) return 0;
15935      if (str[i+1] != '-') {
15936   i += 4;
15937      }
15938      else if (str[i-1] != '-') {
15939   i += 2;
15940      }
15941      else {
15942   return str + i + 2;
15943      }
15944      break;
15945    default:
15946      i += 3;
15947      break;
15948  }
15949     }
15950     return 0;
15951 }
15952
15953 static int
15954 parser_magic_comment(struct parser_params *parser, const char *str, int len)
15955 {
15956     VALUE name = 0, val = 0;
15957     const char *beg, *end, *vbeg, *vend;
15958
15959
15960
15961
15962
15963     if (len <= 7) return ((VALUE)RUBY_Qfalse);
15964     if (!(beg = magic_comment_marker(str, len))) return ((VALUE)RUBY_Qfalse);
15965     if (!(end = magic_comment_marker(beg, str + len - beg))) return ((VALUE)RUBY_Qfalse);
15966     str = beg;
15967     len = end - beg - 3;
15968
15969
15970     while (len > 0) {
15971
15972  const struct magic_comment *p = magic_comments;
15973
15974  char *s;
15975  int i, n = 0;
15976
15977  for (; len > 0 && *str; str++, --len) {
15978      switch (*str) {
15979        case '\'': case '"': case ':': case ';':
15980   continue;
15981      }
15982      if (!rb_isspace((unsigned char)(*str))) break;
15983  }
15984  for (beg = str; len > 0; str++, --len) {
15985      switch (*str) {
15986        case '\'': case '"': case ':': case ';':
15987   break;
15988        default:
15989   if (rb_isspace((unsigned char)(*str))) break;
15990   continue;
15991      }
15992      break;
15993  }
15994  for (end = str; len > 0 && rb_isspace((unsigned char)(*str)); str++, --len);
15995  if (!len) break;
15996  if (*str != ':') continue;
15997
15998  do str++; while (--len > 0 && rb_isspace((unsigned char)(*str)));
15999  if (!len) break;
16000  if (*str == '"') {
16001      for (vbeg = ++str; --len > 0 && *str != '"'; str++) {
16002   if (*str == '\\') {
16003       --len;
16004       ++str;
16005   }
16006      }
16007      vend = str;
16008      if (len) {
16009   --len;
16010   ++str;
16011      }
16012  }
16013  else {
16014      for (vbeg = str; len > 0 && *str != '"' && *str != ';' && !rb_isspace((unsigned char)(*str)); --len, str++);
16015      vend = str;
16016  }
16017  while (len > 0 && (*str == ';' || rb_isspace((unsigned char)(*str)))) --len, str++;
16018
16019  n = end - beg;
16020  ((name) ? (rb_str_resize((name), (n)), memcpy(((!(((struct RBasic*)(name))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(name))->as.ary : ((struct RString*)(name))->as.heap.ptr)), ((beg)), sizeof(char)*((n))), (name)) : ((name) = rb_enc_str_new(((beg)),((n)),parser->enc)));
16021  s = (!(((struct RBasic*)(name))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(name))->as.ary : ((struct RString*)(name))->as.heap.ptr);
16022  for (i = 0; i < n; ++i) {
16023      if (*s == '-') *s = '_';
16024  }
16025
16026  do {
16027      if ((st_strncasecmp(p->name, s, n)) == 0) {
16028   n = vend - vbeg;
16029   if (p->length) {
16030       n = (*p->length)(parser, vbeg, n);
16031   }
16032   ((val) ? (rb_str_resize((val), (n)), memcpy(((!(((struct RBasic*)(val))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(val))->as.ary : ((struct RString*)(val))->as.heap.ptr)), ((vbeg)), sizeof(char)*((n))), (val)) : ((val) = rb_enc_str_new(((vbeg)),((n)),parser->enc)));
16033   (*p->func)(parser, s, (!(((struct RBasic*)(val))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(val))->as.ary : ((struct RString*)(val))->as.heap.ptr));
16034   break;
16035      }
16036  } while (++p < magic_comments + sizeof(magic_comments) / sizeof(*p));
16037
16038
16039
16040     }
16041
16042     return ((VALUE)RUBY_Qtrue);
16043 }
16044
16045 static void
16046 set_file_encoding(struct parser_params *parser, const char *str, const char *send)
16047 {
16048     int sep = 0;
16049     const char *beg = str;
16050     VALUE s;
16051
16052     for (;;) {
16053  if (send - str <= 6) return;
16054  switch (str[6]) {
16055    case 'C': case 'c': str += 6; continue;
16056    case 'O': case 'o': str += 5; continue;
16057    case 'D': case 'd': str += 4; continue;
16058    case 'I': case 'i': str += 3; continue;
16059    case 'N': case 'n': str += 2; continue;
16060    case 'G': case 'g': str += 1; continue;
16061    case '=': case ':':
16062      sep = 1;
16063      str += 6;
16064      break;
16065    default:
16066      str += 6;
16067      if (rb_isspace((unsigned char)(*str))) break;
16068      continue;
16069  }
16070  if ((st_strncasecmp(str-6, "coding", 6)) == 0) break;
16071     }
16072     for (;;) {
16073  do {
16074      if (++str >= send) return;
16075  } while (rb_isspace((unsigned char)(*str)));
16076  if (sep) break;
16077  if (*str != '=' && *str != ':') return;
16078  sep = 1;
16079  str++;
16080     }
16081     beg = str;
16082     while ((*str == '-' || *str == '_' || rb_isalnum((unsigned char)(*str))) && ++str < send);
16083     s = rb_str_new(beg, parser_encode_length(parser, beg, str - beg));
16084     parser_set_encode(parser, (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr));
16085     rb_str_resize(s, 0);
16086 }
16087
16088 static void
16089 parser_prepare(struct parser_params *parser)
16090 {
16091     int c = parser_nextc(parser);
16092     switch (c) {
16093       case '#':
16094  if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('!') == *(parser->parser_lex_p))) parser->has_shebang = 1;
16095  break;
16096       case 0xef:
16097  if ((parser->parser_lex_pend) - (parser->parser_lex_p) >= 2 &&
16098      (unsigned char)(parser->parser_lex_p)[0] == 0xbb &&
16099      (unsigned char)(parser->parser_lex_p)[1] == 0xbf) {
16100      parser->enc = rb_utf8_encoding();
16101      (parser->parser_lex_p) += 2;
16102      (parser->parser_lex_pbeg) = (parser->parser_lex_p);
16103      return;
16104  }
16105  break;
16106       case (-1):
16107  return;
16108     }
16109     parser_pushback(parser, c);
16110     parser->enc = rb_enc_get((parser->parser_lex_lastline));
16111 }
16112
16113
16114
16115
16116 static int
16117 parser_yylex(struct parser_params *parser)
16118 {
16119     register int c;
16120     int space_seen = 0;
16121     int cmd_state;
16122     enum lex_state_e last_state;
16123     rb_encoding *enc;
16124     int mb;
16125
16126
16127
16128
16129     if ((parser->parser_lex_strterm)) {
16130  int token;
16131  if (((int) (((((struct RNode*)((parser->parser_lex_strterm))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
16132      token = parser_here_document(parser,(parser->parser_lex_strterm));
16133      if (token == 361) {
16134   (parser->parser_lex_strterm) = 0;
16135   (parser->parser_lex_state) = EXPR_END;
16136      }
16137  }
16138  else {
16139      token = parser_parse_string(parser,(parser->parser_lex_strterm));
16140      if (token == 361 || token == 320) {
16141   rb_gc_force_recycle((VALUE)(parser->parser_lex_strterm));
16142   (parser->parser_lex_strterm) = 0;
16143   (parser->parser_lex_state) = EXPR_END;
16144      }
16145  }
16146  return token;
16147     }
16148     cmd_state = (parser->parser_command_start);
16149     (parser->parser_command_start) = ((VALUE)RUBY_Qfalse);
16150   retry:
16151     switch (c = parser_nextc(parser)) {
16152       case '\0':
16153       case '\004':
16154       case '\032':
16155       case -1:
16156  return 0;
16157
16158
16159       case ' ': case '\t': case '\f': case '\r':
16160       case '\13':
16161  space_seen++;
16162 # 6374 "parse.y"
16163  goto retry;
16164
16165       case '#':
16166
16167  if (!parser_magic_comment(parser, (parser->parser_lex_p), (parser->parser_lex_pend) - (parser->parser_lex_p))) {
16168      if (comment_at_top(parser)) {
16169   set_file_encoding(parser, (parser->parser_lex_p), (parser->parser_lex_pend));
16170      }
16171  }
16172  (parser->parser_lex_p) = (parser->parser_lex_pend);
16173
16174
16175
16176
16177
16178       case '\n':
16179  switch ((parser->parser_lex_state)) {
16180    case EXPR_BEG:
16181    case EXPR_FNAME:
16182    case EXPR_DOT:
16183    case EXPR_CLASS:
16184    case EXPR_VALUE:
16185
16186
16187
16188
16189
16190
16191      goto retry;
16192    default:
16193      break;
16194  }
16195  while ((c = parser_nextc(parser))) {
16196      switch (c) {
16197        case ' ': case '\t': case '\f': case '\r':
16198        case '\13':
16199   space_seen++;
16200   break;
16201        case '.': {
16202     if ((c = parser_nextc(parser)) != '.') {
16203         parser_pushback(parser, c);
16204         parser_pushback(parser, '.');
16205         goto retry;
16206     }
16207        }
16208        default:
16209   --(parser->parser_ruby_sourceline);
16210   (parser->parser_lex_nextline) = (parser->parser_lex_lastline);
16211        case -1:
16212   (parser->parser_lex_p = parser->parser_lex_pend);
16213
16214
16215
16216
16217
16218   goto normal_newline;
16219      }
16220  }
16221       normal_newline:
16222  (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
16223  (parser->parser_lex_state) = EXPR_BEG;
16224  return '\n';
16225
16226       case '*':
16227  if ((c = parser_nextc(parser)) == '*') {
16228      if ((c = parser_nextc(parser)) == '=') {
16229                 (*((YYSTYPE*)(parser->parser_yylval))).id = 323;
16230   (parser->parser_lex_state) = EXPR_BEG;
16231   return 342;
16232      }
16233      parser_pushback(parser, c);
16234      c = 323;
16235  }
16236  else {
16237      if (c == '=') {
16238                 (*((YYSTYPE*)(parser->parser_yylval))).id = '*';
16239   (parser->parser_lex_state) = EXPR_BEG;
16240   return 342;
16241      }
16242      parser_pushback(parser, c);
16243      if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
16244   rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`*' interpreted as argument prefix");
16245   c = 350;
16246      }
16247      else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
16248   c = 350;
16249      }
16250      else {
16251   c = '*';
16252      }
16253  }
16254  switch ((parser->parser_lex_state)) {
16255    case EXPR_FNAME: case EXPR_DOT:
16256      (parser->parser_lex_state) = EXPR_ARG; break;
16257    default:
16258      (parser->parser_lex_state) = EXPR_BEG; break;
16259  }
16260  return c;
16261
16262       case '!':
16263  c = parser_nextc(parser);
16264  if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
16265      (parser->parser_lex_state) = EXPR_ARG;
16266      if (c == '@') {
16267   return '!';
16268      }
16269  }
16270  else {
16271      (parser->parser_lex_state) = EXPR_BEG;
16272  }
16273  if (c == '=') {
16274      return 327;
16275  }
16276  if (c == '~') {
16277      return 333;
16278  }
16279  parser_pushback(parser, c);
16280  return '!';
16281
16282       case '=':
16283  if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1)) {
16284
16285      if ((__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p ((parser->parser_lex_p)) && strlen ((parser->parser_lex_p)) < ((size_t) (5))) || (__builtin_constant_p ("begin") && strlen ("begin") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_lex_p)) && __builtin_constant_p ("begin") && (__s1_len = strlen ((parser->parser_lex_p)), __s2_len = strlen ("begin"), (!((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) && (__s1_len = strlen ((parser->parser_lex_p)), __s1_len < 4) ? (__builtin_constant_p ("begin") && ((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("begin"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("begin") && ((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) && (__s2_len = strlen ("begin"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_lex_p)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("begin"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("begin"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("begin"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("begin"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_lex_p), "begin")))); }) : strncmp ((parser->parser_lex_p), "begin", 5))) == 0 && rb_isspace((unsigned char)((parser->parser_lex_p)[5]))) {
16286
16287
16288
16289
16290
16291
16292   for (;;) {
16293       (parser->parser_lex_p = parser->parser_lex_pend);
16294
16295
16296
16297
16298
16299
16300       c = parser_nextc(parser);
16301       if (c == -1) {
16302    parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "embedded document meets end of file");
16303    return 0;
16304       }
16305       if (c != '=') continue;
16306       if ((__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p ((parser->parser_lex_p)) && strlen ((parser->parser_lex_p)) < ((size_t) (3))) || (__builtin_constant_p ("end") && strlen ("end") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_lex_p)) && __builtin_constant_p ("end") && (__s1_len = strlen ((parser->parser_lex_p)), __s2_len = strlen ("end"), (!((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) && (__s1_len = strlen ((parser->parser_lex_p)), __s1_len < 4) ? (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("end"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) && (__s2_len = strlen ("end"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_lex_p)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("end"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("end"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("end"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("end"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_lex_p), "end")))); }) : strncmp ((parser->parser_lex_p), "end", 3))) == 0 &&
16307    ((parser->parser_lex_p) + 3 == (parser->parser_lex_pend) || rb_isspace((unsigned char)((parser->parser_lex_p)[3])))) {
16308    break;
16309       }
16310   }
16311   (parser->parser_lex_p = parser->parser_lex_pend);
16312
16313
16314
16315   goto retry;
16316      }
16317  }
16318
16319  switch ((parser->parser_lex_state)) {
16320    case EXPR_FNAME: case EXPR_DOT:
16321      (parser->parser_lex_state) = EXPR_ARG; break;
16322    default:
16323      (parser->parser_lex_state) = EXPR_BEG; break;
16324  }
16325  if ((c = parser_nextc(parser)) == '=') {
16326      if ((c = parser_nextc(parser)) == '=') {
16327   return 326;
16328      }
16329      parser_pushback(parser, c);
16330      return 325;
16331  }
16332  if (c == '~') {
16333      return 332;
16334  }
16335  else if (c == '>') {
16336      return 343;
16337  }
16338  parser_pushback(parser, c);
16339  return '=';
16340
16341       case '<':
16342  c = parser_nextc(parser);
16343  if (c == '<' &&
16344      (parser->parser_lex_state) != EXPR_END &&
16345      (parser->parser_lex_state) != EXPR_DOT &&
16346      (parser->parser_lex_state) != EXPR_ENDARG &&
16347      (parser->parser_lex_state) != EXPR_CLASS &&
16348      (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || space_seen)) {
16349      int token = parser_heredoc_identifier(parser);
16350      if (token) return token;
16351  }
16352  switch ((parser->parser_lex_state)) {
16353    case EXPR_FNAME: case EXPR_DOT:
16354      (parser->parser_lex_state) = EXPR_ARG; break;
16355    default:
16356      (parser->parser_lex_state) = EXPR_BEG; break;
16357  }
16358  if (c == '=') {
16359      if ((c = parser_nextc(parser)) == '>') {
16360   return 324;
16361      }
16362      parser_pushback(parser, c);
16363      return 329;
16364  }
16365  if (c == '<') {
16366      if ((c = parser_nextc(parser)) == '=') {
16367                 (*((YYSTYPE*)(parser->parser_yylval))).id = 338;
16368   (parser->parser_lex_state) = EXPR_BEG;
16369   return 342;
16370      }
16371      parser_pushback(parser, c);
16372      return 338;
16373  }
16374  parser_pushback(parser, c);
16375  return '<';
16376
16377       case '>':
16378  switch ((parser->parser_lex_state)) {
16379    case EXPR_FNAME: case EXPR_DOT:
16380      (parser->parser_lex_state) = EXPR_ARG; break;
16381    default:
16382      (parser->parser_lex_state) = EXPR_BEG; break;
16383  }
16384  if ((c = parser_nextc(parser)) == '=') {
16385      return 328;
16386  }
16387  if (c == '>') {
16388      if ((c = parser_nextc(parser)) == '=') {
16389                 (*((YYSTYPE*)(parser->parser_yylval))).id = 339;
16390   (parser->parser_lex_state) = EXPR_BEG;
16391   return 342;
16392      }
16393      parser_pushback(parser, c);
16394      return 339;
16395  }
16396  parser_pushback(parser, c);
16397  return '>';
16398
16399       case '"':
16400  (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), ('"') | ((0) << (8 * 2)), 0);
16401  return 354;
16402
16403       case '`':
16404  if ((parser->parser_lex_state) == EXPR_FNAME) {
16405      (parser->parser_lex_state) = EXPR_END;
16406      return c;
16407  }
16408  if ((parser->parser_lex_state) == EXPR_DOT) {
16409      if (cmd_state)
16410   (parser->parser_lex_state) = EXPR_CMDARG;
16411      else
16412   (parser->parser_lex_state) = EXPR_ARG;
16413      return c;
16414  }
16415  (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), ('`') | ((0) << (8 * 2)), 0);
16416  return 355;
16417
16418       case '\'':
16419  (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), ('\'') | ((0) << (8 * 2)), 0);
16420  return 354;
16421
16422       case '?':
16423  if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG) {
16424      (parser->parser_lex_state) = EXPR_VALUE;
16425      return '?';
16426  }
16427  c = parser_nextc(parser);
16428  if (c == -1) {
16429      parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "incomplete character syntax");
16430      return 0;
16431  }
16432  if ((parser->enc)->is_code_ctype(c,9,parser->enc)) {
16433      if (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
16434   int c2 = 0;
16435   switch (c) {
16436     case ' ':
16437       c2 = 's';
16438       break;
16439     case '\n':
16440       c2 = 'n';
16441       break;
16442     case '\t':
16443       c2 = 't';
16444       break;
16445     case '\v':
16446       c2 = 'v';
16447       break;
16448     case '\r':
16449       c2 = 'r';
16450       break;
16451     case '\f':
16452       c2 = 'f';
16453       break;
16454   }
16455   if (c2) {
16456       rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid character syntax; use ?\\%c", c2);
16457   }
16458      }
16459    ternary:
16460      parser_pushback(parser, c);
16461      (parser->parser_lex_state) = EXPR_VALUE;
16462      return '?';
16463  }
16464  parser_newtok(parser);
16465  enc = parser->enc;
16466  if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
16467      if (parser_tokadd_mbchar(parser, c) == -1) return 0;
16468  }
16469  else if (((parser->enc)->is_code_ctype(c,13,parser->enc) || c == '_') &&
16470    (parser->parser_lex_p) < (parser->parser_lex_pend) && ((parser->enc)->is_code_ctype(*(parser->parser_lex_p),13,parser->enc) || (*(parser->parser_lex_p)) == '_' || !((unsigned long)((unsigned char)(*(parser->parser_lex_p))) < 128))) {
16471      goto ternary;
16472  }
16473         else if (c == '\\') {
16474             if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('u') == *(parser->parser_lex_p))) {
16475                 parser_nextc(parser);
16476                 c = parser_tokadd_utf8(parser, &enc, 0, 0, 0);
16477                 if (0x80 <= c) {
16478                     parser_tokaddmbc(parser, c, enc);
16479                 }
16480                 else {
16481                     parser_tokadd(parser, c);
16482                 }
16483             }
16484             else {
16485                 c = parser_read_escape(parser, 0, &enc);
16486                 parser_tokadd(parser, c);
16487             }
16488         }
16489         else {
16490      parser_tokadd(parser, c);
16491         }
16492  ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
16493  (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(0),parser->enc)), (VALUE)(0), (VALUE)(0));
16494  (parser->parser_lex_state) = EXPR_END;
16495  return 317;
16496
16497       case '&':
16498  if ((c = parser_nextc(parser)) == '&') {
16499      (parser->parser_lex_state) = EXPR_BEG;
16500      if ((c = parser_nextc(parser)) == '=') {
16501                 (*((YYSTYPE*)(parser->parser_yylval))).id = 330;
16502   (parser->parser_lex_state) = EXPR_BEG;
16503   return 342;
16504      }
16505      parser_pushback(parser, c);
16506      return 330;
16507  }
16508  else if (c == '=') {
16509             (*((YYSTYPE*)(parser->parser_yylval))).id = '&';
16510      (parser->parser_lex_state) = EXPR_BEG;
16511      return 342;
16512  }
16513  parser_pushback(parser, c);
16514  if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
16515      rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`&' interpreted as argument prefix");
16516      c = 351;
16517  }
16518  else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
16519      c = 351;
16520  }
16521  else {
16522      c = '&';
16523  }
16524  switch ((parser->parser_lex_state)) {
16525    case EXPR_FNAME: case EXPR_DOT:
16526      (parser->parser_lex_state) = EXPR_ARG; break;
16527    default:
16528      (parser->parser_lex_state) = EXPR_BEG;
16529  }
16530  return c;
16531
16532       case '|':
16533  if ((c = parser_nextc(parser)) == '|') {
16534      (parser->parser_lex_state) = EXPR_BEG;
16535      if ((c = parser_nextc(parser)) == '=') {
16536                 (*((YYSTYPE*)(parser->parser_yylval))).id = 331;
16537   (parser->parser_lex_state) = EXPR_BEG;
16538   return 342;
16539      }
16540      parser_pushback(parser, c);
16541      return 331;
16542  }
16543  if (c == '=') {
16544             (*((YYSTYPE*)(parser->parser_yylval))).id = '|';
16545      (parser->parser_lex_state) = EXPR_BEG;
16546      return 342;
16547  }
16548  if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
16549      (parser->parser_lex_state) = EXPR_ARG;
16550  }
16551  else {
16552      (parser->parser_lex_state) = EXPR_BEG;
16553  }
16554  parser_pushback(parser, c);
16555  return '|';
16556
16557       case '+':
16558  c = parser_nextc(parser);
16559  if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
16560      (parser->parser_lex_state) = EXPR_ARG;
16561      if (c == '@') {
16562   return 321;
16563      }
16564      parser_pushback(parser, c);
16565      return '+';
16566  }
16567  if (c == '=') {
16568             (*((YYSTYPE*)(parser->parser_yylval))).id = '+';
16569      (parser->parser_lex_state) = EXPR_BEG;
16570      return 342;
16571  }
16572  if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
16573      (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
16574      if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
16575      (parser->parser_lex_state) = EXPR_BEG;
16576      parser_pushback(parser, c);
16577      if (c != -1 && rb_isdigit((unsigned char)(c))) {
16578   c = '+';
16579   goto start_num;
16580      }
16581      return 321;
16582  }
16583  (parser->parser_lex_state) = EXPR_BEG;
16584  parser_pushback(parser, c);
16585  return '+';
16586
16587       case '-':
16588  c = parser_nextc(parser);
16589  if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
16590      (parser->parser_lex_state) = EXPR_ARG;
16591      if (c == '@') {
16592   return 322;
16593      }
16594      parser_pushback(parser, c);
16595      return '-';
16596  }
16597  if (c == '=') {
16598             (*((YYSTYPE*)(parser->parser_yylval))).id = '-';
16599      (parser->parser_lex_state) = EXPR_BEG;
16600      return 342;
16601  }
16602  if (c == '>') {
16603      (parser->parser_lex_state) = EXPR_ARG;
16604      return 352;
16605  }
16606  if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
16607      (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
16608      if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
16609      (parser->parser_lex_state) = EXPR_BEG;
16610      parser_pushback(parser, c);
16611      if (c != -1 && rb_isdigit((unsigned char)(c))) {
16612   return 364;
16613      }
16614      return 322;
16615  }
16616  (parser->parser_lex_state) = EXPR_BEG;
16617  parser_pushback(parser, c);
16618  return '-';
16619
16620       case '.':
16621  (parser->parser_lex_state) = EXPR_BEG;
16622  if ((c = parser_nextc(parser)) == '.') {
16623      if ((c = parser_nextc(parser)) == '.') {
16624   return 335;
16625      }
16626      parser_pushback(parser, c);
16627      return 334;
16628  }
16629  parser_pushback(parser, c);
16630  if (c != -1 && rb_isdigit((unsigned char)(c))) {
16631      parser_yyerror(parser, "no .<digit> floating literal anymore; put 0 before dot");
16632  }
16633  (parser->parser_lex_state) = EXPR_DOT;
16634  return '.';
16635
16636       start_num:
16637       case '0': case '1': case '2': case '3': case '4':
16638       case '5': case '6': case '7': case '8': case '9':
16639  {
16640      int is_float, seen_point, seen_e, nondigit;
16641
16642      is_float = seen_point = seen_e = nondigit = 0;
16643      (parser->parser_lex_state) = EXPR_END;
16644      parser_newtok(parser);
16645      if (c == '-' || c == '+') {
16646   parser_tokadd(parser, c);
16647   c = parser_nextc(parser);
16648      }
16649      if (c == '0') {
16650   int start = (parser->parser_tokidx);
16651   c = parser_nextc(parser);
16652   if (c == 'x' || c == 'X') {
16653
16654       c = parser_nextc(parser);
16655       if (c != -1 && rb_isxdigit((unsigned char)(c))) {
16656    do {
16657        if (c == '_') {
16658     if (nondigit) break;
16659     nondigit = c;
16660     continue;
16661        }
16662        if (!rb_isxdigit((unsigned char)(c))) break;
16663        nondigit = 0;
16664        parser_tokadd(parser, c);
16665    } while ((c = parser_nextc(parser)) != -1);
16666       }
16667       parser_pushback(parser, c);
16668       ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
16669       if ((parser->parser_tokidx) == start) {
16670    parser_yyerror(parser, "numeric literal without digits");
16671       }
16672       else if (nondigit) goto trailing_uc;
16673                     (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 16, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
16674       return 314;
16675   }
16676   if (c == 'b' || c == 'B') {
16677
16678       c = parser_nextc(parser);
16679       if (c == '0' || c == '1') {
16680    do {
16681        if (c == '_') {
16682     if (nondigit) break;
16683     nondigit = c;
16684     continue;
16685        }
16686        if (c != '0' && c != '1') break;
16687        nondigit = 0;
16688        parser_tokadd(parser, c);
16689    } while ((c = parser_nextc(parser)) != -1);
16690       }
16691       parser_pushback(parser, c);
16692       ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
16693       if ((parser->parser_tokidx) == start) {
16694    parser_yyerror(parser, "numeric literal without digits");
16695       }
16696       else if (nondigit) goto trailing_uc;
16697                     (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 2, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
16698       return 314;
16699   }
16700   if (c == 'd' || c == 'D') {
16701
16702       c = parser_nextc(parser);
16703       if (c != -1 && rb_isdigit((unsigned char)(c))) {
16704    do {
16705        if (c == '_') {
16706     if (nondigit) break;
16707     nondigit = c;
16708     continue;
16709        }
16710        if (!rb_isdigit((unsigned char)(c))) break;
16711        nondigit = 0;
16712        parser_tokadd(parser, c);
16713    } while ((c = parser_nextc(parser)) != -1);
16714       }
16715       parser_pushback(parser, c);
16716       ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
16717       if ((parser->parser_tokidx) == start) {
16718    parser_yyerror(parser, "numeric literal without digits");
16719       }
16720       else if (nondigit) goto trailing_uc;
16721                     (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 10, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
16722       return 314;
16723   }
16724   if (c == '_') {
16725
16726       goto octal_number;
16727   }
16728   if (c == 'o' || c == 'O') {
16729
16730       c = parser_nextc(parser);
16731       if (c == -1 || c == '_' || !rb_isdigit((unsigned char)(c))) {
16732    parser_yyerror(parser, "numeric literal without digits");
16733       }
16734   }
16735   if (c >= '0' && c <= '7') {
16736
16737     octal_number:
16738              do {
16739    if (c == '_') {
16740        if (nondigit) break;
16741        nondigit = c;
16742        continue;
16743    }
16744    if (c < '0' || c > '9') break;
16745    if (c > '7') goto invalid_octal;
16746    nondigit = 0;
16747    parser_tokadd(parser, c);
16748       } while ((c = parser_nextc(parser)) != -1);
16749       if ((parser->parser_tokidx) > start) {
16750    parser_pushback(parser, c);
16751    ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
16752    if (nondigit) goto trailing_uc;
16753                         (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 8, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
16754    return 314;
16755       }
16756       if (nondigit) {
16757    parser_pushback(parser, c);
16758    goto trailing_uc;
16759       }
16760   }
16761   if (c > '7' && c <= '9') {
16762     invalid_octal:
16763       parser_yyerror(parser, "Invalid octal digit");
16764   }
16765   else if (c == '.' || c == 'e' || c == 'E') {
16766       parser_tokadd(parser, '0');
16767   }
16768   else {
16769       parser_pushback(parser, c);
16770                     (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
16771       return 314;
16772   }
16773      }
16774
16775      for (;;) {
16776   switch (c) {
16777     case '0': case '1': case '2': case '3': case '4':
16778     case '5': case '6': case '7': case '8': case '9':
16779       nondigit = 0;
16780       parser_tokadd(parser, c);
16781       break;
16782
16783     case '.':
16784       if (nondigit) goto trailing_uc;
16785       if (seen_point || seen_e) {
16786    goto decode_num;
16787       }
16788       else {
16789    int c0 = parser_nextc(parser);
16790    if (c == -1 || !rb_isdigit((unsigned char)(c0))) {
16791        parser_pushback(parser, c0);
16792        goto decode_num;
16793    }
16794    c = c0;
16795       }
16796       parser_tokadd(parser, '.');
16797       parser_tokadd(parser, c);
16798       is_float++;
16799       seen_point++;
16800       nondigit = 0;
16801       break;
16802
16803     case 'e':
16804     case 'E':
16805       if (nondigit) {
16806    parser_pushback(parser, c);
16807    c = nondigit;
16808    goto decode_num;
16809       }
16810       if (seen_e) {
16811    goto decode_num;
16812       }
16813       parser_tokadd(parser, c);
16814       seen_e++;
16815       is_float++;
16816       nondigit = c;
16817       c = parser_nextc(parser);
16818       if (c != '-' && c != '+') continue;
16819       parser_tokadd(parser, c);
16820       nondigit = c;
16821       break;
16822
16823     case '_':
16824       if (nondigit) goto decode_num;
16825       nondigit = c;
16826       break;
16827
16828     default:
16829       goto decode_num;
16830   }
16831   c = parser_nextc(parser);
16832      }
16833
16834    decode_num:
16835      parser_pushback(parser, c);
16836      ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
16837      if (nondigit) {
16838   char tmp[30];
16839        trailing_uc:
16840   sprintf(tmp, "trailing `%c' in number", nondigit);
16841   parser_yyerror(parser, tmp);
16842      }
16843      if (is_float) {
16844   double d = ruby_strtod((parser->parser_tokenbuf),0);
16845   if ((*__errno_location ()) == 34) {
16846       rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Float %s out of range", (parser->parser_tokenbuf));
16847       (*__errno_location ()) = 0;
16848   }
16849                 (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_float_new(d)), (VALUE)(0), (VALUE)(0));
16850   return 315;
16851      }
16852             (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 10, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
16853      return 314;
16854  }
16855
16856       case ')':
16857       case ']':
16858  (parser->parser_paren_nest)--;
16859       case '}':
16860  ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
16861  ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
16862  if (c == ')')
16863      (parser->parser_lex_state) = EXPR_END;
16864  else
16865      (parser->parser_lex_state) = EXPR_ENDARG;
16866  return c;
16867
16868       case ':':
16869  c = parser_nextc(parser);
16870  if (c == ':') {
16871      if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
16872   (parser->parser_lex_state) == EXPR_CLASS || (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen)) {
16873   (parser->parser_lex_state) = EXPR_BEG;
16874   return 341;
16875      }
16876      (parser->parser_lex_state) = EXPR_DOT;
16877      return 340;
16878  }
16879  if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG || (c != -1 && rb_isspace((unsigned char)(c)))) {
16880      parser_pushback(parser, c);
16881      (parser->parser_lex_state) = EXPR_BEG;
16882      return ':';
16883  }
16884  switch (c) {
16885    case '\'':
16886      (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (c) | ((0) << (8 * 2)), 0);
16887      break;
16888    case '"':
16889      (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dsym), (c) | ((0) << (8 * 2)), 0);
16890      break;
16891    default:
16892      parser_pushback(parser, c);
16893      break;
16894  }
16895  (parser->parser_lex_state) = EXPR_FNAME;
16896  return 353;
16897
16898       case '/':
16899  if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
16900      (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
16901      return 356;
16902  }
16903  if ((c = parser_nextc(parser)) == '=') {
16904             (*((YYSTYPE*)(parser->parser_yylval))).id = '/';
16905      (parser->parser_lex_state) = EXPR_BEG;
16906      return 342;
16907  }
16908  parser_pushback(parser, c);
16909  if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
16910      if (!rb_isspace((unsigned char)(c))) {
16911   arg_ambiguous_gen(parser);
16912   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
16913   return 356;
16914      }
16915  }
16916  switch ((parser->parser_lex_state)) {
16917    case EXPR_FNAME: case EXPR_DOT:
16918      (parser->parser_lex_state) = EXPR_ARG; break;
16919    default:
16920      (parser->parser_lex_state) = EXPR_BEG; break;
16921  }
16922  return '/';
16923
16924       case '^':
16925  if ((c = parser_nextc(parser)) == '=') {
16926             (*((YYSTYPE*)(parser->parser_yylval))).id = '^';
16927      (parser->parser_lex_state) = EXPR_BEG;
16928      return 342;
16929  }
16930  switch ((parser->parser_lex_state)) {
16931    case EXPR_FNAME: case EXPR_DOT:
16932      (parser->parser_lex_state) = EXPR_ARG; break;
16933    default:
16934      (parser->parser_lex_state) = EXPR_BEG; break;
16935  }
16936  parser_pushback(parser, c);
16937  return '^';
16938
16939       case ';':
16940  (parser->parser_lex_state) = EXPR_BEG;
16941  (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
16942  return ';';
16943
16944       case ',':
16945  (parser->parser_lex_state) = EXPR_BEG;
16946  return ',';
16947
16948       case '~':
16949  if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
16950      if ((c = parser_nextc(parser)) != '@') {
16951   parser_pushback(parser, c);
16952      }
16953      (parser->parser_lex_state) = EXPR_ARG;
16954  }
16955  else {
16956      (parser->parser_lex_state) = EXPR_BEG;
16957  }
16958  return '~';
16959
16960       case '(':
16961  if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
16962      c = 344;
16963  }
16964  else if (space_seen) {
16965      if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
16966   c = 345;
16967      }
16968  }
16969  (parser->parser_paren_nest)++;
16970  ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
16971  ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
16972  (parser->parser_lex_state) = EXPR_BEG;
16973  return c;
16974
16975       case '[':
16976  (parser->parser_paren_nest)++;
16977  if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
16978      (parser->parser_lex_state) = EXPR_ARG;
16979      if ((c = parser_nextc(parser)) == ']') {
16980   if ((c = parser_nextc(parser)) == '=') {
16981       return 337;
16982   }
16983   parser_pushback(parser, c);
16984   return 336;
16985      }
16986      parser_pushback(parser, c);
16987      return '[';
16988  }
16989  else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
16990      c = 347;
16991  }
16992  else if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
16993      c = 347;
16994  }
16995  (parser->parser_lex_state) = EXPR_BEG;
16996  ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
16997  ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
16998  return c;
16999
17000       case '{':
17001  if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
17002      (parser->parser_lex_state) = EXPR_BEG;
17003      (parser->parser_lpar_beg) = 0;
17004      --(parser->parser_paren_nest);
17005      return 362;
17006  }
17007  if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || (parser->parser_lex_state) == EXPR_END)
17008      c = '{';
17009  else if ((parser->parser_lex_state) == EXPR_ENDARG)
17010      c = 349;
17011  else
17012      c = 348;
17013  ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
17014  ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
17015  (parser->parser_lex_state) = EXPR_BEG;
17016  if (c != 348) (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
17017  return c;
17018
17019       case '\\':
17020  c = parser_nextc(parser);
17021  if (c == '\n') {
17022      space_seen = 1;
17023
17024
17025
17026      goto retry;
17027  }
17028  parser_pushback(parser, c);
17029  return '\\';
17030
17031       case '%':
17032  if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
17033      int term;
17034      int paren;
17035
17036      c = parser_nextc(parser);
17037    quotation:
17038      if (c == -1 || !rb_isalnum((unsigned char)(c))) {
17039   term = c;
17040   c = 'Q';
17041      }
17042      else {
17043   term = parser_nextc(parser);
17044   if ((parser->enc)->is_code_ctype(term,13,parser->enc) || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
17045       parser_yyerror(parser, "unknown type of %string");
17046       return 0;
17047   }
17048      }
17049      if (c == -1 || term == -1) {
17050   parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated quoted string meets end of file");
17051   return 0;
17052      }
17053      paren = term;
17054      if (term == '(') term = ')';
17055      else if (term == '[') term = ']';
17056      else if (term == '{') term = '}';
17057      else if (term == '<') term = '>';
17058      else paren = 0;
17059
17060      switch (c) {
17061        case 'Q':
17062   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), (term) | ((paren) << (8 * 2)), 0);
17063   return 354;
17064
17065        case 'q':
17066   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), (term) | ((paren) << (8 * 2)), 0);
17067   return 354;
17068
17069        case 'W':
17070   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dword), (term) | ((paren) << (8 * 2)), 0);
17071   do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
17072   parser_pushback(parser, c);
17073   return 357;
17074
17075        case 'w':
17076   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_sword), (term) | ((paren) << (8 * 2)), 0);
17077   do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
17078   parser_pushback(parser, c);
17079   return 358;
17080
17081        case 'x':
17082   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), (term) | ((paren) << (8 * 2)), 0);
17083   return 355;
17084
17085        case 'r':
17086   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), (term) | ((paren) << (8 * 2)), 0);
17087   return 356;
17088
17089        case 's':
17090   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (term) | ((paren) << (8 * 2)), 0);
17091   (parser->parser_lex_state) = EXPR_FNAME;
17092   return 353;
17093
17094        default:
17095   parser_yyerror(parser, "unknown type of %string");
17096   return 0;
17097      }
17098  }
17099  if ((c = parser_nextc(parser)) == '=') {
17100             (*((YYSTYPE*)(parser->parser_yylval))).id = '%';
17101      (parser->parser_lex_state) = EXPR_BEG;
17102      return 342;
17103  }
17104  if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
17105      goto quotation;
17106  }
17107  switch ((parser->parser_lex_state)) {
17108    case EXPR_FNAME: case EXPR_DOT:
17109      (parser->parser_lex_state) = EXPR_ARG; break;
17110    default:
17111      (parser->parser_lex_state) = EXPR_BEG; break;
17112  }
17113  parser_pushback(parser, c);
17114  return '%';
17115
17116       case '$':
17117  last_state = (parser->parser_lex_state);
17118  (parser->parser_lex_state) = EXPR_END;
17119  parser_newtok(parser);
17120  c = parser_nextc(parser);
17121  switch (c) {
17122    case '_':
17123      c = parser_nextc(parser);
17124      if ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
17125   parser_tokadd(parser, '$');
17126   parser_tokadd(parser, '_');
17127   break;
17128      }
17129      parser_pushback(parser, c);
17130      c = '_';
17131
17132    case '~':
17133    case '*':
17134    case '$':
17135    case '?':
17136    case '!':
17137    case '@':
17138    case '/':
17139    case '\\':
17140    case ';':
17141    case ',':
17142    case '.':
17143    case '=':
17144    case ':':
17145    case '<':
17146    case '>':
17147    case '\"':
17148      parser_tokadd(parser, '$');
17149      parser_tokadd(parser, c);
17150      ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
17151             (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p((parser->parser_tokenbuf)) ? __extension__ (rb_intern2((parser->parser_tokenbuf), strlen((parser->parser_tokenbuf)))) : (rb_intern)((parser->parser_tokenbuf)));
17152      return 309;
17153
17154    case '-':
17155      parser_tokadd(parser, '$');
17156      parser_tokadd(parser, c);
17157      c = parser_nextc(parser);
17158      if ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
17159   if (parser_tokadd_mbchar(parser, c) == -1) return 0;
17160      }
17161      else {
17162   parser_pushback(parser, c);
17163      }
17164    gvar:
17165      ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
17166             (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p((parser->parser_tokenbuf)) ? __extension__ (rb_intern2((parser->parser_tokenbuf), strlen((parser->parser_tokenbuf)))) : (rb_intern)((parser->parser_tokenbuf)));
17167      return 309;
17168
17169    case '&':
17170    case '`':
17171    case '\'':
17172    case '+':
17173      if (last_state == EXPR_FNAME) {
17174   parser_tokadd(parser, '$');
17175   parser_tokadd(parser, c);
17176   goto gvar;
17177      }
17178      (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_BACK_REF), (VALUE)(0), (VALUE)(c), (VALUE)(0));
17179      return 319;
17180
17181    case '1': case '2': case '3':
17182    case '4': case '5': case '6':
17183    case '7': case '8': case '9':
17184      parser_tokadd(parser, '$');
17185      do {
17186   parser_tokadd(parser, c);
17187   c = parser_nextc(parser);
17188      } while (c != -1 && rb_isdigit((unsigned char)(c)));
17189      parser_pushback(parser, c);
17190      if (last_state == EXPR_FNAME) goto gvar;
17191      ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
17192      (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_NTH_REF), (VALUE)(0), (VALUE)(atoi((parser->parser_tokenbuf)+1)), (VALUE)(0));
17193      return 318;
17194
17195    default:
17196      if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
17197   parser_pushback(parser, c);
17198   return '$';
17199      }
17200    case '0':
17201      parser_tokadd(parser, '$');
17202  }
17203  break;
17204
17205       case '@':
17206  c = parser_nextc(parser);
17207  parser_newtok(parser);
17208  parser_tokadd(parser, '@');
17209  if (c == '@') {
17210      parser_tokadd(parser, '@');
17211      c = parser_nextc(parser);
17212  }
17213  if (c != -1 && rb_isdigit((unsigned char)(c))) {
17214      if ((parser->parser_tokidx) == 1) {
17215   parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@%c' is not allowed as an instance variable name", c);
17216      }
17217      else {
17218   parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@@%c' is not allowed as a class variable name", c);
17219      }
17220      return 0;
17221  }
17222  if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
17223      parser_pushback(parser, c);
17224      return '@';
17225  }
17226  break;
17227
17228       case '_':
17229  if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,"__END__",7,0)) {
17230      (parser->parser_ruby__end__seen) = 1;
17231      parser->eofp = ((VALUE)RUBY_Qtrue);
17232
17233      return -1;
17234
17235
17236
17237
17238
17239  }
17240  parser_newtok(parser);
17241  break;
17242
17243       default:
17244  if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
17245      rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Invalid char `\\x%02X' in expression", c);
17246      goto retry;
17247  }
17248
17249  parser_newtok(parser);
17250  break;
17251     }
17252
17253     mb = (((VALUE)1)<<(12 +8));
17254     do {
17255  if (!((unsigned long)((unsigned char)(c)) < 128)) mb = 0;
17256  if (parser_tokadd_mbchar(parser, c) == -1) return 0;
17257  c = parser_nextc(parser);
17258     } while ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128))));
17259     switch ((parser->parser_tokenbuf)[0]) {
17260       case '@': case '$':
17261  parser_pushback(parser, c);
17262  break;
17263       default:
17264  if ((c == '!' || c == '?') && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p))) {
17265      parser_tokadd(parser, c);
17266  }
17267  else {
17268      parser_pushback(parser, c);
17269  }
17270     }
17271     ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
17272
17273     {
17274  int result = 0;
17275
17276  last_state = (parser->parser_lex_state);
17277  switch ((parser->parser_tokenbuf)[0]) {
17278    case '$':
17279      (parser->parser_lex_state) = EXPR_END;
17280      result = 309;
17281      break;
17282    case '@':
17283      (parser->parser_lex_state) = EXPR_END;
17284      if ((parser->parser_tokenbuf)[1] == '@')
17285   result = 312;
17286      else
17287   result = 310;
17288      break;
17289
17290    default:
17291      if (((parser->parser_tokidx)>0?(parser->parser_tokenbuf)[(parser->parser_tokidx)-1]:0) == '!' || ((parser->parser_tokidx)>0?(parser->parser_tokenbuf)[(parser->parser_tokidx)-1]:0) == '?') {
17292   result = 308;
17293      }
17294      else {
17295   if ((parser->parser_lex_state) == EXPR_FNAME) {
17296       if ((c = parser_nextc(parser)) == '=' && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('~') == *(parser->parser_lex_p)) && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('>') == *(parser->parser_lex_p)) &&
17297    (!((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p)) || ((parser->parser_lex_p) + 1 < (parser->parser_lex_pend) && (parser->parser_lex_p)[1] == '>'))) {
17298    result = 307;
17299    parser_tokadd(parser, c);
17300    ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
17301       }
17302       else {
17303    parser_pushback(parser, c);
17304       }
17305   }
17306   if (result == 0 && rb_isupper((unsigned char)((parser->parser_tokenbuf)[0]))) {
17307       result = 311;
17308   }
17309   else {
17310       result = 307;
17311   }
17312      }
17313
17314      if (((parser->parser_lex_state) == EXPR_BEG && !cmd_state) ||
17315   (parser->parser_lex_state) == EXPR_ARG ||
17316   (parser->parser_lex_state) == EXPR_CMDARG) {
17317   if (((parser->parser_lex_p) < (parser->parser_lex_pend) && (':') == *(parser->parser_lex_p)) && !((parser->parser_lex_p) + 1 < (parser->parser_lex_pend) && (parser->parser_lex_p)[1] == ':')) {
17318       (parser->parser_lex_state) = EXPR_BEG;
17319       parser_nextc(parser);
17320       (*((YYSTYPE*)(parser->parser_yylval))).id = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
17321       return 313;
17322   }
17323      }
17324      if (mb == (((VALUE)1)<<(12 +8)) && (parser->parser_lex_state) != EXPR_DOT) {
17325   const struct kwtable *kw;
17326
17327
17328   kw = rb_reserved_word((parser->parser_tokenbuf), (parser->parser_tokidx));
17329   if (kw) {
17330       enum lex_state_e state = (parser->parser_lex_state);
17331       (parser->parser_lex_state) = kw->state;
17332       if (state == EXPR_FNAME) {
17333                         (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p(kw->name) ? __extension__ (rb_intern2(kw->name, strlen(kw->name))) : (rb_intern)(kw->name));
17334    return kw->id[0];
17335       }
17336       if (kw->id[0] == 281) {
17337    (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
17338    if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
17339        (parser->parser_lpar_beg) = 0;
17340        --(parser->parser_paren_nest);
17341        return 284;
17342    }
17343    if (((parser->parser_cond_stack)&1)) return 282;
17344    if (((parser->parser_cmdarg_stack)&1) && state != EXPR_CMDARG)
17345        return 283;
17346    if (state == EXPR_ENDARG || state == EXPR_BEG)
17347        return 283;
17348    return 281;
17349       }
17350       if (state == EXPR_BEG || state == EXPR_VALUE)
17351    return kw->id[0];
17352       else {
17353    if (kw->id[0] != kw->id[1])
17354        (parser->parser_lex_state) = EXPR_BEG;
17355    return kw->id[1];
17356       }
17357   }
17358      }
17359
17360      if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
17361   (parser->parser_lex_state) == EXPR_DOT ||
17362   ((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
17363   if (cmd_state) {
17364       (parser->parser_lex_state) = EXPR_CMDARG;
17365   }
17366   else {
17367       (parser->parser_lex_state) = EXPR_ARG;
17368   }
17369      }
17370      else {
17371   (parser->parser_lex_state) = EXPR_END;
17372      }
17373  }
17374         {
17375             ID ident = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
17376
17377             (*((YYSTYPE*)(parser->parser_yylval))).id = ident;
17378             if (last_state != EXPR_DOT && (((ident)>376)&&((ident)&0x07)==0x00) && lvar_defined_gen(parser, ident)) {
17379                 (parser->parser_lex_state) = EXPR_END;
17380             }
17381         }
17382  return result;
17383     }
17384 }
17385
17386
17387 static int
17388 yylex(void *lval, void *p)
17389
17390
17391
17392 {
17393     struct parser_params *parser = (struct parser_params*)p;
17394     int t;
17395
17396
17397     parser->parser_yylval = lval;
17398     parser->parser_yylval->val = ((VALUE)RUBY_Qundef);
17399
17400     t = parser_yylex(parser);
17401 # 7621 "parse.y"
17402     return t;
17403 }
17404
17405
17406 static NODE*
17407 node_newnode(struct parser_params *parser, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
17408 {
17409     NODE *n = (rb_node_newnode)(type, a0, a1, a2);
17410     ((struct RNode*)(n))->flags=((((struct RNode*)(n))->flags&~(-1<<(8 +7)))|((((parser->parser_ruby_sourceline))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
17411     return n;
17412 }
17413
17414 enum node_type
17415 nodetype(NODE *node)
17416 {
17417     return (enum node_type)((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
17418 }
17419
17420 int
17421 nodeline(NODE *node)
17422 {
17423     return ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
17424 }
17425
17426 static NODE*
17427 newline_node(NODE *node)
17428 {
17429     if (node) {
17430  node = remove_begin(node);
17431  node->flags |= (((VALUE)1)<<7);
17432     }
17433     return node;
17434 }
17435
17436 static void
17437 fixpos(NODE *node, NODE *orig)
17438 {
17439     if (!node) return;
17440     if (!orig) return;
17441     if (orig == (NODE*)1) return;
17442     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(-1<<(8 +7)))|(((((VALUE)(((((struct RNode*)(orig)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
17443 }
17444
17445 static void
17446 parser_warning(struct parser_params *parser, NODE *node, const char *mesg)
17447 {
17448     rb_compile_warning((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
17449 }
17450
17451
17452 static void
17453 parser_warn(struct parser_params *parser, NODE *node, const char *mesg)
17454 {
17455     rb_compile_warn((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
17456 }
17457
17458
17459 static NODE*
17460 block_append_gen(struct parser_params *parser, NODE *head, NODE *tail)
17461 {
17462     NODE *end, *h = head, *nd;
17463
17464     if (tail == 0) return head;
17465
17466     if (h == 0) return tail;
17467     switch (((int) (((((struct RNode*)(h)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17468       case NODE_LIT:
17469       case NODE_STR:
17470       case NODE_SELF:
17471       case NODE_TRUE:
17472       case NODE_FALSE:
17473       case NODE_NIL:
17474  parser_warning(parser, h, "unused literal ignored");
17475  return tail;
17476       default:
17477  h = end = node_newnode(parser, (NODE_BLOCK), (VALUE)(head), (VALUE)(0), (VALUE)(0));
17478  end->u2.node = end;
17479  fixpos(end, head);
17480  head = end;
17481  break;
17482       case NODE_BLOCK:
17483  end = h->u2.node;
17484  break;
17485     }
17486
17487     nd = end->u1.node;
17488     switch (((int) (((((struct RNode*)(nd)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17489       case NODE_RETURN:
17490       case NODE_BREAK:
17491       case NODE_NEXT:
17492       case NODE_REDO:
17493       case NODE_RETRY:
17494  if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) {
17495      parser_warning(parser, nd, "statement not reached");
17496  }
17497  break;
17498
17499       default:
17500  break;
17501     }
17502
17503     if (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) {
17504  tail = node_newnode(parser, (NODE_BLOCK), (VALUE)(tail), (VALUE)(0), (VALUE)(0));
17505  tail->u2.node = tail;
17506     }
17507     end->u3.node = tail;
17508     h->u2.node = tail->u2.node;
17509     return head;
17510 }
17511
17512
17513 static NODE*
17514 list_append_gen(struct parser_params *parser, NODE *list, NODE *item)
17515 {
17516     NODE *last;
17517
17518     if (list == 0) return node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
17519     if (list->u3.node) {
17520  last = list->u3.node->u2.node;
17521     }
17522     else {
17523  last = list;
17524     }
17525
17526     list->u2.argc += 1;
17527     last->u3.node = node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
17528     list->u3.node->u2.node = last->u3.node;
17529     return list;
17530 }
17531
17532
17533 static NODE*
17534 list_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
17535 {
17536     NODE *last;
17537
17538     if (head->u3.node) {
17539  last = head->u3.node->u2.node;
17540     }
17541     else {
17542  last = head;
17543     }
17544
17545     head->u2.argc += tail->u2.argc;
17546     last->u3.node = tail;
17547     if (tail->u3.node) {
17548  head->u3.node->u2.node = tail->u3.node->u2.node;
17549     }
17550     else {
17551  head->u3.node->u2.node = tail;
17552     }
17553
17554     return head;
17555 }
17556
17557 static int
17558 literal_concat0(struct parser_params *parser, VALUE head, VALUE tail)
17559 {
17560     if (!rb_enc_compatible(head, tail)) {
17561  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal encodings differ (%s / %s)",
17562         (rb_enc_get(head))->name,
17563         (rb_enc_get(tail))->name);
17564  rb_str_resize(head, 0);
17565  rb_str_resize(tail, 0);
17566  return 0;
17567     }
17568     rb_str_buf_append(head, tail);
17569     return 1;
17570 }
17571
17572
17573 static NODE *
17574 literal_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
17575 {
17576     enum node_type htype;
17577
17578     if (!head) return tail;
17579     if (!tail) return head;
17580
17581     htype = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8));
17582     if (htype == NODE_EVSTR) {
17583  NODE *node = node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0));
17584  head = list_append_gen(parser,node,head);
17585     }
17586     switch (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17587       case NODE_STR:
17588  if (htype == NODE_STR) {
17589      if (!literal_concat0(parser, head->u1.value, tail->u1.value)) {
17590        error:
17591   rb_gc_force_recycle((VALUE)head);
17592   rb_gc_force_recycle((VALUE)tail);
17593   return 0;
17594      }
17595      rb_gc_force_recycle((VALUE)tail);
17596  }
17597  else {
17598      list_append_gen(parser,head,tail);
17599  }
17600  break;
17601
17602       case NODE_DSTR:
17603  if (htype == NODE_STR) {
17604      if (!literal_concat0(parser, head->u1.value, tail->u1.value))
17605   goto error;
17606      tail->u1.value = head->u1.value;
17607      rb_gc_force_recycle((VALUE)head);
17608      head = tail;
17609  }
17610  else {
17611      ((struct RNode*)(tail))->flags=((((struct RNode*)(tail))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARRAY)<<8)&(((VALUE)0x7f)<<8)));
17612      tail->u1.node = node_newnode(parser, (NODE_STR), (VALUE)(tail->u1.value), (VALUE)(0), (VALUE)(0));
17613      list_concat_gen(parser,head,tail);
17614  }
17615  break;
17616
17617       case NODE_EVSTR:
17618  if (htype == NODE_STR) {
17619      ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSTR)<<8)&(((VALUE)0x7f)<<8)));
17620      head->u2.argc = 1;
17621  }
17622  list_append_gen(parser,head,tail);
17623  break;
17624     }
17625     return head;
17626 }
17627
17628 static NODE *
17629 evstr2dstr_gen(struct parser_params *parser, NODE *node)
17630 {
17631     if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_EVSTR) {
17632  node = list_append_gen(parser,node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0)),node);
17633     }
17634     return node;
17635 }
17636
17637 static NODE *
17638 new_evstr_gen(struct parser_params *parser, NODE *node)
17639 {
17640     NODE *head = node;
17641
17642     if (node) {
17643  switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17644    case NODE_STR: case NODE_DSTR: case NODE_EVSTR:
17645      return node;
17646  }
17647     }
17648     return node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)((head)), (VALUE)(0));
17649 }
17650
17651 static NODE *
17652 call_bin_op_gen(struct parser_params *parser, NODE *recv, ID id, NODE *arg1)
17653 {
17654     value_expr_gen(parser, (recv) = remove_begin(recv));
17655     value_expr_gen(parser, (arg1) = remove_begin(arg1));
17656     return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(arg1), (VALUE)(1), (VALUE)(0))));
17657 }
17658
17659 static NODE *
17660 call_uni_op_gen(struct parser_params *parser, NODE *recv, ID id)
17661 {
17662     value_expr_gen(parser, (recv) = remove_begin(recv));
17663     return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(0));
17664 }
17665
17666 static NODE*
17667 match_op_gen(struct parser_params *parser, NODE *node1, NODE *node2)
17668 {
17669     value_expr_gen(parser, (node1) = remove_begin(node1));
17670     value_expr_gen(parser, (node2) = remove_begin(node2));
17671     if (node1) {
17672  switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17673    case NODE_DREGX:
17674    case NODE_DREGX_ONCE:
17675      return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
17676
17677    case NODE_LIT:
17678      if (rb_type((VALUE)(node1->u1.value)) == RUBY_T_REGEXP) {
17679   return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
17680      }
17681  }
17682     }
17683
17684     if (node2) {
17685  switch (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17686    case NODE_DREGX:
17687    case NODE_DREGX_ONCE:
17688      return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
17689
17690    case NODE_LIT:
17691      if (rb_type((VALUE)(node2->u1.value)) == RUBY_T_REGEXP) {
17692   return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
17693      }
17694  }
17695     }
17696
17697     return node_newnode(parser, (NODE_CALL), (VALUE)(node1), (VALUE)(332), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0))));
17698 }
17699
17700 static NODE*
17701 gettable_gen(struct parser_params *parser, ID id)
17702 {
17703     if (id == 288) {
17704  return node_newnode(parser, (NODE_SELF), (VALUE)(0), (VALUE)(0), (VALUE)(0));
17705     }
17706     else if (id == 289) {
17707  return node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
17708     }
17709     else if (id == 290) {
17710  return node_newnode(parser, (NODE_TRUE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
17711     }
17712     else if (id == 291) {
17713  return node_newnode(parser, (NODE_FALSE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
17714     }
17715     else if (id == 305) {
17716  return node_newnode(parser, (NODE_STR), (VALUE)(rb_external_str_new_with_enc((parser->parser_ruby_sourcefile), strlen((parser->parser_ruby_sourcefile)), rb_filesystem_encoding())), (VALUE)(0), (VALUE)(0));
17717
17718     }
17719     else if (id == 304) {
17720  return node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)((parser->parser_ruby_sourceline)))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
17721     }
17722     else if (id == 306) {
17723  return node_newnode(parser, (NODE_LIT), (VALUE)(rb_enc_from_encoding(parser->enc)), (VALUE)(0), (VALUE)(0));
17724     }
17725     else if ((((id)>376)&&((id)&0x07)==0x00)) {
17726  if (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) return node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
17727  if (local_id_gen(parser, id)) return node_newnode(parser, (NODE_LVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
17728
17729  return node_newnode(parser, (NODE_VCALL), (VALUE)(0), (VALUE)(id), (VALUE)(0));
17730     }
17731     else if ((((id)>376)&&((id)&0x07)==0x03)) {
17732  return node_newnode(parser, (NODE_GVAR), (VALUE)(id), (VALUE)(0), (VALUE)(rb_global_entry(id)));
17733     }
17734     else if ((((id)>376)&&((id)&0x07)==0x01)) {
17735  return node_newnode(parser, (NODE_IVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
17736     }
17737     else if ((((id)>376)&&((id)&0x07)==0x05)) {
17738  return node_newnode(parser, (NODE_CONST), (VALUE)(id), (VALUE)(0), (VALUE)(0));
17739     }
17740     else if ((((id)>376)&&((id)&0x07)==0x06)) {
17741  return node_newnode(parser, (NODE_CVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
17742     }
17743     parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to get", rb_id2name(id));
17744     return 0;
17745 }
17746
17747 static NODE*
17748 assignable_gen(struct parser_params *parser, ID id, NODE *val)
17749 {
17750     if (!id) return 0;
17751     if (id == 288) {
17752  parser_yyerror(parser, "Can't change the value of self");
17753     }
17754     else if (id == 289) {
17755  parser_yyerror(parser, "Can't assign to nil");
17756     }
17757     else if (id == 290) {
17758  parser_yyerror(parser, "Can't assign to true");
17759     }
17760     else if (id == 291) {
17761  parser_yyerror(parser, "Can't assign to false");
17762     }
17763     else if (id == 305) {
17764  parser_yyerror(parser, "Can't assign to __FILE__");
17765     }
17766     else if (id == 304) {
17767  parser_yyerror(parser, "Can't assign to __LINE__");
17768     }
17769     else if (id == 306) {
17770  parser_yyerror(parser, "Can't assign to __ENCODING__");
17771     }
17772     else if ((((id)>376)&&((id)&0x07)==0x00)) {
17773  if (dyna_in_block_gen(parser)) {
17774      if (dvar_curr_gen(parser, id)) {
17775   return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
17776      }
17777      else if (dvar_defined_gen(parser, id)) {
17778   return node_newnode(parser, (NODE_DASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
17779      }
17780      else if (local_id_gen(parser, id)) {
17781   return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
17782      }
17783      else{
17784   local_var_gen(parser, id);;
17785   return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
17786      }
17787  }
17788  else {
17789      if (!local_id_gen(parser, id)) {
17790   local_var_gen(parser, id);;
17791      }
17792      return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
17793  }
17794     }
17795     else if ((((id)>376)&&((id)&0x07)==0x03)) {
17796  return node_newnode(parser, (NODE_GASGN), (VALUE)(id), (VALUE)(val), (VALUE)(rb_global_entry(id)));
17797     }
17798     else if ((((id)>376)&&((id)&0x07)==0x01)) {
17799  return node_newnode(parser, (NODE_IASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
17800     }
17801     else if ((((id)>376)&&((id)&0x07)==0x05)) {
17802  if ((parser->parser_in_def) || (parser->parser_in_single))
17803      parser_yyerror(parser, "dynamic constant assignment");
17804  return node_newnode(parser, (NODE_CDECL), (VALUE)(id), (VALUE)(val), (VALUE)(0));
17805     }
17806     else if ((((id)>376)&&((id)&0x07)==0x06)) {
17807  return node_newnode(parser, (NODE_CVASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
17808     }
17809     else {
17810  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to set", rb_id2name(id));
17811     }
17812     return 0;
17813 }
17814
17815 static void
17816 shadowing_lvar_gen(struct parser_params *parser, ID name)
17817 {
17818     ID uscore;
17819
17820     do { static ID rb_intern_id_cache; if (!rb_intern_id_cache) rb_intern_id_cache = rb_intern2("_", strlen("_")); uscore = rb_intern_id_cache; } while (0);
17821     if (uscore == name) return;
17822     if (dyna_in_block_gen(parser)) {
17823  if (dvar_curr_gen(parser, name)) {
17824      parser_yyerror(parser, "duplicated argument name");
17825  }
17826  else if (dvar_defined_gen(parser, name) || local_id_gen(parser, name)) {
17827      rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "shadowing outer local variable - %s", rb_id2name(name));
17828      vtable_add((parser->parser_lvtbl)->vars, name);
17829  }
17830     }
17831     else {
17832  if (local_id_gen(parser, name)) {
17833      parser_yyerror(parser, "duplicated argument name");
17834  }
17835     }
17836 }
17837
17838 static void
17839 new_bv_gen(struct parser_params *parser, ID name)
17840 {
17841     if (!name) return;
17842     if (!(((name)>376)&&((name)&0x07)==0x00)) {
17843  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid local variable - %s",
17844         rb_id2name(name));
17845  return;
17846     }
17847     shadowing_lvar_gen(parser, name);
17848     local_var_gen(parser, name);;
17849 }
17850
17851 static NODE *
17852 aryset_gen(struct parser_params *parser, NODE *recv, NODE *idx)
17853 {
17854     if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
17855  recv = (NODE *)1;
17856     return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(337), (VALUE)(idx));
17857 }
17858
17859 static void
17860 block_dup_check_gen(struct parser_params *parser, NODE *node1, NODE *node2)
17861 {
17862     if (node2 && node1 && ((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
17863  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "both block arg and actual block given");
17864     }
17865 }
17866
17867 ID
17868 rb_id_attrset(ID id)
17869 {
17870     id &= ~0x07;
17871     id |= 0x04;
17872     return id;
17873 }
17874
17875 static NODE *
17876 attrset_gen(struct parser_params *parser, NODE *recv, ID id)
17877 {
17878     if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
17879  recv = (NODE *)1;
17880     return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(rb_id_attrset(id)), (VALUE)(0));
17881 }
17882
17883 static void
17884 rb_backref_error_gen(struct parser_params *parser, NODE *node)
17885 {
17886     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17887       case NODE_NTH_REF:
17888  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%ld", node->u2.argc);
17889  break;
17890       case NODE_BACK_REF:
17891  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%c", (int)node->u2.argc);
17892  break;
17893     }
17894 }
17895
17896 static NODE *
17897 arg_concat_gen(struct parser_params *parser, NODE *node1, NODE *node2)
17898 {
17899     if (!node2) return node1;
17900     switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17901       case NODE_BLOCK_PASS:
17902  node1->u3.node = arg_concat_gen(parser,node1->u3.node,node2);
17903  return node1;
17904       case NODE_ARGSPUSH:
17905  if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
17906  node1->u2.node = list_concat_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
17907  ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
17908  return node1;
17909       case NODE_ARGSCAT:
17910  if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY ||
17911      ((int) (((((struct RNode*)(node1->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
17912  node1->u2.node = list_concat_gen(parser,node1->u2.node,node2);
17913  return node1;
17914     }
17915     return node_newnode(parser, (NODE_ARGSCAT), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
17916 }
17917
17918 static NODE *
17919 arg_append_gen(struct parser_params *parser, NODE *node1, NODE *node2)
17920 {
17921     if (!node1) return node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0));
17922     switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17923       case NODE_ARRAY:
17924  return list_append_gen(parser,node1,node2);
17925       case NODE_BLOCK_PASS:
17926  node1->u1.node = arg_append_gen(parser,node1->u1.node,node2);
17927  return node1;
17928       case NODE_ARGSPUSH:
17929  node1->u2.node = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
17930  ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
17931  return node1;
17932     }
17933     return node_newnode(parser, (NODE_ARGSPUSH), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
17934 }
17935
17936 static NODE *
17937 splat_array(NODE* node)
17938 {
17939     if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) node = node->u1.node;
17940     if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) return node;
17941     return 0;
17942 }
17943
17944 static NODE *
17945 node_assign_gen(struct parser_params *parser, NODE *lhs, NODE *rhs)
17946 {
17947     if (!lhs) return 0;
17948
17949     switch (((int) (((((struct RNode*)(lhs)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17950       case NODE_GASGN:
17951       case NODE_IASGN:
17952       case NODE_IASGN2:
17953       case NODE_LASGN:
17954       case NODE_DASGN:
17955       case NODE_DASGN_CURR:
17956       case NODE_MASGN:
17957       case NODE_CDECL:
17958       case NODE_CVASGN:
17959  lhs->u2.node = rhs;
17960  break;
17961
17962       case NODE_ATTRASGN:
17963       case NODE_CALL:
17964  lhs->u3.node = arg_append_gen(parser,lhs->u3.node,rhs);
17965  break;
17966
17967       default:
17968
17969  break;
17970     }
17971
17972     return lhs;
17973 }
17974
17975 static int
17976 value_expr_gen(struct parser_params *parser, NODE *node)
17977 {
17978     int cond = 0;
17979
17980     if (!node) {
17981  rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "empty expression");
17982     }
17983     while (node) {
17984  switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
17985    case NODE_DEFN:
17986    case NODE_DEFS:
17987      parser_warning(parser, node, "void value expression");
17988      return ((VALUE)RUBY_Qfalse);
17989
17990    case NODE_RETURN:
17991    case NODE_BREAK:
17992    case NODE_NEXT:
17993    case NODE_REDO:
17994    case NODE_RETRY:
17995      if (!cond) parser_yyerror(parser, "void value expression");
17996
17997      return ((VALUE)RUBY_Qfalse);
17998
17999    case NODE_BLOCK:
18000      while (node->u3.node) {
18001   node = node->u3.node;
18002      }
18003      node = node->u1.node;
18004      break;
18005
18006    case NODE_BEGIN:
18007      node = node->u2.node;
18008      break;
18009
18010    case NODE_IF:
18011      if (!node->u2.node) {
18012   node = node->u3.node;
18013   break;
18014      }
18015      else if (!node->u3.node) {
18016   node = node->u2.node;
18017   break;
18018      }
18019      if (!value_expr_gen(parser, (node->u2.node) = remove_begin(node->u2.node))) return ((VALUE)RUBY_Qfalse);
18020      node = node->u3.node;
18021      break;
18022
18023    case NODE_AND:
18024    case NODE_OR:
18025      cond = 1;
18026      node = node->u2.node;
18027      break;
18028
18029    default:
18030      return ((VALUE)RUBY_Qtrue);
18031  }
18032     }
18033
18034     return ((VALUE)RUBY_Qtrue);
18035 }
18036
18037 static void
18038 void_expr_gen(struct parser_params *parser, NODE *node)
18039 {
18040     const char *useless = 0;
18041
18042     if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
18043
18044     if (!node) return;
18045     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
18046       case NODE_CALL:
18047  switch (node->u2.id) {
18048    case '+':
18049    case '-':
18050    case '*':
18051    case '/':
18052    case '%':
18053    case 323:
18054    case 321:
18055    case 322:
18056    case '|':
18057    case '^':
18058    case '&':
18059    case 324:
18060    case '>':
18061    case 328:
18062    case '<':
18063    case 329:
18064    case 325:
18065    case 327:
18066      useless = rb_id2name(node->u2.id);
18067      break;
18068  }
18069  break;
18070
18071       case NODE_LVAR:
18072       case NODE_DVAR:
18073       case NODE_GVAR:
18074       case NODE_IVAR:
18075       case NODE_CVAR:
18076       case NODE_NTH_REF:
18077       case NODE_BACK_REF:
18078  useless = "a variable";
18079  break;
18080       case NODE_CONST:
18081  useless = "a constant";
18082  break;
18083       case NODE_LIT:
18084       case NODE_STR:
18085       case NODE_DSTR:
18086       case NODE_DREGX:
18087       case NODE_DREGX_ONCE:
18088  useless = "a literal";
18089  break;
18090       case NODE_COLON2:
18091       case NODE_COLON3:
18092  useless = "::";
18093  break;
18094       case NODE_DOT2:
18095  useless = "..";
18096  break;
18097       case NODE_DOT3:
18098  useless = "...";
18099  break;
18100       case NODE_SELF:
18101  useless = "self";
18102  break;
18103       case NODE_NIL:
18104  useless = "nil";
18105  break;
18106       case NODE_TRUE:
18107  useless = "true";
18108  break;
18109       case NODE_FALSE:
18110  useless = "false";
18111  break;
18112       case NODE_DEFINED:
18113  useless = "defined?";
18114  break;
18115     }
18116
18117     if (useless) {
18118  int line = (parser->parser_ruby_sourceline);
18119
18120  (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
18121  rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "useless use of %s in void context", useless);
18122  (parser->parser_ruby_sourceline) = line;
18123     }
18124 }
18125
18126 static void
18127 void_stmts_gen(struct parser_params *parser, NODE *node)
18128 {
18129     if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
18130     if (!node) return;
18131     if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) return;
18132
18133     for (;;) {
18134  if (!node->u3.node) return;
18135  void_expr_gen(parser, (node->u1.node));
18136  node = node->u3.node;
18137     }
18138 }
18139
18140 static NODE *
18141 remove_begin(NODE *node)
18142 {
18143     NODE **n = &node, *n1 = node;
18144     while (n1 && ((int) (((((struct RNode*)(n1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN && n1->u2.node) {
18145  *n = n1 = n1->u2.node;
18146     }
18147     return node;
18148 }
18149
18150 static void
18151 reduce_nodes_gen(struct parser_params *parser, NODE **body)
18152 {
18153     NODE *node = *body;
18154
18155     if (!node) {
18156  *body = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
18157  return;
18158     }
18159
18160
18161
18162
18163
18164     while (node) {
18165  switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
18166    end:
18167    case NODE_NIL:
18168      *body = 0;
18169      return;
18170    case NODE_RETURN:
18171      *body = node = node->u1.node;
18172      continue;
18173    case NODE_BEGIN:
18174      *body = node = node->u2.node;
18175      continue;
18176    case NODE_BLOCK:
18177      body = &node->u2.node->u1.node;
18178      break;
18179    case NODE_IF:
18180      if (((!node->u2.node) ? (node->u3.node ? (body = &node->u3.node, 1) : 0) : (!node->u3.node) ? (body = &node->u2.node, 1) : (reduce_nodes_gen(parser,&node->u2.node), body = &node->u3.node, 1))) break;
18181      return;
18182    case NODE_CASE:
18183      body = &node->u2.node;
18184      break;
18185    case NODE_WHEN:
18186      if (!((!node->u2.node) ? (node->u3.node ? (body = &node->u3.node, 1) : 0) : (!node->u3.node) ? (body = &node->u2.node, 1) : (reduce_nodes_gen(parser,&node->u2.node), body = &node->u3.node, 1))) goto end;
18187      break;
18188    case NODE_ENSURE:
18189      if (!((!node->u1.node) ? (node->u2.node ? (body = &node->u2.node, 1) : 0) : (!node->u2.node) ? (body = &node->u1.node, 1) : (reduce_nodes_gen(parser,&node->u1.node), body = &node->u2.node, 1))) goto end;
18190      break;
18191    case NODE_RESCUE:
18192      if (!((!node->u1.node) ? (node->u2.node ? (body = &node->u2.node, 1) : 0) : (!node->u2.node) ? (body = &node->u1.node, 1) : (reduce_nodes_gen(parser,&node->u1.node), body = &node->u2.node, 1))) goto end;
18193      break;
18194    default:
18195      return;
18196  }
18197  node = *body;
18198     }
18199
18200
18201 }
18202
18203 static int
18204 assign_in_cond(struct parser_params *parser, NODE *node)
18205 {
18206     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
18207       case NODE_MASGN:
18208  parser_yyerror(parser, "multiple assignment in conditional");
18209  return 1;
18210
18211       case NODE_LASGN:
18212       case NODE_DASGN:
18213       case NODE_GASGN:
18214       case NODE_IASGN:
18215  break;
18216
18217       default:
18218  return 0;
18219     }
18220
18221     switch (((int) (((((struct RNode*)(node->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
18222       case NODE_LIT:
18223       case NODE_STR:
18224       case NODE_NIL:
18225       case NODE_TRUE:
18226       case NODE_FALSE:
18227
18228  parser_warn(parser, node->u2.node, "found = in conditional, should be ==");
18229  return 1;
18230
18231       case NODE_DSTR:
18232       case NODE_XSTR:
18233       case NODE_DXSTR:
18234       case NODE_EVSTR:
18235       case NODE_DREGX:
18236       default:
18237  break;
18238     }
18239     return 1;
18240 }
18241
18242 static void
18243 warn_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
18244 {
18245     if (!e_option_supplied(parser)) parser_warn(parser, node, str);
18246 }
18247
18248 static void
18249 warning_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
18250 {
18251     if (!e_option_supplied(parser)) parser_warning(parser, node, str);
18252 }
18253
18254 static void
18255 fixup_nodes(NODE **rootnode)
18256 {
18257     NODE *node, *next, *head;
18258
18259     for (node = *rootnode; node; node = next) {
18260  enum node_type type;
18261  VALUE val;
18262
18263  next = node->u3.node;
18264  head = node->u1.node;
18265  rb_gc_force_recycle((VALUE)node);
18266  *rootnode = next;
18267  switch (type = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8))) {
18268    case NODE_DOT2:
18269    case NODE_DOT3:
18270      val = rb_range_new(head->u1.node->u1.value, head->u2.node->u1.value,
18271           type == NODE_DOT3 ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
18272      rb_gc_force_recycle((VALUE)head->u1.node);
18273      rb_gc_force_recycle((VALUE)head->u2.node);
18274      ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
18275      head->u1.value = val;
18276      break;
18277    default:
18278      break;
18279  }
18280     }
18281 }
18282
18283 static NODE *cond0(struct parser_params*,NODE*);
18284
18285 static NODE*
18286 range_op(struct parser_params *parser, NODE *node)
18287 {
18288     enum node_type type;
18289
18290     if (node == 0) return 0;
18291
18292     type = ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
18293     value_expr_gen(parser, (node) = remove_begin(node));
18294     if (type == NODE_LIT && (((long)(node->u1.value))&RUBY_FIXNUM_FLAG)) {
18295  warn_unless_e_option(parser, node, "integer literal in conditional range");
18296  return node_newnode(parser, (NODE_CALL), (VALUE)(node), (VALUE)(325), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$.") ? __extension__ (rb_intern2("$.", strlen("$."))) : (rb_intern)("$."))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$.") ? __extension__ (rb_intern2("$.", strlen("$."))) : (rb_intern)("$.")))))), (VALUE)(1), (VALUE)(0))));
18297     }
18298     return cond0(parser, node);
18299 }
18300
18301 static int
18302 literal_node(NODE *node)
18303 {
18304     if (!node) return 1;
18305     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
18306       case NODE_LIT:
18307       case NODE_STR:
18308       case NODE_DSTR:
18309       case NODE_EVSTR:
18310       case NODE_DREGX:
18311       case NODE_DREGX_ONCE:
18312       case NODE_DSYM:
18313  return 2;
18314       case NODE_TRUE:
18315       case NODE_FALSE:
18316       case NODE_NIL:
18317  return 1;
18318     }
18319     return 0;
18320 }
18321
18322 static NODE*
18323 cond0(struct parser_params *parser, NODE *node)
18324 {
18325     if (node == 0) return 0;
18326     assign_in_cond(parser, node);
18327
18328     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
18329       case NODE_DSTR:
18330       case NODE_EVSTR:
18331       case NODE_STR:
18332  rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal in condition");
18333  break;
18334
18335       case NODE_DREGX:
18336       case NODE_DREGX_ONCE:
18337  warning_unless_e_option(parser, node, "regex literal in condition");
18338  return node_newnode(parser, (NODE_MATCH2), (VALUE)(node), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)(0));
18339
18340       case NODE_AND:
18341       case NODE_OR:
18342  node->u1.node = cond0(parser, node->u1.node);
18343  node->u2.node = cond0(parser, node->u2.node);
18344  break;
18345
18346       case NODE_DOT2:
18347       case NODE_DOT3:
18348  node->u1.node = range_op(parser, node->u1.node);
18349  node->u2.node = range_op(parser, node->u2.node);
18350  if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DOT2) ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_FLIP2)<<8)&(((VALUE)0x7f)<<8)));
18351  else if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DOT3) ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_FLIP3)<<8)&(((VALUE)0x7f)<<8)));
18352  if (!e_option_supplied(parser)) {
18353      int b = literal_node(node->u1.node);
18354      int e = literal_node(node->u2.node);
18355      if ((b == 1 && e == 1) || (b + e >= 2 && (((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0))) {
18356   parser_warn(parser, node, "range literal in condition");
18357      }
18358  }
18359  break;
18360
18361       case NODE_DSYM:
18362  parser_warning(parser, node, "literal in condition");
18363  break;
18364
18365       case NODE_LIT:
18366  if (rb_type((VALUE)(node->u1.value)) == RUBY_T_REGEXP) {
18367      warn_unless_e_option(parser, node, "regex literal in condition");
18368      ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_MATCH)<<8)&(((VALUE)0x7f)<<8)));
18369  }
18370  else {
18371      parser_warning(parser, node, "literal in condition");
18372  }
18373       default:
18374  break;
18375     }
18376     return node;
18377 }
18378
18379 static NODE*
18380 cond_gen(struct parser_params *parser, NODE *node)
18381 {
18382     if (node == 0) return 0;
18383     return cond0(parser, node);
18384 }
18385
18386 static NODE*
18387 logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *right)
18388 {
18389     value_expr_gen(parser, (left) = remove_begin(left));
18390     if (left && ((int) (((((struct RNode*)(left)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
18391  NODE *node = left, *second;
18392  while ((second = node->u2.node) != 0 && ((int) (((((struct RNode*)(second)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
18393      node = second;
18394  }
18395  node->u2.node = node_newnode(parser, (type), (VALUE)(second), (VALUE)(right), (VALUE)(0));
18396  return left;
18397     }
18398     return node_newnode(parser, (type), (VALUE)(left), (VALUE)(right), (VALUE)(0));
18399 }
18400
18401 static void
18402 no_blockarg(struct parser_params *parser, NODE *node)
18403 {
18404     if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
18405  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block argument should not be given");
18406     }
18407 }
18408
18409 static NODE *
18410 ret_args_gen(struct parser_params *parser, NODE *node)
18411 {
18412     if (node) {
18413  no_blockarg(parser, node);
18414  if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
18415      if (node->u3.node == 0) {
18416   node = node->u1.node;
18417      }
18418      else {
18419   ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_VALUES)<<8)&(((VALUE)0x7f)<<8)));
18420      }
18421  }
18422     }
18423     return node;
18424 }
18425
18426 static NODE *
18427 new_yield_gen(struct parser_params *parser, NODE *node)
18428 {
18429     long state = ((VALUE)RUBY_Qtrue);
18430
18431     if (node) {
18432         no_blockarg(parser, node);
18433  if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) {
18434      state = ((VALUE)RUBY_Qtrue);
18435  }
18436     }
18437     else {
18438         state = ((VALUE)RUBY_Qfalse);
18439     }
18440     return node_newnode(parser, (NODE_YIELD), (VALUE)(node), (VALUE)(0), (VALUE)(state));
18441 }
18442
18443 static NODE*
18444 negate_lit(NODE *node)
18445 {
18446     switch (rb_type((VALUE)(node->u1.value))) {
18447       case RUBY_T_FIXNUM:
18448  node->u1.value = ((VALUE)(((long)(-(((long)node->u1.value)>>(int)1)))<<1 | RUBY_FIXNUM_FLAG));
18449  break;
18450       case RUBY_T_BIGNUM:
18451  node->u1.value = rb_funcall(node->u1.value,322,0,0);
18452  break;
18453       case RUBY_T_FLOAT:
18454  ((struct RFloat*)(node->u1.value))->float_value = -(((struct RFloat*)(node->u1.value))->float_value);
18455  break;
18456       default:
18457  break;
18458     }
18459     return node;
18460 }
18461
18462 static NODE *
18463 arg_blk_pass(NODE *node1, NODE *node2)
18464 {
18465     if (node2) {
18466  node2->u1.node = node1;
18467  return node2;
18468     }
18469     return node1;
18470 }
18471
18472 static NODE*
18473 new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, ID b)
18474 {
18475     int saved_line = (parser->parser_ruby_sourceline);
18476     NODE *node;
18477     NODE *i1, *i2 = 0;
18478
18479     node = node_newnode(parser, (NODE_ARGS), (VALUE)(o), (VALUE)(m ? m->u2.argc : 0), (VALUE)(0));
18480     i1 = m ? m->u3.node : 0;
18481     node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(r), (VALUE)(b), (VALUE)(0));
18482
18483     if (p) {
18484  i2 = p->u3.node;
18485  node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(p->u1.id), (VALUE)(p->u2.argc), (VALUE)(0));
18486     }
18487     else if (i1) {
18488  node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
18489     }
18490     if (i1 || i2) {
18491  node->u3.node->u3.node->u3.node = node_newnode(parser, (NODE_AND), (VALUE)(i1), (VALUE)(i2), (VALUE)(0));
18492     }
18493     (parser->parser_ruby_sourceline) = saved_line;
18494     return node;
18495 }
18496
18497 static void
18498 local_push_gen(struct parser_params *parser, int inherit_dvars)
18499 {
18500     struct local_vars *local;
18501
18502     local = (struct local_vars*)ruby_xmalloc(sizeof(struct local_vars));
18503     local->prev = (parser->parser_lvtbl);
18504     local->args = vtable_alloc(0);
18505     local->vars = vtable_alloc(inherit_dvars ? ((void*)1) : ((void *)0));
18506     (parser->parser_lvtbl) = local;
18507 }
18508
18509 static void
18510 local_pop_gen(struct parser_params *parser)
18511 {
18512     struct local_vars *local = (parser->parser_lvtbl)->prev;
18513     vtable_free((parser->parser_lvtbl)->args);
18514     vtable_free((parser->parser_lvtbl)->vars);
18515     ruby_xfree((parser->parser_lvtbl));
18516     (parser->parser_lvtbl) = local;
18517 }
18518
18519 static ID*
18520 vtable_tblcpy(ID *buf, const struct vtable *src)
18521 {
18522     int i, cnt = vtable_size(src);
18523
18524     if (cnt > 0) {
18525         buf[0] = cnt;
18526         for (i = 0; i < cnt; i++) {
18527             buf[i] = src->tbl[i];
18528         }
18529         return buf;
18530     }
18531     return 0;
18532 }
18533
18534 static ID*
18535 local_tbl_gen(struct parser_params *parser)
18536 {
18537     int cnt = vtable_size((parser->parser_lvtbl)->args) + vtable_size((parser->parser_lvtbl)->vars);
18538     ID *buf;
18539
18540     if (cnt <= 0) return 0;
18541     buf = (ID*)ruby_xmalloc2((cnt + 1),sizeof(ID));
18542     vtable_tblcpy(buf+1, (parser->parser_lvtbl)->args);
18543     vtable_tblcpy(buf+vtable_size((parser->parser_lvtbl)->args)+1, (parser->parser_lvtbl)->vars);
18544     buf[0] = cnt;
18545     return buf;
18546 }
18547
18548 static int
18549 arg_var_gen(struct parser_params *parser, ID id)
18550 {
18551     vtable_add((parser->parser_lvtbl)->args, id);
18552     return vtable_size((parser->parser_lvtbl)->args) - 1;
18553 }
18554
18555 static int
18556 local_var_gen(struct parser_params *parser, ID id)
18557 {
18558     vtable_add((parser->parser_lvtbl)->vars, id);
18559     return vtable_size((parser->parser_lvtbl)->vars) - 1;
18560 }
18561
18562 static int
18563 local_id_gen(struct parser_params *parser, ID id)
18564 {
18565     struct vtable *vars, *args;
18566
18567     vars = (parser->parser_lvtbl)->vars;
18568     args = (parser->parser_lvtbl)->args;
18569
18570     while (vars && ((VALUE)(vars->prev) & ~(VALUE)3)) {
18571  vars = vars->prev;
18572  args = args->prev;
18573     }
18574
18575     if (vars && vars->prev == ((void*)1)) {
18576  return rb_local_defined(id);
18577     }
18578     else {
18579  return (vtable_included(args, id) ||
18580   vtable_included(vars, id));
18581     }
18582 }
18583
18584 static void
18585 dyna_push_gen(struct parser_params *parser)
18586 {
18587     (parser->parser_lvtbl)->args = vtable_alloc((parser->parser_lvtbl)->args);
18588     (parser->parser_lvtbl)->vars = vtable_alloc((parser->parser_lvtbl)->vars);
18589 }
18590
18591 static void
18592 dyna_pop_gen(struct parser_params *parser)
18593 {
18594     struct vtable *tmp;
18595
18596     tmp = (parser->parser_lvtbl)->args;
18597     (parser->parser_lvtbl)->args = (parser->parser_lvtbl)->args->prev;
18598     vtable_free(tmp);
18599     tmp = (parser->parser_lvtbl)->vars;
18600     (parser->parser_lvtbl)->vars = (parser->parser_lvtbl)->vars->prev;
18601     vtable_free(tmp);
18602 }
18603
18604 static int
18605 dyna_in_block_gen(struct parser_params *parser)
18606 {
18607     return ((VALUE)((parser->parser_lvtbl)->vars) & ~(VALUE)3) && (parser->parser_lvtbl)->vars->prev != ((void *)0);
18608 }
18609
18610 static int
18611 dvar_defined_gen(struct parser_params *parser, ID id)
18612 {
18613     struct vtable *vars, *args;
18614
18615     args = (parser->parser_lvtbl)->args;
18616     vars = (parser->parser_lvtbl)->vars;
18617
18618     while (((VALUE)(vars) & ~(VALUE)3)) {
18619  if (vtable_included(args, id)) {
18620      return 1;
18621  }
18622  if (vtable_included(vars, id)) {
18623      return 1;
18624  }
18625  args = args->prev;
18626  vars = vars->prev;
18627     }
18628
18629     if (vars == ((void*)1)) {
18630         return rb_dvar_defined(id);
18631     }
18632
18633     return 0;
18634 }
18635
18636 static int
18637 dvar_curr_gen(struct parser_params *parser, ID id)
18638 {
18639     return (vtable_included((parser->parser_lvtbl)->args, id) ||
18640      vtable_included((parser->parser_lvtbl)->vars, id));
18641 }
18642
18643 VALUE rb_reg_compile(VALUE str, int options);
18644 VALUE rb_reg_check_preprocess(VALUE);
18645
18646 static void
18647 reg_fragment_setenc_gen(struct parser_params* parser, VALUE str, int options)
18648 {
18649     int c = (((options)>>8)&0xff);
18650
18651     if (c) {
18652  int opt, idx;
18653  rb_char_to_option_kcode(c, &opt, &idx);
18654  if (idx != (((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) != 1023 ? ((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) : rb_enc_get_index(str)) &&
18655      rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
18656             goto error;
18657  }
18658  do { VALUE rb_encoding_set_obj = (str); int encoding_set_enc_index = (idx); if (encoding_set_enc_index < 1023) do { ((struct RBasic*)(rb_encoding_set_obj))->flags &= ~(1023<<(12 +10)); ((struct RBasic*)(rb_encoding_set_obj))->flags |= (encoding_set_enc_index) << (12 +10);} while (0); else rb_enc_set_index(rb_encoding_set_obj, encoding_set_enc_index); } while (0);
18659     }
18660     else if (((options)&32)) {
18661         if (!(((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) == 0) &&
18662             rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
18663             c = 'n';
18664             goto error;
18665         }
18666  rb_enc_associate(str, rb_ascii8bit_encoding());
18667     }
18668     else if (parser->enc == rb_usascii_encoding()) {
18669  if (rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
18670
18671      rb_enc_associate(str, rb_usascii_encoding());
18672  }
18673  else {
18674      rb_enc_associate(str, rb_ascii8bit_encoding());
18675  }
18676     }
18677     return;
18678
18679   error:
18680     parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline),
18681         "regexp encoding option '%c' differs from source encoding '%s'",
18682         c, (rb_enc_get(str))->name);
18683 }
18684
18685 static void
18686 reg_fragment_check_gen(struct parser_params* parser, VALUE str, int options)
18687 {
18688     VALUE err;
18689     reg_fragment_setenc_gen(parser, str, options);
18690     err = rb_reg_check_preprocess(str);
18691     if (err != ((VALUE)RUBY_Qnil)) {
18692         err = rb_obj_as_string(err);
18693         parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", (!(((struct RBasic*)(err))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(err))->as.ary : ((struct RString*)(err))->as.heap.ptr));
18694  (*(volatile VALUE *)&(err));
18695     }
18696 }
18697
18698 typedef struct {
18699     struct parser_params* parser;
18700     rb_encoding *enc;
18701     NODE *succ_block;
18702     NODE *fail_block;
18703     int num;
18704 } reg_named_capture_assign_t;
18705
18706 static int
18707 reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
18708           int back_num, int *back_refs, OnigRegex regex, void *arg0)
18709 {
18710     reg_named_capture_assign_t *arg = (reg_named_capture_assign_t*)arg0;
18711     struct parser_params* parser = arg->parser;
18712     rb_encoding *enc = arg->enc;
18713     int len = name_end - name;
18714     const char *s = (const char *)name;
18715     ID var;
18716
18717     arg->num++;
18718
18719     if (arg->succ_block == 0) {
18720         arg->succ_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
18721         arg->fail_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
18722     }
18723
18724     if (!len || (*name != '_' && ((unsigned long)((unsigned char)(*name)) < 128) && !(enc)->is_code_ctype(*name,6,enc)) ||
18725  rb_reserved_word(s, len) || !rb_enc_symname2_p(s, len, enc)) {
18726         return ST_CONTINUE;
18727     }
18728     var = rb_intern3(s, len, enc);
18729     if (dvar_defined_gen(parser, var) || local_id_gen(parser, var)) {
18730         rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "named capture conflicts a local variable - %s", rb_id2name(var));
18731
18732     }
18733     arg->succ_block = block_append_gen(parser,arg->succ_block,newline_node(node_assign_gen(parser, assignable_gen(parser, var, 0), node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)(idAREF), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)(var)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0)))))));
18734
18735
18736
18737
18738
18739
18740     arg->fail_block = block_append_gen(parser,arg->fail_block,newline_node(node_assign_gen(parser, assignable_gen(parser, var, 0), node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)RUBY_Qnil)), (VALUE)(0), (VALUE)(0)))));
18741
18742     return ST_CONTINUE;
18743 }
18744
18745 static NODE *
18746 reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match)
18747 {
18748     reg_named_capture_assign_t arg;
18749
18750     arg.parser = parser;
18751     arg.enc = rb_enc_get(regexp);
18752     arg.succ_block = 0;
18753     arg.fail_block = 0;
18754     arg.num = 0;
18755     onig_foreach_name(((struct RRegexp*)(regexp))->ptr, reg_named_capture_assign_iter, (void*)&arg);
18756
18757     if (arg.num == 0)
18758         return match;
18759
18760     return
18761         block_append_gen(parser,newline_node(match),node_newnode(parser, (NODE_IF), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)(block_append_gen(parser,newline_node(arg.succ_block),newline_node( node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)((__builtin_constant_p("begin") ? __extension__ (rb_intern2("begin", strlen("begin"))) : (rb_intern)("begin"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0))))))), (VALUE)(block_append_gen(parser,newline_node(arg.fail_block),newline_node( node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)RUBY_Qnil)), (VALUE)(0), (VALUE)(0)))))));
18762 # 8994 "parse.y"
18763 }
18764
18765 static VALUE
18766 reg_compile_gen(struct parser_params* parser, VALUE str, int options)
18767 {
18768     VALUE re;
18769     VALUE err;
18770
18771     reg_fragment_setenc_gen(parser, str, options);
18772     err = rb_errinfo();
18773     re = rb_reg_compile(str, options & 0xff);
18774     if (((VALUE)(re) == ((VALUE)RUBY_Qnil))) {
18775  ID mesg = (__builtin_constant_p("mesg") ? __extension__ (rb_intern2("mesg", strlen("mesg"))) : (rb_intern)("mesg"));
18776  VALUE m = rb_attr_get(rb_errinfo(), mesg);
18777  rb_set_errinfo(err);
18778  if (!((VALUE)(err) == ((VALUE)RUBY_Qnil))) {
18779      rb_str_append(rb_str_cat(rb_attr_get(err, mesg), "\n", 1), m);
18780  }
18781  else {
18782      parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", (!(((struct RBasic*)(m))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(m))->as.ary : ((struct RString*)(m))->as.heap.ptr));
18783  }
18784  return ((VALUE)RUBY_Qnil);
18785     }
18786     return re;
18787 }
18788
18789 void
18790 rb_gc_mark_parser(void)
18791 {
18792 }
18793
18794 NODE*
18795 rb_parser_append_print(VALUE vparser, NODE *node)
18796 {
18797     NODE *prelude = 0;
18798     NODE *scope = node;
18799     struct parser_params *parser;
18800
18801     if (!node) return node;
18802
18803     do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
18804
18805     node = node->u2.node;
18806
18807     if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
18808  prelude = node;
18809  node = node->u2.node;
18810     }
18811
18812     node = block_append_gen(parser,node,node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((__builtin_constant_p("print") ? __extension__ (rb_intern2("print", strlen("print"))) : (rb_intern)("print"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)(1), (VALUE)(0)))));
18813
18814
18815     if (prelude) {
18816  prelude->u2.node = node;
18817  scope->u2.node = prelude;
18818     }
18819     else {
18820  scope->u2.node = node;
18821     }
18822
18823     return scope;
18824 }
18825
18826 NODE *
18827 rb_parser_while_loop(VALUE vparser, NODE *node, int chop, int split)
18828 {
18829     NODE *prelude = 0;
18830     NODE *scope = node;
18831     struct parser_params *parser;
18832
18833     if (!node) return node;
18834
18835     do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
18836
18837     node = node->u2.node;
18838
18839     if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
18840  prelude = node;
18841  node = node->u2.node;
18842     }
18843     if (split) {
18844  node = block_append_gen(parser,node_newnode(parser, (NODE_GASGN), (VALUE)((__builtin_constant_p("$F") ? __extension__ (rb_intern2("$F", strlen("$F"))) : (rb_intern)("$F"))), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)((__builtin_constant_p("split") ? __extension__ (rb_intern2("split", strlen("split"))) : (rb_intern)("split"))), (VALUE)(0))), (VALUE)(rb_global_entry((__builtin_constant_p("$F") ? __extension__ (rb_intern2("$F", strlen("$F"))) : (rb_intern)("$F"))))),node);
18845
18846
18847
18848     }
18849     if (chop) {
18850  node = block_append_gen(parser,node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)((__builtin_constant_p("chop!") ? __extension__ (rb_intern2("chop!", strlen("chop!"))) : (rb_intern)("chop!"))), (VALUE)(0)),node);
18851
18852     }
18853
18854     node = node_newnode(parser, (NODE_OPT_N), (VALUE)(0), (VALUE)(node), (VALUE)(0));
18855
18856     if (prelude) {
18857  prelude->u2.node = node;
18858  scope->u2.node = prelude;
18859     }
18860     else {
18861  scope->u2.node = node;
18862     }
18863
18864     return scope;
18865 }
18866
18867 static const struct {
18868     ID token;
18869     const char *name;
18870 } op_tbl[] = {
18871     {334, ".."},
18872     {335, "..."},
18873     {'+', "+(binary)"},
18874     {'-', "-(binary)"},
18875     {323, "**"},
18876     {321, "+@"},
18877     {322, "-@"},
18878     {324, "<=>"},
18879     {328, ">="},
18880     {329, "<="},
18881     {325, "=="},
18882     {326, "==="},
18883     {327, "!="},
18884     {332, "=~"},
18885     {333, "!~"},
18886     {336, "[]"},
18887     {337, "[]="},
18888     {338, "<<"},
18889     {339, ">>"},
18890     {340, "::"},
18891 };
18892
18893
18894
18895 static struct symbols {
18896     ID last_id;
18897     st_table *sym_id;
18898     st_table *id_str;
18899     st_table *ivar2_id;
18900     st_table *id_ivar2;
18901     VALUE op_sym[376];
18902 } global_symbols = {tLAST_ID};
18903
18904 static const struct st_hash_type symhash = {
18905     rb_str_hash_cmp,
18906     rb_str_hash,
18907 };
18908
18909 struct ivar2_key {
18910     ID id;
18911     VALUE klass;
18912 };
18913
18914 static int
18915 ivar2_cmp(struct ivar2_key *key1, struct ivar2_key *key2)
18916 {
18917     if (key1->id == key2->id && key1->klass == key2->klass) {
18918  return 0;
18919     }
18920     return 1;
18921 }
18922
18923 static int
18924 ivar2_hash(struct ivar2_key *key)
18925 {
18926     return (key->id << 8) ^ (key->klass >> 2);
18927 }
18928
18929 static const struct st_hash_type ivar2_hash_type = {
18930     ivar2_cmp,
18931     ivar2_hash,
18932 };
18933
18934 void
18935 Init_sym(void)
18936 {
18937     global_symbols.sym_id = st_init_table_with_size(&symhash, 1000);
18938     global_symbols.id_str = st_init_numtable_with_size(1000);
18939     global_symbols.ivar2_id = st_init_table_with_size(&ivar2_hash_type, 1000);
18940     global_symbols.id_ivar2 = st_init_numtable_with_size(1000);
18941
18942     Init_id();
18943 }
18944
18945 void
18946 rb_gc_mark_symbols(void)
18947 {
18948     rb_mark_tbl(global_symbols.id_str);
18949     rb_gc_mark_locations(global_symbols.op_sym,
18950     global_symbols.op_sym + 376);
18951 }
18952
18953 static ID
18954 internal_id_gen(struct parser_params *parser)
18955 {
18956     ID id = (ID)vtable_size((parser->parser_lvtbl)->args) + (ID)vtable_size((parser->parser_lvtbl)->vars);
18957     id += ((376 - 0x07) >> 3) + 1;
18958     return 0x07 | (id << 3);
18959 }
18960
18961 static int
18962 is_special_global_name(const char *m, const char *e, rb_encoding *enc)
18963 {
18964     int mb = 0;
18965
18966     if (m >= e) return 0;
18967     switch (*m) {
18968       case '~': case '*': case '$': case '?': case '!': case '@':
18969       case '/': case '\\': case ';': case ',': case '.': case '=':
18970       case ':': case '<': case '>': case '\"':
18971       case '&': case '`': case '\'': case '+':
18972       case '0':
18973  ++m;
18974  break;
18975       case '-':
18976  ++m;
18977  if (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
18978      if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
18979      m += rb_enc_mbclen(m, e, enc);
18980  }
18981  break;
18982       default:
18983  if (!(enc)->is_code_ctype(*m,4,enc)) return 0;
18984  do {
18985      if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
18986      ++m;
18987  } while ((enc)->is_code_ctype(*m,4,enc));
18988     }
18989     return m == e ? mb + 1 : 0;
18990 }
18991
18992 int
18993 rb_symname_p(const char *name)
18994 {
18995     return rb_enc_symname_p(name, rb_ascii8bit_encoding());
18996 }
18997
18998 int
18999 rb_enc_symname_p(const char *name, rb_encoding *enc)
19000 {
19001     return rb_enc_symname2_p(name, strlen(name), enc);
19002 }
19003
19004 int
19005 rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
19006 {
19007     const char *m = name;
19008     const char *e = m + len;
19009     int localid = ((VALUE)RUBY_Qfalse);
19010
19011     if (!m) return ((VALUE)RUBY_Qfalse);
19012     switch (*m) {
19013       case '\0':
19014  return ((VALUE)RUBY_Qfalse);
19015
19016       case '$':
19017  if (is_special_global_name(++m, e, enc)) return ((VALUE)RUBY_Qtrue);
19018  goto id;
19019
19020       case '@':
19021  if (*++m == '@') ++m;
19022  goto id;
19023
19024       case '<':
19025  switch (*++m) {
19026    case '<': ++m; break;
19027    case '=': if (*++m == '>') ++m; break;
19028    default: break;
19029  }
19030  break;
19031
19032       case '>':
19033  switch (*++m) {
19034    case '>': case '=': ++m; break;
19035  }
19036  break;
19037
19038       case '=':
19039  switch (*++m) {
19040    case '~': ++m; break;
19041    case '=': if (*++m == '=') ++m; break;
19042    default: return ((VALUE)RUBY_Qfalse);
19043  }
19044  break;
19045
19046       case '*':
19047  if (*++m == '*') ++m;
19048  break;
19049
19050       case '+': case '-':
19051  if (*++m == '@') ++m;
19052  break;
19053
19054       case '|': case '^': case '&': case '/': case '%': case '~': case '`':
19055  ++m;
19056  break;
19057
19058       case '[':
19059  if (*++m != ']') return ((VALUE)RUBY_Qfalse);
19060  if (*++m == '=') ++m;
19061  break;
19062
19063       case '!':
19064  switch (*++m) {
19065    case '\0': return ((VALUE)RUBY_Qtrue);
19066    case '=': case '~': ++m; break;
19067    default: return ((VALUE)RUBY_Qfalse);
19068  }
19069  break;
19070
19071       default:
19072  localid = !(enc)->is_code_ctype(*m,10,enc);
19073       id:
19074  if (m >= e || (*m != '_' && !(enc)->is_code_ctype(*m,1,enc) && ((unsigned long)((unsigned char)(*m)) < 128)))
19075      return ((VALUE)RUBY_Qfalse);
19076  while (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) m += rb_enc_mbclen(m, e, enc);
19077  if (localid) {
19078      switch (*m) {
19079        case '!': case '?': case '=': ++m;
19080      }
19081  }
19082  break;
19083     }
19084     return *m ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
19085 }
19086
19087 static ID
19088 register_symid(ID id, const char *name, long len, rb_encoding *enc)
19089 {
19090     VALUE str = rb_enc_str_new(name, len, enc);
19091     do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
19092     st_add_direct(global_symbols.sym_id, (st_data_t)str, id);
19093     st_add_direct(global_symbols.id_str, id, (st_data_t)str);
19094     return id;
19095 }
19096
19097 ID
19098 rb_intern3(const char *name, long len, rb_encoding *enc)
19099 {
19100     const char *m = name;
19101     const char *e = m + len;
19102     unsigned char c;
19103     VALUE str;
19104     ID id;
19105     int last;
19106     int mb;
19107     struct RString fake_str;
19108     fake_str.basic.flags = RUBY_T_STRING|(((VALUE)1)<<(12 +1))|(((VALUE)1)<<11);
19109     fake_str.basic.klass = rb_cString;
19110     fake_str.as.heap.len = len;
19111     fake_str.as.heap.ptr = (char *)name;
19112     fake_str.as.heap.aux.capa = len;
19113     str = (VALUE)&fake_str;
19114     rb_enc_associate(str, enc);
19115
19116     if (st_lookup(global_symbols.sym_id, str, (st_data_t *)&id))
19117  return id;
19118
19119     if (rb_cString && !((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
19120  id = 0x07;
19121  goto new_id;
19122     }
19123     last = len-1;
19124     id = 0;
19125     switch (*m) {
19126       case '$':
19127  id |= 0x03;
19128  if ((mb = is_special_global_name(++m, e, enc)) != 0) {
19129      if (!--mb) enc = rb_ascii8bit_encoding();
19130      goto new_id;
19131  }
19132  break;
19133       case '@':
19134  if (m[1] == '@') {
19135      m++;
19136      id |= 0x06;
19137  }
19138  else {
19139      id |= 0x01;
19140  }
19141  m++;
19142  break;
19143       default:
19144  c = m[0];
19145  if (c != '_' && ((c) < 128) && (enc)->is_code_ctype(c,8,enc)) {
19146
19147      int i;
19148
19149      if (len == 1) {
19150   id = c;
19151   goto id_register;
19152      }
19153      for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
19154   if (*op_tbl[i].name == *m &&
19155       __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (op_tbl[i].name) && __builtin_constant_p (m) && (__s1_len = strlen (op_tbl[i].name), __s2_len = strlen (m), (!((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) || __s2_len >= 4)) ? __builtin_strcmp (op_tbl[i].name, m) : (__builtin_constant_p (op_tbl[i].name) && ((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) && (__s1_len = strlen (op_tbl[i].name), __s1_len < 4) ? (__builtin_constant_p (m) && ((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) ? __builtin_strcmp (op_tbl[i].name, m) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (m); register int __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (m) && ((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) && (__s2_len = strlen (m), __s2_len < 4) ? (__builtin_constant_p (op_tbl[i].name) && ((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) ? __builtin_strcmp (op_tbl[i].name, m) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (op_tbl[i].name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (m))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (m))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (m))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (m))[3]); } } __result; }))) : __builtin_strcmp (op_tbl[i].name, m)))); }) == 0) {
19156       id = op_tbl[i].token;
19157       goto id_register;
19158   }
19159      }
19160  }
19161
19162  if (m[last] == '=') {
19163
19164      id = rb_intern3(name, last, enc);
19165      if (id > 376 && !(((id)>376)&&((id)&0x07)==0x04)) {
19166   enc = rb_enc_get(rb_id2str(id));
19167   id = rb_id_attrset(id);
19168   goto id_register;
19169      }
19170      id = 0x04;
19171  }
19172  else if ((enc)->is_code_ctype(m[0],10,enc)) {
19173      id = 0x05;
19174         }
19175  else {
19176      id = 0x00;
19177  }
19178  break;
19179     }
19180     mb = 0;
19181     if (!(enc)->is_code_ctype(*m,4,enc)) {
19182  while (m <= name + last && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
19183      if (((unsigned long)((unsigned char)(*m)) < 128)) {
19184   m++;
19185      }
19186      else {
19187   mb = 1;
19188   m += rb_enc_mbclen(m, e, enc);
19189      }
19190  }
19191     }
19192     if (m - name < len) id = 0x07;
19193     if (enc != rb_usascii_encoding()) {
19194
19195
19196
19197
19198  if (!mb) {
19199      for (; m <= name + len; ++m) {
19200   if (!((unsigned long)((unsigned char)(*m)) < 128)) goto mbstr;
19201      }
19202      enc = rb_usascii_encoding();
19203  }
19204       mbstr:;
19205     }
19206   new_id:
19207     id |= ++global_symbols.last_id << 3;
19208   id_register:
19209     return register_symid(id, name, len, enc);
19210 }
19211
19212 ID
19213 rb_intern2(const char *name, long len)
19214 {
19215     return rb_intern3(name, len, rb_usascii_encoding());
19216 }
19217
19218
19219 ID
19220 rb_intern(const char *name)
19221 {
19222     return rb_intern2(name, strlen(name));
19223 }
19224
19225 ID
19226 rb_intern_str(VALUE str)
19227 {
19228     rb_encoding *enc;
19229     ID id;
19230
19231     if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
19232  enc = rb_usascii_encoding();
19233     }
19234     else {
19235  enc = rb_enc_get(str);
19236     }
19237     id = rb_intern3((!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr), (!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(str))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(str))->as.heap.len), enc);
19238     (*(volatile VALUE *)&(str));
19239     return id;
19240 }
19241
19242 VALUE
19243 rb_id2str(ID id)
19244 {
19245     st_data_t data;
19246
19247     if (id < 376) {
19248  int i = 0;
19249
19250  if (rb_ispunct(id)) {
19251      VALUE str = global_symbols.op_sym[i = (int)id];
19252      if (!str) {
19253   char name[2];
19254   name[0] = (char)id;
19255   name[1] = 0;
19256   str = rb_usascii_str_new(name, 1);
19257   do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
19258   global_symbols.op_sym[i] = str;
19259      }
19260      return str;
19261  }
19262  for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
19263      if (op_tbl[i].token == id) {
19264   VALUE str = global_symbols.op_sym[i];
19265   if (!str) {
19266       str = __extension__ ( { (__builtin_constant_p(op_tbl[i].name)) ? rb_usascii_str_new(op_tbl[i].name, strlen(op_tbl[i].name)) : rb_usascii_str_new_cstr(op_tbl[i].name); });
19267       do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
19268       global_symbols.op_sym[i] = str;
19269   }
19270   return str;
19271      }
19272  }
19273     }
19274
19275     if (st_lookup(global_symbols.id_str, id, &data)) {
19276         VALUE str = (VALUE)data;
19277         if (((struct RBasic*)(str))->klass == 0)
19278             ((struct RBasic*)(str))->klass = rb_cString;
19279  return str;
19280     }
19281
19282     if ((((id)>376)&&((id)&0x07)==0x04)) {
19283  ID id2 = (id & ~0x07) | 0x00;
19284  VALUE str;
19285
19286  while (!(str = rb_id2str(id2))) {
19287      if (!(((id2)>376)&&((id2)&0x07)==0x00)) return 0;
19288      id2 = (id & ~0x07) | 0x05;
19289  }
19290  str = rb_str_dup(str);
19291  rb_str_cat(str, "=", 1);
19292  rb_intern_str(str);
19293  if (st_lookup(global_symbols.id_str, id, &data)) {
19294             VALUE str = (VALUE)data;
19295             if (((struct RBasic*)(str))->klass == 0)
19296                 ((struct RBasic*)(str))->klass = rb_cString;
19297             return str;
19298         }
19299     }
19300     return 0;
19301 }
19302
19303 const char *
19304 rb_id2name(ID id)
19305 {
19306     VALUE str = rb_id2str(id);
19307
19308     if (!str) return 0;
19309     return (!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr);
19310 }
19311
19312 static int
19313 symbols_i(VALUE sym, ID value, VALUE ary)
19314 {
19315     rb_ary_push(ary, (((VALUE)(value)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG));
19316     return ST_CONTINUE;
19317 }
19318 # 9566 "parse.y"
19319 VALUE
19320 rb_sym_all_symbols(void)
19321 {
19322     VALUE ary = rb_ary_new2(global_symbols.sym_id->num_entries);
19323
19324     st_foreach(global_symbols.sym_id, symbols_i, ary);
19325     return ary;
19326 }
19327
19328 int
19329 rb_is_const_id(ID id)
19330 {
19331     if ((((id)>376)&&((id)&0x07)==0x05)) return ((VALUE)RUBY_Qtrue);
19332     return ((VALUE)RUBY_Qfalse);
19333 }
19334
19335 int
19336 rb_is_class_id(ID id)
19337 {
19338     if ((((id)>376)&&((id)&0x07)==0x06)) return ((VALUE)RUBY_Qtrue);
19339     return ((VALUE)RUBY_Qfalse);
19340 }
19341
19342 int
19343 rb_is_instance_id(ID id)
19344 {
19345     if ((((id)>376)&&((id)&0x07)==0x01)) return ((VALUE)RUBY_Qtrue);
19346     return ((VALUE)RUBY_Qfalse);
19347 }
19348
19349 int
19350 rb_is_local_id(ID id)
19351 {
19352     if ((((id)>376)&&((id)&0x07)==0x00)) return ((VALUE)RUBY_Qtrue);
19353     return ((VALUE)RUBY_Qfalse);
19354 }
19355
19356 int
19357 rb_is_junk_id(ID id)
19358 {
19359     if ((((id)>376)&&((id)&0x07)==0x07)) return ((VALUE)RUBY_Qtrue);
19360     return ((VALUE)RUBY_Qfalse);
19361 }
19362
19363
19364
19365 static void
19366 parser_initialize(struct parser_params *parser)
19367 {
19368     parser->eofp = ((VALUE)RUBY_Qfalse);
19369
19370     parser->parser_lex_strterm = 0;
19371     parser->parser_cond_stack = 0;
19372     parser->parser_cmdarg_stack = 0;
19373     parser->parser_class_nest = 0;
19374     parser->parser_paren_nest = 0;
19375     parser->parser_lpar_beg = 0;
19376     parser->parser_in_single = 0;
19377     parser->parser_in_def = 0;
19378     parser->parser_in_defined = 0;
19379     parser->parser_compile_for_eval = 0;
19380     parser->parser_cur_mid = 0;
19381     parser->parser_tokenbuf = ((void *)0);
19382     parser->parser_tokidx = 0;
19383     parser->parser_toksiz = 0;
19384     parser->parser_heredoc_end = 0;
19385     parser->parser_command_start = ((VALUE)RUBY_Qtrue);
19386     parser->parser_deferred_nodes = 0;
19387     parser->parser_lex_pbeg = 0;
19388     parser->parser_lex_p = 0;
19389     parser->parser_lex_pend = 0;
19390     parser->parser_lvtbl = 0;
19391     parser->parser_ruby__end__seen = 0;
19392     parser->parser_ruby_sourcefile = 0;
19393
19394     parser->is_ripper = 0;
19395     parser->parser_eval_tree_begin = 0;
19396     parser->parser_eval_tree = 0;
19397 # 9654 "parse.y"
19398     parser->heap = ((void *)0);
19399
19400     parser->enc = rb_usascii_encoding();
19401 }
19402
19403
19404
19405
19406
19407
19408 static void
19409 parser_mark(void *ptr)
19410 {
19411     struct parser_params *p = (struct parser_params*)ptr;
19412
19413     rb_gc_mark((VALUE)p->parser_lex_strterm);
19414     rb_gc_mark((VALUE)p->parser_deferred_nodes);
19415     rb_gc_mark(p->parser_lex_input);
19416     rb_gc_mark(p->parser_lex_lastline);
19417     rb_gc_mark(p->parser_lex_nextline);
19418
19419     rb_gc_mark((VALUE)p->parser_eval_tree_begin) ;
19420     rb_gc_mark((VALUE)p->parser_eval_tree) ;
19421     rb_gc_mark(p->debug_lines);
19422 # 9686 "parse.y"
19423     rb_gc_mark((VALUE)p->heap);
19424
19425 }
19426
19427 static void
19428 parser_free(void *ptr)
19429 {
19430     struct parser_params *p = (struct parser_params*)ptr;
19431     struct local_vars *local, *prev;
19432
19433     if (p->parser_tokenbuf) {
19434         ruby_xfree(p->parser_tokenbuf);
19435     }
19436     for (local = p->parser_lvtbl; local; local = prev) {
19437  if (local->vars) ruby_xfree(local->vars);
19438  prev = local->prev;
19439  ruby_xfree(local);
19440     }
19441
19442     ruby_xfree(p->parser_ruby_sourcefile);
19443
19444     ruby_xfree(p);
19445 }
19446
19447 VALUE rb_parser_get_yydebug(VALUE);
19448 VALUE rb_parser_set_yydebug(VALUE, VALUE);
19449
19450
19451 static struct parser_params *
19452 parser_new(void)
19453 {
19454     struct parser_params *p;
19455
19456     p = (struct parser_params*)ruby_xmalloc2((1),sizeof(struct parser_params));
19457     memset((p), 0, sizeof(struct parser_params)*(1));
19458     parser_initialize(p);
19459     return p;
19460 }
19461
19462 VALUE
19463 rb_parser_new(void)
19464 {
19465     struct parser_params *p = parser_new();
19466
19467     return rb_data_object_alloc(0,p,(RUBY_DATA_FUNC)parser_mark,(RUBY_DATA_FUNC)parser_free);
19468 }
19469 # 9740 "parse.y"
19470 VALUE
19471 rb_parser_end_seen_p(VALUE vparser)
19472 {
19473     struct parser_params *parser;
19474
19475     do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
19476     return (parser->parser_ruby__end__seen) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
19477 }
19478
19479
19480
19481
19482
19483
19484
19485 VALUE
19486 rb_parser_encoding(VALUE vparser)
19487 {
19488     struct parser_params *parser;
19489
19490     do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
19491     return rb_enc_from_encoding(parser->enc);
19492 }
19493
19494
19495
19496
19497
19498
19499
19500 VALUE
19501 rb_parser_get_yydebug(VALUE self)
19502 {
19503     struct parser_params *parser;
19504
19505     do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
19506     return (parser->parser_yydebug) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
19507 }
19508
19509
19510
19511
19512
19513
19514
19515 VALUE
19516 rb_parser_set_yydebug(VALUE self, VALUE flag)
19517 {
19518     struct parser_params *parser;
19519
19520     do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
19521     (parser->parser_yydebug) = (((VALUE)(flag) & ~((VALUE)RUBY_Qnil)) != 0);
19522     return flag;
19523 }
19524
19525
19526
19527
19528
19529
19530
19531 void *
19532 rb_parser_malloc(struct parser_params *parser, size_t size)
19533 {
19534     size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
19535     NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
19536     void *ptr = ruby_xmalloc(size);
19537
19538     return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
19539 }
19540
19541 void *
19542 rb_parser_calloc(struct parser_params *parser, size_t nelem, size_t size)
19543 {
19544     size_t cnt = ((nelem) * (size) / sizeof(YYSTYPE));
19545     NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
19546     void *ptr = ruby_xcalloc(nelem, size);
19547
19548     return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
19549 }
19550
19551 void *
19552 rb_parser_realloc(struct parser_params *parser, void *ptr, size_t size)
19553 {
19554     NODE *n;
19555     size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
19556
19557     if (ptr && (n = parser->heap) != ((void *)0)) {
19558  do {
19559      if (n->u1.node == ptr) {
19560   n->u1.node = ptr = ruby_xrealloc(ptr, size);
19561   if (n->u3.cnt) n->u3.cnt = cnt;
19562   return ptr;
19563      }
19564  } while ((n = n->u2.node) != ((void *)0));
19565     }
19566     n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
19567     ptr = ruby_xrealloc(ptr, size);
19568     return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
19569 }
19570
19571 void
19572 rb_parser_free(struct parser_params *parser, void *ptr)
19573 {
19574     NODE **prev = &parser->heap, *n;
19575
19576     while ((n = *prev) != ((void *)0)) {
19577  if (n->u1.node == ptr) {
19578      *prev = n->u2.node;
19579      rb_gc_force_recycle((VALUE)n);
19580      break;
19581  }
19582  prev = &n->u2.node;
19583     }
19584     ruby_xfree(ptr);
19585 }