]> git.wh0rd.org - ICEs.git/blob - 264653/parse_.i.0
add bfin ice
[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 }