26 keyword_do_cond = 282,
27 keyword_do_block = 283,
28 keyword_do_LAMBDA = 284,
40 modifier_unless = 296,
43 modifier_rescue = 299,
45 keyword_defined = 301,
48 keyword__LINE__ = 304,
49 keyword__FILE__ = 305,
50 keyword__ENCODING__ = 306,
60 tSTRING_CONTENT = 316,
114 id_core_set_method_alias = 370,
115 id_core_set_variable_alias = 371,
116 id_core_undef_method = 372,
117 id_core_define_method = 373,
118 id_core_define_singleton_method = 374,
119 id_core_set_postexe = 375,
122 typedef unsigned int size_t;
129 unsigned int __w_termsig:7;
130 unsigned int __w_coredump:1;
131 unsigned int __w_retcode:8;
136 unsigned int __w_stopval:8;
137 unsigned int __w_stopsig:8;
145 } __WAIT_STATUS __attribute__ ((__transparent_union__));
156 __extension__ typedef struct
161 extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
162 extern double atof (__const char *__nptr)
163 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
164 extern int atoi (__const char *__nptr)
165 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
166 extern long int atol (__const char *__nptr)
167 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
168 __extension__ extern long long int atoll (__const char *__nptr)
169 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
170 extern double strtod (__const char *__restrict __nptr,
171 char **__restrict __endptr)
172 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
173 extern float strtof (__const char *__restrict __nptr,
174 char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
175 extern long double strtold (__const char *__restrict __nptr,
176 char **__restrict __endptr)
177 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
178 extern long int strtol (__const char *__restrict __nptr,
179 char **__restrict __endptr, int __base)
180 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
181 extern unsigned long int strtoul (__const char *__restrict __nptr,
182 char **__restrict __endptr, int __base)
183 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
185 extern long long int strtoq (__const char *__restrict __nptr,
186 char **__restrict __endptr, int __base)
187 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
189 extern unsigned long long int strtouq (__const char *__restrict __nptr,
190 char **__restrict __endptr, int __base)
191 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
193 extern long long int strtoll (__const char *__restrict __nptr,
194 char **__restrict __endptr, int __base)
195 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
197 extern unsigned long long int strtoull (__const char *__restrict __nptr,
198 char **__restrict __endptr, int __base)
199 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
200 typedef struct __locale_struct
202 struct locale_data *__locales[13];
203 const unsigned short int *__ctype_b;
204 const int *__ctype_tolower;
205 const int *__ctype_toupper;
206 const char *__names[13];
208 extern long int strtol_l (__const char *__restrict __nptr,
209 char **__restrict __endptr, int __base,
210 __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
211 extern unsigned long int strtoul_l (__const char *__restrict __nptr,
212 char **__restrict __endptr,
213 int __base, __locale_t __loc)
214 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
216 extern long long int strtoll_l (__const char *__restrict __nptr,
217 char **__restrict __endptr, int __base,
219 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
221 extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
222 char **__restrict __endptr,
223 int __base, __locale_t __loc)
224 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
225 extern double strtod_l (__const char *__restrict __nptr,
226 char **__restrict __endptr, __locale_t __loc)
227 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
228 extern float strtof_l (__const char *__restrict __nptr,
229 char **__restrict __endptr, __locale_t __loc)
230 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
231 extern long double strtold_l (__const char *__restrict __nptr,
232 char **__restrict __endptr,
234 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
235 extern __inline double
236 __attribute__ ((__nothrow__)) atof (__const char *__nptr)
238 return strtod (__nptr, (char **) ((void *)0));
241 __attribute__ ((__nothrow__)) atoi (__const char *__nptr)
243 return (int) strtol (__nptr, (char **) ((void *)0), 10);
245 extern __inline long int
246 __attribute__ ((__nothrow__)) atol (__const char *__nptr)
248 return strtol (__nptr, (char **) ((void *)0), 10);
250 __extension__ extern __inline long long int
251 __attribute__ ((__nothrow__)) atoll (__const char *__nptr)
253 return strtoll (__nptr, (char **) ((void *)0), 10);
255 extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
256 extern long int a64l (__const char *__s)
257 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
258 typedef unsigned char __u_char;
259 typedef unsigned short int __u_short;
260 typedef unsigned int __u_int;
261 typedef unsigned long int __u_long;
262 typedef signed char __int8_t;
263 typedef unsigned char __uint8_t;
264 typedef signed short int __int16_t;
265 typedef unsigned short int __uint16_t;
266 typedef signed int __int32_t;
267 typedef unsigned int __uint32_t;
268 __extension__ typedef signed long long int __int64_t;
269 __extension__ typedef unsigned long long int __uint64_t;
270 __extension__ typedef long long int __quad_t;
271 __extension__ typedef unsigned long long int __u_quad_t;
272 __extension__ typedef __u_quad_t __dev_t;
273 __extension__ typedef unsigned int __uid_t;
274 __extension__ typedef unsigned int __gid_t;
275 __extension__ typedef unsigned long int __ino_t;
276 __extension__ typedef __u_quad_t __ino64_t;
277 __extension__ typedef unsigned int __mode_t;
278 __extension__ typedef unsigned int __nlink_t;
279 __extension__ typedef long int __off_t;
280 __extension__ typedef __quad_t __off64_t;
281 __extension__ typedef int __pid_t;
282 __extension__ typedef struct { int __val[2]; } __fsid_t;
283 __extension__ typedef long int __clock_t;
284 __extension__ typedef unsigned long int __rlim_t;
285 __extension__ typedef __u_quad_t __rlim64_t;
286 __extension__ typedef unsigned int __id_t;
287 __extension__ typedef long int __time_t;
288 __extension__ typedef unsigned int __useconds_t;
289 __extension__ typedef long int __suseconds_t;
290 __extension__ typedef int __daddr_t;
291 __extension__ typedef long int __swblk_t;
292 __extension__ typedef int __key_t;
293 __extension__ typedef int __clockid_t;
294 __extension__ typedef void * __timer_t;
295 __extension__ typedef long int __blksize_t;
296 __extension__ typedef long int __blkcnt_t;
297 __extension__ typedef __quad_t __blkcnt64_t;
298 __extension__ typedef unsigned long int __fsblkcnt_t;
299 __extension__ typedef __u_quad_t __fsblkcnt64_t;
300 __extension__ typedef unsigned long int __fsfilcnt_t;
301 __extension__ typedef __u_quad_t __fsfilcnt64_t;
302 __extension__ typedef int __ssize_t;
303 typedef __off64_t __loff_t;
304 typedef __quad_t *__qaddr_t;
305 typedef char *__caddr_t;
306 __extension__ typedef int __intptr_t;
307 __extension__ typedef unsigned int __socklen_t;
308 typedef __u_char u_char;
309 typedef __u_short u_short;
310 typedef __u_int u_int;
311 typedef __u_long u_long;
312 typedef __quad_t quad_t;
313 typedef __u_quad_t u_quad_t;
314 typedef __fsid_t fsid_t;
315 typedef __loff_t loff_t;
316 typedef __ino64_t ino_t;
317 typedef __ino64_t ino64_t;
318 typedef __dev_t dev_t;
319 typedef __gid_t gid_t;
320 typedef __mode_t mode_t;
321 typedef __nlink_t nlink_t;
322 typedef __uid_t uid_t;
323 typedef __off64_t off_t;
324 typedef __off64_t off64_t;
325 typedef __pid_t pid_t;
327 typedef __ssize_t ssize_t;
328 typedef __daddr_t daddr_t;
329 typedef __caddr_t caddr_t;
330 typedef __key_t key_t;
331 typedef __clock_t clock_t;
332 typedef __time_t time_t;
333 typedef __clockid_t clockid_t;
334 typedef __timer_t timer_t;
335 typedef __useconds_t useconds_t;
336 typedef __suseconds_t suseconds_t;
337 typedef unsigned long int ulong;
338 typedef unsigned short int ushort;
339 typedef unsigned int uint;
340 typedef int int8_t __attribute__ ((__mode__ (__QI__)));
341 typedef int int16_t __attribute__ ((__mode__ (__HI__)));
342 typedef int int32_t __attribute__ ((__mode__ (__SI__)));
343 typedef int int64_t __attribute__ ((__mode__ (__DI__)));
344 typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
345 typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
346 typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
347 typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
348 typedef int register_t __attribute__ ((__mode__ (__word__)));
349 typedef int __sig_atomic_t;
352 unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
354 typedef __sigset_t sigset_t;
363 __suseconds_t tv_usec;
365 typedef long int __fd_mask;
368 __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
370 typedef __fd_mask fd_mask;
371 extern int select (int __nfds, fd_set *__restrict __readfds,
372 fd_set *__restrict __writefds,
373 fd_set *__restrict __exceptfds,
374 struct timeval *__restrict __timeout);
375 extern int pselect (int __nfds, fd_set *__restrict __readfds,
376 fd_set *__restrict __writefds,
377 fd_set *__restrict __exceptfds,
378 const struct timespec *__restrict __timeout,
379 const __sigset_t *__restrict __sigmask);
381 extern unsigned int gnu_dev_major (unsigned long long int __dev)
382 __attribute__ ((__nothrow__));
384 extern unsigned int gnu_dev_minor (unsigned long long int __dev)
385 __attribute__ ((__nothrow__));
387 extern unsigned long long int gnu_dev_makedev (unsigned int __major,
388 unsigned int __minor)
389 __attribute__ ((__nothrow__));
390 __extension__ extern __inline unsigned int
391 __attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
393 return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
395 __extension__ extern __inline unsigned int
396 __attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
398 return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
400 __extension__ extern __inline unsigned long long int
401 __attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
403 return ((__minor & 0xff) | ((__major & 0xfff) << 8)
404 | (((unsigned long long int) (__minor & ~0xff)) << 12)
405 | (((unsigned long long int) (__major & ~0xfff)) << 32));
407 typedef __blksize_t blksize_t;
408 typedef __blkcnt64_t blkcnt_t;
409 typedef __fsblkcnt64_t fsblkcnt_t;
410 typedef __fsfilcnt64_t fsfilcnt_t;
411 typedef __blkcnt64_t blkcnt64_t;
412 typedef __fsblkcnt64_t fsblkcnt64_t;
413 typedef __fsfilcnt64_t fsfilcnt64_t;
414 typedef unsigned long int pthread_t;
420 typedef struct __pthread_internal_slist
422 struct __pthread_internal_slist *__next;
426 struct __pthread_mutex_s
429 unsigned int __count;
432 unsigned int __nusers;
436 __pthread_slist_t __list;
446 } pthread_mutexattr_t;
452 unsigned int __futex;
453 __extension__ unsigned long long int __total_seq;
454 __extension__ unsigned long long int __wakeup_seq;
455 __extension__ unsigned long long int __woken_seq;
457 unsigned int __nwaiters;
458 unsigned int __broadcast_seq;
461 __extension__ long long int __align;
467 } pthread_condattr_t;
468 typedef unsigned int pthread_key_t;
469 typedef int pthread_once_t;
475 unsigned int __nr_readers;
476 unsigned int __readers_wakeup;
477 unsigned int __writer_wakeup;
478 unsigned int __nr_readers_queued;
479 unsigned int __nr_writers_queued;
480 unsigned char __flags;
481 unsigned char __shared;
482 unsigned char __pad1;
483 unsigned char __pad2;
493 } pthread_rwlockattr_t;
494 typedef volatile int pthread_spinlock_t;
504 } pthread_barrierattr_t;
505 extern long int random (void) __attribute__ ((__nothrow__));
506 extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
507 extern char *initstate (unsigned int __seed, char *__statebuf,
508 size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
509 extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
520 extern int random_r (struct random_data *__restrict __buf,
521 int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
522 extern int srandom_r (unsigned int __seed, struct random_data *__buf)
523 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
524 extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
526 struct random_data *__restrict __buf)
527 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
528 extern int setstate_r (char *__restrict __statebuf,
529 struct random_data *__restrict __buf)
530 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
531 extern int rand (void) __attribute__ ((__nothrow__));
532 extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
533 extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
534 extern double drand48 (void) __attribute__ ((__nothrow__));
535 extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
536 extern long int lrand48 (void) __attribute__ ((__nothrow__));
537 extern long int nrand48 (unsigned short int __xsubi[3])
538 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
539 extern long int mrand48 (void) __attribute__ ((__nothrow__));
540 extern long int jrand48 (unsigned short int __xsubi[3])
541 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
542 extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
543 extern unsigned short int *seed48 (unsigned short int __seed16v[3])
544 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
545 extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
548 unsigned short int __x[3];
549 unsigned short int __old_x[3];
550 unsigned short int __c;
551 unsigned short int __init;
552 unsigned long long int __a;
554 extern int drand48_r (struct drand48_data *__restrict __buffer,
555 double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
556 extern int erand48_r (unsigned short int __xsubi[3],
557 struct drand48_data *__restrict __buffer,
558 double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
559 extern int lrand48_r (struct drand48_data *__restrict __buffer,
560 long int *__restrict __result)
561 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
562 extern int nrand48_r (unsigned short int __xsubi[3],
563 struct drand48_data *__restrict __buffer,
564 long int *__restrict __result)
565 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
566 extern int mrand48_r (struct drand48_data *__restrict __buffer,
567 long int *__restrict __result)
568 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
569 extern int jrand48_r (unsigned short int __xsubi[3],
570 struct drand48_data *__restrict __buffer,
571 long int *__restrict __result)
572 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
573 extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
574 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
575 extern int seed48_r (unsigned short int __seed16v[3],
576 struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
577 extern int lcong48_r (unsigned short int __param[7],
578 struct drand48_data *__buffer)
579 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
580 extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
581 extern void *calloc (size_t __nmemb, size_t __size)
582 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
583 extern void *realloc (void *__ptr, size_t __size)
584 __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
585 extern void free (void *__ptr) __attribute__ ((__nothrow__));
586 extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
587 extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
588 extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
589 extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
590 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
591 extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
592 extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
593 extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
594 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
595 extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
596 extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
597 extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
598 extern char *__secure_getenv (__const char *__name)
599 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
600 extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
601 extern int setenv (__const char *__name, __const char *__value, int __replace)
602 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
603 extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
604 extern int clearenv (void) __attribute__ ((__nothrow__));
605 extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
606 extern int mkstemp (char *__template) __asm__ ("" "mkstemp64")
607 __attribute__ ((__nonnull__ (1))) ;
608 extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
609 extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
610 extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64")
611 __attribute__ ((__nonnull__ (1))) ;
612 extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
613 extern int system (__const char *__command) ;
614 extern char *canonicalize_file_name (__const char *__name)
615 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
616 extern char *realpath (__const char *__restrict __name,
617 char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
618 typedef int (*__compar_fn_t) (__const void *, __const void *);
619 typedef __compar_fn_t comparison_fn_t;
620 extern void *bsearch (__const void *__key, __const void *__base,
621 size_t __nmemb, size_t __size, __compar_fn_t __compar)
622 __attribute__ ((__nonnull__ (1, 2, 5))) ;
623 extern void qsort (void *__base, size_t __nmemb, size_t __size,
624 __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
625 extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
626 extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
627 __extension__ extern long long int llabs (long long int __x)
628 __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
629 extern div_t div (int __numer, int __denom)
630 __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
631 extern ldiv_t ldiv (long int __numer, long int __denom)
632 __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
633 __extension__ extern lldiv_t lldiv (long long int __numer,
634 long long int __denom)
635 __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
636 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
637 int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
638 extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
639 int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
640 extern char *gcvt (double __value, int __ndigit, char *__buf)
641 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
642 extern char *qecvt (long double __value, int __ndigit,
643 int *__restrict __decpt, int *__restrict __sign)
644 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
645 extern char *qfcvt (long double __value, int __ndigit,
646 int *__restrict __decpt, int *__restrict __sign)
647 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
648 extern char *qgcvt (long double __value, int __ndigit, char *__buf)
649 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
650 extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
651 int *__restrict __sign, char *__restrict __buf,
652 size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
653 extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
654 int *__restrict __sign, char *__restrict __buf,
655 size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
656 extern int qecvt_r (long double __value, int __ndigit,
657 int *__restrict __decpt, int *__restrict __sign,
658 char *__restrict __buf, size_t __len)
659 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
660 extern int qfcvt_r (long double __value, int __ndigit,
661 int *__restrict __decpt, int *__restrict __sign,
662 char *__restrict __buf, size_t __len)
663 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
664 extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
665 extern int mbtowc (wchar_t *__restrict __pwc,
666 __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
667 extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
668 extern size_t mbstowcs (wchar_t *__restrict __pwcs,
669 __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
670 extern size_t wcstombs (char *__restrict __s,
671 __const wchar_t *__restrict __pwcs, size_t __n)
672 __attribute__ ((__nothrow__));
673 extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
674 extern int getsubopt (char **__restrict __optionp,
675 char *__const *__restrict __tokens,
676 char **__restrict __valuep)
677 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;
678 extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
679 extern int posix_openpt (int __oflag) ;
680 extern int grantpt (int __fd) __attribute__ ((__nothrow__));
681 extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
682 extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ;
683 extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
684 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
685 extern int getpt (void);
686 extern int getloadavg (double __loadavg[], int __nelem)
687 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
688 extern void *memcpy (void *__restrict __dest,
689 __const void *__restrict __src, size_t __n)
690 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
691 extern void *memmove (void *__dest, __const void *__src, size_t __n)
692 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
693 extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
695 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
696 extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
697 extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
698 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
699 extern void *memchr (__const void *__s, int __c, size_t __n)
700 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
701 extern void *rawmemchr (__const void *__s, int __c)
702 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
703 extern void *memrchr (__const void *__s, int __c, size_t __n)
704 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
705 extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
706 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
707 extern char *strncpy (char *__restrict __dest,
708 __const char *__restrict __src, size_t __n)
709 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
710 extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
711 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
712 extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
713 size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
714 extern int strcmp (__const char *__s1, __const char *__s2)
715 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
716 extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
717 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
718 extern int strcoll (__const char *__s1, __const char *__s2)
719 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
720 extern size_t strxfrm (char *__restrict __dest,
721 __const char *__restrict __src, size_t __n)
722 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
723 extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
724 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
725 extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
726 __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
727 extern char *strdup (__const char *__s)
728 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
729 extern char *strndup (__const char *__string, size_t __n)
730 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
731 extern char *strchr (__const char *__s, int __c)
732 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
733 extern char *strrchr (__const char *__s, int __c)
734 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
735 extern char *strchrnul (__const char *__s, int __c)
736 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
737 extern size_t strcspn (__const char *__s, __const char *__reject)
738 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
739 extern size_t strspn (__const char *__s, __const char *__accept)
740 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
741 extern char *strpbrk (__const char *__s, __const char *__accept)
742 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
743 extern char *strstr (__const char *__haystack, __const char *__needle)
744 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
745 extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
746 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
747 extern char *__strtok_r (char *__restrict __s,
748 __const char *__restrict __delim,
749 char **__restrict __save_ptr)
750 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
751 extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
752 char **__restrict __save_ptr)
753 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
754 extern char *strcasestr (__const char *__haystack, __const char *__needle)
755 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
756 extern void *memmem (__const void *__haystack, size_t __haystacklen,
757 __const void *__needle, size_t __needlelen)
758 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
759 extern void *__mempcpy (void *__restrict __dest,
760 __const void *__restrict __src, size_t __n)
761 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
762 extern void *mempcpy (void *__restrict __dest,
763 __const void *__restrict __src, size_t __n)
764 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
765 extern size_t strlen (__const char *__s)
766 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
767 extern size_t strnlen (__const char *__string, size_t __maxlen)
768 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
769 extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
770 extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
771 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
772 extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));
773 extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
774 extern void bcopy (__const void *__src, void *__dest, size_t __n)
775 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
776 extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
777 extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
778 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
779 extern char *index (__const char *__s, int __c)
780 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
781 extern char *rindex (__const char *__s, int __c)
782 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
783 extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
784 extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
785 __extension__ extern int ffsll (long long int __ll)
786 __attribute__ ((__nothrow__)) __attribute__ ((__const__));
787 extern int strcasecmp (__const char *__s1, __const char *__s2)
788 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
789 extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
790 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
791 extern int strcasecmp_l (__const char *__s1, __const char *__s2,
793 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
794 extern int strncasecmp_l (__const char *__s1, __const char *__s2,
795 size_t __n, __locale_t __loc)
796 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
797 extern char *strsep (char **__restrict __stringp,
798 __const char *__restrict __delim)
799 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
800 extern int strverscmp (__const char *__s1, __const char *__s2)
801 __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
802 extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
803 extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
804 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
805 extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
806 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
807 extern char *__stpncpy (char *__restrict __dest,
808 __const char *__restrict __src, size_t __n)
809 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
810 extern char *stpncpy (char *__restrict __dest,
811 __const char *__restrict __src, size_t __n)
812 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
813 extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
814 extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
815 extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
816 extern void *__rawmemchr (const void *__s, int __c);
817 extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
818 extern __inline size_t
819 __strcspn_c1 (__const char *__s, int __reject)
821 register size_t __result = 0;
822 while (__s[__result] != '\0' && __s[__result] != __reject)
826 extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
828 extern __inline size_t
829 __strcspn_c2 (__const char *__s, int __reject1, int __reject2)
831 register size_t __result = 0;
832 while (__s[__result] != '\0' && __s[__result] != __reject1
833 && __s[__result] != __reject2)
837 extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
838 int __reject2, int __reject3);
839 extern __inline size_t
840 __strcspn_c3 (__const char *__s, int __reject1, int __reject2,
843 register size_t __result = 0;
844 while (__s[__result] != '\0' && __s[__result] != __reject1
845 && __s[__result] != __reject2 && __s[__result] != __reject3)
849 extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
850 extern __inline size_t
851 __strspn_c1 (__const char *__s, int __accept)
853 register size_t __result = 0;
854 while (__s[__result] == __accept)
858 extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
860 extern __inline size_t
861 __strspn_c2 (__const char *__s, int __accept1, int __accept2)
863 register size_t __result = 0;
864 while (__s[__result] == __accept1 || __s[__result] == __accept2)
868 extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
869 int __accept2, int __accept3);
870 extern __inline size_t
871 __strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
873 register size_t __result = 0;
874 while (__s[__result] == __accept1 || __s[__result] == __accept2
875 || __s[__result] == __accept3)
879 extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
881 extern __inline char *
882 __strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
884 while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
886 return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
888 extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
889 int __accept2, int __accept3);
890 extern __inline char *
891 __strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
894 while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
895 && *__s != __accept3)
897 return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
899 extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
900 extern __inline char *
901 __strtok_r_1c (char *__s, char __sep, char **__nextp)
904 if (__s == ((void *)0))
906 while (*__s == __sep)
908 __result = ((void *)0);
922 extern char *__strsep_g (char **__stringp, __const char *__delim);
923 extern __inline char *__strsep_1c (char **__s, char __reject);
924 extern __inline char *
925 __strsep_1c (char **__s, char __reject)
927 register char *__retval = *__s;
928 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))
932 extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
933 extern __inline char *
934 __strsep_2c (char **__s, char __reject1, char __reject2)
936 register char *__retval = *__s;
937 if (__retval != ((void *)0))
939 register char *__cp = __retval;
947 if (*__cp == __reject1 || *__cp == __reject2)
958 extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
960 extern __inline char *
961 __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
963 register char *__retval = *__s;
964 if (__retval != ((void *)0))
966 register char *__cp = __retval;
974 if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
985 extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
986 extern char *__strndup (__const char *__string, size_t __n)
987 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
988 typedef unsigned char uint8_t;
989 typedef unsigned short int uint16_t;
990 typedef unsigned int uint32_t;
992 typedef unsigned long long int uint64_t;
993 typedef signed char int_least8_t;
994 typedef short int int_least16_t;
995 typedef int int_least32_t;
997 typedef long long int int_least64_t;
998 typedef unsigned char uint_least8_t;
999 typedef unsigned short int uint_least16_t;
1000 typedef unsigned int uint_least32_t;
1002 typedef unsigned long long int uint_least64_t;
1003 typedef signed char int_fast8_t;
1004 typedef int int_fast16_t;
1005 typedef int int_fast32_t;
1007 typedef long long int int_fast64_t;
1008 typedef unsigned char uint_fast8_t;
1009 typedef unsigned int uint_fast16_t;
1010 typedef unsigned int uint_fast32_t;
1012 typedef unsigned long long int uint_fast64_t;
1013 typedef int intptr_t;
1014 typedef unsigned int uintptr_t;
1016 typedef long long int intmax_t;
1018 typedef unsigned long long int uintmax_t;
1019 typedef int __gwchar_t;
1025 extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
1026 extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
1027 __attribute__ ((__nothrow__)) __attribute__ ((__const__));
1028 extern intmax_t strtoimax (__const char *__restrict __nptr,
1029 char **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
1030 extern uintmax_t strtoumax (__const char *__restrict __nptr,
1031 char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__));
1032 extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
1033 __gwchar_t **__restrict __endptr, int __base)
1034 __attribute__ ((__nothrow__));
1035 extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
1036 __gwchar_t ** __restrict __endptr, int __base)
1037 __attribute__ ((__nothrow__));
1039 extern long long int __strtoll_internal (__const char *__restrict __nptr,
1040 char **__restrict __endptr,
1041 int __base, int __group)
1042 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1043 extern __inline intmax_t
1044 __attribute__ ((__nothrow__)) strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)
1046 return __strtoll_internal (nptr, endptr, base, 0);
1049 extern unsigned long long int __strtoull_internal (__const char *
1052 __restrict __endptr,
1055 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1056 extern __inline uintmax_t
1057 __attribute__ ((__nothrow__)) strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)
1059 return __strtoull_internal (nptr, endptr, base, 0);
1062 extern long long int __wcstoll_internal (__const __gwchar_t *
1064 __gwchar_t **__restrict __endptr,
1065 int __base, int __group)
1066 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1067 extern __inline intmax_t
1068 __attribute__ ((__nothrow__)) wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
1070 return __wcstoll_internal (nptr, endptr, base, 0);
1073 extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
1076 __restrict __endptr,
1079 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1080 extern __inline uintmax_t
1081 __attribute__ ((__nothrow__)) wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
1083 return __wcstoull_internal (nptr, endptr, base, 0);
1085 typedef int ptrdiff_t;
1087 typedef struct _IO_FILE FILE;
1088 typedef struct _IO_FILE __FILE;
1101 __mbstate_t __state;
1106 __mbstate_t __state;
1108 typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
1109 typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
1110 typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
1111 typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
1112 typedef __builtin_va_list __gnuc_va_list;
1113 struct _IO_jump_t; struct _IO_FILE;
1114 typedef void _IO_lock_t;
1116 struct _IO_marker *_next;
1117 struct _IO_FILE *_sbuf;
1120 enum __codecvt_result
1131 char* _IO_read_base;
1132 char* _IO_write_base;
1133 char* _IO_write_ptr;
1134 char* _IO_write_end;
1137 char *_IO_save_base;
1138 char *_IO_backup_base;
1140 struct _IO_marker *_markers;
1141 struct _IO_FILE *_chain;
1144 __off_t _old_offset;
1145 unsigned short _cur_column;
1146 signed char _vtable_offset;
1156 char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
1158 typedef struct _IO_FILE _IO_FILE;
1159 struct _IO_FILE_plus;
1160 extern struct _IO_FILE_plus _IO_2_1_stdin_;
1161 extern struct _IO_FILE_plus _IO_2_1_stdout_;
1162 extern struct _IO_FILE_plus _IO_2_1_stderr_;
1163 typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
1164 typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
1166 typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
1167 typedef int __io_close_fn (void *__cookie);
1168 typedef __io_read_fn cookie_read_function_t;
1169 typedef __io_write_fn cookie_write_function_t;
1170 typedef __io_seek_fn cookie_seek_function_t;
1171 typedef __io_close_fn cookie_close_function_t;
1175 __io_write_fn *write;
1177 __io_close_fn *close;
1178 } _IO_cookie_io_functions_t;
1179 typedef _IO_cookie_io_functions_t cookie_io_functions_t;
1180 struct _IO_cookie_file;
1181 extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
1182 void *__cookie, _IO_cookie_io_functions_t __fns);
1183 extern int __underflow (_IO_FILE *);
1184 extern int __uflow (_IO_FILE *);
1185 extern int __overflow (_IO_FILE *, int);
1186 extern int _IO_getc (_IO_FILE *__fp);
1187 extern int _IO_putc (int __c, _IO_FILE *__fp);
1188 extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
1189 extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
1190 extern int _IO_peekc_locked (_IO_FILE *__fp);
1191 extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
1192 extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
1193 extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
1194 extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
1195 __gnuc_va_list, int *__restrict);
1196 extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
1198 extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
1199 extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
1200 extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
1201 extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
1202 extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
1203 typedef __gnuc_va_list va_list;
1204 typedef _G_fpos64_t fpos_t;
1205 typedef _G_fpos64_t fpos64_t;
1206 extern struct _IO_FILE *stdin;
1207 extern struct _IO_FILE *stdout;
1208 extern struct _IO_FILE *stderr;
1209 extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
1210 extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
1211 extern int renameat (int __oldfd, __const char *__old, int __newfd,
1212 __const char *__new) __attribute__ ((__nothrow__));
1213 extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") ;
1214 extern FILE *tmpfile64 (void) ;
1215 extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
1216 extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
1217 extern char *tempnam (__const char *__dir, __const char *__pfx)
1218 __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
1219 extern int fclose (FILE *__stream);
1220 extern int fflush (FILE *__stream);
1221 extern int fflush_unlocked (FILE *__stream);
1222 extern int fcloseall (void);
1223 extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) __asm__ ("" "fopen64")
1225 extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64")
1227 extern FILE *fopen64 (__const char *__restrict __filename,
1228 __const char *__restrict __modes) ;
1229 extern FILE *freopen64 (__const char *__restrict __filename,
1230 __const char *__restrict __modes,
1231 FILE *__restrict __stream) ;
1232 extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
1233 extern FILE *fopencookie (void *__restrict __magic_cookie,
1234 __const char *__restrict __modes,
1235 _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) ;
1236 extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
1237 __attribute__ ((__nothrow__)) ;
1238 extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
1239 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
1240 extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
1241 int __modes, size_t __n) __attribute__ ((__nothrow__));
1242 extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
1243 size_t __size) __attribute__ ((__nothrow__));
1244 extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
1245 extern int fprintf (FILE *__restrict __stream,
1246 __const char *__restrict __format, ...);
1247 extern int printf (__const char *__restrict __format, ...);
1248 extern int sprintf (char *__restrict __s,
1249 __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
1250 extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
1251 __gnuc_va_list __arg);
1252 extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
1253 extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
1254 __gnuc_va_list __arg) __attribute__ ((__nothrow__));
1255 extern int snprintf (char *__restrict __s, size_t __maxlen,
1256 __const char *__restrict __format, ...)
1257 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
1258 extern int vsnprintf (char *__restrict __s, size_t __maxlen,
1259 __const char *__restrict __format, __gnuc_va_list __arg)
1260 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
1261 extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
1262 __gnuc_va_list __arg)
1263 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
1264 extern int __asprintf (char **__restrict __ptr,
1265 __const char *__restrict __fmt, ...)
1266 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
1267 extern int asprintf (char **__restrict __ptr,
1268 __const char *__restrict __fmt, ...)
1269 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
1270 extern int vdprintf (int __fd, __const char *__restrict __fmt,
1271 __gnuc_va_list __arg)
1272 __attribute__ ((__format__ (__printf__, 2, 0)));
1273 extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
1274 __attribute__ ((__format__ (__printf__, 2, 3)));
1275 extern int fscanf (FILE *__restrict __stream,
1276 __const char *__restrict __format, ...) ;
1277 extern int scanf (__const char *__restrict __format, ...) ;
1278 extern int sscanf (__const char *__restrict __s,
1279 __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
1280 extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
1281 __gnuc_va_list __arg)
1282 __attribute__ ((__format__ (__scanf__, 2, 0))) ;
1283 extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
1284 __attribute__ ((__format__ (__scanf__, 1, 0))) ;
1285 extern int vsscanf (__const char *__restrict __s,
1286 __const char *__restrict __format, __gnuc_va_list __arg)
1287 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
1288 extern int fgetc (FILE *__stream);
1289 extern int getc (FILE *__stream);
1290 extern int getchar (void);
1291 extern int getc_unlocked (FILE *__stream);
1292 extern int getchar_unlocked (void);
1293 extern int fgetc_unlocked (FILE *__stream);
1294 extern int fputc (int __c, FILE *__stream);
1295 extern int putc (int __c, FILE *__stream);
1296 extern int putchar (int __c);
1297 extern int fputc_unlocked (int __c, FILE *__stream);
1298 extern int putc_unlocked (int __c, FILE *__stream);
1299 extern int putchar_unlocked (int __c);
1300 extern int getw (FILE *__stream);
1301 extern int putw (int __w, FILE *__stream);
1302 extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
1304 extern char *gets (char *__s) ;
1305 extern char *fgets_unlocked (char *__restrict __s, int __n,
1306 FILE *__restrict __stream) ;
1307 extern __ssize_t __getdelim (char **__restrict __lineptr,
1308 size_t *__restrict __n, int __delimiter,
1309 FILE *__restrict __stream) ;
1310 extern __ssize_t getdelim (char **__restrict __lineptr,
1311 size_t *__restrict __n, int __delimiter,
1312 FILE *__restrict __stream) ;
1313 extern __ssize_t getline (char **__restrict __lineptr,
1314 size_t *__restrict __n,
1315 FILE *__restrict __stream) ;
1316 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
1317 extern int puts (__const char *__s);
1318 extern int ungetc (int __c, FILE *__stream);
1319 extern size_t fread (void *__restrict __ptr, size_t __size,
1320 size_t __n, FILE *__restrict __stream) ;
1321 extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
1322 size_t __n, FILE *__restrict __s) ;
1323 extern int fputs_unlocked (__const char *__restrict __s,
1324 FILE *__restrict __stream);
1325 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
1326 size_t __n, FILE *__restrict __stream) ;
1327 extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
1328 size_t __n, FILE *__restrict __stream) ;
1329 extern int fseek (FILE *__stream, long int __off, int __whence);
1330 extern long int ftell (FILE *__stream) ;
1331 extern void rewind (FILE *__stream);
1332 extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64");
1333 extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64");
1334 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64");
1335 extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __asm__ ("" "fsetpos64");
1336 extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
1337 extern __off64_t ftello64 (FILE *__stream) ;
1338 extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
1339 extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
1340 extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
1341 extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
1342 extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
1343 extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
1344 extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
1345 extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
1346 extern void perror (__const char *__s);
1347 extern int sys_nerr;
1348 extern __const char *__const sys_errlist[];
1349 extern int _sys_nerr;
1350 extern __const char *__const _sys_errlist[];
1351 extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
1352 extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
1353 extern FILE *popen (__const char *__command, __const char *__modes) ;
1354 extern int pclose (FILE *__stream);
1355 extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
1356 extern char *cuserid (char *__s);
1358 extern int obstack_printf (struct obstack *__restrict __obstack,
1359 __const char *__restrict __format, ...)
1360 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
1361 extern int obstack_vprintf (struct obstack *__restrict __obstack,
1362 __const char *__restrict __format,
1363 __gnuc_va_list __args)
1364 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
1365 extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
1366 extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
1367 extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
1369 vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
1371 return vfprintf (stdout, __fmt, __arg);
1376 return _IO_getc (stdin);
1379 fgetc_unlocked (FILE *__fp)
1381 return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
1384 getc_unlocked (FILE *__fp)
1386 return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
1389 getchar_unlocked (void)
1391 return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
1396 return _IO_putc (__c, stdout);
1399 fputc_unlocked (int __c, FILE *__stream)
1401 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
1404 putc_unlocked (int __c, FILE *__stream)
1406 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
1409 putchar_unlocked (int __c)
1411 return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
1413 extern __inline __ssize_t
1414 getline (char **__lineptr, size_t *__n, FILE *__stream)
1416 return __getdelim (__lineptr, __n, '\n', __stream);
1419 __attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
1421 return (((__stream)->_flags & 0x10) != 0);
1424 __attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
1426 return (((__stream)->_flags & 0x20) != 0);
1428 void *ruby_xmalloc(size_t);
1429 void *ruby_xmalloc2(size_t,size_t);
1430 void *ruby_xcalloc(size_t,size_t);
1431 void *ruby_xrealloc(void*,size_t);
1432 void *ruby_xrealloc2(void*,size_t,size_t);
1433 void ruby_xfree(void*);
1434 typedef unsigned long VALUE;
1435 typedef unsigned long ID;
1436 VALUE rb_int2inum(long);
1437 VALUE rb_uint2inum(VALUE);
1438 VALUE rb_ll2inum(long long);
1439 VALUE rb_ull2inum(unsigned long long);
1440 enum ruby_special_consts {
1445 RUBY_IMMEDIATE_MASK = 0x03,
1446 RUBY_FIXNUM_FLAG = 0x01,
1447 RUBY_SYMBOL_FLAG = 0x0e,
1448 RUBY_SPECIAL_SHIFT = 8
1450 enum ruby_value_type {
1452 RUBY_T_OBJECT = 0x01,
1453 RUBY_T_CLASS = 0x02,
1454 RUBY_T_MODULE = 0x03,
1455 RUBY_T_FLOAT = 0x04,
1456 RUBY_T_STRING = 0x05,
1457 RUBY_T_REGEXP = 0x06,
1458 RUBY_T_ARRAY = 0x07,
1460 RUBY_T_STRUCT = 0x09,
1461 RUBY_T_BIGNUM = 0x0a,
1464 RUBY_T_MATCH = 0x0d,
1465 RUBY_T_COMPLEX = 0x0e,
1466 RUBY_T_RATIONAL = 0x0f,
1469 RUBY_T_FALSE = 0x13,
1470 RUBY_T_SYMBOL = 0x14,
1471 RUBY_T_FIXNUM = 0x15,
1472 RUBY_T_UNDEF = 0x1b,
1474 RUBY_T_ICLASS = 0x1d,
1475 RUBY_T_ZOMBIE = 0x1e,
1478 void rb_check_type(VALUE,int);
1479 VALUE rb_str_to_str(VALUE);
1480 VALUE rb_string_value(volatile VALUE*);
1481 char *rb_string_value_ptr(volatile VALUE*);
1482 char *rb_string_value_cstr(volatile VALUE*);
1483 void rb_check_safe_obj(VALUE);
1484 void rb_check_safe_str(VALUE);
1485 VALUE rb_str_export(VALUE);
1486 VALUE rb_str_export_locale(VALUE);
1487 VALUE rb_get_path(VALUE);
1488 VALUE rb_get_path_no_checksafe(VALUE);
1489 void rb_secure(int);
1490 int rb_safe_level(void);
1491 void rb_set_safe_level(int);
1492 void rb_set_safe_level_force(int);
1493 void rb_secure_update(VALUE);
1494 VALUE rb_errinfo(void);
1495 void rb_set_errinfo(VALUE);
1496 long rb_num2long(VALUE);
1497 VALUE rb_num2ulong(VALUE);
1501 return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2long(x);
1503 long long rb_num2ll(VALUE);
1504 unsigned long long rb_num2ull(VALUE);
1505 static inline long long
1508 return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2ll(x);
1510 double rb_num2dbl(VALUE);
1511 VALUE rb_uint2big(VALUE);
1512 VALUE rb_int2big(long);
1516 if (!(((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1))))
1517 return rb_int2big(v);
1518 return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
1521 UINT2NUM(unsigned int v)
1523 if (!((v) < (2147483647L>>1)+1))
1524 return rb_uint2big(v);
1525 return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
1530 if ((((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1)))) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
1531 return rb_int2big(v);
1534 ULONG2NUM(unsigned long v)
1536 if (((v) < (2147483647L>>1)+1)) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
1537 return rb_uint2big(v);
1539 char *rb_str2cstr(VALUE,long*);
1540 VALUE rb_newobj(void);
1546 struct RBasic basic;
1551 struct st_table *iv_index_tbl;
1558 struct st_table *iv_tbl;
1561 struct RBasic basic;
1563 struct st_table *m_tbl;
1564 struct st_table *iv_index_tbl;
1567 struct RBasic basic;
1571 struct RBasic basic;
1581 char ary[((sizeof(VALUE)*3)/sizeof(char)-1) + 1];
1585 struct RBasic basic;
1599 struct RBasic basic;
1600 struct re_pattern_buffer *ptr;
1602 unsigned long usecnt;
1605 struct RBasic basic;
1606 struct st_table *ntbl;
1611 struct RBasic basic;
1612 struct rb_io_t *fptr;
1615 struct RBasic basic;
1620 struct RBasic basic;
1625 struct RBasic basic;
1626 void (*dmark)(void*);
1627 void (*dfree)(void*);
1630 typedef void (*RUBY_DATA_FUNC)(void*);
1631 VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
1633 struct RBasic basic;
1643 struct RBasic basic;
1647 unsigned int *digits;
1649 unsigned int ary[((sizeof(VALUE)*3)/sizeof(unsigned int))];
1652 void rb_obj_infect(VALUE,VALUE);
1653 typedef int ruby_glob_func(const char*,VALUE, void*);
1654 void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE);
1655 int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
1656 int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
1657 VALUE rb_define_class(const char*,VALUE);
1658 VALUE rb_define_module(const char*);
1659 VALUE rb_define_class_under(VALUE, const char*, VALUE);
1660 VALUE rb_define_module_under(VALUE, const char*);
1661 void rb_include_module(VALUE,VALUE);
1662 void rb_extend_object(VALUE,VALUE);
1663 struct rb_global_variable;
1664 typedef VALUE rb_gvar_getter_t(ID id, void *data, struct rb_global_variable *gvar);
1665 typedef void rb_gvar_setter_t(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
1666 typedef void rb_gvar_marker_t(VALUE *var);
1667 VALUE rb_gvar_undef_getter(ID id, void *data, struct rb_global_variable *gvar);
1668 void rb_gvar_undef_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
1669 void rb_gvar_undef_marker(VALUE *var);
1670 VALUE rb_gvar_val_getter(ID id, void *data, struct rb_global_variable *gvar);
1671 void rb_gvar_val_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
1672 void rb_gvar_val_marker(VALUE *var);
1673 VALUE rb_gvar_var_getter(ID id, void *data, struct rb_global_variable *gvar);
1674 void rb_gvar_var_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
1675 void rb_gvar_var_marker(VALUE *var);
1676 void rb_gvar_readonly_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
1677 void rb_define_variable(const char*,VALUE*);
1678 void rb_define_virtual_variable(const char*,VALUE(*)(),void(*)());
1679 void rb_define_hooked_variable(const char*,VALUE*,VALUE(*)(),void(*)());
1680 void rb_define_readonly_variable(const char*,VALUE*);
1681 void rb_define_const(VALUE,const char*,VALUE);
1682 void rb_define_global_const(const char*,VALUE);
1683 void rb_define_method(VALUE,const char*,VALUE(*)(),int);
1684 void rb_define_module_function(VALUE,const char*,VALUE(*)(),int);
1685 void rb_define_global_function(const char*,VALUE(*)(),int);
1686 void rb_undef_method(VALUE,const char*);
1687 void rb_define_alias(VALUE,const char*,const char*);
1688 void rb_define_attr(VALUE,const char*,int,int);
1689 void rb_global_variable(VALUE*);
1690 void rb_gc_register_mark_object(VALUE);
1691 void rb_gc_register_address(VALUE*);
1692 void rb_gc_unregister_address(VALUE*);
1693 ID rb_intern(const char*);
1694 ID rb_intern2(const char*, long);
1695 ID rb_intern_str(VALUE str);
1696 const char *rb_id2name(ID);
1698 VALUE rb_id2str(ID);
1699 const char *rb_class2name(VALUE);
1700 const char *rb_obj_classname(VALUE);
1702 VALUE rb_eval_string(const char*);
1703 VALUE rb_eval_string_protect(const char*, int*);
1704 VALUE rb_eval_string_wrap(const char*, int*);
1705 VALUE rb_funcall(VALUE, ID, int, ...);
1706 VALUE rb_funcall2(VALUE, ID, int, const VALUE*);
1707 VALUE rb_funcall3(VALUE, ID, int, const VALUE*);
1708 int rb_scan_args(int, const VALUE*, const char*, ...);
1709 VALUE rb_call_super(int, const VALUE*);
1710 VALUE rb_gv_set(const char*, VALUE);
1711 VALUE rb_gv_get(const char*);
1712 VALUE rb_iv_get(VALUE, const char*);
1713 VALUE rb_iv_set(VALUE, const char*, VALUE);
1714 VALUE rb_equal(VALUE,VALUE);
1715 VALUE *rb_ruby_verbose_ptr(void);
1716 VALUE *rb_ruby_debug_ptr(void);
1717 __attribute__ ((noreturn)) void rb_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
1718 __attribute__ ((noreturn)) void rb_fatal(const char*, ...) __attribute__((format(printf, 1, 2)));
1719 __attribute__ ((noreturn)) void rb_bug(const char*, ...) __attribute__((format(printf, 1, 2)));
1720 __attribute__ ((noreturn)) void rb_sys_fail(const char*);
1721 __attribute__ ((noreturn)) void rb_iter_break(void);
1722 __attribute__ ((noreturn)) void rb_exit(int);
1723 __attribute__ ((noreturn)) void rb_notimplement(void);
1724 void rb_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
1725 void rb_compile_warning(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
1726 void rb_sys_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
1727 void rb_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
1728 void rb_compile_warn(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
1729 typedef VALUE rb_block_call_func(VALUE, VALUE, int, VALUE*);
1730 VALUE rb_each(VALUE);
1731 VALUE rb_yield(VALUE);
1732 VALUE rb_yield_values(int n, ...);
1733 VALUE rb_yield_values2(int n, const VALUE *argv);
1734 VALUE rb_yield_splat(VALUE);
1735 int rb_block_given_p(void);
1736 void rb_need_block(void);
1737 VALUE rb_iterate(VALUE(*)(VALUE),VALUE,VALUE(*)(),VALUE);
1738 VALUE rb_block_call(VALUE,ID,int,VALUE*,VALUE(*)(),VALUE);
1739 VALUE rb_rescue(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
1740 VALUE rb_rescue2(VALUE(*)(),VALUE,VALUE(*)(),VALUE,...);
1741 VALUE rb_ensure(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
1742 VALUE rb_catch(const char*,VALUE(*)(),VALUE);
1743 VALUE rb_catch_obj(VALUE,VALUE(*)(),VALUE);
1744 __attribute__ ((noreturn)) void rb_throw(const char*,VALUE);
1745 __attribute__ ((noreturn)) void rb_throw_obj(VALUE,VALUE);
1746 VALUE rb_require(const char*);
1747 void ruby_init_stack(VALUE*);
1748 void ruby_init(void);
1749 void *ruby_options(int, char**);
1750 int ruby_run_node(void *);
1751 extern VALUE rb_mKernel;
1752 extern VALUE rb_mComparable;
1753 extern VALUE rb_mEnumerable;
1754 extern VALUE rb_mErrno;
1755 extern VALUE rb_mFileTest;
1756 extern VALUE rb_mGC;
1757 extern VALUE rb_mMath;
1758 extern VALUE rb_mProcess;
1759 extern VALUE rb_cBasicObject;
1760 extern VALUE rb_cObject;
1761 extern VALUE rb_cArray;
1762 extern VALUE rb_cBignum;
1763 extern VALUE rb_cBinding;
1764 extern VALUE rb_cClass;
1765 extern VALUE rb_cCont;
1766 extern VALUE rb_cDir;
1767 extern VALUE rb_cData;
1768 extern VALUE rb_cFalseClass;
1769 extern VALUE rb_cEncoding;
1770 extern VALUE rb_cEnumerator;
1771 extern VALUE rb_cFile;
1772 extern VALUE rb_cFixnum;
1773 extern VALUE rb_cFloat;
1774 extern VALUE rb_cHash;
1775 extern VALUE rb_cInteger;
1776 extern VALUE rb_cIO;
1777 extern VALUE rb_cMatch;
1778 extern VALUE rb_cMethod;
1779 extern VALUE rb_cModule;
1780 extern VALUE rb_cNameErrorMesg;
1781 extern VALUE rb_cNilClass;
1782 extern VALUE rb_cNumeric;
1783 extern VALUE rb_cProc;
1784 extern VALUE rb_cRange;
1785 extern VALUE rb_cRational;
1786 extern VALUE rb_cComplex;
1787 extern VALUE rb_cRegexp;
1788 extern VALUE rb_cStat;
1789 extern VALUE rb_cString;
1790 extern VALUE rb_cStruct;
1791 extern VALUE rb_cSymbol;
1792 extern VALUE rb_cThread;
1793 extern VALUE rb_cTime;
1794 extern VALUE rb_cTrueClass;
1795 extern VALUE rb_cUnboundMethod;
1796 extern VALUE rb_eException;
1797 extern VALUE rb_eStandardError;
1798 extern VALUE rb_eSystemExit;
1799 extern VALUE rb_eInterrupt;
1800 extern VALUE rb_eSignal;
1801 extern VALUE rb_eFatal;
1802 extern VALUE rb_eArgError;
1803 extern VALUE rb_eEOFError;
1804 extern VALUE rb_eIndexError;
1805 extern VALUE rb_eStopIteration;
1806 extern VALUE rb_eKeyError;
1807 extern VALUE rb_eRangeError;
1808 extern VALUE rb_eIOError;
1809 extern VALUE rb_eRuntimeError;
1810 extern VALUE rb_eSecurityError;
1811 extern VALUE rb_eSystemCallError;
1812 extern VALUE rb_eThreadError;
1813 extern VALUE rb_eTypeError;
1814 extern VALUE rb_eZeroDivError;
1815 extern VALUE rb_eNotImpError;
1816 extern VALUE rb_eNoMemError;
1817 extern VALUE rb_eNoMethodError;
1818 extern VALUE rb_eFloatDomainError;
1819 extern VALUE rb_eLocalJumpError;
1820 extern VALUE rb_eSysStackError;
1821 extern VALUE rb_eRegexpError;
1822 extern VALUE rb_eEncodingError;
1823 extern VALUE rb_eEncCompatError;
1824 extern VALUE rb_eScriptError;
1825 extern VALUE rb_eNameError;
1826 extern VALUE rb_eSyntaxError;
1827 extern VALUE rb_eLoadError;
1828 extern VALUE rb_stdin, rb_stdout, rb_stderr;
1830 rb_class_of(VALUE obj)
1832 if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
1833 if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return rb_cFixnum;
1834 if (obj == ((VALUE)RUBY_Qtrue)) return rb_cTrueClass;
1835 if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return rb_cSymbol;
1837 else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
1838 if (obj == ((VALUE)RUBY_Qnil)) return rb_cNilClass;
1839 if (obj == ((VALUE)RUBY_Qfalse)) return rb_cFalseClass;
1841 return ((struct RBasic*)(obj))->klass;
1846 if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
1847 if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return RUBY_T_FIXNUM;
1848 if (obj == ((VALUE)RUBY_Qtrue)) return RUBY_T_TRUE;
1849 if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return RUBY_T_SYMBOL;
1850 if (obj == ((VALUE)RUBY_Qundef)) return RUBY_T_UNDEF;
1852 else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
1853 if (obj == ((VALUE)RUBY_Qnil)) return RUBY_T_NIL;
1854 if (obj == ((VALUE)RUBY_Qfalse)) return RUBY_T_FALSE;
1856 return (((struct RBasic*)(obj))->flags & RUBY_T_MASK);
1859 rb_special_const_p(VALUE obj)
1861 if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0))) return ((VALUE)RUBY_Qtrue);
1862 return ((VALUE)RUBY_Qfalse);
1869 typedef struct timezone *__restrict __timezone_ptr_t;
1870 extern int gettimeofday (struct timeval *__restrict __tv,
1871 __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1872 extern int settimeofday (__const struct timeval *__tv,
1873 __const struct timezone *__tz)
1874 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1875 extern int adjtime (__const struct timeval *__delta,
1876 struct timeval *__olddelta) __attribute__ ((__nothrow__));
1885 struct timeval it_interval;
1886 struct timeval it_value;
1888 typedef enum __itimer_which __itimer_which_t;
1889 extern int getitimer (__itimer_which_t __which,
1890 struct itimerval *__value) __attribute__ ((__nothrow__));
1891 extern int setitimer (__itimer_which_t __which,
1892 __const struct itimerval *__restrict __new,
1893 struct itimerval *__restrict __old) __attribute__ ((__nothrow__));
1894 extern int utimes (__const char *__file, __const struct timeval __tvp[2])
1895 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1896 extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
1897 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
1898 extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
1899 extern int futimesat (int __fd, __const char *__file,
1900 __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
1901 extern size_t strlcpy(char *, const char*, size_t);
1902 extern size_t strlcat(char *, const char*, size_t);
1903 typedef unsigned long st_data_t;
1904 typedef struct st_table st_table;
1905 typedef int st_compare_func(st_data_t, st_data_t);
1906 typedef int st_hash_func(st_data_t);
1907 struct st_hash_type {
1911 typedef st_data_t st_index_t;
1913 const struct st_hash_type *type;
1914 st_index_t num_bins;
1915 unsigned int entries_packed : 1;
1917 st_index_t num_entries : (sizeof(st_index_t) * 8) - 1;
1918 struct st_table_entry **bins;
1919 struct st_table_entry *head;
1921 enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
1922 st_table *st_init_table(const struct st_hash_type *);
1923 st_table *st_init_table_with_size(const struct st_hash_type *, int);
1924 st_table *st_init_numtable(void);
1925 st_table *st_init_numtable_with_size(int);
1926 st_table *st_init_strtable(void);
1927 st_table *st_init_strtable_with_size(int);
1928 st_table *st_init_strcasetable(void);
1929 st_table *st_init_strcasetable_with_size(int);
1930 int st_delete(st_table *, st_data_t *, st_data_t *);
1931 int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
1932 int st_insert(st_table *, st_data_t, st_data_t);
1933 int st_lookup(st_table *, st_data_t, st_data_t *);
1934 int st_get_key(st_table *, st_data_t, st_data_t *);
1935 int st_foreach(st_table *, int (*)(), st_data_t);
1936 int st_reverse_foreach(st_table *, int (*)(), st_data_t);
1937 void st_add_direct(st_table *, st_data_t, st_data_t);
1938 void st_free_table(st_table *);
1939 void st_cleanup_safe(st_table *, st_data_t);
1940 void st_clear(st_table *);
1941 st_table *st_copy(st_table *);
1942 int st_numcmp(st_data_t, st_data_t);
1943 int st_numhash(st_data_t);
1944 int st_strcasecmp(const char *s1, const char *s2);
1945 int st_strncasecmp(const char *s1, const char *s2, size_t n);
1946 void rb_mem_clear(register VALUE*, register long);
1947 VALUE rb_assoc_new(VALUE, VALUE);
1948 VALUE rb_check_array_type(VALUE);
1949 VALUE rb_ary_new(void);
1950 VALUE rb_ary_new2(long);
1951 VALUE rb_ary_new3(long,...);
1952 VALUE rb_ary_new4(long, const VALUE *);
1953 VALUE rb_ary_tmp_new(long);
1954 void rb_ary_free(VALUE);
1955 VALUE rb_ary_freeze(VALUE);
1956 VALUE rb_ary_aref(int, VALUE*, VALUE);
1957 VALUE rb_ary_subseq(VALUE, long, long);
1958 void rb_ary_store(VALUE, long, VALUE);
1959 VALUE rb_ary_dup(VALUE);
1960 VALUE rb_ary_to_ary(VALUE);
1961 VALUE rb_ary_to_s(VALUE);
1962 VALUE rb_ary_push(VALUE, VALUE);
1963 VALUE rb_ary_pop(VALUE);
1964 VALUE rb_ary_shift(VALUE);
1965 VALUE rb_ary_unshift(VALUE, VALUE);
1966 VALUE rb_ary_entry(VALUE, long);
1967 VALUE rb_ary_each(VALUE);
1968 VALUE rb_ary_join(VALUE, VALUE);
1969 VALUE rb_ary_print_on(VALUE, VALUE);
1970 VALUE rb_ary_reverse(VALUE);
1971 VALUE rb_ary_sort(VALUE);
1972 VALUE rb_ary_sort_bang(VALUE);
1973 VALUE rb_ary_delete(VALUE, VALUE);
1974 VALUE rb_ary_delete_at(VALUE, long);
1975 VALUE rb_ary_clear(VALUE);
1976 VALUE rb_ary_plus(VALUE, VALUE);
1977 VALUE rb_ary_concat(VALUE, VALUE);
1978 VALUE rb_ary_assoc(VALUE, VALUE);
1979 VALUE rb_ary_rassoc(VALUE, VALUE);
1980 VALUE rb_ary_includes(VALUE, VALUE);
1981 VALUE rb_ary_cmp(VALUE, VALUE);
1982 VALUE rb_ary_replace(VALUE copy, VALUE orig);
1983 VALUE rb_get_values_at(VALUE, long, int, VALUE*, VALUE(*)(VALUE,long));
1984 VALUE rb_big_clone(VALUE);
1985 void rb_big_2comp(VALUE);
1986 VALUE rb_big_norm(VALUE);
1987 void rb_big_resize(VALUE big, long len);
1988 VALUE rb_uint2big(VALUE);
1989 VALUE rb_int2big(long);
1990 VALUE rb_uint2inum(VALUE);
1991 VALUE rb_int2inum(long);
1992 VALUE rb_cstr_to_inum(const char*, int, int);
1993 VALUE rb_str_to_inum(VALUE, int, int);
1994 VALUE rb_cstr2inum(const char*, int);
1995 VALUE rb_str2inum(VALUE, int);
1996 VALUE rb_big2str(VALUE, int);
1997 VALUE rb_big2str0(VALUE, int, int);
1998 long rb_big2long(VALUE);
1999 VALUE rb_big2ulong(VALUE);
2000 VALUE rb_ll2inum(long long);
2001 VALUE rb_ull2inum(unsigned long long);
2002 long long rb_big2ll(VALUE);
2003 unsigned long long rb_big2ull(VALUE);
2004 void rb_quad_pack(char*,VALUE);
2005 VALUE rb_quad_unpack(const char*,int);
2006 int rb_uv_to_utf8(char[6],unsigned long);
2007 VALUE rb_dbl2big(double);
2008 double rb_big2dbl(VALUE);
2009 VALUE rb_big_cmp(VALUE, VALUE);
2010 VALUE rb_big_eq(VALUE, VALUE);
2011 VALUE rb_big_plus(VALUE, VALUE);
2012 VALUE rb_big_minus(VALUE, VALUE);
2013 VALUE rb_big_mul(VALUE, VALUE);
2014 VALUE rb_big_div(VALUE, VALUE);
2015 VALUE rb_big_modulo(VALUE, VALUE);
2016 VALUE rb_big_divmod(VALUE, VALUE);
2017 VALUE rb_big_pow(VALUE, VALUE);
2018 VALUE rb_big_and(VALUE, VALUE);
2019 VALUE rb_big_or(VALUE, VALUE);
2020 VALUE rb_big_xor(VALUE, VALUE);
2021 VALUE rb_big_lshift(VALUE, VALUE);
2022 VALUE rb_big_rshift(VALUE, VALUE);
2023 VALUE rb_rational_raw(VALUE, VALUE);
2024 VALUE rb_rational_new(VALUE, VALUE);
2025 VALUE rb_Rational(VALUE, VALUE);
2026 VALUE rb_complex_raw(VALUE, VALUE);
2027 VALUE rb_complex_new(VALUE, VALUE);
2028 VALUE rb_complex_polar(VALUE, VALUE);
2029 VALUE rb_Complex(VALUE, VALUE);
2030 VALUE rb_class_boot(VALUE);
2031 VALUE rb_class_new(VALUE);
2032 VALUE rb_mod_init_copy(VALUE, VALUE);
2033 VALUE rb_class_init_copy(VALUE, VALUE);
2034 VALUE rb_singleton_class_clone(VALUE);
2035 void rb_singleton_class_attached(VALUE,VALUE);
2036 VALUE rb_make_metaclass(VALUE, VALUE);
2037 void rb_check_inheritable(VALUE);
2038 VALUE rb_class_inherited(VALUE, VALUE);
2039 VALUE rb_define_class_id(ID, VALUE);
2040 VALUE rb_module_new(void);
2041 VALUE rb_define_module_id(ID);
2042 VALUE rb_mod_included_modules(VALUE);
2043 VALUE rb_mod_include_p(VALUE, VALUE);
2044 VALUE rb_mod_ancestors(VALUE);
2045 VALUE rb_class_instance_methods(int, VALUE*, VALUE);
2046 VALUE rb_class_public_instance_methods(int, VALUE*, VALUE);
2047 VALUE rb_class_protected_instance_methods(int, VALUE*, VALUE);
2048 VALUE rb_class_private_instance_methods(int, VALUE*, VALUE);
2049 VALUE rb_obj_singleton_methods(int, VALUE*, VALUE);
2050 void rb_define_method_id(VALUE, ID, VALUE (*)(), int);
2051 void rb_frozen_class_p(VALUE);
2052 void rb_undef(VALUE, ID);
2053 void rb_define_protected_method(VALUE, const char*, VALUE (*)(), int);
2054 void rb_define_private_method(VALUE, const char*, VALUE (*)(), int);
2055 void rb_define_singleton_method(VALUE, const char*, VALUE(*)(), int);
2056 VALUE rb_singleton_class(VALUE);
2057 int rb_cmpint(VALUE, VALUE, VALUE);
2058 __attribute__ ((noreturn)) void rb_cmperr(VALUE, VALUE);
2059 VALUE rb_fiber_new(VALUE (*)(), VALUE);
2060 VALUE rb_fiber_resume(VALUE fib, int argc, VALUE *args);
2061 VALUE rb_fiber_yield(int argc, VALUE *args);
2062 VALUE rb_fiber_current(void);
2063 VALUE rb_fiber_alive_p(VALUE);
2064 VALUE rb_enumeratorize(VALUE, VALUE, int, VALUE *);
2065 VALUE rb_exc_new(VALUE, const char*, long);
2066 VALUE rb_exc_new2(VALUE, const char*);
2067 VALUE rb_exc_new3(VALUE, VALUE);
2068 __attribute__ ((noreturn)) void rb_loaderror(const char*, ...) __attribute__((format(printf, 1, 2)));
2069 __attribute__ ((noreturn)) void rb_name_error(ID, const char*, ...) __attribute__((format(printf, 2, 3)));
2070 __attribute__ ((noreturn)) void rb_invalid_str(const char*, const char*);
2071 void rb_compile_error(const char*, int, const char*, ...) __attribute__((format(printf, 3, 4)));
2072 void rb_compile_error_append(const char*, ...) __attribute__((format(printf, 1, 2)));
2073 __attribute__ ((noreturn)) void rb_load_fail(const char*);
2074 __attribute__ ((noreturn)) void rb_error_frozen(const char*);
2075 void rb_check_frozen(VALUE);
2076 int rb_sourceline(void);
2077 const char *rb_sourcefile(void);
2082 void rb_fd_init(volatile rb_fdset_t *);
2083 void rb_fd_term(rb_fdset_t *);
2084 void rb_fd_zero(rb_fdset_t *);
2085 void rb_fd_set(int, rb_fdset_t *);
2086 void rb_fd_clr(int, rb_fdset_t *);
2087 int rb_fd_isset(int, const rb_fdset_t *);
2088 void rb_fd_copy(rb_fdset_t *, const fd_set *, int);
2089 int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
2090 __attribute__ ((noreturn)) void rb_exc_raise(VALUE);
2091 __attribute__ ((noreturn)) void rb_exc_fatal(VALUE);
2092 VALUE rb_f_exit(int,VALUE*);
2093 VALUE rb_f_abort(int,VALUE*);
2094 void rb_remove_method(VALUE, const char*);
2095 typedef VALUE (*rb_alloc_func_t)(VALUE);
2096 void rb_define_alloc_func(VALUE, rb_alloc_func_t);
2097 void rb_undef_alloc_func(VALUE);
2098 rb_alloc_func_t rb_get_alloc_func(VALUE);
2099 void rb_clear_cache(void);
2100 void rb_clear_cache_by_class(VALUE);
2101 void rb_alias(VALUE, ID, ID);
2102 void rb_attr(VALUE,ID,int,int,int);
2103 int rb_method_boundp(VALUE, ID, int);
2104 int rb_method_basic_definition_p(VALUE, ID);
2105 VALUE rb_eval_cmd(VALUE, VALUE, int);
2106 int rb_obj_respond_to(VALUE, ID, int);
2107 int rb_respond_to(VALUE, ID);
2108 void rb_interrupt(void);
2109 VALUE rb_apply(VALUE, ID, VALUE);
2110 void rb_backtrace(void);
2111 ID rb_frame_this_func(void);
2112 VALUE rb_obj_instance_eval(int, VALUE*, VALUE);
2113 VALUE rb_obj_instance_exec(int, VALUE*, VALUE);
2114 VALUE rb_mod_module_eval(int, VALUE*, VALUE);
2115 VALUE rb_mod_module_exec(int, VALUE*, VALUE);
2116 void rb_load(VALUE, int);
2117 void rb_load_protect(VALUE, int, int*);
2118 __attribute__ ((noreturn)) void rb_jump_tag(int);
2119 int rb_provided(const char*);
2120 int rb_feature_provided(const char *, const char **);
2121 void rb_provide(const char*);
2122 VALUE rb_f_require(VALUE, VALUE);
2123 VALUE rb_require_safe(VALUE, int);
2124 void rb_obj_call_init(VALUE, int, VALUE*);
2125 VALUE rb_class_new_instance(int, VALUE*, VALUE);
2126 VALUE rb_block_proc(void);
2127 VALUE rb_f_lambda(void);
2128 VALUE rb_proc_new(VALUE (*)( ), VALUE);
2129 VALUE rb_proc_call(VALUE, VALUE);
2130 VALUE rb_proc_call_with_block(VALUE, int argc, VALUE *argv, VALUE);
2131 int rb_proc_arity(VALUE);
2132 VALUE rb_binding_new(void);
2133 VALUE rb_obj_method(VALUE, VALUE);
2134 VALUE rb_method_call(int, VALUE*, VALUE);
2135 int rb_mod_method_arity(VALUE, ID);
2136 int rb_obj_method_arity(VALUE, ID);
2137 VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
2138 void rb_set_end_proc(void (*)(VALUE), VALUE);
2139 void rb_mark_end_proc(void);
2140 void rb_exec_end_proc(void);
2141 void Init_jump(void);
2142 void ruby_finalize(void);
2143 __attribute__ ((noreturn)) void ruby_stop(int);
2144 int ruby_cleanup(int);
2145 void rb_gc_mark_threads(void);
2146 void rb_thread_schedule(void);
2147 void rb_thread_wait_fd(int);
2148 int rb_thread_fd_writable(int);
2149 void rb_thread_fd_close(int);
2150 int rb_thread_alone(void);
2151 void rb_thread_polling(void);
2152 void rb_thread_sleep(int);
2153 void rb_thread_sleep_forever(void);
2154 VALUE rb_thread_stop(void);
2155 VALUE rb_thread_wakeup(VALUE);
2156 VALUE rb_thread_run(VALUE);
2157 VALUE rb_thread_kill(VALUE);
2158 VALUE rb_thread_create(VALUE (*)(), void*);
2159 void rb_thread_signal_raise(void *, int);
2160 void rb_thread_signal_exit(void *);
2161 int rb_thread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
2162 void rb_thread_wait_for(struct timeval);
2163 VALUE rb_thread_current(void);
2164 VALUE rb_thread_main(void);
2165 VALUE rb_thread_local_aref(VALUE, ID);
2166 VALUE rb_thread_local_aset(VALUE, ID, VALUE);
2167 void rb_thread_atfork(void);
2168 void rb_thread_atfork_before_exec(void);
2169 VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
2170 VALUE rb_file_s_expand_path(int, VALUE *);
2171 VALUE rb_file_expand_path(VALUE, VALUE);
2172 VALUE rb_file_s_absolute_path(int, VALUE *);
2173 VALUE rb_file_absolute_path(VALUE, VALUE);
2174 void rb_file_const(const char*, VALUE);
2175 int rb_find_file_ext(VALUE*, const char* const*);
2176 VALUE rb_find_file(VALUE);
2177 char *rb_path_next(const char *);
2178 char *rb_path_skip_prefix(const char *);
2179 char *rb_path_last_separator(const char *);
2180 char *rb_path_end(const char *);
2181 VALUE rb_file_directory_p(VALUE,VALUE);
2182 void ruby_set_stack_size(size_t);
2183 __attribute__ ((noreturn)) void rb_memerror(void);
2184 int ruby_stack_check(void);
2185 size_t ruby_stack_length(VALUE**);
2186 int rb_during_gc(void);
2187 void rb_gc_mark_locations(VALUE*, VALUE*);
2188 void rb_mark_tbl(struct st_table*);
2189 void rb_mark_set(struct st_table*);
2190 void rb_mark_hash(struct st_table*);
2191 void rb_gc_mark_maybe(VALUE);
2192 void rb_gc_mark(VALUE);
2193 void rb_gc_force_recycle(VALUE);
2195 void rb_gc_copy_finalizer(VALUE,VALUE);
2196 void rb_gc_finalize_deferred(void);
2197 void rb_gc_call_finalizer_at_exit(void);
2198 VALUE rb_gc_enable(void);
2199 VALUE rb_gc_disable(void);
2200 VALUE rb_gc_start(void);
2201 void st_foreach_safe(struct st_table *, int (*)(), st_data_t);
2202 void rb_hash_foreach(VALUE, int (*)(), VALUE);
2203 VALUE rb_hash(VALUE);
2204 VALUE rb_hash_new(void);
2205 VALUE rb_hash_dup(VALUE);
2206 VALUE rb_hash_freeze(VALUE);
2207 VALUE rb_hash_aref(VALUE, VALUE);
2208 VALUE rb_hash_lookup(VALUE, VALUE);
2209 VALUE rb_hash_lookup2(VALUE, VALUE, VALUE);
2210 VALUE rb_hash_fetch(VALUE, VALUE);
2211 VALUE rb_hash_aset(VALUE, VALUE, VALUE);
2212 VALUE rb_hash_delete_if(VALUE);
2213 VALUE rb_hash_delete(VALUE,VALUE);
2214 struct st_table *rb_hash_tbl(VALUE);
2215 int rb_path_check(const char*);
2216 int rb_env_path_tainted(void);
2217 VALUE rb_env_clear(void);
2219 extern VALUE rb_output_fs;
2221 extern VALUE rb_default_rs;
2222 extern VALUE rb_output_rs;
2223 VALUE rb_io_write(VALUE, VALUE);
2224 VALUE rb_io_gets(VALUE);
2225 VALUE rb_io_getbyte(VALUE);
2226 VALUE rb_io_ungetc(VALUE, VALUE);
2227 VALUE rb_io_ungetbyte(VALUE, VALUE);
2228 VALUE rb_io_close(VALUE);
2229 VALUE rb_io_flush(VALUE);
2230 VALUE rb_io_eof(VALUE);
2231 VALUE rb_io_binmode(VALUE);
2232 VALUE rb_io_ascii8bit_binmode(VALUE);
2233 VALUE rb_io_addstr(VALUE, VALUE);
2234 VALUE rb_io_printf(int, VALUE*, VALUE);
2235 VALUE rb_io_print(int, VALUE*, VALUE);
2236 VALUE rb_io_puts(int, VALUE*, VALUE);
2237 VALUE rb_io_fdopen(int, int, const char*);
2238 VALUE rb_file_open(const char*, const char*);
2239 VALUE rb_file_open_str(VALUE, const char*);
2240 VALUE rb_gets(void);
2241 void rb_write_error(const char*);
2242 void rb_write_error2(const char*, long);
2243 void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
2244 int rb_pipe(int *pipes);
2245 VALUE rb_marshal_dump(VALUE, VALUE);
2246 VALUE rb_marshal_load(VALUE);
2247 void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
2248 void rb_num_zerodiv(void);
2249 VALUE rb_num_coerce_bin(VALUE, VALUE, ID);
2250 VALUE rb_num_coerce_cmp(VALUE, VALUE, ID);
2251 VALUE rb_num_coerce_relop(VALUE, VALUE, ID);
2252 VALUE rb_float_new(double);
2253 VALUE rb_num2fix(VALUE);
2254 VALUE rb_fix2str(VALUE, int);
2255 VALUE rb_dbl_cmp(double, double);
2256 int rb_eql(VALUE, VALUE);
2257 VALUE rb_any_to_s(VALUE);
2258 VALUE rb_inspect(VALUE);
2259 VALUE rb_obj_is_instance_of(VALUE, VALUE);
2260 VALUE rb_obj_is_kind_of(VALUE, VALUE);
2261 VALUE rb_obj_alloc(VALUE);
2262 VALUE rb_obj_clone(VALUE);
2263 VALUE rb_obj_dup(VALUE);
2264 VALUE rb_obj_init_copy(VALUE,VALUE);
2265 VALUE rb_obj_taint(VALUE);
2266 VALUE rb_obj_tainted(VALUE);
2267 VALUE rb_obj_untaint(VALUE);
2268 VALUE rb_obj_freeze(VALUE);
2269 VALUE rb_obj_frozen_p(VALUE);
2270 VALUE rb_obj_id(VALUE);
2271 VALUE rb_obj_class(VALUE);
2272 VALUE rb_class_real(VALUE);
2273 VALUE rb_class_inherited_p(VALUE, VALUE);
2274 VALUE rb_convert_type(VALUE,int,const char*,const char*);
2275 VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
2276 VALUE rb_check_to_integer(VALUE, const char *);
2277 VALUE rb_to_int(VALUE);
2278 VALUE rb_Integer(VALUE);
2279 VALUE rb_Float(VALUE);
2280 VALUE rb_String(VALUE);
2281 VALUE rb_Array(VALUE);
2282 double rb_cstr_to_dbl(const char*, int);
2283 double rb_str_to_dbl(VALUE, int);
2284 extern int ruby_sourceline;
2285 extern char *ruby_sourcefile;
2286 ID rb_id_attrset(ID);
2287 void rb_gc_mark_parser(void);
2288 int rb_is_const_id(ID);
2289 int rb_is_instance_id(ID);
2290 int rb_is_class_id(ID);
2291 int rb_is_local_id(ID);
2292 int rb_is_junk_id(ID);
2293 int rb_symname_p(const char*);
2294 int rb_sym_interned_p(VALUE);
2295 void rb_gc_mark_symbols(void);
2296 VALUE rb_backref_get(void);
2297 void rb_backref_set(VALUE);
2298 VALUE rb_lastline_get(void);
2299 void rb_lastline_set(VALUE);
2300 VALUE rb_sym_all_symbols(void);
2301 void rb_last_status_set(int status, pid_t pid);
2302 VALUE rb_last_status_get(void);
2303 struct rb_exec_arg {
2310 int rb_proc_exec_n(int, VALUE*, const char*);
2311 int rb_proc_exec(const char*);
2312 VALUE rb_exec_arg_init(int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e);
2313 int rb_exec_arg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val);
2314 void rb_exec_arg_fixup(struct rb_exec_arg *e);
2315 int rb_run_exec_options(const struct rb_exec_arg *e, struct rb_exec_arg *s);
2316 int rb_exec(const struct rb_exec_arg*);
2317 pid_t rb_fork(int*, int (*)(void*), void*, VALUE);
2318 VALUE rb_f_exec(int,VALUE*);
2319 pid_t rb_waitpid(pid_t pid, int *status, int flags);
2320 void rb_syswait(pid_t pid);
2321 pid_t rb_spawn(int, VALUE*);
2322 VALUE rb_proc_times(VALUE);
2323 VALUE rb_detach_process(pid_t pid);
2324 VALUE rb_range_new(VALUE, VALUE, int);
2325 VALUE rb_range_beg_len(VALUE, long*, long*, long, int);
2326 unsigned long rb_genrand_int32(void);
2327 double rb_genrand_real(void);
2328 void rb_reset_random_seed(void);
2329 int rb_memcicmp(const void*,const void*,long);
2330 void rb_match_busy(VALUE);
2331 VALUE rb_reg_nth_defined(int, VALUE);
2332 VALUE rb_reg_nth_match(int, VALUE);
2333 VALUE rb_reg_last_match(VALUE);
2334 VALUE rb_reg_match_pre(VALUE);
2335 VALUE rb_reg_match_post(VALUE);
2336 VALUE rb_reg_match_last(VALUE);
2337 VALUE rb_reg_new_str(VALUE, int);
2338 VALUE rb_reg_new(const char *, long, int);
2339 VALUE rb_reg_match(VALUE, VALUE);
2340 VALUE rb_reg_match2(VALUE);
2341 int rb_reg_options(VALUE);
2342 void rb_set_kcode(const char*);
2343 const char* rb_get_kcode(void);
2344 extern VALUE rb_argv0;
2345 VALUE rb_get_argv(void);
2346 void *rb_load_file(const char*);
2347 void ruby_script(const char*);
2348 void ruby_prog_init(void);
2349 void ruby_set_argv(int, char**);
2350 void *ruby_process_options(int, char**);
2351 void ruby_init_loadpath(void);
2352 void ruby_incpush(const char*);
2353 VALUE rb_f_kill(int, VALUE*);
2354 void rb_gc_mark_trap_list(void);
2355 void (*ruby_posix_signal(int, void (*)(int)))(int);
2356 void ruby_sig_finalize(void);
2357 void rb_trap_exit(void);
2358 void rb_trap_exec(void);
2359 const char *ruby_signal_name(int);
2360 void ruby_default_signal(int);
2361 VALUE rb_f_sprintf(int, const VALUE*);
2362 VALUE rb_sprintf(const char*, ...) __attribute__((format(printf, 1, 2)));
2363 VALUE rb_vsprintf(const char*, va_list);
2364 VALUE rb_str_catf(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
2365 VALUE rb_str_vcatf(VALUE, const char*, va_list);
2366 VALUE rb_str_format(int, const VALUE *, VALUE);
2367 VALUE rb_str_new(const char*, long);
2368 VALUE rb_str_new_cstr(const char*);
2369 VALUE rb_str_new2(const char*);
2370 VALUE rb_str_new_shared(VALUE);
2371 VALUE rb_str_new3(VALUE);
2372 VALUE rb_str_new_frozen(VALUE);
2373 VALUE rb_str_new4(VALUE);
2374 VALUE rb_str_new_with_class(VALUE, const char*, long);
2375 VALUE rb_str_new5(VALUE, const char*, long);
2376 VALUE rb_tainted_str_new_cstr(const char*);
2377 VALUE rb_tainted_str_new(const char*, long);
2378 VALUE rb_tainted_str_new2(const char*);
2379 VALUE rb_external_str_new(const char*, long);
2380 VALUE rb_external_str_new_cstr(const char*);
2381 VALUE rb_locale_str_new(const char*, long);
2382 VALUE rb_locale_str_new_cstr(const char*);
2383 VALUE rb_str_buf_new(long);
2384 VALUE rb_str_buf_new_cstr(const char*);
2385 VALUE rb_str_buf_new2(const char*);
2386 VALUE rb_str_tmp_new(long);
2387 VALUE rb_usascii_str_new(const char*, long);
2388 VALUE rb_usascii_str_new_cstr(const char*);
2389 VALUE rb_usascii_str_new2(const char*);
2390 void rb_str_free(VALUE);
2391 void rb_str_shared_replace(VALUE, VALUE);
2392 VALUE rb_str_buf_append(VALUE, VALUE);
2393 VALUE rb_str_buf_cat(VALUE, const char*, long);
2394 VALUE rb_str_buf_cat2(VALUE, const char*);
2395 VALUE rb_str_buf_cat_ascii(VALUE, const char*);
2396 VALUE rb_obj_as_string(VALUE);
2397 VALUE rb_check_string_type(VALUE);
2398 VALUE rb_str_dup(VALUE);
2399 VALUE rb_str_locktmp(VALUE);
2400 VALUE rb_str_unlocktmp(VALUE);
2401 VALUE rb_str_dup_frozen(VALUE);
2402 VALUE rb_str_plus(VALUE, VALUE);
2403 VALUE rb_str_times(VALUE, VALUE);
2404 long rb_str_sublen(VALUE, long);
2405 VALUE rb_str_substr(VALUE, long, long);
2406 VALUE rb_str_subseq(VALUE, long, long);
2407 void rb_str_modify(VALUE);
2408 VALUE rb_str_freeze(VALUE);
2409 void rb_str_set_len(VALUE, long);
2410 VALUE rb_str_resize(VALUE, long);
2411 VALUE rb_str_cat(VALUE, const char*, long);
2412 VALUE rb_str_cat2(VALUE, const char*);
2413 VALUE rb_str_append(VALUE, VALUE);
2414 VALUE rb_str_concat(VALUE, VALUE);
2415 int rb_memhash(const void *ptr, long len);
2416 int rb_str_hash(VALUE);
2417 int rb_str_hash_cmp(VALUE,VALUE);
2418 int rb_str_comparable(VALUE, VALUE);
2419 int rb_str_cmp(VALUE, VALUE);
2420 VALUE rb_str_equal(VALUE str1, VALUE str2);
2421 VALUE rb_str_drop_bytes(VALUE, long);
2422 void rb_str_update(VALUE, long, long, VALUE);
2423 VALUE rb_str_inspect(VALUE);
2424 VALUE rb_str_dump(VALUE);
2425 VALUE rb_str_split(VALUE, const char*);
2426 void rb_str_associate(VALUE, VALUE);
2427 VALUE rb_str_associated(VALUE);
2428 void rb_str_setter(VALUE, ID, VALUE*);
2429 VALUE rb_str_intern(VALUE);
2430 VALUE rb_sym_to_s(VALUE);
2431 VALUE rb_str_length(VALUE);
2432 size_t rb_str_capacity(VALUE);
2433 VALUE rb_struct_new(VALUE, ...);
2434 VALUE rb_struct_define(const char*, ...);
2435 VALUE rb_struct_alloc(VALUE, VALUE);
2436 VALUE rb_struct_initialize(VALUE, VALUE);
2437 VALUE rb_struct_aref(VALUE, VALUE);
2438 VALUE rb_struct_aset(VALUE, VALUE, VALUE);
2439 VALUE rb_struct_getmember(VALUE, ID);
2440 VALUE rb_struct_iv_get(VALUE, const char*);
2441 VALUE rb_struct_s_members(VALUE);
2442 VALUE rb_struct_members(VALUE);
2443 VALUE rb_struct_alloc_noinit(VALUE);
2444 VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t, ...);
2445 typedef void rb_unblock_function_t(void *);
2446 typedef VALUE rb_blocking_function_t(void *);
2447 void rb_thread_check_ints(void);
2448 int rb_thread_interrupted(VALUE thval);
2449 VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1,
2450 rb_unblock_function_t *ubf, void *data2);
2451 VALUE rb_mutex_new(void);
2452 VALUE rb_mutex_locked_p(VALUE mutex);
2453 VALUE rb_mutex_try_lock(VALUE mutex);
2454 VALUE rb_mutex_lock(VALUE mutex);
2455 VALUE rb_mutex_unlock(VALUE mutex);
2456 VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
2457 VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
2458 VALUE rb_barrier_new(void);
2459 VALUE rb_barrier_wait(VALUE self);
2460 VALUE rb_barrier_release(VALUE self);
2461 VALUE rb_barrier_destroy(VALUE self);
2462 VALUE rb_time_new(time_t, long);
2463 VALUE rb_time_nano_new(time_t, long);
2464 VALUE rb_mod_name(VALUE);
2465 VALUE rb_class_path(VALUE);
2466 void rb_set_class_path(VALUE, VALUE, const char*);
2467 VALUE rb_path2class(const char*);
2468 void rb_name_class(VALUE, ID);
2469 VALUE rb_class_name(VALUE);
2470 void rb_autoload(VALUE, ID, const char*);
2471 VALUE rb_autoload_load(VALUE, ID);
2472 VALUE rb_autoload_p(VALUE, ID);
2473 void rb_gc_mark_global_tbl(void);
2474 VALUE rb_f_trace_var(int, VALUE*);
2475 VALUE rb_f_untrace_var(int, VALUE*);
2476 VALUE rb_f_global_variables(void);
2477 void rb_alias_variable(ID, ID);
2478 struct st_table* rb_generic_ivar_table(VALUE);
2479 void rb_copy_generic_ivar(VALUE,VALUE);
2480 void rb_mark_generic_ivar(VALUE);
2481 void rb_mark_generic_ivar_tbl(void);
2482 void rb_free_generic_ivar(VALUE);
2483 VALUE rb_ivar_get(VALUE, ID);
2484 VALUE rb_ivar_set(VALUE, ID, VALUE);
2485 VALUE rb_ivar_defined(VALUE, ID);
2486 void rb_ivar_foreach(VALUE, int (*)(), st_data_t);
2487 VALUE rb_iv_set(VALUE, const char*, VALUE);
2488 VALUE rb_iv_get(VALUE, const char*);
2489 VALUE rb_attr_get(VALUE, ID);
2490 VALUE rb_obj_instance_variables(VALUE);
2491 VALUE rb_obj_remove_instance_variable(VALUE, VALUE);
2492 void *rb_mod_const_at(VALUE, void*);
2493 void *rb_mod_const_of(VALUE, void*);
2494 VALUE rb_const_list(void*);
2495 VALUE rb_mod_constants(int, VALUE *, VALUE);
2496 VALUE rb_mod_remove_const(VALUE, VALUE);
2497 int rb_const_defined(VALUE, ID);
2498 int rb_const_defined_at(VALUE, ID);
2499 int rb_const_defined_from(VALUE, ID);
2500 VALUE rb_const_get(VALUE, ID);
2501 VALUE rb_const_get_at(VALUE, ID);
2502 VALUE rb_const_get_from(VALUE, ID);
2503 void rb_const_set(VALUE, ID, VALUE);
2504 VALUE rb_mod_const_missing(VALUE,VALUE);
2505 VALUE rb_cvar_defined(VALUE, ID);
2506 void rb_cvar_set(VALUE, ID, VALUE);
2507 VALUE rb_cvar_get(VALUE, ID);
2508 void rb_cv_set(VALUE, const char*, VALUE);
2509 VALUE rb_cv_get(VALUE, const char*);
2510 void rb_define_class_variable(VALUE, const char*, VALUE);
2511 VALUE rb_mod_class_variables(VALUE);
2512 VALUE rb_mod_remove_cvar(VALUE, VALUE);
2513 void ruby_show_version(void);
2514 void ruby_show_copyright(void);
2515 ID rb_frame_callee(void);
2516 VALUE rb_str_succ(VALUE);
2517 VALUE rb_time_succ(VALUE);
2518 void rb_frame_pop(void);
2519 int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
2520 void ruby_sysinit(int *, char ***);
2521 int ruby_native_thread_p(void);
2522 typedef unsigned int rb_event_flag_t;
2523 typedef void (*rb_event_hook_func_t)(rb_event_flag_t, VALUE data, VALUE, ID, VALUE klass);
2524 typedef struct rb_event_hook_struct {
2525 rb_event_flag_t flag;
2526 rb_event_hook_func_t func;
2528 struct rb_event_hook_struct *next;
2530 void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
2532 int rb_remove_event_hook(rb_event_hook_func_t func);
2533 int rb_isalnum(int c);
2534 int rb_isalpha(int c);
2535 int rb_isblank(int c);
2536 int rb_iscntrl(int c);
2537 int rb_isdigit(int c);
2538 int rb_isgraph(int c);
2539 int rb_islower(int c);
2540 int rb_isprint(int c);
2541 int rb_ispunct(int c);
2542 int rb_isspace(int c);
2543 int rb_isupper(int c);
2544 int rb_isxdigit(int c);
2545 int rb_tolower(int c);
2546 int rb_toupper(int c);
2547 int st_strcasecmp(const char *s1, const char *s2);
2548 int st_strncasecmp(const char *s1, const char *s2, size_t n);
2549 unsigned long ruby_strtoul(const char *str, char **endptr, int base);
2550 typedef unsigned char OnigUChar;
2551 typedef unsigned int OnigCodePoint;
2552 typedef unsigned int OnigCtype;
2553 typedef unsigned int OnigDistance;
2554 typedef unsigned int OnigCaseFoldType;
2555 extern OnigCaseFoldType OnigDefaultCaseFoldFlag;
2559 OnigCodePoint code[3];
2560 } OnigCaseFoldCodeItem;
2563 OnigCodePoint anychar;
2564 OnigCodePoint anytime;
2565 OnigCodePoint zero_or_one_time;
2566 OnigCodePoint one_or_more_time;
2567 OnigCodePoint anychar_anytime;
2568 } OnigMetaCharTableType;
2569 typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
2570 typedef struct OnigEncodingTypeST {
2571 int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
2575 int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
2576 OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
2577 int (*code_to_mbclen)(OnigCodePoint code, struct OnigEncodingTypeST* enc);
2578 int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, struct OnigEncodingTypeST* enc);
2579 int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, struct OnigEncodingTypeST* enc);
2580 int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, struct OnigEncodingTypeST* enc);
2581 int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], struct OnigEncodingTypeST* enc);
2582 int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end);
2583 int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, struct OnigEncodingTypeST* enc);
2584 int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], struct OnigEncodingTypeST* enc);
2585 OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
2586 int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
2587 int ruby_encoding_index;
2589 typedef OnigEncodingType* OnigEncoding;
2590 extern OnigEncodingType OnigEncodingASCII;
2592 int onigenc_mbclen_approximate (const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
2594 OnigUChar* onigenc_step_back (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
2596 int onigenc_init (void);
2598 int onigenc_set_default_encoding (OnigEncoding enc);
2600 OnigEncoding onigenc_get_default_encoding (void);
2602 void onigenc_set_default_caseconv_table (const OnigUChar* table);
2604 OnigUChar* onigenc_get_right_adjust_char_head_with_prev (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
2606 OnigUChar* onigenc_get_prev_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
2608 OnigUChar* onigenc_get_left_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
2610 OnigUChar* onigenc_get_right_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
2612 int onigenc_strlen (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
2614 int onigenc_strlen_null (OnigEncoding enc, const OnigUChar* p);
2616 int onigenc_str_bytelen_null (OnigEncoding enc, const OnigUChar* p);
2617 typedef unsigned int OnigOptionType;
2621 unsigned int behavior;
2622 OnigOptionType options;
2623 OnigMetaCharTableType meta_char_table;
2625 extern const OnigSyntaxType OnigSyntaxASIS;
2626 extern const OnigSyntaxType OnigSyntaxPosixBasic;
2627 extern const OnigSyntaxType OnigSyntaxPosixExtended;
2628 extern const OnigSyntaxType OnigSyntaxEmacs;
2629 extern const OnigSyntaxType OnigSyntaxGrep;
2630 extern const OnigSyntaxType OnigSyntaxGnuRegex;
2631 extern const OnigSyntaxType OnigSyntaxJava;
2632 extern const OnigSyntaxType OnigSyntaxPerl;
2633 extern const OnigSyntaxType OnigSyntaxPerl_NG;
2634 extern const OnigSyntaxType OnigSyntaxRuby;
2635 extern const OnigSyntaxType* OnigDefaultSyntax;
2636 typedef struct OnigCaptureTreeNodeStruct {
2642 struct OnigCaptureTreeNodeStruct** childs;
2643 } OnigCaptureTreeNode;
2644 struct re_registers {
2649 OnigCaptureTreeNode* history_root;
2651 typedef struct re_registers OnigRegion;
2661 typedef void (*OnigWarnFunc) (const char* s);
2662 extern void onig_null_warn (const char* s);
2663 typedef struct re_pattern_buffer {
2671 int num_comb_exp_check;
2673 unsigned int capture_history;
2674 unsigned int bt_mem_start;
2675 unsigned int bt_mem_end;
2676 int stack_pop_level;
2677 int repeat_range_alloc;
2678 OnigRepeatRange* repeat_range;
2680 OnigOptionType options;
2681 const OnigSyntaxType* syntax;
2682 OnigCaseFoldType case_fold_flag;
2687 OnigDistance anchor_dmin;
2688 OnigDistance anchor_dmax;
2690 unsigned char *exact;
2691 unsigned char *exact_end;
2692 unsigned char map[256];
2694 int *int_map_backward;
2697 struct re_pattern_buffer* chain;
2699 typedef OnigRegexType* OnigRegex;
2700 typedef OnigRegexType regex_t;
2702 int num_of_elements;
2703 OnigEncoding pattern_enc;
2704 OnigEncoding target_enc;
2705 OnigSyntaxType* syntax;
2706 OnigOptionType option;
2707 OnigCaseFoldType case_fold_flag;
2710 int onig_init (void);
2712 int onig_error_code_to_str (OnigUChar* s, int err_code, ...);
2714 void onig_set_warn_func (OnigWarnFunc f);
2716 void onig_set_verb_warn_func (OnigWarnFunc f);
2718 int onig_new (OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
2720 int onig_new_deluxe (OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
2722 void onig_free (OnigRegex);
2724 int onig_recompile (OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo);
2726 int onig_recompile_deluxe (OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
2728 int onig_search (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
2730 int onig_match (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
2732 OnigRegion* onig_region_new (void);
2734 void onig_region_init (OnigRegion* region);
2736 void onig_region_free (OnigRegion* region, int free_self);
2738 void onig_region_copy (OnigRegion* to, OnigRegion* from);
2740 void onig_region_clear (OnigRegion* region);
2742 int onig_region_resize (OnigRegion* region, int n);
2744 int onig_region_set (OnigRegion* region, int at, int beg, int end);
2746 int onig_name_to_group_numbers (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
2748 int onig_name_to_backref_number (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region);
2750 int onig_foreach_name (OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
2752 int onig_number_of_names (OnigRegex reg);
2754 int onig_number_of_captures (OnigRegex reg);
2756 int onig_number_of_capture_histories (OnigRegex reg);
2758 OnigCaptureTreeNode* onig_get_capture_tree (OnigRegion* region);
2760 int onig_capture_tree_traverse (OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg);
2762 int onig_noname_group_capture_is_active (OnigRegex reg);
2764 OnigEncoding onig_get_encoding (OnigRegex reg);
2766 OnigOptionType onig_get_options (OnigRegex reg);
2768 OnigCaseFoldType onig_get_case_fold_flag (OnigRegex reg);
2770 const OnigSyntaxType* onig_get_syntax (OnigRegex reg);
2772 int onig_set_default_syntax (const OnigSyntaxType* syntax);
2774 void onig_copy_syntax (OnigSyntaxType* to, const OnigSyntaxType* from);
2776 unsigned int onig_get_syntax_op (OnigSyntaxType* syntax);
2778 unsigned int onig_get_syntax_op2 (OnigSyntaxType* syntax);
2780 unsigned int onig_get_syntax_behavior (OnigSyntaxType* syntax);
2782 OnigOptionType onig_get_syntax_options (OnigSyntaxType* syntax);
2784 void onig_set_syntax_op (OnigSyntaxType* syntax, unsigned int op);
2786 void onig_set_syntax_op2 (OnigSyntaxType* syntax, unsigned int op2);
2788 void onig_set_syntax_behavior (OnigSyntaxType* syntax, unsigned int behavior);
2790 void onig_set_syntax_options (OnigSyntaxType* syntax, OnigOptionType options);
2792 int onig_set_meta_char (OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
2794 void onig_copy_encoding (OnigEncoding to, OnigEncoding from);
2796 OnigCaseFoldType onig_get_default_case_fold_flag (void);
2798 int onig_set_default_case_fold_flag (OnigCaseFoldType case_fold_flag);
2800 unsigned int onig_get_match_stack_limit_size (void);
2802 int onig_set_match_stack_limit_size (unsigned int size);
2804 int onig_end (void);
2806 const char* onig_version (void);
2808 const char* onig_copyright (void);
2809 typedef OnigEncodingType rb_encoding;
2810 int rb_enc_replicate(const char *, rb_encoding *);
2811 int rb_define_dummy_encoding(const char *);
2812 int rb_enc_get_index(VALUE obj);
2813 void rb_enc_set_index(VALUE obj, int encindex);
2814 int rb_enc_find_index(const char *name);
2815 int rb_to_encoding_index(VALUE);
2816 rb_encoding* rb_to_encoding(VALUE);
2817 rb_encoding* rb_enc_get(VALUE);
2818 rb_encoding* rb_enc_compatible(VALUE,VALUE);
2819 rb_encoding* rb_enc_check(VALUE,VALUE);
2820 VALUE rb_enc_associate_index(VALUE, int);
2821 VALUE rb_enc_associate(VALUE, rb_encoding*);
2822 void rb_enc_copy(VALUE dst, VALUE src);
2823 VALUE rb_enc_str_new(const char*, long, rb_encoding*);
2824 VALUE rb_enc_reg_new(const char*, long, rb_encoding*, int);
2825 VALUE rb_enc_sprintf(rb_encoding *, const char*, ...) __attribute__((format(printf, 2, 3)));
2826 VALUE rb_enc_vsprintf(rb_encoding *, const char*, va_list);
2827 long rb_enc_strlen(const char*, const char*, rb_encoding*);
2828 char* rb_enc_nth(const char*, const char*, int, rb_encoding*);
2829 VALUE rb_obj_encoding(VALUE);
2830 VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc);
2831 VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *);
2832 VALUE rb_str_export_to_enc(VALUE, rb_encoding *);
2833 VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
2834 rb_encoding* rb_enc_from_index(int idx);
2835 rb_encoding * rb_enc_find(const char *name);
2836 int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc);
2837 int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc);
2838 int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc);
2839 unsigned int rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc);
2840 int rb_enc_codelen(int code, rb_encoding *enc);
2841 int rb_enc_casefold(char *to, const char *p, const char *e, rb_encoding *enc);
2842 int rb_enc_toupper(int c, rb_encoding *enc);
2843 int rb_enc_tolower(int c, rb_encoding *enc);
2844 ID rb_intern3(const char*, long, rb_encoding*);
2845 ID rb_interned_id_p(const char *, long, rb_encoding *);
2846 int rb_enc_symname_p(const char*, rb_encoding*);
2847 int rb_enc_str_coderange(VALUE);
2848 long rb_str_coderange_scan_restartable(const char*, const char*, rb_encoding*, int*);
2849 int rb_enc_str_asciionly_p(VALUE);
2850 VALUE rb_enc_from_encoding(rb_encoding *enc);
2851 rb_encoding *rb_ascii8bit_encoding(void);
2852 rb_encoding *rb_utf8_encoding(void);
2853 rb_encoding *rb_usascii_encoding(void);
2854 rb_encoding *rb_locale_encoding(void);
2855 rb_encoding *rb_filesystem_encoding(void);
2856 rb_encoding *rb_default_external_encoding(void);
2857 rb_encoding *rb_default_internal_encoding(void);
2858 int rb_ascii8bit_encindex(void);
2859 int rb_utf8_encindex(void);
2860 int rb_usascii_encindex(void);
2861 VALUE rb_enc_default_external(void);
2862 VALUE rb_enc_default_internal(void);
2863 void rb_enc_set_default_external(VALUE encoding);
2864 void rb_enc_set_default_internal(VALUE encoding);
2865 VALUE rb_locale_charmap(VALUE klass);
2866 long rb_memsearch(const void*,long,const void*,long,rb_encoding*);
2867 extern VALUE rb_cEncoding;
2869 rb_enc_dummy_p(rb_encoding *enc)
2871 return ((enc)->ruby_encoding_index & (1<<24)) != 0;
2874 econv_invalid_byte_sequence,
2875 econv_undefined_conversion,
2876 econv_destination_buffer_full,
2877 econv_source_buffer_empty,
2880 econv_incomplete_input
2881 } rb_econv_result_t;
2882 typedef struct rb_econv_t rb_econv_t;
2883 VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts);
2884 int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding);
2885 int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts);
2886 rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags);
2887 rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts);
2888 rb_econv_result_t rb_econv_convert(rb_econv_t *ec,
2889 const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end,
2890 unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end,
2892 void rb_econv_close(rb_econv_t *ec);
2893 int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname);
2894 int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name);
2895 int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name);
2896 VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags);
2897 int rb_econv_insert_output(rb_econv_t *ec,
2898 const unsigned char *str, size_t len, const char *str_encoding);
2899 const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec);
2900 void rb_econv_check_error(rb_econv_t *ec);
2901 VALUE rb_econv_make_exception(rb_econv_t *ec);
2902 int rb_econv_putbackable(rb_econv_t *ec);
2903 void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n);
2904 const char *rb_econv_asciicompat_encoding(const char *encname);
2905 VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags);
2906 VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags);
2907 VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags);
2908 VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags);
2909 void rb_econv_binmode(rb_econv_t *ec);
3021 typedef struct RNode {
3022 unsigned long flags;
3041 struct global_entry *entry;
3046 VALUE rb_parser_new(void);
3047 VALUE rb_parser_end_seen_p(VALUE);
3048 VALUE rb_parser_encoding(VALUE);
3049 NODE *rb_parser_compile_cstr(volatile VALUE, const char*, const char*, int, int);
3050 NODE *rb_parser_compile_string(volatile VALUE, const char*, VALUE, int);
3051 NODE *rb_parser_compile_file(volatile VALUE, const char*, VALUE, int);
3052 NODE *rb_compile_cstr(const char*, const char*, int, int);
3053 NODE *rb_compile_string(const char*, VALUE, int);
3054 NODE *rb_compile_file(const char*, VALUE, int);
3055 void rb_add_method(VALUE, ID, NODE *, int);
3056 NODE *rb_node_newnode(enum node_type,VALUE,VALUE,VALUE);
3057 NODE* rb_method_node(VALUE klass, ID id);
3058 int rb_node_arity(NODE* node);
3059 struct global_entry *rb_global_entry(ID);
3060 VALUE rb_gvar_get(struct global_entry *);
3061 VALUE rb_gvar_set(struct global_entry *, VALUE);
3062 VALUE rb_gvar_defined(struct global_entry *);
3063 typedef union YYSTYPE
3071 enum ruby_method_ids {
3090 idLAST_TOKEN = 376 >> 3,
3102 idIntern = ((tIntern<<3)|0x00),
3103 idMethodMissing = ((tMethodMissing<<3)|0x00),
3104 idLength = ((tLength<<3)|0x00),
3105 idGets = ((tGets<<3)|0x00),
3106 idSucc = ((tSucc<<3)|0x00),
3107 idEach = ((tEach<<3)|0x00),
3108 idLambda = ((tLambda<<3)|0x00),
3109 idSend = ((tSend<<3)|0x00),
3110 id__send__ = ((t__send__<<3)|0x00),
3111 idInitialize = ((tInitialize<<3)|0x00)
3113 struct ruby_method_ids_check {
3114 int checking_for_tUPLUS[321 == 321 ? 1 : -1];
3115 int checking_for_tUMINUS[322 == 322 ? 1 : -1];
3116 int checking_for_tPOW[323 == 323 ? 1 : -1];
3117 int checking_for_tCMP[324 == 324 ? 1 : -1];
3118 int checking_for_tEQ[325 == 325 ? 1 : -1];
3119 int checking_for_tEQQ[326 == 326 ? 1 : -1];
3120 int checking_for_tNEQ[327 == 327 ? 1 : -1];
3121 int checking_for_tGEQ[328 == 328 ? 1 : -1];
3122 int checking_for_tLEQ[329 == 329 ? 1 : -1];
3123 int checking_for_tANDOP[330 == 330 ? 1 : -1];
3124 int checking_for_tOROP[331 == 331 ? 1 : -1];
3125 int checking_for_tMATCH[332 == 332 ? 1 : -1];
3126 int checking_for_tNMATCH[333 == 333 ? 1 : -1];
3127 int checking_for_tDOT2[334 == 334 ? 1 : -1];
3128 int checking_for_tDOT3[335 == 335 ? 1 : -1];
3129 int checking_for_tAREF[336 == 336 ? 1 : -1];
3130 int checking_for_tASET[337 == 337 ? 1 : -1];
3131 int checking_for_tLSHFT[338 == 338 ? 1 : -1];
3132 int checking_for_tRSHFT[339 == 339 ? 1 : -1];
3133 int checking_for_tLAMBDA[352 == 352 ? 1 : -1];
3134 int checking_for_idNULL[365 == 365 ? 1 : -1];
3135 int checking_for_idRespond_to[366 == 366 ? 1 : -1];
3136 int checking_for_idIFUNC[367 == 367 ? 1 : -1];
3137 int checking_for_idCFUNC[368 == 368 ? 1 : -1];
3138 int checking_for_idThrowState[369 == 369 ? 1 : -1];
3139 int checking_for_id_core_set_method_alias[370 == 370 ? 1 : -1];
3140 int checking_for_id_core_set_variable_alias[371 == 371 ? 1 : -1];
3141 int checking_for_id_core_undef_method[372 == 372 ? 1 : -1];
3142 int checking_for_id_core_define_method[373 == 373 ? 1 : -1];
3143 int checking_for_id_core_define_singleton_method[374 == 374 ? 1 : -1];
3144 int checking_for_id_core_set_postexe[375 == 375 ? 1 : -1];
3145 int checking_for_tLAST_TOKEN[376 == 376 ? 1 : -1];
3150 } OnigPairCaseFoldCodes;
3155 } PosixBracketEntryType;
3156 extern int onigenc_ascii_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
3157 extern int onigenc_ascii_get_case_fold_codes_by_str (OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc);
3158 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);
3159 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[]);
3160 extern int onigenc_not_support_get_ctype_code_range (OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
3161 extern int onigenc_is_mbc_newline_0x0a (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
3162 extern int onigenc_ascii_mbc_case_fold (OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower, OnigEncoding enc);
3163 extern int onigenc_single_byte_mbc_enc_len (const OnigUChar* p, const OnigUChar* e, OnigEncoding enc);
3164 extern OnigCodePoint onigenc_single_byte_mbc_to_code (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
3165 extern int onigenc_single_byte_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
3166 extern int onigenc_single_byte_code_to_mbc (OnigCodePoint code, OnigUChar *buf, OnigEncoding enc);
3167 extern OnigUChar* onigenc_single_byte_left_adjust_char_head (const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
3168 extern int onigenc_always_true_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
3169 extern int onigenc_always_false_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
3170 extern int onigenc_ascii_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
3171 extern OnigCodePoint onigenc_mbn_mbc_to_code (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
3172 extern int onigenc_mbn_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower);
3173 extern int onigenc_mb2_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
3174 extern int onigenc_mb2_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
3175 extern int onigenc_minimum_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
3176 extern int onigenc_unicode_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
3177 extern int onigenc_mb2_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
3178 extern int onigenc_mb4_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
3179 extern int onigenc_mb4_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
3180 extern int onigenc_mb4_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
3181 extern int onigenc_unicode_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
3182 extern int onigenc_utf16_32_get_ctype_code_range (OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
3183 extern int onigenc_unicode_ctype_code_range (int ctype, const OnigCodePoint* ranges[]);
3184 extern int onigenc_unicode_get_case_fold_codes_by_str (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
3185 extern int onigenc_unicode_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* fold);
3186 extern int onigenc_unicode_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
3187 extern const OnigUChar OnigEncISO_8859_1_ToLowerCaseTable[];
3188 extern const OnigUChar OnigEncISO_8859_1_ToUpperCaseTable[];
3190 onigenc_with_ascii_strncmp (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, const OnigUChar* sascii , int n);
3192 onigenc_step (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, int n);
3193 extern int onig_is_in_code_range (const OnigUChar* p, OnigCodePoint code);
3194 extern OnigEncoding OnigEncDefaultCharEncoding;
3195 extern const OnigUChar OnigEncAsciiToLowerCaseTable[];
3196 extern const OnigUChar OnigEncAsciiToUpperCaseTable[];
3197 extern const unsigned short OnigEncAsciiCtypeTable[];
3198 extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
3199 extern char *program_invocation_name, *program_invocation_short_name;
3200 typedef int error_t;
3203 _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
3204 _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
3205 _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
3206 _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
3207 _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
3208 _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
3209 _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
3210 _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
3211 _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
3212 _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
3213 _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
3214 _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
3216 extern __const unsigned short int **__ctype_b_loc (void)
3217 __attribute__ ((__const));
3218 extern __const __int32_t **__ctype_tolower_loc (void)
3219 __attribute__ ((__const));
3220 extern __const __int32_t **__ctype_toupper_loc (void)
3221 __attribute__ ((__const));
3222 extern int isalnum (int) __attribute__ ((__nothrow__));
3223 extern int isalpha (int) __attribute__ ((__nothrow__));
3224 extern int iscntrl (int) __attribute__ ((__nothrow__));
3225 extern int isdigit (int) __attribute__ ((__nothrow__));
3226 extern int islower (int) __attribute__ ((__nothrow__));
3227 extern int isgraph (int) __attribute__ ((__nothrow__));
3228 extern int isprint (int) __attribute__ ((__nothrow__));
3229 extern int ispunct (int) __attribute__ ((__nothrow__));
3230 extern int isspace (int) __attribute__ ((__nothrow__));
3231 extern int isupper (int) __attribute__ ((__nothrow__));
3232 extern int isxdigit (int) __attribute__ ((__nothrow__));
3233 extern int tolower (int __c) __attribute__ ((__nothrow__));
3234 extern int toupper (int __c) __attribute__ ((__nothrow__));
3235 extern int isblank (int) __attribute__ ((__nothrow__));
3236 extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__));
3237 extern int isascii (int __c) __attribute__ ((__nothrow__));
3238 extern int toascii (int __c) __attribute__ ((__nothrow__));
3239 extern int _toupper (int) __attribute__ ((__nothrow__));
3240 extern int _tolower (int) __attribute__ ((__nothrow__));
3242 __attribute__ ((__nothrow__)) tolower (int __c)
3244 return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
3247 __attribute__ ((__nothrow__)) toupper (int __c)
3249 return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
3251 extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
3252 extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
3253 extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
3254 extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
3255 extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
3256 extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
3257 extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
3258 extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
3259 extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
3260 extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
3261 extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
3262 extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));
3263 extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
3264 extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
3265 extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
3266 extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
3267 static ID register_symid(ID, const char *, long, rb_encoding *);
3271 rb_encoding *enc = rb_usascii_encoding();
3272 register_symid(365, "", strlen(""), enc);
3273 register_symid(367, "<IFUNC>", strlen("<IFUNC>"), enc),
3274 register_symid(368, "<CFUNC>", strlen("<CFUNC>"), enc),
3275 register_symid(366, "respond_to?", strlen("respond_to?"), enc),
3276 register_symid(369, "#__ThrowState__", strlen("#__ThrowState__"), enc),
3277 register_symid(370, "core#set_method_alias", strlen("core#set_method_alias"), enc),
3278 register_symid(371, "core#set_variable_alias", strlen("core#set_variable_alias"), enc),
3279 register_symid(372, "core#undef_method", strlen("core#undef_method"), enc),
3280 register_symid(373, "core#define_method", strlen("core#define_method"), enc),
3281 register_symid(374, "core#define_singleton_method", strlen("core#define_singleton_method"), enc),
3282 register_symid(375, "core#set_postexe", strlen("core#set_postexe"), enc),
3283 register_symid(idEach, "each", strlen("each"), enc);
3284 register_symid(idLength, "length", strlen("length"), enc);
3285 register_symid(idLambda, "lambda", strlen("lambda"), enc);
3286 register_symid(idIntern, "intern", strlen("intern"), enc);
3287 register_symid(idGets, "gets", strlen("gets"), enc);
3288 register_symid(idSucc, "succ", strlen("succ"), enc);
3289 register_symid(idMethodMissing, "method_missing", strlen("method_missing"), enc);
3290 register_symid(idSend, "send", strlen("send"), enc);
3291 register_symid(id__send__, "__send__", strlen("__send__"), enc);
3292 register_symid(idInitialize, "initialize", strlen("initialize"), enc);
3306 typedef unsigned long long stack_type;
3311 struct vtable *prev;
3314 struct vtable *args;
3315 struct vtable *vars;
3316 struct local_vars *prev;
3319 vtable_size(const struct vtable *tbl)
3321 if (((VALUE)(tbl) & ~(VALUE)3)) {
3328 static struct vtable *
3329 vtable_alloc(struct vtable *prev)
3331 struct vtable *tbl = (struct vtable*)ruby_xmalloc(sizeof(struct vtable));
3334 tbl->tbl = (ID*)ruby_xmalloc2((tbl->capa),sizeof(ID));
3336 if (0) printf("vtable_alloc: %p\n", (void *)tbl);
3340 vtable_free(struct vtable *tbl)
3342 if (0)printf("vtable_free: %p\n", (void *)tbl);
3343 if (((VALUE)(tbl) & ~(VALUE)3)) {
3345 ruby_xfree(tbl->tbl);
3351 vtable_add(struct vtable *tbl, ID id)
3353 if (!((VALUE)(tbl) & ~(VALUE)3)) {
3354 rb_bug("vtable_add: vtable is not allocated (%p)", (void *)tbl);
3356 if (0) printf("vtable_add: %p, %s\n", (void *)tbl, rb_id2name(id));
3357 if (tbl->pos == tbl->capa) {
3358 tbl->capa = tbl->capa * 2;
3359 (tbl->tbl)=(ID*)ruby_xrealloc2((char*)(tbl->tbl),(tbl->capa),sizeof(ID));
3361 tbl->tbl[tbl->pos++] = id;
3364 vtable_included(const struct vtable * tbl, ID id)
3367 if (((VALUE)(tbl) & ~(VALUE)3)) {
3368 for (i = 0; i < tbl->pos; i++) {
3369 if (tbl->tbl[i] == id) {
3376 typedef struct token_info {
3381 struct token_info *next;
3383 struct parser_params {
3386 YYSTYPE *parser_yylval;
3388 NODE *parser_lex_strterm;
3389 enum lex_state_e parser_lex_state;
3390 stack_type parser_cond_stack;
3391 stack_type parser_cmdarg_stack;
3392 int parser_class_nest;
3393 int parser_paren_nest;
3394 int parser_lpar_beg;
3395 int parser_in_single;
3397 int parser_compile_for_eval;
3398 VALUE parser_cur_mid;
3399 int parser_in_defined;
3400 char *parser_tokenbuf;
3403 VALUE parser_lex_input;
3404 VALUE parser_lex_lastline;
3405 VALUE parser_lex_nextline;
3406 const char *parser_lex_pbeg;
3407 const char *parser_lex_p;
3408 const char *parser_lex_pend;
3409 int parser_heredoc_end;
3410 int parser_command_start;
3411 NODE *parser_deferred_nodes;
3412 int parser_lex_gets_ptr;
3413 VALUE (*parser_lex_gets)(struct parser_params*,VALUE);
3414 struct local_vars *parser_lvtbl;
3415 int parser_ruby__end__seen;
3418 char *parser_ruby_sourcefile;
3419 int parser_ruby_sourceline;
3423 NODE *parser_eval_tree_begin;
3424 NODE *parser_eval_tree;
3428 token_info *parser_token_info;
3430 void *rb_parser_malloc(struct parser_params *, size_t);
3431 void *rb_parser_realloc(struct parser_params *, void *, size_t);
3432 void *rb_parser_calloc(struct parser_params *, size_t, size_t);
3433 void rb_parser_free(struct parser_params *, void *);
3434 static int parser_yyerror(struct parser_params*, const char*);
3435 static int yylex(void*, void*);
3436 static NODE* node_newnode(struct parser_params *, enum node_type, VALUE, VALUE, VALUE);
3437 static NODE *cond_gen(struct parser_params*,NODE*);
3438 static NODE *logop_gen(struct parser_params*,enum node_type,NODE*,NODE*);
3439 static NODE *newline_node(NODE*);
3440 static void fixpos(NODE*,NODE*);
3441 static int value_expr_gen(struct parser_params*,NODE*);
3442 static void void_expr_gen(struct parser_params*,NODE*);
3443 static NODE *remove_begin(NODE*);
3444 static void void_stmts_gen(struct parser_params*,NODE*);
3445 static void reduce_nodes_gen(struct parser_params*,NODE**);
3446 static void block_dup_check_gen(struct parser_params*,NODE*,NODE*);
3447 static NODE *block_append_gen(struct parser_params*,NODE*,NODE*);
3448 static NODE *list_append_gen(struct parser_params*,NODE*,NODE*);
3449 static NODE *list_concat_gen(struct parser_params*,NODE*,NODE*);
3450 static NODE *arg_append_gen(struct parser_params*,NODE*,NODE*);
3451 static NODE *arg_concat_gen(struct parser_params*,NODE*,NODE*);
3452 static NODE *literal_concat_gen(struct parser_params*,NODE*,NODE*);
3453 static NODE *new_evstr_gen(struct parser_params*,NODE*);
3454 static NODE *evstr2dstr_gen(struct parser_params*,NODE*);
3455 static NODE *splat_array(NODE*);
3456 static NODE *call_bin_op_gen(struct parser_params*,NODE*,ID,NODE*);
3457 static NODE *call_uni_op_gen(struct parser_params*,NODE*,ID);
3458 static NODE *new_args_gen(struct parser_params*,NODE*,NODE*,ID,NODE*,ID);
3459 static void shadowing_lvar_gen(struct parser_params*,ID);
3460 static NODE *negate_lit(NODE*);
3461 static NODE *ret_args_gen(struct parser_params*,NODE*);
3462 static NODE *arg_blk_pass(NODE*,NODE*);
3463 static NODE *new_yield_gen(struct parser_params*,NODE*);
3464 static NODE *gettable_gen(struct parser_params*,ID);
3465 static NODE *assignable_gen(struct parser_params*,ID,NODE*);
3466 static void new_bv_gen(struct parser_params*,ID);
3467 static NODE *aryset_gen(struct parser_params*,NODE*,NODE*);
3468 static NODE *attrset_gen(struct parser_params*,NODE*,ID);
3469 static void rb_backref_error_gen(struct parser_params*,NODE*);
3470 static NODE *node_assign_gen(struct parser_params*,NODE*,NODE*);
3471 static NODE *match_op_gen(struct parser_params*,NODE*,NODE*);
3472 static void local_push_gen(struct parser_params*,int);
3473 static void local_pop_gen(struct parser_params*);
3474 static int local_var_gen(struct parser_params*, ID);
3475 static int arg_var_gen(struct parser_params*, ID);
3476 static int local_id_gen(struct parser_params*, ID);
3477 static ID *local_tbl_gen(struct parser_params*);
3478 static ID internal_id_gen(struct parser_params*);
3479 static void dyna_push_gen(struct parser_params*);
3480 static void dyna_pop_gen(struct parser_params*);
3481 static int dyna_in_block_gen(struct parser_params*);
3482 static int dvar_defined_gen(struct parser_params*,ID);
3483 static int dvar_curr_gen(struct parser_params*,ID);
3484 static void fixup_nodes(NODE **);
3485 extern int rb_dvar_defined(ID);
3486 extern int rb_local_defined(ID);
3487 extern int rb_parse_in_eval(void);
3488 static VALUE reg_compile_gen(struct parser_params*, VALUE, int);
3489 static void reg_fragment_setenc_gen(struct parser_params*, VALUE, int);
3490 static void reg_fragment_check_gen(struct parser_params*, VALUE, int);
3491 static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match);
3492 int rb_enc_symname2_p(const char *, int, rb_encoding *);
3493 static int lvar_defined_gen(struct parser_params*, ID);
3494 static void token_info_push(struct parser_params*, const char *token);
3495 static void token_info_pop(struct parser_params*, const char *token);
3496 typedef unsigned char yytype_uint8;
3497 typedef signed char yytype_int8;
3498 typedef unsigned short int yytype_uint16;
3499 typedef short int yytype_int16;
3505 static const yytype_uint8 yytranslate[] =
3507 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3508 148, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3510 2, 2, 147, 123, 2, 2, 2, 121, 116, 2,
3511 143, 144, 119, 117, 141, 118, 140, 120, 2, 2,
3512 2, 2, 2, 2, 2, 2, 2, 2, 111, 146,
3513 113, 109, 112, 110, 2, 2, 2, 2, 2, 2,
3514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3516 2, 139, 2, 145, 115, 2, 142, 2, 2, 2,
3517 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3518 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3519 2, 2, 2, 137, 114, 138, 124, 2, 2, 2,
3520 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3521 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3522 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3523 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3524 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3525 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3526 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3527 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3528 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3529 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3530 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3531 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3532 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
3533 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3534 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3535 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3536 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3537 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3538 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3539 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
3540 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
3541 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
3542 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
3543 105, 106, 107, 108, 122, 125, 126, 127, 128, 129,
3544 130, 131, 132, 133, 134, 135, 136
3546 static const yytype_uint16 yyprhs[] =
3548 0, 0, 3, 4, 7, 12, 15, 17, 19, 23,
3549 26, 27, 32, 36, 40, 44, 47, 51, 55, 59,
3550 63, 67, 68, 74, 79, 83, 87, 91, 98, 104,
3551 110, 116, 120, 124, 128, 132, 134, 136, 140, 144,
3552 148, 151, 153, 155, 157, 159, 162, 165, 168, 170,
3553 175, 180, 181, 187, 190, 194, 199, 205, 210, 216,
3554 219, 222, 224, 228, 230, 234, 236, 239, 243, 249,
3555 252, 257, 260, 265, 267, 271, 273, 277, 280, 284,
3556 286, 290, 292, 297, 301, 305, 309, 313, 316, 318,
3557 320, 325, 329, 333, 337, 341, 344, 346, 348, 350,
3558 353, 355, 359, 361, 363, 365, 367, 369, 371, 373,
3559 375, 377, 379, 380, 385, 387, 389, 391, 393, 395,
3560 397, 399, 401, 403, 405, 407, 409, 411, 413, 415,
3561 417, 419, 421, 423, 425, 427, 429, 431, 433, 435,
3562 437, 439, 441, 443, 445, 447, 449, 451, 453, 455,
3563 457, 459, 461, 463, 465, 467, 469, 471, 473, 475,
3564 477, 479, 481, 483, 485, 487, 489, 491, 493, 495,
3565 497, 499, 501, 503, 505, 507, 509, 511, 513, 515,
3566 517, 519, 521, 523, 525, 529, 535, 539, 545, 552,
3567 558, 564, 570, 576, 581, 585, 589, 593, 597, 601,
3568 605, 609, 613, 617, 622, 627, 630, 633, 637, 641,
3569 645, 649, 653, 657, 661, 665, 669, 673, 677, 681,
3570 685, 688, 691, 695, 699, 703, 707, 708, 713, 720,
3571 722, 724, 726, 729, 734, 737, 741, 743, 745, 747,
3572 749, 751, 754, 757, 762, 764, 765, 768, 771, 774,
3573 776, 778, 780, 783, 787, 792, 796, 801, 804, 806,
3574 808, 810, 812, 814, 816, 818, 820, 822, 823, 828,
3575 829, 834, 838, 842, 845, 849, 853, 855, 860, 864,
3576 866, 867, 874, 879, 883, 886, 888, 891, 894, 901,
3577 908, 909, 910, 918, 919, 920, 928, 934, 939, 940,
3578 941, 951, 952, 959, 960, 961, 970, 971, 977, 978,
3579 985, 986, 987, 997, 999, 1001, 1003, 1005, 1007, 1009,
3580 1011, 1013, 1015, 1017, 1019, 1021, 1023, 1025, 1027, 1029,
3581 1031, 1033, 1036, 1038, 1040, 1042, 1048, 1050, 1053, 1055,
3582 1057, 1059, 1063, 1065, 1069, 1071, 1076, 1083, 1087, 1093,
3583 1096, 1101, 1103, 1107, 1114, 1123, 1128, 1135, 1140, 1143,
3584 1150, 1153, 1158, 1165, 1168, 1173, 1176, 1181, 1183, 1185,
3585 1187, 1191, 1193, 1198, 1200, 1203, 1205, 1209, 1211, 1213,
3586 1214, 1218, 1223, 1225, 1229, 1233, 1234, 1240, 1243, 1248,
3587 1253, 1256, 1261, 1266, 1270, 1274, 1278, 1281, 1283, 1288,
3588 1289, 1295, 1296, 1302, 1308, 1310, 1312, 1319, 1321, 1323,
3589 1325, 1327, 1330, 1332, 1335, 1337, 1339, 1341, 1343, 1345,
3590 1347, 1349, 1352, 1356, 1360, 1364, 1368, 1372, 1373, 1377,
3591 1379, 1382, 1386, 1390, 1391, 1395, 1396, 1399, 1400, 1403,
3592 1405, 1406, 1410, 1411, 1416, 1418, 1420, 1422, 1424, 1427,
3593 1429, 1431, 1433, 1435, 1439, 1441, 1443, 1446, 1449, 1451,
3594 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471,
3595 1473, 1475, 1477, 1479, 1481, 1483, 1484, 1489, 1492, 1496,
3596 1499, 1506, 1515, 1520, 1527, 1532, 1539, 1542, 1547, 1554,
3597 1557, 1562, 1565, 1570, 1572, 1573, 1575, 1577, 1579, 1581,
3598 1583, 1585, 1587, 1591, 1593, 1597, 1601, 1605, 1607, 1611,
3599 1613, 1617, 1619, 1621, 1624, 1626, 1628, 1630, 1633, 1636,
3600 1638, 1640, 1641, 1646, 1648, 1651, 1653, 1657, 1661, 1664,
3601 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684,
3602 1686, 1688, 1689, 1691, 1692, 1694, 1697, 1700, 1701, 1703,
3603 1705, 1707, 1709, 1711, 1714
3605 static const yytype_int16 yyrhs[] =
3607 150, 0, -1, -1, 151, 153, -1, 153, 252, 228,
3608 255, -1, 154, 307, -1, 314, -1, 155, -1, 154,
3609 313, 155, -1, 1, 155, -1, -1, 45, 177, 156,
3610 177, -1, 45, 54, 54, -1, 45, 54, 64, -1,
3611 45, 54, 63, -1, 6, 178, -1, 155, 40, 159,
3612 -1, 155, 41, 159, -1, 155, 42, 159, -1, 155,
3613 43, 159, -1, 155, 44, 155, -1, -1, 47, 157,
3614 137, 153, 138, -1, 48, 137, 153, 138, -1, 172,
3615 109, 160, -1, 165, 109, 160, -1, 279, 87, 160,
3616 -1, 213, 139, 188, 310, 87, 160, -1, 213, 140,
3617 52, 87, 160, -1, 213, 140, 56, 87, 160, -1,
3618 213, 85, 52, 87, 160, -1, 280, 87, 160, -1,
3619 172, 109, 195, -1, 165, 109, 184, -1, 165, 109,
3620 195, -1, 158, -1, 160, -1, 158, 37, 158, -1,
3621 158, 38, 158, -1, 39, 308, 158, -1, 123, 160,
3622 -1, 182, -1, 158, -1, 164, -1, 161, -1, 30,
3623 189, -1, 21, 189, -1, 22, 189, -1, 245, -1,
3624 245, 140, 304, 190, -1, 245, 85, 304, 190, -1,
3625 -1, 94, 163, 234, 153, 138, -1, 303, 190, -1,
3626 303, 190, 162, -1, 213, 140, 304, 190, -1, 213,
3627 140, 304, 190, 162, -1, 213, 85, 304, 190, -1,
3628 213, 85, 304, 190, 162, -1, 32, 190, -1, 31,
3629 190, -1, 167, -1, 89, 166, 309, -1, 167, -1,
3630 89, 166, 309, -1, 169, -1, 169, 168, -1, 169,
3631 95, 171, -1, 169, 95, 171, 141, 170, -1, 169,
3632 95, -1, 169, 95, 141, 170, -1, 95, 171, -1,
3633 95, 171, 141, 170, -1, 95, -1, 95, 141, 170,
3634 -1, 171, -1, 89, 166, 309, -1, 168, 141, -1,
3635 169, 168, 141, -1, 168, -1, 170, 141, 168, -1,
3636 277, -1, 213, 139, 188, 310, -1, 213, 140, 52,
3637 -1, 213, 85, 52, -1, 213, 140, 56, -1, 213,
3638 85, 56, -1, 86, 56, -1, 280, -1, 277, -1,
3639 213, 139, 188, 310, -1, 213, 140, 52, -1, 213,
3640 85, 52, -1, 213, 140, 56, -1, 213, 85, 56,
3641 -1, 86, 56, -1, 280, -1, 52, -1, 56, -1,
3642 86, 173, -1, 173, -1, 213, 85, 173, -1, 52,
3643 -1, 56, -1, 53, -1, 180, -1, 181, -1, 175,
3644 -1, 273, -1, 176, -1, 275, -1, 177, -1, -1,
3645 178, 141, 179, 177, -1, 114, -1, 115, -1, 116,
3646 -1, 69, -1, 70, -1, 71, -1, 77, -1, 78,
3647 -1, 112, -1, 73, -1, 113, -1, 74, -1, 72,
3648 -1, 83, -1, 84, -1, 117, -1, 118, -1, 119,
3649 -1, 95, -1, 120, -1, 121, -1, 68, -1, 123,
3650 -1, 124, -1, 66, -1, 67, -1, 81, -1, 82,
3651 -1, 142, -1, 49, -1, 50, -1, 51, -1, 47,
3652 -1, 48, -1, 45, -1, 37, -1, 7, -1, 21,
3653 -1, 16, -1, 3, -1, 5, -1, 46, -1, 26,
3654 -1, 15, -1, 14, -1, 10, -1, 9, -1, 36,
3655 -1, 20, -1, 25, -1, 4, -1, 22, -1, 34,
3656 -1, 39, -1, 38, -1, 23, -1, 8, -1, 24,
3657 -1, 30, -1, 33, -1, 32, -1, 13, -1, 35,
3658 -1, 6, -1, 17, -1, 31, -1, 11, -1, 12,
3659 -1, 18, -1, 19, -1, 172, 109, 182, -1, 172,
3660 109, 182, 44, 182, -1, 279, 87, 182, -1, 279,
3661 87, 182, 44, 182, -1, 213, 139, 188, 310, 87,
3662 182, -1, 213, 140, 52, 87, 182, -1, 213, 140,
3663 56, 87, 182, -1, 213, 85, 52, 87, 182, -1,
3664 213, 85, 56, 87, 182, -1, 86, 56, 87, 182,
3665 -1, 280, 87, 182, -1, 182, 79, 182, -1, 182,
3666 80, 182, -1, 182, 117, 182, -1, 182, 118, 182,
3667 -1, 182, 119, 182, -1, 182, 120, 182, -1, 182,
3668 121, 182, -1, 182, 68, 182, -1, 122, 59, 68,
3669 182, -1, 122, 60, 68, 182, -1, 66, 182, -1,
3670 67, 182, -1, 182, 114, 182, -1, 182, 115, 182,
3671 -1, 182, 116, 182, -1, 182, 69, 182, -1, 182,
3672 112, 182, -1, 182, 73, 182, -1, 182, 113, 182,
3673 -1, 182, 74, 182, -1, 182, 70, 182, -1, 182,
3674 71, 182, -1, 182, 72, 182, -1, 182, 77, 182,
3675 -1, 182, 78, 182, -1, 123, 182, -1, 124, 182,
3676 -1, 182, 83, 182, -1, 182, 84, 182, -1, 182,
3677 75, 182, -1, 182, 76, 182, -1, -1, 46, 308,
3678 183, 182, -1, 182, 110, 182, 308, 111, 182, -1,
3679 196, -1, 182, -1, 314, -1, 194, 311, -1, 194,
3680 141, 301, 311, -1, 301, 311, -1, 143, 188, 309,
3681 -1, 314, -1, 186, -1, 314, -1, 189, -1, 164,
3682 -1, 194, 193, -1, 301, 193, -1, 194, 141, 301,
3683 193, -1, 192, -1, -1, 191, 189, -1, 96, 184,
3684 -1, 141, 192, -1, 141, -1, 314, -1, 184, -1,
3685 95, 184, -1, 194, 141, 184, -1, 194, 141, 95,
3686 184, -1, 194, 141, 184, -1, 194, 141, 95, 184,
3687 -1, 95, 184, -1, 256, -1, 257, -1, 260, -1,
3688 261, -1, 262, -1, 265, -1, 278, -1, 280, -1,
3689 53, -1, -1, 214, 197, 152, 224, -1, -1, 90,
3690 158, 198, 309, -1, 89, 153, 144, -1, 213, 85,
3691 56, -1, 86, 56, -1, 92, 185, 145, -1, 93,
3692 300, 138, -1, 30, -1, 31, 143, 189, 309, -1,
3693 31, 143, 309, -1, 31, -1, -1, 46, 308, 143,
3694 199, 158, 309, -1, 39, 143, 158, 309, -1, 39,
3695 143, 309, -1, 303, 247, -1, 246, -1, 246, 247,
3696 -1, 97, 239, -1, 215, 159, 225, 153, 227, 224,
3697 -1, 216, 159, 225, 153, 228, 224, -1, -1, -1,
3698 217, 200, 159, 226, 201, 153, 224, -1, -1, -1,
3699 218, 202, 159, 226, 203, 153, 224, -1, 219, 159,
3700 307, 250, 224, -1, 219, 307, 250, 224, -1, -1,
3701 -1, 220, 229, 25, 204, 159, 226, 205, 153, 224,
3702 -1, -1, 221, 174, 281, 206, 152, 224, -1, -1,
3703 -1, 221, 83, 158, 207, 312, 208, 152, 224, -1,
3704 -1, 222, 174, 209, 152, 224, -1, -1, 223, 175,
3705 210, 283, 152, 224, -1, -1, -1, 223, 298, 306,
3706 211, 175, 212, 283, 152, 224, -1, 21, -1, 22,
3707 -1, 23, -1, 24, -1, 196, -1, 7, -1, 11,
3708 -1, 12, -1, 18, -1, 19, -1, 16, -1, 20,
3709 -1, 3, -1, 4, -1, 5, -1, 10, -1, 312,
3710 -1, 13, -1, 312, 13, -1, 312, -1, 27, -1,
3711 228, -1, 14, 159, 225, 153, 227, -1, 314, -1,
3712 15, 153, -1, 172, -1, 165, -1, 286, -1, 89,
3713 232, 309, -1, 230, -1, 231, 141, 230, -1, 231,
3714 -1, 231, 141, 95, 286, -1, 231, 141, 95, 286,
3715 141, 231, -1, 231, 141, 95, -1, 231, 141, 95,
3716 141, 231, -1, 95, 286, -1, 95, 286, 141, 231,
3717 -1, 95, -1, 95, 141, 231, -1, 288, 141, 291,
3718 141, 294, 297, -1, 288, 141, 291, 141, 294, 141,
3719 288, 297, -1, 288, 141, 291, 297, -1, 288, 141,
3720 291, 141, 288, 297, -1, 288, 141, 294, 297, -1,
3721 288, 141, -1, 288, 141, 294, 141, 288, 297, -1,
3722 288, 297, -1, 291, 141, 294, 297, -1, 291, 141,
3723 294, 141, 288, 297, -1, 291, 297, -1, 291, 141,
3724 288, 297, -1, 294, 297, -1, 294, 141, 288, 297,
3725 -1, 296, -1, 314, -1, 235, -1, 114, 236, 114,
3726 -1, 76, -1, 114, 233, 236, 114, -1, 314, -1,
3727 146, 237, -1, 238, -1, 237, 141, 238, -1, 52,
3728 -1, 285, -1, -1, 240, 241, 242, -1, 143, 284,
3729 236, 309, -1, 284, -1, 107, 153, 138, -1, 29,
3730 153, 10, -1, -1, 28, 244, 234, 153, 10, -1,
3731 164, 243, -1, 245, 140, 304, 187, -1, 245, 85,
3732 304, 187, -1, 303, 186, -1, 213, 140, 304, 187,
3733 -1, 213, 85, 304, 186, -1, 213, 85, 305, -1,
3734 213, 140, 186, -1, 213, 85, 186, -1, 32, 186,
3735 -1, 32, -1, 213, 139, 188, 310, -1, -1, 137,
3736 248, 234, 153, 138, -1, -1, 26, 249, 234, 153,
3737 10, -1, 17, 194, 225, 153, 251, -1, 228, -1,
3738 250, -1, 8, 253, 254, 225, 153, 252, -1, 314,
3739 -1, 184, -1, 195, -1, 314, -1, 88, 172, -1,
3740 314, -1, 9, 153, -1, 314, -1, 276, -1, 273,
3741 -1, 275, -1, 258, -1, 62, -1, 259, -1, 258,
3742 259, -1, 99, 267, 106, -1, 100, 268, 106, -1,
3743 101, 268, 65, -1, 102, 147, 106, -1, 102, 263,
3744 106, -1, -1, 263, 264, 147, -1, 269, -1, 264,
3745 269, -1, 103, 147, 106, -1, 103, 266, 106, -1,
3746 -1, 266, 61, 147, -1, -1, 267, 269, -1, -1,
3747 268, 269, -1, 61, -1, -1, 105, 270, 272, -1,
3748 -1, 104, 271, 153, 138, -1, 54, -1, 55, -1,
3749 57, -1, 280, -1, 98, 274, -1, 175, -1, 55,
3750 -1, 54, -1, 57, -1, 98, 268, 106, -1, 59,
3751 -1, 60, -1, 122, 59, -1, 122, 60, -1, 52,
3752 -1, 55, -1, 54, -1, 56, -1, 57, -1, 34,
3753 -1, 33, -1, 35, -1, 36, -1, 50, -1, 49,
3754 -1, 51, -1, 277, -1, 277, -1, 63, -1, 64,
3755 -1, 312, -1, -1, 113, 282, 159, 312, -1, 1,
3756 312, -1, 143, 284, 309, -1, 284, 312, -1, 288,
3757 141, 292, 141, 294, 297, -1, 288, 141, 292, 141,
3758 294, 141, 288, 297, -1, 288, 141, 292, 297, -1,
3759 288, 141, 292, 141, 288, 297, -1, 288, 141, 294,
3760 297, -1, 288, 141, 294, 141, 288, 297, -1, 288,
3761 297, -1, 292, 141, 294, 297, -1, 292, 141, 294,
3762 141, 288, 297, -1, 292, 297, -1, 292, 141, 288,
3763 297, -1, 294, 297, -1, 294, 141, 288, 297, -1,
3764 296, -1, -1, 56, -1, 55, -1, 54, -1, 57,
3765 -1, 285, -1, 52, -1, 286, -1, 89, 232, 309,
3766 -1, 287, -1, 288, 141, 287, -1, 52, 109, 184,
3767 -1, 52, 109, 213, -1, 290, -1, 291, 141, 290,
3768 -1, 289, -1, 292, 141, 289, -1, 119, -1, 95,
3769 -1, 293, 52, -1, 293, -1, 116, -1, 96, -1,
3770 295, 52, -1, 141, 296, -1, 314, -1, 278, -1,
3771 -1, 143, 299, 158, 309, -1, 314, -1, 301, 311,
3772 -1, 302, -1, 301, 141, 302, -1, 184, 88, 184,
3773 -1, 58, 184, -1, 52, -1, 56, -1, 53, -1,
3774 52, -1, 56, -1, 53, -1, 180, -1, 52, -1,
3775 53, -1, 180, -1, 140, -1, 85, -1, -1, 313,
3776 -1, -1, 148, -1, 308, 144, -1, 308, 145, -1,
3777 -1, 148, -1, 141, -1, 146, -1, 148, -1, 312,
3778 -1, 313, 146, -1, -1
3780 static const yytype_uint16 yyrline[] =
3782 0, 763, 763, 763, 793, 826, 837, 846, 854, 862,
3783 868, 868, 876, 884, 895, 905, 913, 922, 931, 944,
3784 957, 967, 966, 988, 1000, 1009, 1019, 1048, 1069, 1086,
3785 1103, 1120, 1130, 1139, 1148, 1157, 1160, 1161, 1169, 1177,
3786 1185, 1193, 1196, 1208, 1209, 1210, 1218, 1226, 1236, 1237,
3787 1246, 1258, 1257, 1279, 1288, 1300, 1309, 1321, 1330, 1342,
3788 1351, 1362, 1363, 1373, 1374, 1384, 1392, 1400, 1408, 1416,
3789 1424, 1432, 1440, 1448, 1456, 1466, 1467, 1477, 1485, 1495,
3790 1503, 1513, 1521, 1529, 1537, 1545, 1553, 1565, 1575, 1587,
3791 1595, 1603, 1611, 1619, 1627, 1640, 1653, 1664, 1672, 1675,
3792 1683, 1691, 1701, 1702, 1703, 1704, 1714, 1726, 1727, 1730,
3793 1738, 1741, 1749, 1749, 1759, 1760, 1761, 1762, 1763, 1764,
3794 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774,
3795 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784,
3796 1785, 1786, 1787, 1790, 1790, 1790, 1791, 1791, 1792, 1792,
3797 1792, 1793, 1793, 1793, 1793, 1794, 1794, 1794, 1794, 1795,
3798 1795, 1795, 1796, 1796, 1796, 1796, 1797, 1797, 1797, 1797,
3799 1798, 1798, 1798, 1798, 1799, 1799, 1799, 1799, 1800, 1800,
3800 1800, 1800, 1801, 1801, 1804, 1813, 1823, 1852, 1883, 1904,
3801 1921, 1938, 1955, 1966, 1977, 1988, 2002, 2016, 2024, 2032,
3802 2040, 2048, 2056, 2064, 2073, 2082, 2090, 2098, 2106, 2114,
3803 2122, 2130, 2138, 2146, 2154, 2162, 2170, 2178, 2186, 2197,
3804 2205, 2213, 2221, 2229, 2237, 2245, 2253, 2253, 2263, 2273,
3805 2279, 2291, 2292, 2296, 2304, 2314, 2324, 2325, 2328, 2329,
3806 2332, 2340, 2348, 2358, 2367, 2376, 2376, 2388, 2398, 2402,
3807 2406, 2412, 2420, 2428, 2442, 2458, 2472, 2487, 2497, 2498,
3808 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2514, 2513, 2538,
3809 2538, 2547, 2555, 2563, 2571, 2584, 2592, 2600, 2608, 2616,
3810 2624, 2624, 2634, 2642, 2650, 2661, 2662, 2673, 2677, 2689,
3811 2701, 2701, 2701, 2712, 2712, 2712, 2723, 2734, 2743, 2745,
3812 2742, 2809, 2808, 2830, 2835, 2829, 2857, 2856, 2878, 2877,
3813 2904, 2905, 2904, 2929, 2937, 2945, 2953, 2963, 2975, 2982,
3814 2989, 2996, 3003, 3010, 3017, 3024, 3031, 3038, 3045, 3052,
3815 3057, 3058, 3065, 3070, 3073, 3074, 3087, 3088, 3098, 3099,
3816 3102, 3110, 3120, 3128, 3138, 3146, 3154, 3162, 3170, 3178,
3817 3186, 3197, 3205, 3215, 3223, 3231, 3239, 3247, 3255, 3264,
3818 3272, 3280, 3288, 3296, 3304, 3312, 3320, 3328, 3338, 3339,
3819 3345, 3354, 3363, 3374, 3375, 3385, 3392, 3401, 3409, 3415,
3820 3415, 3437, 3445, 3455, 3459, 3466, 3465, 3486, 3502, 3511,
3821 3522, 3531, 3541, 3551, 3559, 3570, 3581, 3589, 3597, 3612,
3822 3611, 3633, 3632, 3653, 3665, 3666, 3669, 3688, 3691, 3699,
3823 3707, 3710, 3714, 3717, 3725, 3728, 3729, 3737, 3740, 3757,
3824 3758, 3759, 3769, 3779, 3806, 3848, 3856, 3863, 3870, 3880,
3825 3888, 3898, 3906, 3913, 3920, 3931, 3938, 3949, 3956, 3966,
3826 3968, 3967, 3984, 3983, 4005, 4013, 4021, 4029, 4032, 4044,
3827 4045, 4046, 4047, 4050, 4081, 4082, 4083, 4091, 4101, 4102,
3828 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112,
3829 4115, 4125, 4135, 4136, 4139, 4148, 4147, 4155, 4167, 4179,
3830 4185, 4193, 4201, 4209, 4217, 4225, 4233, 4241, 4249, 4257,
3831 4265, 4273, 4281, 4289, 4298, 4307, 4316, 4325, 4334, 4345,
3832 4346, 4358, 4366, 4385, 4392, 4405, 4419, 4433, 4441, 4457,
3833 4465, 4481, 4482, 4485, 4497, 4508, 4509, 4512, 4528, 4532,
3834 4542, 4552, 4552, 4581, 4582, 4592, 4599, 4609, 4617, 4627,
3835 4628, 4629, 4632, 4633, 4634, 4635, 4638, 4639, 4640, 4643,
3836 4648, 4655, 4656, 4659, 4660, 4663, 4666, 4669, 4670, 4671,
3837 4674, 4675, 4678, 4679, 4683
3839 static const char *const yytname[] =
3841 "$end", "error", "$undefined", "keyword_class", "keyword_module",
3842 "keyword_def", "keyword_undef", "keyword_begin", "keyword_rescue",
3843 "keyword_ensure", "keyword_end", "keyword_if", "keyword_unless",
3844 "keyword_then", "keyword_elsif", "keyword_else", "keyword_case",
3845 "keyword_when", "keyword_while", "keyword_until", "keyword_for",
3846 "keyword_break", "keyword_next", "keyword_redo", "keyword_retry",
3847 "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block",
3848 "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super",
3849 "keyword_self", "keyword_nil", "keyword_true", "keyword_false",
3850 "keyword_and", "keyword_or", "keyword_not", "modifier_if",
3851 "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue",
3852 "keyword_alias", "keyword_defined", "keyword_BEGIN", "keyword_END",
3853 "keyword__LINE__", "keyword__FILE__", "keyword__ENCODING__",
3854 "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tCVAR", "tLABEL",
3855 "tINTEGER", "tFLOAT", "tSTRING_CONTENT", "tCHAR", "tNTH_REF",
3856 "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW", "tCMP", "tEQ",
3857 "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH",
3858 "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2",
3859 "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN_ARG", "tRPAREN",
3860 "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tAMPER", "tLAMBDA",
3861 "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tWORDS_BEG",
3862 "tQWORDS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tLAMBEG",
3863 "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'", "'^'", "'&'", "'+'",
3864 "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'", "'~'", "idNULL",
3865 "idRespond_to", "idIFUNC", "idCFUNC", "idThrowState",
3866 "id_core_set_method_alias", "id_core_set_variable_alias",
3867 "id_core_undef_method", "id_core_define_method",
3868 "id_core_define_singleton_method", "id_core_set_postexe", "tLAST_TOKEN",
3869 "'{'", "'}'", "'['", "'.'", "','", "'`'", "'('", "')'", "']'", "';'",
3870 "' '", "'\\n'", "$accept", "program", "@1", "bodystmt", "compstmt",
3871 "stmts", "stmt", "@2", "@3", "expr", "expr_value", "command_call",
3872 "block_command", "cmd_brace_block", "@4", "command", "mlhs",
3873 "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post",
3874 "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", "fitem",
3875 "undef_list", "@5", "op", "reswords", "arg", "@6", "arg_value",
3876 "aref_args", "paren_args", "opt_paren_args", "opt_call_args",
3877 "call_args", "command_args", "@7", "block_arg", "opt_block_arg", "args",
3878 "mrhs", "primary", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15",
3879 "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "primary_value",
3880 "k_begin", "k_if", "k_unless", "k_while", "k_until", "k_case", "k_for",
3881 "k_class", "k_module", "k_def", "k_end", "then", "do", "if_tail",
3882 "opt_else", "for_var", "f_marg", "f_marg_list", "f_margs", "block_param",
3883 "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar",
3884 "lambda", "@24", "f_larglist", "lambda_body", "do_block", "@25",
3885 "block_call", "method_call", "brace_block", "@26", "@27", "case_body",
3886 "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal",
3887 "strings", "string", "string1", "xstring", "regexp", "words",
3888 "word_list", "word", "qwords", "qword_list", "string_contents",
3889 "xstring_contents", "string_content", "@28", "@29", "string_dvar",
3890 "symbol", "sym", "dsym", "numeric", "variable", "var_ref", "var_lhs",
3891 "backref", "superclass", "@30", "f_arglist", "f_args", "f_bad_arg",
3892 "f_norm_arg", "f_arg_item", "f_arg", "f_opt", "f_block_opt",
3893 "f_block_optarg", "f_optarg", "restarg_mark", "f_rest_arg",
3894 "blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "@31",
3895 "assoc_list", "assocs", "assoc", "operation", "operation2", "operation3",
3896 "dot_or_colon", "opt_terms", "opt_nl", "rparen", "rbracket", "trailer",
3897 "term", "terms", "none", 0
3899 static const yytype_uint16 yyr1[] =
3901 0, 149, 151, 150, 152, 153, 154, 154, 154, 154,
3902 156, 155, 155, 155, 155, 155, 155, 155, 155, 155,
3903 155, 157, 155, 155, 155, 155, 155, 155, 155, 155,
3904 155, 155, 155, 155, 155, 155, 158, 158, 158, 158,
3905 158, 158, 159, 160, 160, 160, 160, 160, 161, 161,
3906 161, 163, 162, 164, 164, 164, 164, 164, 164, 164,
3907 164, 165, 165, 166, 166, 167, 167, 167, 167, 167,
3908 167, 167, 167, 167, 167, 168, 168, 169, 169, 170,
3909 170, 171, 171, 171, 171, 171, 171, 171, 171, 172,
3910 172, 172, 172, 172, 172, 172, 172, 173, 173, 174,
3911 174, 174, 175, 175, 175, 175, 175, 176, 176, 177,
3912 177, 178, 179, 178, 180, 180, 180, 180, 180, 180,
3913 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
3914 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
3915 180, 180, 180, 181, 181, 181, 181, 181, 181, 181,
3916 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
3917 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
3918 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
3919 181, 181, 181, 181, 182, 182, 182, 182, 182, 182,
3920 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
3921 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
3922 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
3923 182, 182, 182, 182, 182, 182, 183, 182, 182, 182,
3924 184, 185, 185, 185, 185, 186, 187, 187, 188, 188,
3925 189, 189, 189, 189, 189, 191, 190, 192, 193, 193,
3926 193, 194, 194, 194, 194, 195, 195, 195, 196, 196,
3927 196, 196, 196, 196, 196, 196, 196, 197, 196, 198,
3928 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
3929 199, 196, 196, 196, 196, 196, 196, 196, 196, 196,
3930 200, 201, 196, 202, 203, 196, 196, 196, 204, 205,
3931 196, 206, 196, 207, 208, 196, 209, 196, 210, 196,
3932 211, 212, 196, 196, 196, 196, 196, 213, 214, 215,
3933 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
3934 225, 225, 226, 226, 227, 227, 228, 228, 229, 229,
3935 230, 230, 231, 231, 232, 232, 232, 232, 232, 232,
3936 232, 232, 232, 233, 233, 233, 233, 233, 233, 233,
3937 233, 233, 233, 233, 233, 233, 233, 233, 234, 234,
3938 235, 235, 235, 236, 236, 237, 237, 238, 238, 240,
3939 239, 241, 241, 242, 242, 244, 243, 245, 245, 245,
3940 246, 246, 246, 246, 246, 246, 246, 246, 246, 248,
3941 247, 249, 247, 250, 251, 251, 252, 252, 253, 253,
3942 253, 254, 254, 255, 255, 256, 256, 256, 257, 258,
3943 258, 258, 259, 260, 261, 262, 262, 263, 263, 264,
3944 264, 265, 265, 266, 266, 267, 267, 268, 268, 269,
3945 270, 269, 271, 269, 272, 272, 272, 272, 273, 274,
3946 274, 274, 274, 275, 276, 276, 276, 276, 277, 277,
3947 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
3948 278, 279, 280, 280, 281, 282, 281, 281, 283, 283,
3949 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
3950 284, 284, 284, 284, 284, 285, 285, 285, 285, 286,
3951 286, 287, 287, 288, 288, 289, 290, 291, 291, 292,
3952 292, 293, 293, 294, 294, 295, 295, 296, 297, 297,
3953 298, 299, 298, 300, 300, 301, 301, 302, 302, 303,
3954 303, 303, 304, 304, 304, 304, 305, 305, 305, 306,
3955 306, 307, 307, 308, 308, 309, 310, 311, 311, 311,
3956 312, 312, 313, 313, 314
3958 static const yytype_uint8 yyr2[] =
3960 0, 2, 0, 2, 4, 2, 1, 1, 3, 2,
3961 0, 4, 3, 3, 3, 2, 3, 3, 3, 3,
3962 3, 0, 5, 4, 3, 3, 3, 6, 5, 5,
3963 5, 3, 3, 3, 3, 1, 1, 3, 3, 3,
3964 2, 1, 1, 1, 1, 2, 2, 2, 1, 4,
3965 4, 0, 5, 2, 3, 4, 5, 4, 5, 2,
3966 2, 1, 3, 1, 3, 1, 2, 3, 5, 2,
3967 4, 2, 4, 1, 3, 1, 3, 2, 3, 1,
3968 3, 1, 4, 3, 3, 3, 3, 2, 1, 1,
3969 4, 3, 3, 3, 3, 2, 1, 1, 1, 2,
3970 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
3971 1, 1, 0, 4, 1, 1, 1, 1, 1, 1,
3972 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3973 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3974 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3975 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3976 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3977 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3978 1, 1, 1, 1, 3, 5, 3, 5, 6, 5,
3979 5, 5, 5, 4, 3, 3, 3, 3, 3, 3,
3980 3, 3, 3, 4, 4, 2, 2, 3, 3, 3,
3981 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3982 2, 2, 3, 3, 3, 3, 0, 4, 6, 1,
3983 1, 1, 2, 4, 2, 3, 1, 1, 1, 1,
3984 1, 2, 2, 4, 1, 0, 2, 2, 2, 1,
3985 1, 1, 2, 3, 4, 3, 4, 2, 1, 1,
3986 1, 1, 1, 1, 1, 1, 1, 0, 4, 0,
3987 4, 3, 3, 2, 3, 3, 1, 4, 3, 1,
3988 0, 6, 4, 3, 2, 1, 2, 2, 6, 6,
3989 0, 0, 7, 0, 0, 7, 5, 4, 0, 0,
3990 9, 0, 6, 0, 0, 8, 0, 5, 0, 6,
3991 0, 0, 9, 1, 1, 1, 1, 1, 1, 1,
3992 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3993 1, 2, 1, 1, 1, 5, 1, 2, 1, 1,
3994 1, 3, 1, 3, 1, 4, 6, 3, 5, 2,
3995 4, 1, 3, 6, 8, 4, 6, 4, 2, 6,
3996 2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
3997 3, 1, 4, 1, 2, 1, 3, 1, 1, 0,
3998 3, 4, 1, 3, 3, 0, 5, 2, 4, 4,
3999 2, 4, 4, 3, 3, 3, 2, 1, 4, 0,
4000 5, 0, 5, 5, 1, 1, 6, 1, 1, 1,
4001 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
4002 1, 2, 3, 3, 3, 3, 3, 0, 3, 1,
4003 2, 3, 3, 0, 3, 0, 2, 0, 2, 1,
4004 0, 3, 0, 4, 1, 1, 1, 1, 2, 1,
4005 1, 1, 1, 3, 1, 1, 2, 2, 1, 1,
4006 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4007 1, 1, 1, 1, 1, 0, 4, 2, 3, 2,
4008 6, 8, 4, 6, 4, 6, 2, 4, 6, 2,
4009 4, 2, 4, 1, 0, 1, 1, 1, 1, 1,
4010 1, 1, 3, 1, 3, 3, 3, 1, 3, 1,
4011 3, 1, 1, 2, 1, 1, 1, 2, 2, 1,
4012 1, 0, 4, 1, 2, 1, 3, 3, 2, 1,
4013 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4014 1, 0, 1, 0, 1, 2, 2, 0, 1, 1,
4017 static const yytype_uint16 yydefact[] =
4019 2, 0, 0, 1, 0, 325, 326, 327, 0, 318,
4020 319, 320, 323, 321, 322, 324, 313, 314, 315, 316,
4021 276, 245, 245, 464, 463, 465, 466, 543, 0, 543,
4022 21, 0, 468, 467, 469, 458, 531, 460, 459, 461,
4023 462, 454, 455, 419, 472, 473, 0, 0, 0, 0,
4024 0, 554, 554, 73, 379, 437, 435, 437, 437, 427,
4025 433, 0, 0, 0, 3, 541, 7, 35, 36, 44,
4026 43, 0, 61, 0, 65, 75, 0, 41, 229, 0,
4027 267, 0, 0, 290, 293, 541, 0, 0, 0, 0,
4028 48, 285, 258, 259, 418, 420, 260, 261, 262, 263,
4029 416, 417, 415, 470, 264, 0, 265, 245, 6, 9,
4030 153, 164, 154, 177, 150, 170, 160, 159, 180, 181,
4031 175, 158, 157, 152, 178, 182, 183, 162, 151, 165,
4032 169, 171, 163, 156, 172, 179, 174, 173, 166, 176,
4033 161, 149, 168, 167, 148, 155, 146, 147, 143, 144,
4034 145, 102, 104, 103, 138, 139, 135, 117, 118, 119,
4035 126, 123, 125, 120, 121, 140, 141, 127, 128, 132,
4036 122, 124, 114, 115, 116, 129, 130, 131, 133, 134,
4037 136, 137, 142, 107, 109, 111, 15, 105, 106, 108,
4038 110, 313, 314, 276, 0, 0, 0, 0, 0, 0,
4039 0, 240, 0, 230, 251, 46, 244, 554, 0, 470,
4040 0, 265, 554, 525, 47, 45, 543, 60, 0, 554,
4041 396, 59, 543, 544, 0, 0, 10, 226, 0, 0,
4042 279, 397, 205, 0, 0, 206, 273, 0, 0, 543,
4043 63, 269, 0, 547, 547, 231, 0, 0, 547, 523,
4044 543, 0, 0, 0, 71, 317, 0, 81, 88, 287,
4045 494, 451, 450, 452, 449, 0, 448, 0, 0, 0,
4046 0, 0, 0, 0, 456, 457, 40, 220, 221, 550,
4047 551, 5, 552, 542, 0, 0, 0, 0, 0, 0,
4048 0, 385, 387, 0, 77, 0, 69, 66, 0, 0,
4049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4051 0, 0, 0, 0, 0, 0, 554, 0, 0, 42,
4052 0, 0, 0, 0, 541, 0, 542, 0, 339, 338,
4053 0, 0, 470, 265, 97, 98, 0, 0, 100, 0,
4054 0, 470, 265, 306, 173, 166, 176, 161, 143, 144,
4055 145, 102, 103, 521, 308, 520, 0, 0, 0, 401,
4056 399, 286, 421, 0, 0, 390, 53, 284, 112, 528,
4057 273, 252, 247, 0, 0, 249, 241, 250, 0, 554,
4058 0, 0, 0, 249, 242, 543, 0, 278, 246, 543,
4059 239, 238, 543, 283, 39, 12, 14, 13, 0, 280,
4060 0, 0, 0, 0, 0, 0, 543, 271, 62, 543,
4061 274, 549, 548, 232, 549, 234, 275, 524, 0, 87,
4062 456, 457, 79, 74, 0, 0, 554, 0, 500, 497,
4063 496, 495, 498, 0, 512, 516, 515, 511, 494, 0,
4064 382, 499, 501, 503, 554, 509, 554, 514, 554, 0,
4065 493, 439, 442, 440, 453, 438, 422, 436, 423, 424,
4066 425, 426, 0, 429, 431, 0, 432, 0, 0, 553,
4067 8, 16, 17, 18, 19, 20, 37, 38, 554, 0,
4068 25, 33, 0, 34, 543, 0, 67, 78, 24, 184,
4069 251, 32, 202, 210, 215, 216, 217, 212, 214, 224,
4070 225, 218, 219, 195, 196, 222, 223, 543, 211, 213,
4071 207, 208, 209, 197, 198, 199, 200, 201, 532, 537,
4072 533, 538, 395, 245, 393, 543, 532, 534, 533, 535,
4073 394, 245, 0, 554, 330, 0, 329, 0, 0, 0,
4074 0, 0, 0, 273, 0, 554, 0, 298, 303, 97,
4075 98, 99, 0, 475, 301, 474, 0, 554, 0, 0,
4076 0, 494, 540, 539, 310, 532, 533, 245, 245, 554,
4077 554, 26, 186, 31, 194, 51, 54, 0, 184, 527,
4078 0, 253, 248, 554, 536, 533, 543, 532, 533, 526,
4079 277, 545, 235, 282, 11, 0, 227, 0, 23, 0,
4080 554, 193, 64, 270, 547, 0, 72, 84, 86, 543,
4081 532, 533, 0, 500, 0, 351, 342, 344, 543, 340,
4082 554, 0, 0, 380, 0, 486, 519, 0, 489, 513,
4083 0, 491, 517, 0, 0, 428, 430, 434, 203, 204,
4084 371, 554, 0, 369, 368, 257, 0, 76, 70, 0,
4085 0, 0, 0, 0, 392, 57, 0, 398, 0, 0,
4086 237, 391, 55, 236, 328, 268, 554, 554, 407, 554,
4087 331, 554, 333, 291, 332, 294, 0, 0, 297, 536,
4088 272, 543, 532, 533, 0, 0, 477, 0, 0, 97,
4089 98, 101, 543, 0, 543, 494, 0, 0, 0, 389,
4090 50, 388, 49, 0, 0, 0, 554, 113, 254, 243,
4091 0, 398, 0, 0, 543, 22, 233, 80, 82, 505,
4092 543, 0, 349, 0, 502, 0, 543, 373, 0, 0,
4093 504, 554, 554, 518, 554, 510, 554, 554, 0, 444,
4094 445, 446, 441, 447, 500, 554, 0, 554, 507, 554,
4095 554, 367, 0, 0, 255, 68, 185, 0, 30, 191,
4096 192, 58, 546, 0, 28, 189, 29, 190, 56, 408,
4097 409, 554, 410, 0, 554, 336, 0, 0, 334, 0,
4098 0, 0, 296, 0, 0, 398, 0, 304, 0, 0,
4099 398, 307, 522, 543, 0, 479, 311, 0, 0, 187,
4100 0, 0, 281, 341, 352, 0, 347, 343, 377, 374,
4101 375, 378, 381, 384, 383, 0, 482, 0, 484, 0,
4102 490, 0, 487, 492, 443, 0, 0, 370, 358, 360,
4103 0, 363, 0, 365, 386, 256, 228, 27, 188, 0,
4104 0, 412, 337, 0, 4, 414, 0, 288, 289, 0,
4105 0, 253, 554, 299, 0, 476, 302, 478, 309, 494,
4106 402, 400, 0, 0, 350, 0, 345, 0, 554, 554,
4107 554, 554, 0, 506, 372, 554, 554, 554, 508, 554,
4108 554, 0, 411, 0, 89, 96, 0, 413, 0, 292,
4109 295, 404, 405, 403, 0, 0, 0, 52, 348, 0,
4110 376, 483, 0, 480, 485, 488, 273, 0, 0, 355,
4111 0, 357, 364, 0, 361, 366, 95, 0, 554, 0,
4112 554, 554, 0, 305, 0, 346, 554, 536, 272, 554,
4113 554, 554, 554, 536, 94, 543, 532, 533, 406, 335,
4114 300, 312, 481, 356, 0, 353, 359, 362, 398, 554,
4117 static const yytype_int16 yydefgoto[] =
4119 -1, 1, 2, 542, 543, 65, 66, 408, 228, 67,
4120 330, 68, 69, 586, 716, 70, 71, 239, 72, 73,
4121 74, 433, 75, 202, 348, 349, 183, 184, 185, 186,
4122 587, 539, 188, 77, 410, 204, 242, 532, 671, 399,
4123 400, 217, 218, 206, 386, 207, 493, 78, 328, 419,
4124 605, 332, 790, 333, 791, 694, 904, 698, 695, 864,
4125 569, 571, 708, 869, 233, 80, 81, 82, 83, 84,
4126 85, 86, 87, 88, 89, 675, 545, 683, 787, 788,
4127 341, 626, 627, 628, 755, 652, 653, 736, 819, 820,
4128 259, 260, 449, 633, 292, 488, 90, 91, 377, 580,
4129 579, 552, 903, 677, 781, 850, 854, 92, 93, 94,
4130 95, 96, 97, 98, 271, 472, 99, 273, 267, 265,
4131 465, 644, 643, 752, 100, 266, 101, 102, 209, 104,
4132 210, 211, 564, 697, 706, 707, 451, 452, 453, 454,
4133 455, 758, 759, 456, 457, 458, 459, 743, 635, 366,
4134 570, 247, 212, 213, 234, 609, 534, 574, 281, 396,
4135 397, 667, 423, 546, 336, 108
4137 static const yytype_int16 yypact[] =
4139 -747, 103, 2364, -747, 6711, -747, -747, -747, 6222, -747,
4140 -747, -747, -747, -747, -747, -747, 6820, 6820, -747, -747,
4141 6820, 3057, 2631, -747, -747, -747, -747, 282, 6082, -24,
4142 -747, 64, -747, -747, -747, 5317, 2773, -747, -747, 5445,
4143 -747, -747, -747, -747, -747, -747, 8019, 8019, 74, 4131,
4144 8128, 7038, 7365, 6487, -747, 5942, -747, -747, -747, 142,
4145 154, 84, 8237, 8019, -747, 473, 925, 71, -747, -747,
4146 238, 234, -747, 205, 8346, -747, 268, 2472, 31, 46,
4147 -747, 8128, 8128, -747, -747, 4792, 8451, 8556, 8661, 5189,
4148 14, 70, -747, -747, 290, -747, -747, -747, -747, -747,
4149 -747, -747, -747, 26, -747, 366, 355, 210, -747, 925,
4150 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
4151 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
4152 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
4153 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
4154 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
4155 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
4156 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
4157 -747, -747, -747, -747, -747, -747, 321, -747, -747, -747,
4158 -747, -747, -747, -747, 328, 8019, 433, 4262, 8019, 8019,
4159 8019, -747, 403, 2472, 440, -747, -747, 418, 300, 13,
4160 457, 24, 437, -747, -747, -747, 4670, -747, 6820, 6820,
4161 -747, -747, 4923, -747, 8128, 438, -747, 436, 449, 4393,
4162 452, 463, -747, 346, 210, 546, 451, 4131, 474, -24,
4163 525, 71, 477, 165, 276, -747, 440, 498, 276, -747,
4164 -24, 582, 250, 8766, 501, -747, 374, 384, 394, -747,
4165 933, -747, -747, -747, -747, 595, -747, 659, 673, 76,
4166 552, 721, 553, 43, 584, 596, -747, -747, -747, -747,
4167 -747, -747, -747, 5045, 8128, 8128, 8128, 8128, 6711, 8128,
4168 8128, -747, -747, 7474, -747, 4131, 6599, 524, 7474, 8019,
4169 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
4170 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
4171 8019, 8019, 8019, 8019, 8019, 9033, 6820, 9111, 3431, 71,
4172 119, 119, 8128, 8128, 473, 652, 528, 614, -747, -747,
4173 424, 654, 56, 92, 335, 344, 8128, 131, -747, 42,
4174 444, -747, -747, -747, 33, 35, 53, 217, 227, 235,
4175 265, 298, 333, -747, -747, -747, 358, 10047, 10047, -747,
4176 -747, -747, -747, 8237, 8237, -747, 587, -747, -747, -747,
4177 305, -747, -747, 8019, 8019, 6929, -747, -747, 9189, 6820,
4178 9267, 8019, 8019, 7147, -747, -24, 540, -747, -747, -24,
4179 -747, -747, 242, -747, -747, -747, -747, -747, 6222, -747,
4180 8019, 4393, 555, 9189, 9267, 8019, -24, -747, 556, -24,
4181 -747, 7256, -747, -747, 7365, -747, -747, -747, 436, 470,
4182 -747, -747, -747, 557, 8766, 9345, 6820, 9423, 585, -747,
4183 -747, -747, -747, 843, -747, -747, -747, -747, 835, 49,
4184 -747, -747, -747, -747, 564, -747, 565, 658, 572, 662,
4185 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
4186 -747, -747, 21, -747, -747, 569, -747, 8019, 8019, -747,
4187 925, -747, -747, -747, -747, -747, -747, -747, 38, 8019,
4188 -747, 577, 578, -747, -24, 8766, 581, -747, -747, 2225,
4189 -747, -747, 546, 2143, 2143, 2143, 2143, 1115, 1115, 2614,
4190 2024, 2143, 2143, 1738, 1738, 718, 718, 1856, 1115, 1115,
4191 619, 619, 692, 274, 274, 546, 546, 546, 3199, 5687,
4192 3285, 5801, -747, 463, -747, -24, 460, -747, 471, -747,
4193 -747, 2915, 715, 734, -747, 3577, 713, 3869, 175, 175,
4194 652, 7583, 715, 96, 9501, 6820, 9579, -747, 71, -747,
4195 470, -747, 473, -747, -747, -747, 9657, 6820, 9735, 3431,
4196 8128, 1108, -747, -747, -747, -747, -747, 996, 996, 38,
4197 38, -747, 2242, -747, 2472, -747, -747, 6222, 10104, -747,
4198 8019, 440, -747, 437, 5573, 2489, -24, 367, 390, -747,
4199 -747, -747, -747, -747, -747, 8128, 2472, 605, -747, 463,
4200 463, 2472, -7, -747, 276, 8766, 557, 500, 267, -24,
4201 48, 50, 8019, -747, 843, 592, -747, 603, -24, -747,
4202 600, 4539, 4393, -747, 835, -747, -747, 835, -747, -747,
4203 634, -747, -747, 4393, 865, -747, -747, -747, 546, 546,
4204 -747, 411, 4539, -747, -747, 607, 7692, -747, 557, 8766,
4205 8019, 644, 8237, 8019, -747, 587, 612, 544, 8237, 8237,
4206 -747, -747, 587, -747, -747, -747, 7801, 744, -747, 413,
4207 -747, 744, -747, -747, -747, -747, 715, 208, -747, 62,
4208 85, -24, 117, 120, 8128, 473, -747, 8128, 3431, 500,
4209 267, -747, -24, 715, 242, 835, 3431, 473, 6362, -747,
4210 -747, -747, -747, 4539, 4393, 8019, 38, -747, -747, -747,
4211 8019, 432, 8019, 8019, 242, -747, -747, -747, 465, -747,
4212 -24, 788, 620, 854, -747, 885, -24, -747, 756, 631,
4213 -747, 629, 633, -747, 639, -747, 642, 639, 657, -747,
4214 -747, -747, -747, -747, 681, 600, 683, 665, -747, 666,
4215 676, -747, 789, 8019, 680, 557, 2472, 8019, -747, 2472,
4216 2472, -747, -747, 8237, -747, 2472, -747, 2472, -747, 577,
4217 -747, 710, -747, 4000, 814, -747, 8128, 715, -747, 715,
4218 4539, 4539, -747, 7910, 3723, 133, 175, -747, 473, 715,
4219 -747, -747, -747, -24, 715, -747, -747, 822, 696, 2472,
4220 4393, 8019, -747, -747, 700, 788, 621, -747, -747, 705,
4221 -747, -747, -747, -747, -747, 835, -747, 634, -747, 634,
4222 -747, 634, -747, -747, -747, 8871, 736, -747, 1125, -747,
4223 1125, -747, 634, -747, -747, 711, 2472, -747, 2472, 8976,
4224 119, -747, -747, 4539, -747, -747, 119, -747, -747, 715,
4225 715, -747, 505, -747, 3431, -747, -747, -747, -747, 1108,
4226 -747, -747, 717, 788, 700, 788, 716, 885, 639, 720,
4227 639, 639, 807, 487, -747, 725, 726, 639, -747, 728,
4228 639, 815, -747, 522, 384, 394, 3431, -747, 3577, -747,
4229 -747, -747, -747, -747, 4539, 715, 3431, -747, 700, 788,
4230 -747, -747, 634, -747, -747, -747, -747, 9813, 1125, -747,
4231 634, -747, -747, 634, -747, -747, 470, 9891, 6820, 9969,
4232 734, 413, 715, -747, 715, 700, 639, 727, 730, 639,
4233 738, 639, 639, 212, 267, -24, 152, 187, -747, -747,
4234 -747, -747, -747, -747, 634, -747, -747, -747, 193, 639,
4237 static const yytype_int16 yypgoto[] =
4239 -747, -747, -747, -537, 976, -747, 20, -747, -747, -14,
4240 30, -45, -747, -133, -747, 22, 772, -149, 9, -69,
4241 -747, -400, -4, 1540, -303, 793, -54, -747, -12, -747,
4242 -747, 0, -747, 802, -747, -48, -747, -16, -29, -313,
4243 81, 55, -747, -245, -192, -41, -272, -34, -747, -747,
4244 -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
4245 -747, -747, -747, -747, -2, -747, -747, -747, -747, -747,
4246 -747, -747, -747, -747, -747, -31, -319, -519, -49, -607,
4247 -747, -664, -641, 260, -747, -487, -747, -532, -747, 8,
4248 -747, -747, -747, -747, -747, -747, -747, -747, 795, -747,
4249 -747, -528, -747, -42, -747, -747, -747, -747, -747, -747,
4250 799, -747, -747, -747, -747, -747, -747, -747, -747, 513,
4251 -208, -747, -747, -747, -5, -747, 29, -747, 1251, 816,
4252 747, 1369, -747, -747, 47, -235, -673, -393, -569, -40,
4253 -576, -746, 69, 278, -747, -474, -747, -249, 959, -747,
4254 -747, -747, -6, -288, 162, -261, -747, -747, -56, -20,
4255 17, -563, -217, -44, 850, 752
4257 static const yytype_int16 yytable[] =
4259 79, 264, 79, 189, 246, 297, 220, 224, 187, 227,
4260 243, 460, 547, 535, 208, 208, 226, 276, 208, 255,
4261 394, 282, 686, 189, 109, 450, 501, 425, 187, 335,
4262 685, 427, 703, 721, 616, 364, 241, 190, 201, 201,
4263 255, 282, 201, 562, 561, 244, 248, 79, 208, 254,
4264 629, 256, 255, 255, 255, 187, 728, 190, 240, 467,
4265 208, 745, 821, 473, 533, 740, 541, 329, 329, 817,
4266 784, 329, 256, -83, 789, -85, 596, 221, 631, 208,
4267 208, -89, 461, 208, 340, 350, 350, -92, 416, 187,
4268 814, 375, 713, 714, 888, 658, 369, 205, 214, 367,
4269 -471, 215, -62, 3, 475, 599, 577, 578, 289, 290,
4270 -94, 392, 331, -471, 650, 334, -317, -96, -464, 756,
4271 -463, -95, -89, 619, 223, 462, 463, 533, 795, 541,
4272 236, 325, 544, -96, -76, -89, 599, 461, -465, 800,
4273 592, 469, -91, 274, 275, -93, 494, 379, 592, 476,
4274 381, 382, 651, 610, 368, 563, 632, -83, -90, -85,
4275 742, 799, 376, 746, 107, -91, 107, -81, 645, 804,
4276 -317, -317, 888, -464, 874, -463, 610, 760, 107, 107,
4277 462, 463, 107, 559, 432, 326, 327, 560, 279, -83,
4278 280, -85, -83, -465, -85, 79, -83, -81, -85, 460,
4279 -93, 229, 682, -84, 821, -532, -90, 370, 402, 817,
4280 404, 107, 107, 630, 208, 220, 208, 208, 375, 255,
4281 208, 544, 208, 836, 107, -92, -86, 79, -533, 810,
4282 428, 629, 732, -88, 908, 79, 369, -87, 201, 403,
4283 201, 201, 691, 107, 107, 491, 240, 107, 490, 745,
4284 500, 256, 492, 498, 702, 901, 418, 492, -83, 765,
4285 740, -85, 255, 701, 646, 279, 291, 280, 935, 740,
4286 329, 329, 329, 329, -82, 486, 487, 863, 550, 289,
4287 290, 79, 208, 208, 208, 208, 79, 208, 208, 270,
4288 282, 208, 496, 79, 256, 610, 208, 395, -91, 398,
4289 -91, 272, -466, 480, 240, 565, 421, 610, 485, 430,
4290 431, 540, -468, 422, 481, 482, 483, 484, 329, 329,
4291 -467, 279, 460, 280, 208, 531, 79, 905, 581, 583,
4292 208, 208, 558, -93, 902, -93, 589, 591, 629, -90,
4293 629, -90, 299, 293, 208, 246, 294, 370, 201, 793,
4294 -469, 879, -272, 219, 279, -532, 280, -466, -92, 107,
4295 -92, -529, 548, 549, 886, 432, 889, -468, 794, 934,
4296 -530, 208, 208, 591, 540, -467, 246, 298, 107, 593,
4297 107, 107, 958, -458, 107, 388, 107, 208, 531, 56,
4298 223, 107, 415, 322, 323, 324, 604, 726, 540, 107,
4299 255, 719, 761, 189, 780, -469, -272, -272, 187, 79,
4300 -533, 201, 600, 531, -95, 614, 602, 424, -461, 603,
4301 -458, 540, 629, 876, 422, 222, 432, 786, 783, -461,
4302 223, 413, 256, 612, 208, 531, 613, 190, -458, 389,
4303 390, 655, 374, 572, 940, 107, 107, 107, 107, 107,
4304 107, 107, 107, 373, 722, 107, 460, 107, 201, 435,
4305 107, 255, 378, 754, -96, 439, 440, 441, 442, -470,
4306 803, 222, -529, -461, -458, -458, -91, 723, -529, -265,
4307 629, -530, 629, -461, -461, 389, 414, -530, 107, 380,
4308 107, -398, 405, 256, 107, 107, -88, 661, 573, -93,
4309 443, 406, 407, 500, 684, 684, 444, 445, 107, 554,
4310 687, 657, 383, 436, 437, 666, 629, 664, 696, 811,
4311 783, 688, 551, -470, -470, 670, -536, 446, 384, 566,
4312 447, 896, 771, -265, -265, 107, 107, 898, 415, 778,
4313 540, -90, 718, 79, 391, 79, 727, 668, 709, 711,
4314 -398, 107, 540, 208, 531, -273, 704, 735, 669, 385,
4315 -95, 670, 670, 555, 556, 208, 531, 79, 208, -91,
4316 268, 269, 917, 107, 729, 717, 666, 201, 393, 409,
4317 -93, 255, 189, 567, 568, -536, 411, 187, 665, 201,
4318 432, 724, -87, 664, 670, 216, 672, 744, 107, 666,
4319 747, -83, -398, 208, -398, -398, 219, 927, 764, -273,
4320 -273, 757, -85, 256, 299, 945, 190, 768, 417, 279,
4321 460, 280, 420, 774, 776, 255, 567, 568, 779, 79,
4322 79, 773, 710, 712, -61, 492, 426, -536, 429, -536,
4323 -536, 79, 434, -532, 623, 734, 439, 440, 441, 442,
4324 79, 797, 477, -90, 806, 792, 461, 256, 470, 474,
4325 208, 928, 929, 805, 478, 497, 208, 208, 610, 551,
4326 553, 666, 801, 623, 479, 439, 440, 441, 442, 557,
4327 329, 585, 666, 329, 601, -82, 623, 299, 439, 440,
4328 441, 442, 208, 608, 622, 208, 79, -76, 615, 462,
4329 463, 464, 312, 313, 79, 634, 637, 107, 187, 107,
4330 639, 79, 79, 640, 642, 845, 647, 107, -251, 656,
4331 461, 802, 659, 443, 796, 674, 680, 798, 847, 107,
4332 445, 107, 107, 731, 461, 319, 320, 321, 322, 323,
4333 324, 812, 676, 725, 733, 861, 735, 813, -252, 105,
4334 446, 105, 684, 822, 865, 767, 857, 772, 858, 783,
4335 299, 815, 875, 462, 463, 466, 823, 107, 866, 824,
4336 825, 208, 329, 868, 827, 312, 313, 462, 463, 468,
4337 829, 79, 461, 831, 208, 878, 299, 880, 79, 79,
4338 835, 881, 79, 107, 107, 834, 105, 837, 849, 844,
4339 887, 255, 890, 245, 249, 107, 838, 840, 79, 320,
4340 321, 322, 323, 324, 107, 255, 856, 842, 203, 203,
4341 867, -253, 203, 853, 107, 462, 463, 471, 899, 900,
4342 107, 107, 870, 883, 871, 320, 321, 322, 323, 324,
4343 623, 873, 439, 440, 441, 442, 877, 893, 232, 235,
4344 884, 79, -254, 203, 203, 907, 107, 909, 338, 107,
4345 107, 912, 79, 916, 277, 278, 918, 920, 107, 923,
4346 -532, 926, 936, -533, 933, 107, 107, 624, 939, 954,
4347 941, 353, 949, 942, 730, 910, 371, 438, 948, 439,
4348 440, 441, 442, 372, 79, 623, 79, 439, 440, 441,
4349 442, 950, 79, 951, 79, 365, 623, 885, 439, 440,
4350 441, 442, 741, 540, 959, 283, 906, 531, 0, 749,
4351 750, 0, 751, 0, 443, 666, 208, 531, 44, 45,
4352 444, 445, 624, 0, 0, 107, 0, 818, 625, 439,
4353 440, 441, 442, 624, 105, 107, 0, 0, 107, 816,
4354 201, 446, 107, 107, 447, 0, 107, 0, 0, 387,
4355 0, 0, 0, 0, 387, 284, 285, 286, 287, 288,
4356 0, 401, 107, 0, 0, 0, 105, 0, 64, 0,
4357 0, 0, 0, 0, 105, 438, 0, 439, 440, 441,
4358 442, 0, 0, 0, 0, 0, -554, 203, 0, 0,
4359 203, 203, 277, 0, -554, -554, -554, 0, 0, -554,
4360 -554, -554, 0, -554, 0, 107, 0, 0, 203, 0,
4361 203, 203, 443, -554, 0, 238, 107, 0, 444, 445,
4362 105, 0, 0, -554, -554, 105, -554, -554, -554, -554,
4363 -554, 0, 105, 0, 0, 0, 0, 0, 0, 446,
4364 0, 0, 447, 0, 0, 0, 0, 0, 107, 0,
4365 107, 0, 0, 0, 0, 0, 107, 0, 107, 0,
4366 0, 0, 0, 0, 0, 105, 448, 0, 401, 0,
4367 0, -554, 0, 0, 0, 0, 0, 0, 0, 0,
4368 107, 0, 0, 0, 0, 203, 0, 0, 0, 0,
4369 499, 502, 503, 504, 505, 506, 507, 508, 509, 510,
4370 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
4371 521, 522, 523, 524, 525, 526, 527, 0, 203, 0,
4372 0, 0, 0, 0, -554, 0, -554, 0, 0, 219,
4373 -554, 401, -554, 0, -554, 0, 0, 0, 0, 0,
4374 0, 0, 0, 0, 0, 0, 0, 0, 105, 0,
4375 438, 0, 439, 440, 441, 442, 0, 0, 0, 0,
4376 0, 0, 0, 238, 0, 582, 584, 754, 0, 439,
4377 440, 441, 442, 299, 0, 588, 203, 203, 401, 0,
4378 0, 203, 0, 582, 584, 203, 0, 443, 312, 313,
4379 0, 0, 0, 444, 445, 412, 636, 0, 636, 0,
4380 636, 0, 606, 238, 443, 0, 0, 611, 0, 0,
4381 444, 445, 0, 203, 446, 0, 203, 447, 0, 317,
4382 318, 319, 320, 321, 322, 323, 324, 0, 203, 0,
4383 654, 446, 0, 0, 447, 0, 0, 0, 0, 0,
4384 0, 705, 0, 103, 0, 103, 0, 0, 0, 0,
4385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4386 0, 238, 0, 0, 0, 0, 0, 0, 0, 648,
4387 649, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4388 0, 203, 105, 673, 105, 678, 0, 0, 0, 0,
4389 103, 0, 0, 0, 257, 0, 0, 401, 0, 0,
4390 0, 0, 0, 0, 0, 0, 105, 0, 0, 401,
4391 0, 0, 0, 0, 0, 257, 0, 0, 0, 673,
4392 673, 654, 654, 0, 0, 0, 0, 342, 351, 351,
4393 351, 0, 0, 0, 0, 387, 0, 0, 0, 0,
4394 0, 0, 0, 203, 0, 0, 0, 203, 0, 0,
4395 0, 0, 673, 0, 0, 0, 0, 0, 0, 203,
4396 0, 106, 0, 106, 0, 0, 0, 0, 105, 105,
4397 0, 0, 737, 0, 0, 0, 0, 607, 0, 0,
4398 105, 0, 203, 0, 0, 0, 0, 0, 0, 105,
4399 0, 0, 0, 737, 0, 0, 0, 0, 0, 0,
4400 0, 0, 0, 0, 0, 638, 0, 641, 106, 0,
4401 0, 0, 258, 0, 203, 0, 0, 0, 782, 785,
4402 0, 785, 0, 785, 0, 0, 0, 0, 0, 0,
4403 0, 0, 0, 258, 0, 105, 0, 0, 103, 0,
4404 0, 0, 0, 105, 0, 343, 352, 352, 203, 0,
4405 105, 105, 766, 0, 769, 770, 0, 0, 654, 0,
4406 775, 777, 0, 0, 0, 0, 0, 0, 203, 0,
4407 103, 0, 0, 0, 0, 0, 0, 0, 103, 0,
4408 0, 0, 0, 636, 636, 0, 636, 0, 636, 636,
4409 0, 0, 0, 0, 257, 0, 0, 737, 0, 636,
4410 0, 636, 636, 0, 0, 0, 0, 809, 0, 0,
4411 0, 679, 769, 681, 775, 777, 0, 0, 0, 0,
4412 105, 0, 0, 851, 103, 0, 855, 105, 105, 103,
4413 0, 105, 76, 0, 76, 0, 103, 257, 0, 0,
4414 0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
4415 0, 0, 0, 0, 0, 203, 106, 0, 0, 846,
4416 0, 0, 0, 0, 0, 848, 0, 0, 0, 103,
4417 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
4418 0, 0, 0, 0, 0, 203, 0, 0, 106, 0,
4419 105, 0, 0, 0, 0, 0, 106, 738, 739, 0,
4420 0, 105, 0, 848, 785, 0, 0, 0, 0, 748,
4421 0, 0, 258, 0, 0, 0, 339, 0, 762, 0,
4422 636, 636, 636, 636, 0, 0, 0, 636, 636, 636,
4423 0, 636, 636, 105, 0, 105, 0, 0, 0, 0,
4424 0, 105, 106, 105, 0, 0, 0, 106, 0, 0,
4425 0, 0, 103, 0, 106, 258, 0, 0, 0, 0,
4426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4427 401, 0, 678, 785, 0, 257, 0, 0, 636, 807,
4428 808, 636, 636, 636, 636, 0, 0, 106, 0, 0,
4429 826, 828, 0, 830, 0, 832, 833, 0, 0, 0,
4430 0, 636, 0, 0, 0, 0, 839, 0, 841, 843,
4431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4432 203, 0, 0, 0, 0, 0, 0, 76, 0, 0,
4433 0, 0, 0, 0, 0, 0, 257, 0, 0, 0,
4434 0, 0, 0, 0, 0, 0, 0, 0, 0, 852,
4435 0, 0, 0, 0, 0, 0, 859, 860, 0, 76,
4436 862, 0, 0, 0, 0, 0, 0, 76, 0, 0,
4437 106, 0, 0, 0, 0, 0, 872, 0, 0, 0,
4438 0, 0, 0, 0, 0, 0, 103, 0, 103, 0,
4439 0, 0, 0, 258, 0, 0, 299, 300, 301, 302,
4440 303, 304, 305, 306, 307, 308, 309, -555, -555, 0,
4441 103, 312, 313, 76, 0, 0, 0, 0, 76, 897,
4442 0, 0, 0, 0, 0, 76, 0, 911, 913, 914,
4443 915, 0, 0, 0, 919, 921, 922, 0, 924, 925,
4444 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
4445 0, 0, 0, 0, 258, 0, 257, 0, 76, 0,
4446 0, 0, 930, 0, 931, 0, 0, 0, 0, 0,
4447 932, 0, 103, 103, 0, 0, 0, 0, 0, 0,
4448 0, 0, 0, 0, 103, 952, 0, 0, 953, 955,
4449 956, 957, 0, 103, 0, 0, 0, 0, 0, 0,
4450 257, 0, 0, 0, 106, 0, 106, 0, 960, 0,
4451 0, 0, 0, 0, 299, 300, 301, 302, 303, 304,
4452 305, 306, 307, 308, 309, 310, 311, 0, 106, 312,
4453 313, 0, 0, 0, 0, 0, 0, 0, 0, 103,
4454 0, 76, 0, 0, 0, 0, 0, 103, 0, 0,
4455 0, 0, 0, 0, 103, 103, 314, 0, 315, 316,
4456 317, 318, 319, 320, 321, 322, 323, 324, 0, 0,
4457 0, 0, 0, 0, 258, 0, 0, 0, 0, 0,
4458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4459 106, 106, 0, 0, 223, 0, 0, 0, 0, 0,
4460 0, 0, 106, 753, 0, 0, 0, 0, 0, 0,
4461 0, 106, 0, 0, 0, 0, 0, 0, 258, 0,
4462 0, 0, 0, 0, 103, 0, 0, 0, 0, 0,
4463 0, 103, 103, 0, 0, 103, 0, 0, 0, 0,
4464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4465 0, 103, 0, 0, 0, 0, 0, 106, 0, 0,
4466 0, 0, 0, 0, 0, 106, 0, 0, 0, 0,
4467 0, 0, 106, 106, 0, 76, 351, 76, 0, 0,
4468 0, 0, 299, 300, 301, 302, 303, 304, 305, 306,
4469 894, 308, 309, 0, 103, 0, 0, 312, 313, 76,
4470 0, 0, 0, 0, 0, 103, 0, 0, 0, 0,
4471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4472 0, 0, 0, 0, 0, 0, 315, 316, 317, 318,
4473 319, 320, 321, 322, 323, 324, 0, 103, 0, 103,
4474 0, 0, 106, 0, 0, 103, 0, 103, 0, 106,
4475 106, 0, 0, 106, 0, 0, 0, 0, 0, 0,
4476 0, 76, 76, 0, 0, 0, 0, 0, 0, 106,
4477 0, 0, 0, 76, 0, 0, 0, 0, 0, 0,
4478 0, 0, 76, 0, 0, 0, 0, 0, 0, 0,
4479 0, 0, 0, 0, 352, 0, 0, 0, 0, 0,
4480 0, 299, -555, -555, -555, -555, 304, 305, 895, 0,
4481 -555, -555, 106, 0, 0, 0, 312, 313, 0, 0,
4482 0, 0, 0, 106, 0, 0, 0, 0, 76, 0,
4483 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
4484 0, 0, 0, 76, 76, 315, 316, 317, 318, 319,
4485 320, 321, 322, 323, 324, 106, 0, 106, 0, 660,
4486 0, 0, 0, 106, 0, 106, 0, 0, 0, 0,
4487 0, 0, 0, 0, 0, 0, 715, 0, 0, 0,
4488 0, 0, 0, 299, 300, 301, 302, 303, 304, 305,
4489 306, 307, 308, 309, 310, 311, 0, 0, 312, 313,
4490 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
4491 309, 310, 311, 76, 0, 312, 313, 0, 0, 0,
4492 76, 76, 0, 0, 76, 314, 0, 315, 316, 317,
4493 318, 319, 320, 321, 322, 323, 324, 0, 0, 0,
4494 76, 0, 314, 0, 315, 316, 317, 318, 319, 320,
4495 321, 322, 323, 324, -554, 4, -230, 5, 6, 7,
4496 8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4497 12, 0, 13, 14, 15, 16, 17, 18, 19, 892,
4498 0, 0, 0, 76, 20, 21, 22, 23, 24, 25,
4499 26, 0, 0, 27, 76, 0, 0, 0, 0, 28,
4500 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
4501 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
4502 46, 47, 0, 0, 0, 0, 76, 0, 76, 0,
4503 0, 0, 0, 0, 76, 0, 76, 0, 0, 0,
4504 48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
4505 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
4506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4507 0, 0, 0, 0, 0, 0, 61, 62, 63, -272,
4508 0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
4509 0, 0, -272, -272, -272, 0, -272, 0, 0, 0,
4510 -554, 0, -554, 0, 0, 0, -272, -272, -272, 0,
4511 0, 0, 0, 0, 0, 0, -272, -272, 0, -272,
4512 -272, -272, -272, -272, 0, 0, 0, 0, 0, 0,
4513 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
4514 309, 310, 311, 0, 0, 312, 313, -272, -272, -272,
4515 -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
4516 0, 0, -272, -272, -272, 0, 663, -272, 0, 0,
4517 0, 0, 314, -272, 315, 316, 317, 318, 319, 320,
4518 321, 322, 323, 324, 0, 0, -272, 0, -94, -272,
4519 -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
4520 -272, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4521 0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
4522 -272, -397, 0, -272, -272, -272, 0, -272, 0, -397,
4523 -397, -397, 0, 0, -397, -397, -397, 0, -397, 0,
4524 0, 0, 0, 0, 0, 0, 0, -397, -397, -397,
4525 0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
4526 0, -397, -397, -397, -397, -397, 0, 0, 0, 0,
4527 0, 0, 299, 300, 301, 302, 303, 304, 305, 0,
4528 0, 308, 309, 0, 0, 0, 0, 312, 313, -397,
4529 -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
4530 -397, -397, 0, 0, -397, -397, -397, 0, 0, -397,
4531 0, 0, 0, 0, 0, -397, 315, 316, 317, 318,
4532 319, 320, 321, 322, 323, 324, 0, 0, 0, 0,
4533 0, -397, 0, -397, -397, -397, -397, -397, -397, -397,
4534 -397, -397, -397, 0, 0, 0, 0, 0, 0, 0,
4535 0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
4536 -397, -397, -397, -266, 219, -397, -397, -397, 0, -397,
4537 0, -266, -266, -266, 0, 0, -266, -266, -266, 0,
4538 -266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4539 -266, -266, -266, 0, 0, 0, 0, 0, 0, 0,
4540 -266, -266, 0, -266, -266, -266, -266, -266, 0, 0,
4541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4543 0, -266, -266, -266, -266, -266, -266, -266, -266, -266,
4544 -266, -266, -266, -266, 0, 0, -266, -266, -266, 0,
4545 0, -266, 0, 0, 0, 0, 0, -266, 0, 0,
4546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4547 -266, 0, 0, -266, -266, -266, -266, -266, -266, -266,
4548 -266, -266, -266, -266, -266, 0, 0, 0, 0, 0,
4549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4550 0, -266, -266, -266, -266, -554, 0, -266, -266, -266,
4551 0, -266, 0, -554, -554, -554, 0, 0, -554, -554,
4552 -554, 0, -554, 0, 0, 0, 0, 0, 0, 0,
4553 0, -554, -554, -554, 0, 0, 0, 0, 0, 0,
4554 0, 0, -554, -554, 0, -554, -554, -554, -554, -554,
4555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4557 0, 0, 0, -554, -554, -554, -554, -554, -554, -554,
4558 -554, -554, -554, -554, -554, -554, 0, 0, -554, -554,
4559 -554, 0, 0, -554, 0, 0, 0, 0, 0, -554,
4560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4561 0, 0, 0, 0, 0, -554, 0, -554, -554, -554,
4562 -554, -554, -554, -554, -554, -554, -554, 0, 0, 0,
4563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4564 0, 0, -554, -554, -554, -554, -554, -279, 219, -554,
4565 -554, -554, 0, -554, 0, -279, -279, -279, 0, 0,
4566 -279, -279, -279, 0, -279, 0, 0, 0, 0, 0,
4567 0, 0, 0, 0, -279, -279, 0, 0, 0, 0,
4568 0, 0, 0, 0, -279, -279, 0, -279, -279, -279,
4569 -279, -279, 0, 0, 0, 0, 0, 0, 0, 0,
4570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4571 0, 0, 0, 0, 0, -279, -279, -279, -279, -279,
4572 -279, -279, -279, -279, -279, -279, -279, -279, 0, 0,
4573 -279, -279, -279, 0, 0, -279, 0, 0, 0, 0,
4574 0, -279, 0, 0, 0, 0, 0, 0, 0, 0,
4575 0, 0, 0, 0, 0, 0, 0, -279, 0, -279,
4576 -279, -279, -279, -279, -279, -279, -279, -279, -279, 0,
4577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4578 0, 0, 0, 0, 0, -279, -279, -279, -279, -536,
4579 216, -279, -279, -279, 0, -279, 0, -536, -536, -536,
4580 0, 0, 0, -536, -536, 0, -536, 0, 0, 0,
4581 0, 0, 0, 0, 0, -536, 0, 0, 0, 0,
4582 0, 0, 0, 0, 0, 0, -536, -536, 0, -536,
4583 -536, -536, -536, -536, 0, 0, 0, 0, 0, 0,
4584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4585 0, 0, 0, 0, 0, 0, 0, -536, -536, -536,
4586 -536, -536, -536, -536, -536, -536, -536, -536, -536, -536,
4587 0, 0, -536, -536, -536, -272, 662, 0, 0, 0,
4588 0, 0, 0, -272, -272, -272, 0, 0, 0, -272,
4589 -272, 0, -272, 0, 0, 0, 0, 0, -92, -536,
4590 0, -536, -536, -536, -536, -536, -536, -536, -536, -536,
4591 -536, 0, -272, -272, 0, -272, -272, -272, -272, -272,
4592 0, 0, 0, 0, 0, 0, -536, -536, -536, -536,
4593 -84, 0, 0, -536, 0, -536, 0, -536, 0, 0,
4594 0, 0, 0, -272, -272, -272, -272, -272, -272, -272,
4595 -272, -272, -272, -272, -272, -272, 0, 0, -272, -272,
4596 -272, 0, 663, 0, 0, 0, 0, 0, 0, 0,
4597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4598 0, 0, 0, 0, -94, -272, 0, -272, -272, -272,
4599 -272, -272, -272, -272, -272, -272, -272, 0, 0, 0,
4600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4601 0, 0, 0, -272, -272, -272, -86, 0, 0, -272,
4602 0, -272, 4, -272, 5, 6, 7, 8, 9, -554,
4603 -554, -554, 10, 11, 0, 0, -554, 12, 0, 13,
4604 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
4605 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
4606 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
4607 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4608 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
4609 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4610 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
4611 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
4612 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
4613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4614 0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
4615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4616 0, 0, 0, 0, 0, 0, 0, -554, 4, -554,
4617 5, 6, 7, 8, 9, 0, 0, -554, 10, 11,
4618 0, -554, -554, 12, 0, 13, 14, 15, 16, 17,
4619 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
4620 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
4621 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
4622 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
4623 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
4624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4625 0, 0, 0, 48, 0, 0, 49, 50, 0, 51,
4626 52, 0, 53, 0, 54, 55, 56, 57, 58, 59,
4627 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4628 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
4629 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
4630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4631 0, 0, 0, -554, 4, -554, 5, 6, 7, 8,
4632 9, 0, 0, -554, 10, 11, 0, 0, -554, 12,
4633 -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
4634 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
4635 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
4636 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4637 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
4638 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4639 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4640 0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
4641 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
4642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4643 0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
4644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4645 0, 0, 0, 0, 0, 0, 0, 0, 0, -554,
4646 4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
4647 10, 11, 0, 0, -554, 12, 0, 13, 14, 15,
4648 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
4649 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
4650 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
4651 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
4652 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
4653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4654 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
4655 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
4656 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
4657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4658 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
4659 0, 4, 0, 5, 6, 7, 8, 9, 0, -554,
4660 -554, 10, 11, 0, 0, -554, 12, -554, 13, 14,
4661 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
4662 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
4663 0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
4664 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4665 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
4666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4667 0, 0, 0, 0, 0, 0, 48, 0, 0, 49,
4668 50, 0, 51, 52, 0, 53, 0, 54, 55, 56,
4669 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
4670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4671 0, 0, 61, 62, 63, 0, 0, 0, 0, 0,
4672 0, 0, 4, 0, 5, 6, 7, 8, 9, 0,
4673 0, 0, 10, 11, 0, 0, -554, 12, -554, 13,
4674 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
4675 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
4676 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
4677 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4678 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
4679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4680 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
4681 237, 50, 0, 51, 52, 0, 53, 0, 54, 55,
4682 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
4683 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4684 0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
4685 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
4686 0, 0, 0, 10, 11, -554, 0, -554, 12, -554,
4687 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
4688 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4689 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
4690 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4691 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
4692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4693 0, 0, 0, 0, 0, 0, 0, 0, 48, 0,
4694 0, 49, 50, 0, 51, 52, 0, 53, 0, 54,
4695 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
4696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4697 0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
4698 0, 0, 0, 0, 4, 0, 5, 6, 7, 8,
4699 9, 0, 0, 0, 10, 11, -554, 0, -554, 12,
4700 -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
4701 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
4702 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
4703 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4704 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
4705 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4706 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4707 0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
4708 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
4709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4710 0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
4711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4712 0, -554, 0, 0, 0, 0, 0, 0, 0, -554,
4713 4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
4714 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4715 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
4716 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
4717 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
4718 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
4719 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
4720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4721 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
4722 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
4723 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
4724 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4725 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
4726 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4727 0, 10, 11, 0, 0, -554, 12, -554, 13, 14,
4728 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
4729 193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
4730 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4731 33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
4732 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
4733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4734 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
4735 50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
4736 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
4737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4738 0, 0, 61, 200, 63, 5, 6, 7, 0, 9,
4739 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4740 13, 14, 15, 16, 17, 18, 19, 0, 223, 0,
4741 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4742 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
4743 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4744 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
4745 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4746 0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
4747 0, 197, 50, 0, 51, 52, 0, 0, 0, 54,
4748 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
4749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4750 0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
4751 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
4752 9, 0, 0, 0, 10, 11, 0, 0, 279, 12,
4753 280, 13, 14, 15, 16, 17, 18, 19, 0, 0,
4754 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
4755 0, 0, 27, 0, 0, 0, 0, 0, 0, 29,
4756 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4757 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
4758 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4759 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
4760 0, 0, 197, 50, 0, 51, 52, 0, 0, 0,
4761 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
4762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4763 0, 0, 0, 0, 0, 61, 62, 63, 5, 6,
4764 7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
4765 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
4766 0, 223, 0, 0, 0, 20, 21, 22, 23, 24,
4767 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
4768 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
4769 38, 39, 40, 0, 41, 42, 0, 43, 44, 45,
4770 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4772 0, 48, 0, 0, 49, 50, 0, 51, 52, 0,
4773 53, 0, 54, 55, 56, 57, 58, 59, 60, 0,
4774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4775 0, 0, 0, 0, 0, 0, 0, 61, 62, 63,
4776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4777 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4778 0, 479, 110, 111, 112, 113, 114, 115, 116, 117,
4779 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
4780 128, 129, 130, 131, 132, 133, 0, 0, 0, 134,
4781 135, 136, 354, 355, 356, 357, 141, 142, 143, 0,
4782 0, 0, 0, 0, 144, 145, 146, 147, 358, 359,
4783 360, 361, 152, 37, 38, 362, 40, 0, 0, 0,
4784 0, 0, 0, 0, 0, 154, 155, 156, 157, 158,
4785 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
4786 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
4787 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
4788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4789 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
4790 179, 0, 180, 181, 0, 0, 0, 0, 0, 0,
4791 -529, -529, -529, 0, -529, 0, 0, 0, -529, -529,
4792 0, 182, 363, -529, 0, -529, -529, -529, -529, -529,
4793 -529, -529, 0, -529, 0, 0, 0, -529, -529, -529,
4794 -529, -529, -529, -529, 0, 0, -529, 0, 0, 0,
4795 0, 0, 0, -529, 0, 0, -529, -529, -529, -529,
4796 -529, -529, -529, -529, -529, -529, -529, -529, 0, -529,
4797 -529, -529, 0, -529, -529, 0, 0, 0, 0, 0,
4798 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4799 0, 0, 0, -529, 0, 0, -529, -529, 0, -529,
4800 -529, 0, -529, -529, -529, -529, -529, -529, -529, -529,
4801 -529, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4802 0, 0, 0, 0, 0, 0, 0, 0, 0, -529,
4803 -529, -529, 0, 0, 0, 0, 0, 0, -530, -530,
4804 -530, 0, -530, 0, -529, 0, -530, -530, 0, 0,
4805 -529, -530, 0, -530, -530, -530, -530, -530, -530, -530,
4806 0, -530, 0, 0, 0, -530, -530, -530, -530, -530,
4807 -530, -530, 0, 0, -530, 0, 0, 0, 0, 0,
4808 0, -530, 0, 0, -530, -530, -530, -530, -530, -530,
4809 -530, -530, -530, -530, -530, -530, 0, -530, -530, -530,
4810 0, -530, -530, 0, 0, 0, 0, 0, 0, 0,
4811 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4812 0, -530, 0, 0, -530, -530, 0, -530, -530, 0,
4813 -530, -530, -530, -530, -530, -530, -530, -530, -530, 0,
4814 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4815 0, 0, 0, 0, 0, 0, 0, -530, -530, -530,
4816 0, 0, 0, 0, 0, 0, -532, -532, -532, 0,
4817 -532, 0, -530, 0, -532, -532, 0, 0, -530, -532,
4818 0, -532, -532, -532, -532, -532, -532, -532, 0, 0,
4819 0, 0, 0, -532, -532, -532, -532, -532, -532, -532,
4820 0, 0, -532, 0, 0, 0, 0, 0, 0, -532,
4821 0, 0, -532, -532, -532, -532, -532, -532, -532, -532,
4822 -532, -532, -532, -532, 0, -532, -532, -532, 0, -532,
4823 -532, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4824 0, 0, 0, 0, 0, 0, 0, 0, 0, -532,
4825 720, 0, -532, -532, 0, -532, -532, 0, -532, -532,
4826 -532, -532, -532, -532, -532, -532, -532, 0, 0, 0,
4827 0, 0, -92, 0, 0, 0, 0, 0, 0, 0,
4828 -534, -534, -534, 0, -534, -532, -532, -532, -534, -534,
4829 0, 0, 0, -534, 0, -534, -534, -534, -534, -534,
4830 -534, -534, 0, 0, 0, 0, -532, -534, -534, -534,
4831 -534, -534, -534, -534, 0, 0, -534, 0, 0, 0,
4832 0, 0, 0, -534, 0, 0, -534, -534, -534, -534,
4833 -534, -534, -534, -534, -534, -534, -534, -534, 0, -534,
4834 -534, -534, 0, -534, -534, 0, 0, 0, 0, 0,
4835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4836 0, 0, 0, -534, 0, 0, -534, -534, 0, -534,
4837 -534, 0, -534, -534, -534, -534, -534, -534, -534, -534,
4838 -534, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4839 0, 0, 0, 0, -535, -535, -535, 0, -535, -534,
4840 -534, -534, -535, -535, 0, 0, 0, -535, 0, -535,
4841 -535, -535, -535, -535, -535, -535, 0, 0, 0, 0,
4842 -534, -535, -535, -535, -535, -535, -535, -535, 0, 0,
4843 -535, 0, 0, 0, 0, 0, 0, -535, 0, 0,
4844 -535, -535, -535, -535, -535, -535, -535, -535, -535, -535,
4845 -535, -535, 0, -535, -535, -535, 0, -535, -535, 0,
4846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4847 0, 0, 0, 0, 0, 0, 0, -535, 0, 0,
4848 -535, -535, 0, -535, -535, 0, -535, -535, -535, -535,
4849 -535, -535, -535, -535, -535, 0, 0, 0, 0, 0,
4850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4851 0, 0, 0, -535, -535, -535, 0, 0, 0, 0,
4852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4853 0, 0, 0, 0, -535, 110, 111, 112, 113, 114,
4854 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
4855 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
4856 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
4857 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
4858 147, 148, 149, 150, 151, 152, 261, 262, 153, 263,
4859 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
4860 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
4861 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
4862 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
4863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4864 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
4865 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
4866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4867 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
4868 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
4869 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
4870 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
4871 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
4872 147, 148, 149, 150, 151, 152, 225, 0, 153, 0,
4873 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
4874 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
4875 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
4876 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
4877 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4878 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
4879 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
4880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4881 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
4882 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
4883 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
4884 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
4885 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
4886 147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
4887 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
4888 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
4889 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
4890 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
4891 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4892 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
4893 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
4894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4895 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
4896 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
4897 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
4898 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
4899 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
4900 147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
4901 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
4902 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
4903 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
4904 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
4905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4906 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
4907 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
4908 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4909 0, 0, 0, 12, 182, 13, 14, 15, 191, 192,
4910 18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
4911 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
4912 0, 0, 0, 250, 0, 0, 32, 33, 34, 35,
4913 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
4914 44, 45, 0, 0, 0, 0, 0, 0, 0, 0,
4915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4916 0, 0, 0, 251, 0, 0, 197, 50, 0, 51,
4917 52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
4918 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4919 0, 0, 5, 6, 7, 0, 9, 0, 0, 252,
4920 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4921 191, 192, 18, 19, 0, 0, 0, 0, 253, 193,
4922 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
4923 0, 0, 0, 0, 0, 250, 0, 0, 32, 33,
4924 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
4925 0, 43, 44, 45, 0, 0, 0, 0, 0, 0,
4926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4927 0, 0, 0, 0, 0, 251, 0, 0, 197, 50,
4928 0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
4929 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
4930 0, 0, 0, 0, 5, 6, 7, 8, 9, 0,
4931 0, 252, 10, 11, 0, 0, 0, 12, 0, 13,
4932 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
4933 495, 20, 21, 22, 23, 24, 25, 26, 0, 0,
4934 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
4935 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4936 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
4937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4938 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
4939 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
4940 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
4941 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4942 0, 10, 11, 61, 62, 63, 12, 0, 13, 14,
4943 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
4944 193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
4945 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4946 33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
4947 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
4948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4949 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
4950 50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
4951 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
4952 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4953 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
4954 191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
4955 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
4956 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
4957 34, 35, 36, 37, 38, 39, 40, 195, 41, 42,
4958 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
4959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4960 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
4961 0, 51, 52, 0, 590, 199, 54, 55, 56, 57,
4962 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
4963 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4964 11, 61, 200, 63, 12, 0, 13, 14, 15, 191,
4965 192, 18, 19, 0, 0, 0, 0, 0, 193, 230,
4966 231, 23, 24, 25, 26, 0, 0, 194, 0, 0,
4967 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
4968 35, 36, 37, 38, 39, 40, 195, 41, 42, 0,
4969 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
4970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4971 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
4972 51, 52, 0, 198, 0, 54, 55, 56, 57, 58,
4973 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
4974 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4975 61, 200, 63, 12, 0, 13, 14, 15, 191, 192,
4976 18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
4977 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
4978 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
4979 36, 37, 38, 39, 40, 195, 41, 42, 0, 43,
4980 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
4981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4982 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
4983 52, 0, 0, 199, 54, 55, 56, 57, 58, 59,
4984 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
4985 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
4986 200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
4987 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
4988 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
4989 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4990 37, 38, 39, 40, 195, 41, 42, 0, 43, 44,
4991 45, 0, 46, 47, 0, 0, 0, 0, 0, 0,
4992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4993 0, 0, 196, 0, 0, 197, 50, 0, 51, 52,
4994 0, 590, 0, 54, 55, 56, 57, 58, 59, 60,
4995 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
4996 7, 0, 9, 0, 0, 0, 10, 11, 61, 200,
4997 63, 12, 0, 13, 14, 15, 191, 192, 18, 19,
4998 0, 0, 0, 0, 0, 193, 230, 231, 23, 24,
4999 25, 26, 0, 0, 194, 0, 0, 0, 0, 0,
5000 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
5001 38, 39, 40, 195, 41, 42, 0, 43, 44, 45,
5002 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
5003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5004 0, 196, 0, 0, 197, 50, 0, 51, 52, 0,
5005 0, 0, 54, 55, 56, 57, 58, 59, 60, 0,
5006 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
5007 0, 9, 0, 0, 0, 10, 11, 61, 200, 63,
5008 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
5009 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
5010 26, 0, 0, 194, 0, 0, 0, 0, 0, 0,
5011 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
5012 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
5013 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
5014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5015 196, 0, 0, 197, 50, 0, 51, 52, 0, 489,
5016 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
5017 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
5018 9, 0, 0, 0, 10, 11, 61, 200, 63, 12,
5019 0, 13, 14, 15, 191, 192, 18, 19, 0, 0,
5020 0, 0, 0, 193, 230, 231, 23, 24, 25, 26,
5021 0, 0, 194, 0, 0, 0, 0, 0, 0, 29,
5022 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
5023 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
5024 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5025 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
5026 0, 0, 197, 50, 0, 51, 52, 0, 198, 0,
5027 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
5028 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
5029 0, 0, 0, 10, 11, 61, 200, 63, 12, 0,
5030 13, 14, 15, 191, 192, 18, 19, 0, 0, 0,
5031 0, 0, 193, 230, 231, 23, 24, 25, 26, 0,
5032 0, 194, 0, 0, 0, 0, 0, 0, 29, 0,
5033 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
5034 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
5035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5036 0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
5037 0, 197, 50, 0, 51, 52, 0, 763, 0, 54,
5038 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
5039 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
5040 0, 0, 10, 11, 61, 200, 63, 12, 0, 13,
5041 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
5042 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
5043 194, 0, 0, 0, 0, 0, 0, 29, 0, 0,
5044 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
5045 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
5046 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5047 0, 0, 0, 0, 0, 0, 0, 196, 0, 0,
5048 197, 50, 0, 51, 52, 0, 489, 0, 54, 55,
5049 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
5050 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
5051 0, 10, 11, 61, 200, 63, 12, 0, 13, 14,
5052 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
5053 193, 230, 231, 23, 24, 25, 26, 0, 0, 194,
5054 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
5055 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
5056 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
5057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5058 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
5059 50, 0, 51, 52, 0, 590, 0, 54, 55, 56,
5060 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
5061 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
5062 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
5063 191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
5064 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
5065 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
5066 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
5067 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
5068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5069 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
5070 0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
5071 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
5072 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
5073 11, 61, 200, 63, 12, 0, 13, 14, 15, 16,
5074 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
5075 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
5076 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
5077 35, 36, 37, 38, 39, 40, 0, 41, 42, 0,
5078 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
5079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5080 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
5081 51, 52, 0, 0, 0, 54, 55, 56, 57, 58,
5082 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
5083 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
5084 61, 62, 63, 12, 0, 13, 14, 15, 16, 17,
5085 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
5086 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
5087 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
5088 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
5089 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
5090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5091 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
5092 52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
5093 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
5094 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
5095 200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
5096 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
5097 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
5098 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
5099 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
5100 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5102 0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
5103 0, 296, 0, 54, 55, 56, 57, 58, 59, 60,
5104 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
5105 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
5106 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
5107 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
5108 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
5109 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
5110 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
5111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5112 0, 0, 0, 0, 0, 0, 0, 337, 0, 0,
5113 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
5114 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
5115 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
5116 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
5117 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
5118 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
5119 0, 0, 250, 0, 0, 32, 33, 34, 344, 36,
5120 37, 38, 345, 40, 0, 41, 42, 0, 43, 44,
5121 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5122 0, 0, 0, 0, 0, 0, 0, 0, 0, 346,
5123 0, 0, 347, 0, 0, 197, 50, 0, 51, 52,
5124 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
5125 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
5126 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
5127 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
5128 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
5129 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
5130 32, 33, 34, 344, 36, 37, 38, 345, 40, 0,
5131 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
5132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5133 0, 0, 0, 0, 0, 0, 0, 347, 0, 0,
5134 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
5135 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
5136 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
5137 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
5138 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
5139 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
5140 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
5141 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
5142 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5144 0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
5145 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
5146 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
5147 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
5148 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
5149 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
5150 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
5151 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
5152 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
5153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5154 0, 0, 0, 0, 0, 0, 0, 882, 0, 0,
5155 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
5156 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
5157 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
5158 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
5159 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
5160 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
5161 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
5162 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
5163 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5165 0, 0, 891, 0, 0, 197, 50, 0, 51, 52,
5166 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
5167 0, 0, 0, 0, 0, 528, 529, 0, 0, 530,
5168 0, 0, 0, 0, 0, 0, 0, 0, 252, 154,
5169 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
5170 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
5171 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
5172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5173 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
5174 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
5175 0, 0, 0, 536, 537, 0, 0, 538, 0, 0,
5176 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
5177 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
5178 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
5179 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
5180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5181 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
5182 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
5183 0, 594, 529, 0, 0, 595, 0, 0, 0, 0,
5184 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
5185 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
5186 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
5187 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
5188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5189 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
5190 179, 0, 180, 181, 0, 0, 0, 0, 0, 597,
5191 537, 0, 0, 598, 0, 0, 0, 0, 0, 0,
5192 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
5193 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
5194 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
5195 0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
5196 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
5197 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
5198 180, 181, 0, 0, 0, 0, 0, 617, 529, 0,
5199 0, 618, 0, 0, 0, 0, 0, 0, 0, 182,
5200 219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
5201 0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
5202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5203 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5204 0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
5205 173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
5206 0, 0, 0, 0, 0, 620, 537, 0, 0, 621,
5207 0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
5208 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
5209 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
5210 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
5211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5212 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
5213 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
5214 0, 0, 0, 689, 529, 0, 0, 690, 0, 0,
5215 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
5216 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
5217 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
5218 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
5219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5220 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
5221 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
5222 0, 692, 537, 0, 0, 693, 0, 0, 0, 0,
5223 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
5224 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
5225 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
5226 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
5227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5228 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
5229 179, 0, 180, 181, 0, 0, 0, 0, 0, 699,
5230 529, 0, 0, 700, 0, 0, 0, 0, 0, 0,
5231 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
5232 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
5233 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
5234 0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
5235 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
5236 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
5237 180, 181, 0, 0, 0, 0, 0, 575, 537, 0,
5238 0, 576, 0, 0, 0, 0, 0, 0, 0, 182,
5239 219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
5240 0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
5241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5242 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5243 0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
5244 173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
5245 0, 0, 0, 0, 0, 937, 529, 0, 0, 938,
5246 0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
5247 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
5248 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
5249 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
5250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5251 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
5252 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
5253 0, 0, 0, 943, 529, 0, 0, 944, 0, 0,
5254 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
5255 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
5256 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
5257 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
5258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5259 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
5260 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
5261 0, 946, 537, 0, 0, 947, 0, 0, 0, 0,
5262 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
5263 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
5264 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
5265 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
5266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5267 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
5268 179, 0, 180, 181, 0, 0, 0, 0, 0, 575,
5269 537, 0, 0, 576, 0, 0, 0, 0, 0, 0,
5270 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
5271 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
5272 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
5273 0, 0, 169, 0, 0, 0, 0, 0, 660, 0,
5274 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
5275 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
5276 180, 181, 299, 300, 301, 302, 303, 304, 305, 306,
5277 307, 308, 309, 310, 311, 0, 0, 312, 313, 182,
5278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5280 0, 0, 0, 0, 314, 0, 315, 316, 317, 318,
5281 319, 320, 321, 322, 323, 324
5283 static const yytype_int16 yycheck[] =
5285 2, 55, 4, 8, 52, 74, 22, 27, 8, 29,
5286 51, 260, 331, 326, 16, 17, 28, 62, 20, 53,
5287 212, 65, 550, 28, 4, 260, 298, 244, 28, 85,
5288 549, 248, 569, 596, 434, 89, 50, 8, 16, 17,
5289 74, 85, 20, 1, 347, 51, 52, 49, 50, 53,
5290 443, 53, 86, 87, 88, 55, 619, 28, 49, 267,
5291 62, 637, 735, 271, 325, 634, 327, 81, 82, 733,
5292 677, 85, 74, 25, 681, 25, 389, 22, 29, 81,
5293 82, 25, 61, 85, 86, 87, 88, 25, 237, 89,
5294 731, 107, 579, 580, 840, 495, 26, 16, 17, 85,
5295 87, 20, 109, 0, 61, 393, 367, 368, 37, 38,
5296 25, 87, 82, 87, 76, 85, 85, 25, 85, 651,
5297 85, 25, 109, 436, 148, 104, 105, 388, 691, 390,
5298 56, 85, 13, 109, 141, 109, 424, 61, 85, 702,
5299 385, 65, 25, 59, 60, 25, 295, 195, 393, 106,
5300 198, 199, 114, 414, 140, 113, 107, 109, 25, 109,
5301 634, 698, 107, 637, 2, 13, 4, 141, 147, 706,
5302 139, 140, 918, 140, 815, 140, 437, 651, 16, 17,
5303 104, 105, 20, 52, 253, 139, 140, 56, 146, 141,
5304 148, 141, 144, 140, 144, 197, 148, 141, 148, 448,
5305 13, 137, 27, 141, 877, 143, 13, 137, 222, 873,
5306 224, 49, 50, 448, 216, 231, 218, 219, 234, 253,
5307 222, 13, 224, 755, 62, 13, 141, 229, 143, 716,
5308 250, 624, 625, 141, 875, 237, 26, 141, 216, 222,
5309 218, 219, 555, 81, 82, 293, 237, 85, 293, 825,
5310 298, 253, 293, 298, 567, 862, 239, 298, 141, 659,
5311 829, 141, 296, 566, 472, 146, 28, 148, 909, 838,
5312 284, 285, 286, 287, 141, 289, 290, 796, 334, 37,
5313 38, 283, 284, 285, 286, 287, 288, 289, 290, 147,
5314 334, 293, 296, 295, 296, 556, 298, 216, 146, 218,
5315 148, 147, 85, 283, 295, 349, 141, 568, 288, 59,
5316 60, 327, 85, 148, 284, 285, 286, 287, 332, 333,
5317 85, 146, 571, 148, 326, 325, 328, 864, 373, 374,
5318 332, 333, 346, 146, 862, 148, 384, 385, 731, 146,
5319 733, 148, 68, 109, 346, 393, 141, 137, 326, 141,
5320 85, 825, 85, 143, 146, 143, 148, 140, 146, 197,
5321 148, 26, 332, 333, 838, 434, 840, 140, 687, 906,
5322 26, 373, 374, 421, 390, 140, 424, 109, 216, 385,
5323 218, 219, 945, 85, 222, 85, 224, 389, 388, 99,
5324 148, 229, 87, 119, 120, 121, 408, 614, 414, 237,
5325 434, 593, 651, 408, 676, 140, 139, 140, 408, 411,
5326 143, 389, 395, 413, 109, 421, 399, 141, 85, 402,
5327 85, 437, 815, 816, 148, 143, 495, 14, 15, 85,
5328 148, 85, 434, 416, 436, 435, 419, 408, 140, 139,
5329 140, 489, 87, 85, 918, 283, 284, 285, 286, 287,
5330 288, 289, 290, 87, 87, 293, 705, 295, 436, 85,
5331 298, 495, 141, 52, 109, 54, 55, 56, 57, 85,
5332 705, 143, 137, 140, 139, 140, 109, 87, 143, 85,
5333 873, 137, 875, 139, 140, 139, 140, 143, 326, 56,
5334 328, 26, 54, 495, 332, 333, 141, 517, 140, 109,
5335 89, 63, 64, 551, 548, 549, 95, 96, 346, 85,
5336 551, 494, 109, 139, 140, 535, 909, 533, 562, 87,
5337 15, 552, 17, 139, 140, 541, 26, 116, 88, 85,
5338 119, 850, 665, 139, 140, 373, 374, 856, 87, 672,
5339 556, 109, 590, 545, 87, 547, 615, 87, 577, 578,
5340 85, 389, 568, 555, 554, 85, 570, 146, 87, 141,
5341 109, 577, 578, 139, 140, 567, 566, 569, 570, 109,
5342 57, 58, 85, 411, 622, 587, 596, 555, 141, 143,
5343 109, 615, 587, 139, 140, 85, 137, 587, 533, 567,
5344 659, 605, 141, 609, 610, 143, 541, 637, 436, 619,
5345 640, 141, 137, 605, 139, 140, 143, 85, 656, 139,
5346 140, 651, 141, 615, 68, 928, 587, 662, 144, 146,
5347 869, 148, 145, 668, 669, 659, 139, 140, 676, 631,
5348 632, 87, 577, 578, 109, 676, 138, 137, 56, 139,
5349 140, 643, 141, 143, 52, 628, 54, 55, 56, 57,
5350 652, 695, 68, 109, 708, 686, 61, 659, 106, 106,
5351 662, 139, 140, 707, 68, 141, 668, 669, 929, 17,
5352 56, 691, 703, 52, 146, 54, 55, 56, 57, 25,
5353 694, 94, 702, 697, 144, 141, 52, 68, 54, 55,
5354 56, 57, 694, 138, 109, 697, 698, 141, 141, 104,
5355 105, 106, 83, 84, 706, 141, 141, 545, 708, 547,
5356 52, 713, 714, 141, 52, 763, 147, 555, 141, 141,
5357 61, 704, 141, 89, 694, 10, 13, 697, 773, 567,
5358 96, 569, 570, 141, 61, 116, 117, 118, 119, 120,
5359 121, 724, 8, 138, 141, 793, 146, 730, 141, 2,
5360 116, 4, 796, 736, 798, 111, 787, 145, 789, 15,
5361 68, 141, 141, 104, 105, 106, 10, 605, 799, 138,
5362 141, 773, 786, 804, 141, 83, 84, 104, 105, 106,
5363 141, 783, 61, 141, 786, 825, 68, 827, 790, 791,
5364 109, 831, 794, 631, 632, 138, 49, 114, 88, 10,
5365 840, 835, 842, 51, 52, 643, 141, 141, 810, 117,
5366 118, 119, 120, 121, 652, 849, 786, 141, 16, 17,
5367 803, 141, 20, 9, 662, 104, 105, 106, 859, 860,
5368 668, 669, 10, 835, 138, 117, 118, 119, 120, 121,
5369 52, 141, 54, 55, 56, 57, 141, 849, 46, 47,
5370 114, 853, 141, 51, 52, 138, 694, 141, 86, 697,
5371 698, 141, 864, 56, 62, 63, 141, 141, 706, 141,
5372 143, 56, 912, 143, 905, 713, 714, 89, 918, 141,
5373 920, 88, 931, 923, 624, 877, 91, 52, 930, 54,
5374 55, 56, 57, 94, 896, 52, 898, 54, 55, 56,
5375 57, 932, 904, 934, 906, 89, 52, 838, 54, 55,
5376 56, 57, 634, 929, 954, 65, 869, 917, -1, 54,
5377 55, -1, 57, -1, 89, 945, 928, 927, 63, 64,
5378 95, 96, 89, -1, -1, 773, -1, 52, 95, 54,
5379 55, 56, 57, 89, 197, 783, -1, -1, 786, 95,
5380 928, 116, 790, 791, 119, -1, 794, -1, -1, 207,
5381 -1, -1, -1, -1, 212, 40, 41, 42, 43, 44,
5382 -1, 219, 810, -1, -1, -1, 229, -1, 2, -1,
5383 -1, -1, -1, -1, 237, 52, -1, 54, 55, 56,
5384 57, -1, -1, -1, -1, -1, 0, 195, -1, -1,
5385 198, 199, 200, -1, 8, 9, 10, -1, -1, 13,
5386 14, 15, -1, 17, -1, 853, -1, -1, 216, -1,
5387 218, 219, 89, 27, -1, 49, 864, -1, 95, 96,
5388 283, -1, -1, 37, 38, 288, 40, 41, 42, 43,
5389 44, -1, 295, -1, -1, -1, -1, -1, -1, 116,
5390 -1, -1, 119, -1, -1, -1, -1, -1, 896, -1,
5391 898, -1, -1, -1, -1, -1, 904, -1, 906, -1,
5392 -1, -1, -1, -1, -1, 328, 143, -1, 326, -1,
5393 -1, 85, -1, -1, -1, -1, -1, -1, -1, -1,
5394 928, -1, -1, -1, -1, 293, -1, -1, -1, -1,
5395 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
5396 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
5397 318, 319, 320, 321, 322, 323, 324, -1, 326, -1,
5398 -1, -1, -1, -1, 138, -1, 140, -1, -1, 143,
5399 144, 389, 146, -1, 148, -1, -1, -1, -1, -1,
5400 -1, -1, -1, -1, -1, -1, -1, -1, 411, -1,
5401 52, -1, 54, 55, 56, 57, -1, -1, -1, -1,
5402 -1, -1, -1, 197, -1, 373, 374, 52, -1, 54,
5403 55, 56, 57, 68, -1, 383, 384, 385, 436, -1,
5404 -1, 389, -1, 391, 392, 393, -1, 89, 83, 84,
5405 -1, -1, -1, 95, 96, 229, 454, -1, 456, -1,
5406 458, -1, 410, 237, 89, -1, -1, 415, -1, -1,
5407 95, 96, -1, 421, 116, -1, 424, 119, -1, 114,
5408 115, 116, 117, 118, 119, 120, 121, -1, 436, -1,
5409 488, 116, -1, -1, 119, -1, -1, -1, -1, -1,
5410 -1, 143, -1, 2, -1, 4, -1, -1, -1, -1,
5411 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5412 -1, 295, -1, -1, -1, -1, -1, -1, -1, 477,
5413 478, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5414 -1, 489, 545, 541, 547, 543, -1, -1, -1, -1,
5415 49, -1, -1, -1, 53, -1, -1, 555, -1, -1,
5416 -1, -1, -1, -1, -1, -1, 569, -1, -1, 567,
5417 -1, -1, -1, -1, -1, 74, -1, -1, -1, 577,
5418 578, 579, 580, -1, -1, -1, -1, 86, 87, 88,
5419 89, -1, -1, -1, -1, 593, -1, -1, -1, -1,
5420 -1, -1, -1, 551, -1, -1, -1, 555, -1, -1,
5421 -1, -1, 610, -1, -1, -1, -1, -1, -1, 567,
5422 -1, 2, -1, 4, -1, -1, -1, -1, 631, 632,
5423 -1, -1, 630, -1, -1, -1, -1, 411, -1, -1,
5424 643, -1, 590, -1, -1, -1, -1, -1, -1, 652,
5425 -1, -1, -1, 651, -1, -1, -1, -1, -1, -1,
5426 -1, -1, -1, -1, -1, 456, -1, 458, 49, -1,
5427 -1, -1, 53, -1, 622, -1, -1, -1, 676, 677,
5428 -1, 679, -1, 681, -1, -1, -1, -1, -1, -1,
5429 -1, -1, -1, 74, -1, 698, -1, -1, 197, -1,
5430 -1, -1, -1, 706, -1, 86, 87, 88, 656, -1,
5431 713, 714, 660, -1, 662, 663, -1, -1, 716, -1,
5432 668, 669, -1, -1, -1, -1, -1, -1, 676, -1,
5433 229, -1, -1, -1, -1, -1, -1, -1, 237, -1,
5434 -1, -1, -1, 741, 742, -1, 744, -1, 746, 747,
5435 -1, -1, -1, -1, 253, -1, -1, 755, -1, 757,
5436 -1, 759, 760, -1, -1, -1, -1, 715, -1, -1,
5437 -1, 545, 720, 547, 722, 723, -1, -1, -1, -1,
5438 783, -1, -1, 781, 283, -1, 784, 790, 791, 288,
5439 -1, 794, 2, -1, 4, -1, 295, 296, -1, -1,
5440 -1, -1, -1, -1, -1, -1, -1, 810, -1, -1,
5441 -1, -1, -1, -1, -1, 763, 197, -1, -1, 767,
5442 -1, -1, -1, -1, -1, 773, -1, -1, -1, 328,
5443 -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
5444 -1, -1, -1, -1, -1, 793, -1, -1, 229, -1,
5445 853, -1, -1, -1, -1, -1, 237, 631, 632, -1,
5446 -1, 864, -1, 811, 862, -1, -1, -1, -1, 643,
5447 -1, -1, 253, -1, -1, -1, 86, -1, 652, -1,
5448 878, 879, 880, 881, -1, -1, -1, 885, 886, 887,
5449 -1, 889, 890, 896, -1, 898, -1, -1, -1, -1,
5450 -1, 904, 283, 906, -1, -1, -1, 288, -1, -1,
5451 -1, -1, 411, -1, 295, 296, -1, -1, -1, -1,
5452 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5453 928, -1, 930, 931, -1, 434, -1, -1, 936, 713,
5454 714, 939, 940, 941, 942, -1, -1, 328, -1, -1,
5455 741, 742, -1, 744, -1, 746, 747, -1, -1, -1,
5456 -1, 959, -1, -1, -1, -1, 757, -1, 759, 760,
5457 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5458 928, -1, -1, -1, -1, -1, -1, 197, -1, -1,
5459 -1, -1, -1, -1, -1, -1, 495, -1, -1, -1,
5460 -1, -1, -1, -1, -1, -1, -1, -1, -1, 783,
5461 -1, -1, -1, -1, -1, -1, 790, 791, -1, 229,
5462 794, -1, -1, -1, -1, -1, -1, 237, -1, -1,
5463 411, -1, -1, -1, -1, -1, 810, -1, -1, -1,
5464 -1, -1, -1, -1, -1, -1, 545, -1, 547, -1,
5465 -1, -1, -1, 434, -1, -1, 68, 69, 70, 71,
5466 72, 73, 74, 75, 76, 77, 78, 79, 80, -1,
5467 569, 83, 84, 283, -1, -1, -1, -1, 288, 853,
5468 -1, -1, -1, -1, -1, 295, -1, 878, 879, 880,
5469 881, -1, -1, -1, 885, 886, 887, -1, 889, 890,
5470 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
5471 -1, -1, -1, -1, 495, -1, 615, -1, 328, -1,
5472 -1, -1, 896, -1, 898, -1, -1, -1, -1, -1,
5473 904, -1, 631, 632, -1, -1, -1, -1, -1, -1,
5474 -1, -1, -1, -1, 643, 936, -1, -1, 939, 940,
5475 941, 942, -1, 652, -1, -1, -1, -1, -1, -1,
5476 659, -1, -1, -1, 545, -1, 547, -1, 959, -1,
5477 -1, -1, -1, -1, 68, 69, 70, 71, 72, 73,
5478 74, 75, 76, 77, 78, 79, 80, -1, 569, 83,
5479 84, -1, -1, -1, -1, -1, -1, -1, -1, 698,
5480 -1, 411, -1, -1, -1, -1, -1, 706, -1, -1,
5481 -1, -1, -1, -1, 713, 714, 110, -1, 112, 113,
5482 114, 115, 116, 117, 118, 119, 120, 121, -1, -1,
5483 -1, -1, -1, -1, 615, -1, -1, -1, -1, -1,
5484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5485 631, 632, -1, -1, 148, -1, -1, -1, -1, -1,
5486 -1, -1, 643, 644, -1, -1, -1, -1, -1, -1,
5487 -1, 652, -1, -1, -1, -1, -1, -1, 659, -1,
5488 -1, -1, -1, -1, 783, -1, -1, -1, -1, -1,
5489 -1, 790, 791, -1, -1, 794, -1, -1, -1, -1,
5490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5491 -1, 810, -1, -1, -1, -1, -1, 698, -1, -1,
5492 -1, -1, -1, -1, -1, 706, -1, -1, -1, -1,
5493 -1, -1, 713, 714, -1, 545, 835, 547, -1, -1,
5494 -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
5495 849, 77, 78, -1, 853, -1, -1, 83, 84, 569,
5496 -1, -1, -1, -1, -1, 864, -1, -1, -1, -1,
5497 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5498 -1, -1, -1, -1, -1, -1, 112, 113, 114, 115,
5499 116, 117, 118, 119, 120, 121, -1, 896, -1, 898,
5500 -1, -1, 783, -1, -1, 904, -1, 906, -1, 790,
5501 791, -1, -1, 794, -1, -1, -1, -1, -1, -1,
5502 -1, 631, 632, -1, -1, -1, -1, -1, -1, 810,
5503 -1, -1, -1, 643, -1, -1, -1, -1, -1, -1,
5504 -1, -1, 652, -1, -1, -1, -1, -1, -1, -1,
5505 -1, -1, -1, -1, 835, -1, -1, -1, -1, -1,
5506 -1, 68, 69, 70, 71, 72, 73, 74, 849, -1,
5507 77, 78, 853, -1, -1, -1, 83, 84, -1, -1,
5508 -1, -1, -1, 864, -1, -1, -1, -1, 698, -1,
5509 -1, -1, -1, -1, -1, -1, 706, -1, -1, -1,
5510 -1, -1, -1, 713, 714, 112, 113, 114, 115, 116,
5511 117, 118, 119, 120, 121, 896, -1, 898, -1, 44,
5512 -1, -1, -1, 904, -1, 906, -1, -1, -1, -1,
5513 -1, -1, -1, -1, -1, -1, 44, -1, -1, -1,
5514 -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
5515 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
5516 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
5517 78, 79, 80, 783, -1, 83, 84, -1, -1, -1,
5518 790, 791, -1, -1, 794, 110, -1, 112, 113, 114,
5519 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
5520 810, -1, 110, -1, 112, 113, 114, 115, 116, 117,
5521 118, 119, 120, 121, 0, 1, 141, 3, 4, 5,
5522 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
5523 16, -1, 18, 19, 20, 21, 22, 23, 24, 849,
5524 -1, -1, -1, 853, 30, 31, 32, 33, 34, 35,
5525 36, -1, -1, 39, 864, -1, -1, -1, -1, 45,
5526 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
5527 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
5528 66, 67, -1, -1, -1, -1, 896, -1, 898, -1,
5529 -1, -1, -1, -1, 904, -1, 906, -1, -1, -1,
5530 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
5531 -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
5532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5533 -1, -1, -1, -1, -1, -1, 122, 123, 124, 0,
5534 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
5535 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
5536 146, -1, 148, -1, -1, -1, 27, 28, 29, -1,
5537 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
5538 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
5539 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
5540 78, 79, 80, -1, -1, 83, 84, 68, 69, 70,
5541 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
5542 -1, -1, 83, 84, 85, -1, 87, 88, -1, -1,
5543 -1, -1, 110, 94, 112, 113, 114, 115, 116, 117,
5544 118, 119, 120, 121, -1, -1, 107, -1, 109, 110,
5545 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
5546 121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5547 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
5548 141, 0, -1, 144, 145, 146, -1, 148, -1, 8,
5549 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
5550 -1, -1, -1, -1, -1, -1, -1, 26, 27, 28,
5551 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
5552 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
5553 -1, -1, 68, 69, 70, 71, 72, 73, 74, -1,
5554 -1, 77, 78, -1, -1, -1, -1, 83, 84, 68,
5555 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
5556 79, 80, -1, -1, 83, 84, 85, -1, -1, 88,
5557 -1, -1, -1, -1, -1, 94, 112, 113, 114, 115,
5558 116, 117, 118, 119, 120, 121, -1, -1, -1, -1,
5559 -1, 110, -1, 112, 113, 114, 115, 116, 117, 118,
5560 119, 120, 121, -1, -1, -1, -1, -1, -1, -1,
5561 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
5562 139, 140, 141, 0, 143, 144, 145, 146, -1, 148,
5563 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
5564 17, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5565 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
5566 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
5567 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5568 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5569 -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
5570 77, 78, 79, 80, -1, -1, 83, 84, 85, -1,
5571 -1, 88, -1, -1, -1, -1, -1, 94, -1, -1,
5572 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5573 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5574 117, 118, 119, 120, 121, -1, -1, -1, -1, -1,
5575 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5576 -1, 138, 139, 140, 141, 0, -1, 144, 145, 146,
5577 -1, 148, -1, 8, 9, 10, -1, -1, 13, 14,
5578 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
5579 -1, 26, 27, 28, -1, -1, -1, -1, -1, -1,
5580 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
5581 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5582 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5583 -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
5584 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
5585 85, -1, -1, 88, -1, -1, -1, -1, -1, 94,
5586 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5587 -1, -1, -1, -1, -1, 110, -1, 112, 113, 114,
5588 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
5589 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5590 -1, -1, 137, 138, 139, 140, 141, 0, 143, 144,
5591 145, 146, -1, 148, -1, 8, 9, 10, -1, -1,
5592 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
5593 -1, -1, -1, -1, 27, 28, -1, -1, -1, -1,
5594 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
5595 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
5596 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5597 -1, -1, -1, -1, -1, 68, 69, 70, 71, 72,
5598 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
5599 83, 84, 85, -1, -1, 88, -1, -1, -1, -1,
5600 -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
5601 -1, -1, -1, -1, -1, -1, -1, 110, -1, 112,
5602 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
5603 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5604 -1, -1, -1, -1, -1, 138, 139, 140, 141, 0,
5605 143, 144, 145, 146, -1, 148, -1, 8, 9, 10,
5606 -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
5607 -1, -1, -1, -1, -1, 26, -1, -1, -1, -1,
5608 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
5609 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
5610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5611 -1, -1, -1, -1, -1, -1, -1, 68, 69, 70,
5612 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
5613 -1, -1, 83, 84, 85, 0, 87, -1, -1, -1,
5614 -1, -1, -1, 8, 9, 10, -1, -1, -1, 14,
5615 15, -1, 17, -1, -1, -1, -1, -1, 109, 110,
5616 -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
5617 121, -1, 37, 38, -1, 40, 41, 42, 43, 44,
5618 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
5619 141, -1, -1, 144, -1, 146, -1, 148, -1, -1,
5620 -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
5621 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
5622 85, -1, 87, -1, -1, -1, -1, -1, -1, -1,
5623 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5624 -1, -1, -1, -1, 109, 110, -1, 112, 113, 114,
5625 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
5626 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5627 -1, -1, -1, 138, 139, 140, 141, -1, -1, 144,
5628 -1, 146, 1, 148, 3, 4, 5, 6, 7, 8,
5629 9, 10, 11, 12, -1, -1, 15, 16, -1, 18,
5630 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5631 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5632 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
5633 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5634 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
5635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5636 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
5637 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
5638 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
5639 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5640 -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
5641 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5642 -1, -1, -1, -1, -1, -1, -1, 146, 1, 148,
5643 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
5644 -1, 14, 15, 16, -1, 18, 19, 20, 21, 22,
5645 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5646 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5647 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5648 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
5649 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
5650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5651 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
5652 93, -1, 95, -1, 97, 98, 99, 100, 101, 102,
5653 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5654 -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
5655 123, 124, -1, -1, -1, -1, -1, -1, -1, -1,
5656 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5657 -1, -1, -1, 146, 1, 148, 3, 4, 5, 6,
5658 7, -1, -1, 10, 11, 12, -1, -1, 15, 16,
5659 17, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5660 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5661 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
5662 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5663 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
5664 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5665 -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
5666 -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
5667 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
5668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5669 -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
5670 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5671 -1, -1, -1, -1, -1, -1, -1, -1, -1, 146,
5672 1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
5673 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
5674 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5675 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5676 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5677 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5678 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
5679 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5680 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
5681 -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
5682 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
5683 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5684 -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
5685 -1, 1, -1, 3, 4, 5, 6, 7, -1, 9,
5686 10, 11, 12, -1, -1, 146, 16, 148, 18, 19,
5687 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5688 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5689 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5690 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5691 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
5692 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5693 -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
5694 90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
5695 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
5696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5697 -1, -1, 122, 123, 124, -1, -1, -1, -1, -1,
5698 -1, -1, 1, -1, 3, 4, 5, 6, 7, -1,
5699 -1, -1, 11, 12, -1, -1, 146, 16, 148, 18,
5700 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5701 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5702 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
5703 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5704 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
5705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5706 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
5707 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
5708 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
5709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5710 -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
5711 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5712 -1, -1, -1, 11, 12, 144, -1, 146, 16, 148,
5713 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5714 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5715 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5716 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5717 -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
5718 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5719 -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
5720 -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
5721 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
5722 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5723 -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
5724 -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
5725 7, -1, -1, -1, 11, 12, 144, -1, 146, 16,
5726 148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5727 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5728 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
5729 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5730 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
5731 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5732 -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
5733 -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
5734 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
5735 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5736 -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
5737 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5738 -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
5739 1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
5740 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
5741 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5742 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5743 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5744 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5745 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
5746 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5747 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
5748 -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
5749 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
5750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5751 -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
5752 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
5753 -1, 11, 12, -1, -1, 146, 16, 148, 18, 19,
5754 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5755 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5756 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5757 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
5758 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
5759 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5760 -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
5761 90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
5762 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
5763 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5764 -1, -1, 122, 123, 124, 3, 4, 5, -1, 7,
5765 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5766 18, 19, 20, 21, 22, 23, 24, -1, 148, -1,
5767 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5768 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
5769 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5770 -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
5771 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5772 -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
5773 -1, 89, 90, -1, 92, 93, -1, -1, -1, 97,
5774 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
5775 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5776 -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
5777 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5778 7, -1, -1, -1, 11, 12, -1, -1, 146, 16,
5779 148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5780 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5781 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5782 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5783 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
5784 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5785 -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
5786 -1, -1, 89, 90, -1, 92, 93, -1, -1, -1,
5787 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
5788 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5789 -1, -1, -1, -1, -1, 122, 123, 124, 3, 4,
5790 5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
5791 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5792 -1, 148, -1, -1, -1, 30, 31, 32, 33, 34,
5793 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5794 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
5795 55, 56, 57, -1, 59, 60, -1, 62, 63, 64,
5796 -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
5797 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5798 -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
5799 95, -1, 97, 98, 99, 100, 101, 102, 103, -1,
5800 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5801 -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
5802 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5803 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5804 -1, 146, 3, 4, 5, 6, 7, 8, 9, 10,
5805 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
5806 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
5807 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
5808 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5809 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
5810 -1, -1, -1, -1, -1, 66, 67, 68, 69, 70,
5811 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
5812 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
5813 -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
5814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5815 -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
5816 121, -1, 123, 124, -1, -1, -1, -1, -1, -1,
5817 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5818 -1, 142, 143, 16, -1, 18, 19, 20, 21, 22,
5819 23, 24, -1, 26, -1, -1, -1, 30, 31, 32,
5820 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5821 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5822 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
5823 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
5824 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5825 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
5826 93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
5827 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5828 -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
5829 123, 124, -1, -1, -1, -1, -1, -1, 3, 4,
5830 5, -1, 7, -1, 137, -1, 11, 12, -1, -1,
5831 143, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5832 -1, 26, -1, -1, -1, 30, 31, 32, 33, 34,
5833 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5834 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5835 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
5836 -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
5837 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5838 -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
5839 95, 96, 97, 98, 99, 100, 101, 102, 103, -1,
5840 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5841 -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
5842 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5843 7, -1, 137, -1, 11, 12, -1, -1, 143, 16,
5844 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5845 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5846 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5847 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5848 57, 58, 59, 60, -1, 62, 63, 64, -1, 66,
5849 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5850 -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
5851 87, -1, 89, 90, -1, 92, 93, -1, 95, 96,
5852 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
5853 -1, -1, 109, -1, -1, -1, -1, -1, -1, -1,
5854 3, 4, 5, -1, 7, 122, 123, 124, 11, 12,
5855 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5856 23, 24, -1, -1, -1, -1, 143, 30, 31, 32,
5857 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5858 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5859 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
5860 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
5861 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5862 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
5863 93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
5864 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5865 -1, -1, -1, -1, 3, 4, 5, -1, 7, 122,
5866 123, 124, 11, 12, -1, -1, -1, 16, -1, 18,
5867 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5868 143, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5869 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5870 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
5871 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
5872 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5873 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
5874 89, 90, -1, 92, 93, -1, 95, 96, 97, 98,
5875 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
5876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5877 -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
5878 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5879 -1, -1, -1, -1, 143, 3, 4, 5, 6, 7,
5880 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5881 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5882 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5883 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5884 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5885 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
5886 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
5887 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
5888 -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
5889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5890 -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
5891 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
5892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5893 -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
5894 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5895 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5896 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5897 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5898 48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
5899 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
5900 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
5901 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
5902 -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
5903 98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5904 -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
5905 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
5906 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5907 -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
5908 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5909 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5910 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5911 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5912 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
5913 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
5914 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
5915 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
5916 -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
5917 98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5918 -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
5919 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
5920 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5921 -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
5922 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5923 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5924 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5925 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5926 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
5927 -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
5928 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
5929 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
5930 -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
5931 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5932 -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
5933 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
5934 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5935 -1, -1, -1, 16, 142, 18, 19, 20, 21, 22,
5936 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5937 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5938 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5939 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
5940 63, 64, -1, -1, -1, -1, -1, -1, -1, -1,
5941 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5942 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
5943 93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
5944 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5945 -1, -1, 3, 4, 5, -1, 7, -1, -1, 122,
5946 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
5947 21, 22, 23, 24, -1, -1, -1, -1, 141, 30,
5948 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5949 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5950 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5951 -1, 62, 63, 64, -1, -1, -1, -1, -1, -1,
5952 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5953 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
5954 -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
5955 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
5956 -1, -1, -1, -1, 3, 4, 5, 6, 7, -1,
5957 -1, 122, 11, 12, -1, -1, -1, 16, -1, 18,
5958 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5959 141, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5960 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
5961 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5962 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
5963 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5964 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
5965 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
5966 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
5967 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
5968 -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
5969 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5970 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5971 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5972 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
5973 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
5974 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5975 -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
5976 90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
5977 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
5978 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5979 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
5980 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5981 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5982 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5983 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
5984 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
5985 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5986 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
5987 -1, 92, 93, -1, 95, 96, 97, 98, 99, 100,
5988 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
5989 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
5990 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
5991 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
5992 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5993 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
5994 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
5995 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
5996 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5997 -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
5998 92, 93, -1, 95, -1, 97, 98, 99, 100, 101,
5999 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
6000 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6001 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
6002 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
6003 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6004 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6005 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
6006 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
6007 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6008 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
6009 93, -1, -1, 96, 97, 98, 99, 100, 101, 102,
6010 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
6011 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
6012 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
6013 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6014 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6015 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6016 54, 55, 56, 57, 58, 59, 60, -1, 62, 63,
6017 64, -1, 66, 67, -1, -1, -1, -1, -1, -1,
6018 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6019 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
6020 -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
6021 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
6022 5, -1, 7, -1, -1, -1, 11, 12, 122, 123,
6023 124, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6024 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6025 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6026 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6027 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
6028 -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
6029 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6030 -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
6031 -1, -1, 97, 98, 99, 100, 101, 102, 103, -1,
6032 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
6033 -1, 7, -1, -1, -1, 11, 12, 122, 123, 124,
6034 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6035 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6036 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6037 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6038 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
6039 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
6040 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6041 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
6042 -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
6043 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
6044 7, -1, -1, -1, 11, 12, 122, 123, 124, 16,
6045 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6046 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6047 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
6048 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
6049 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
6050 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6051 -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
6052 -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
6053 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
6054 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
6055 -1, -1, -1, 11, 12, 122, 123, 124, 16, -1,
6056 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6057 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6058 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
6059 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6060 -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
6061 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6062 -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
6063 -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
6064 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
6065 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6066 -1, -1, 11, 12, 122, 123, 124, 16, -1, 18,
6067 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6068 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6069 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6070 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6071 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
6072 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6073 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
6074 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
6075 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
6076 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6077 -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
6078 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6079 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6080 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6081 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6082 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
6083 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6084 -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
6085 90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
6086 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
6087 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6088 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
6089 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
6090 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6091 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6092 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6093 -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
6094 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6095 -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
6096 -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
6097 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
6098 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6099 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
6100 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6101 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6102 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6103 52, 53, 54, 55, 56, 57, -1, 59, 60, -1,
6104 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
6105 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6106 -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
6107 92, 93, -1, -1, -1, 97, 98, 99, 100, 101,
6108 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
6109 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6110 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
6111 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
6112 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6113 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6114 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
6115 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
6116 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6117 -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
6118 93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
6119 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
6120 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
6121 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
6122 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6123 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6124 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6125 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
6126 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6127 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6128 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
6129 -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
6130 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6131 -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
6132 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6133 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6134 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6135 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6136 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
6137 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6138 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
6139 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
6140 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
6141 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6142 -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
6143 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6144 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6145 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6146 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
6147 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6148 -1, -1, -1, -1, -1, -1, -1, -1, -1, 83,
6149 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
6150 -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
6151 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6152 -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
6153 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6154 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6155 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6156 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6157 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
6158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6159 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
6160 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
6161 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
6162 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6163 -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
6164 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6165 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6166 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6167 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
6168 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6169 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6170 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
6171 -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
6172 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6173 -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
6174 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6175 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6176 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6177 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6178 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
6179 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6180 -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
6181 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
6182 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
6183 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6184 -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
6185 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6186 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6187 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6188 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
6189 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6190 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6191 -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
6192 -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
6193 -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
6194 -1, -1, -1, -1, -1, -1, -1, -1, 122, 66,
6195 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
6196 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
6197 -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
6198 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6199 -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
6200 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
6201 -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
6202 -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
6203 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
6204 -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
6205 -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
6206 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6207 -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
6208 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
6209 -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
6210 -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
6211 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
6212 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
6213 -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
6214 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6215 -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
6216 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
6217 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
6218 -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
6219 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
6220 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
6221 -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
6222 -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
6223 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
6224 123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
6225 -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
6226 143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
6227 -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
6228 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6229 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6230 -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
6231 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
6232 -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
6233 -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
6234 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
6235 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
6236 -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
6237 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6238 -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
6239 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
6240 -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
6241 -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
6242 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
6243 -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
6244 -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
6245 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6246 -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
6247 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
6248 -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
6249 -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
6250 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
6251 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
6252 -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
6253 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6254 -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
6255 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
6256 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
6257 -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
6258 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
6259 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
6260 -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
6261 -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
6262 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
6263 123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
6264 -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
6265 143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
6266 -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
6267 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6268 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6269 -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
6270 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
6271 -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
6272 -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
6273 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
6274 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
6275 -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
6276 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6277 -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
6278 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
6279 -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
6280 -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
6281 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
6282 -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
6283 -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
6284 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6285 -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
6286 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
6287 -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
6288 -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
6289 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
6290 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
6291 -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
6292 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6293 -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
6294 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
6295 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
6296 -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
6297 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
6298 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
6299 -1, -1, 95, -1, -1, -1, -1, -1, 44, -1,
6300 -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
6301 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
6302 123, 124, 68, 69, 70, 71, 72, 73, 74, 75,
6303 76, 77, 78, 79, 80, -1, -1, 83, 84, 142,
6304 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6305 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6306 -1, -1, -1, -1, 110, -1, 112, 113, 114, 115,
6307 116, 117, 118, 119, 120, 121
6309 static const yytype_uint16 yystos[] =
6311 0, 150, 151, 0, 1, 3, 4, 5, 6, 7,
6312 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
6313 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
6314 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6315 57, 59, 60, 62, 63, 64, 66, 67, 86, 89,
6316 90, 92, 93, 95, 97, 98, 99, 100, 101, 102,
6317 103, 122, 123, 124, 153, 154, 155, 158, 160, 161,
6318 164, 165, 167, 168, 169, 171, 172, 182, 196, 213,
6319 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
6320 245, 246, 256, 257, 258, 259, 260, 261, 262, 265,
6321 273, 275, 276, 277, 278, 279, 280, 303, 314, 155,
6322 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
6323 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
6324 23, 24, 25, 26, 30, 31, 32, 33, 34, 35,
6325 36, 37, 38, 39, 45, 46, 47, 48, 49, 50,
6326 51, 52, 53, 56, 66, 67, 68, 69, 70, 71,
6327 72, 73, 74, 77, 78, 81, 82, 83, 84, 95,
6328 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
6329 123, 124, 142, 175, 176, 177, 178, 180, 181, 273,
6330 275, 21, 22, 30, 39, 58, 86, 89, 95, 96,
6331 123, 164, 172, 182, 184, 189, 192, 194, 213, 277,
6332 279, 280, 301, 302, 189, 189, 143, 190, 191, 143,
6333 186, 190, 143, 148, 308, 54, 177, 308, 157, 137,
6334 31, 32, 182, 213, 303, 182, 56, 89, 153, 166,
6335 167, 158, 185, 194, 301, 314, 184, 300, 301, 314,
6336 46, 86, 122, 141, 171, 196, 213, 277, 280, 239,
6337 240, 54, 55, 57, 175, 268, 274, 267, 268, 268,
6338 147, 263, 147, 266, 59, 60, 160, 182, 182, 146,
6339 148, 307, 312, 313, 40, 41, 42, 43, 44, 37,
6340 38, 28, 243, 109, 141, 89, 95, 168, 109, 68,
6341 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
6342 79, 80, 83, 84, 110, 112, 113, 114, 115, 116,
6343 117, 118, 119, 120, 121, 85, 139, 140, 197, 158,
6344 159, 159, 200, 202, 159, 307, 313, 86, 165, 172,
6345 213, 229, 277, 280, 52, 56, 83, 86, 173, 174,
6346 213, 277, 280, 174, 33, 34, 35, 36, 49, 50,
6347 51, 52, 56, 143, 175, 278, 298, 85, 140, 26,
6348 137, 247, 259, 87, 87, 186, 190, 247, 141, 184,
6349 56, 184, 184, 109, 88, 141, 193, 314, 85, 139,
6350 140, 87, 87, 141, 193, 189, 308, 309, 189, 188,
6351 189, 314, 158, 309, 158, 54, 63, 64, 156, 143,
6352 183, 137, 153, 85, 140, 87, 166, 144, 309, 198,
6353 145, 141, 148, 311, 141, 311, 138, 311, 308, 56,
6354 59, 60, 168, 170, 141, 85, 139, 140, 52, 54,
6355 55, 56, 57, 89, 95, 96, 116, 119, 143, 241,
6356 284, 285, 286, 287, 288, 289, 292, 293, 294, 295,
6357 296, 61, 104, 105, 106, 269, 106, 269, 106, 65,
6358 106, 106, 264, 269, 106, 61, 106, 68, 68, 146,
6359 155, 159, 159, 159, 159, 155, 158, 158, 244, 95,
6360 160, 184, 194, 195, 166, 141, 171, 141, 160, 182,
6361 184, 195, 182, 182, 182, 182, 182, 182, 182, 182,
6362 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
6363 182, 182, 182, 182, 182, 182, 182, 182, 52, 53,
6364 56, 180, 186, 304, 305, 188, 52, 53, 56, 180,
6365 186, 304, 152, 153, 13, 225, 312, 225, 159, 159,
6366 307, 17, 250, 56, 85, 139, 140, 25, 158, 52,
6367 56, 173, 1, 113, 281, 312, 85, 139, 140, 209,
6368 299, 210, 85, 140, 306, 52, 56, 304, 304, 249,
6369 248, 160, 182, 160, 182, 94, 162, 179, 182, 184,
6370 95, 184, 192, 301, 52, 56, 188, 52, 56, 302,
6371 309, 144, 309, 309, 177, 199, 182, 153, 138, 304,
6372 304, 182, 309, 309, 301, 141, 170, 52, 56, 188,
6373 52, 56, 109, 52, 89, 95, 230, 231, 232, 286,
6374 284, 29, 107, 242, 141, 297, 314, 141, 297, 52,
6375 141, 297, 52, 271, 270, 147, 269, 147, 182, 182,
6376 76, 114, 234, 235, 314, 184, 141, 309, 170, 141,
6377 44, 308, 87, 87, 186, 190, 308, 310, 87, 87,
6378 186, 187, 190, 314, 10, 224, 8, 252, 314, 153,
6379 13, 153, 27, 226, 312, 226, 250, 194, 224, 52,
6380 56, 188, 52, 56, 204, 207, 312, 282, 206, 52,
6381 56, 173, 188, 152, 158, 143, 283, 284, 211, 187,
6382 190, 187, 190, 234, 234, 44, 163, 177, 184, 193,
6383 87, 310, 87, 87, 158, 138, 311, 168, 310, 184,
6384 232, 141, 286, 141, 309, 146, 236, 314, 153, 153,
6385 287, 292, 294, 296, 288, 289, 294, 288, 153, 54,
6386 55, 57, 272, 280, 52, 233, 236, 288, 290, 291,
6387 294, 296, 153, 95, 184, 170, 182, 111, 160, 182,
6388 182, 162, 145, 87, 160, 182, 160, 182, 162, 184,
6389 195, 253, 314, 15, 228, 314, 14, 227, 228, 228,
6390 201, 203, 224, 141, 225, 310, 159, 312, 159, 152,
6391 310, 224, 309, 284, 152, 312, 175, 153, 153, 182,
6392 234, 87, 309, 309, 231, 141, 95, 230, 52, 237,
6393 238, 285, 309, 10, 138, 141, 297, 141, 297, 141,
6394 297, 141, 297, 297, 138, 109, 236, 114, 141, 297,
6395 141, 297, 141, 297, 10, 184, 182, 160, 182, 88,
6396 254, 314, 153, 9, 255, 314, 159, 224, 224, 153,
6397 153, 184, 153, 226, 208, 312, 224, 309, 224, 212,
6398 10, 138, 153, 141, 231, 141, 286, 141, 288, 294,
6399 288, 288, 86, 213, 114, 291, 294, 288, 290, 294,
6400 288, 86, 172, 213, 277, 280, 225, 153, 225, 224,
6401 224, 228, 250, 251, 205, 152, 283, 138, 231, 141,
6402 238, 297, 141, 297, 297, 297, 56, 85, 141, 297,
6403 141, 297, 297, 141, 297, 297, 56, 85, 139, 140,
6404 153, 153, 153, 224, 152, 231, 288, 52, 56, 288,
6405 294, 288, 288, 52, 56, 188, 52, 56, 252, 227,
6406 224, 224, 297, 297, 141, 297, 297, 297, 310, 288,
6410 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
6415 ((void) (yyoutput));
6423 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
6426 fprintf (yyoutput, "token %s (", yytname[yytype]);
6428 fprintf (yyoutput, "nterm %s (", yytname[yytype]);
6429 yy_symbol_value_print (yyoutput, yytype, yyvaluep, parser);
6430 fprintf (yyoutput, ")");
6433 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
6435 fprintf (stderr, "Stack now");
6436 for (; bottom <= top; ++bottom)
6437 fprintf (stderr, " %d", *bottom);
6438 fprintf (stderr, "\n");
6441 yy_reduce_print (YYSTYPE *yyvsp, int yyrule, struct parser_params *parser)
6443 int yynrhs = yyr2[yyrule];
6445 unsigned long int yylno = yyrline[yyrule];
6446 fprintf (stderr, "Reducing stack by rule %d (line %lu):\n",
6448 for (yyi = 0; yyi < yynrhs; yyi++)
6450 fprintf (stderr, " $%d = ", yyi + 1);
6451 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
6452 &(yyvsp[(yyi + 1) - (yynrhs)])
6454 fprintf (stderr, "\n");
6458 yytnamerr (char *yyres, const char *yystr)
6462 unsigned int yyn = 0;
6463 char const *yyp = yystr;
6469 goto do_not_strip_quotes;
6472 goto do_not_strip_quotes;
6483 do_not_strip_quotes: ;
6486 return strlen (yystr);
6487 return __builtin_stpcpy (yyres, yystr) - yyres;
6490 yysyntax_error (char *yyresult, int yystate, int yychar)
6492 int yyn = yypact[yystate];
6493 if (! (-747 < yyn && yyn <= 10225))
6497 int yytype = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
6498 unsigned int yysize0 = yytnamerr (0, yytname[yytype]);
6499 unsigned int yysize = yysize0;
6500 unsigned int yysize1;
6501 int yysize_overflow = 0;
6502 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
6503 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
6507 static char const yyunexpected[] = "syntax error, unexpected %s";
6508 static char const yyexpecting[] = ", expecting %s";
6509 static char const yyor[] = " or %s";
6510 char yyformat[sizeof yyunexpected
6511 + sizeof yyexpecting - 1
6512 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
6513 * (sizeof yyor - 1))];
6514 char const *yyprefix = yyexpecting;
6515 int yyxbegin = yyn < 0 ? -yyn : 0;
6516 int yychecklim = 10225 - yyn + 1;
6517 int yyxend = yychecklim < 149 ? yychecklim : 149;
6519 yyarg[0] = yytname[yytype];
6520 yyfmt = __builtin_stpcpy (yyformat, yyunexpected);
6521 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6522 if (yycheck[yyx + yyn] == yyx && yyx != 1)
6524 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
6528 yyformat[sizeof yyunexpected - 1] = '\0';
6531 yyarg[yycount++] = yytname[yyx];
6532 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
6533 yysize_overflow |= (yysize1 < yysize);
6535 yyfmt = __builtin_stpcpy (yyfmt, yyprefix);
6539 yysize1 = yysize + strlen (yyf);
6540 yysize_overflow |= (yysize1 < yysize);
6542 if (yysize_overflow)
6543 return ((unsigned int) -1);
6546 char *yyp = yyresult;
6548 while ((*yyp = *yyf) != '\0')
6550 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
6552 yyp += yytnamerr (yyp, yyarg[yyi++]);
6566 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_params *parser)
6568 ((void) (yyvaluep));
6572 do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", yymsg); yy_symbol_print (stderr, yytype, yyvaluep, parser); fprintf (stderr, "\n"); } } while ((0));
6579 int ruby_yyparse (struct parser_params *parser);
6581 ruby_yyparse (struct parser_params *parser)
6592 char *yymsg = yymsgbuf;
6593 unsigned int yymsg_alloc = sizeof yymsgbuf;
6594 yytype_int16 yyssa[200];
6595 yytype_int16 *yyss = yyssa;
6596 yytype_int16 *yyssp;
6598 YYSTYPE *yyvs = yyvsa;
6600 unsigned int yystacksize = 200;
6603 do { if ((parser->parser_yydebug)) fprintf (stderr, "Starting parse\n"); } while ((0));
6615 if (yyss + yystacksize - 1 <= yyssp)
6617 unsigned int yysize = yyssp - yyss + 1;
6618 if (10000 <= yystacksize)
6619 goto yyexhaustedlab;
6621 if (10000 < yystacksize)
6622 yystacksize = 10000;
6624 yytype_int16 *yyss1 = yyss;
6625 union yyalloc *yyptr =
6626 (union yyalloc *) rb_parser_malloc(parser, ((yystacksize) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) + (sizeof (union yyalloc) - 1)));
6628 goto yyexhaustedlab;
6629 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));
6630 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));
6632 rb_parser_free(parser, yyss1);
6634 yyssp = yyss + yysize - 1;
6635 yyvsp = yyvs + yysize - 1;
6636 do { if ((parser->parser_yydebug)) fprintf (stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize); } while ((0));
6637 if (yyss + yystacksize - 1 <= yyssp)
6640 do { if ((parser->parser_yydebug)) fprintf (stderr, "Entering state %d\n", yystate); } while ((0));
6643 yyn = yypact[yystate];
6648 do { if ((parser->parser_yydebug)) fprintf (stderr, "Reading a token: "); } while ((0));
6649 yychar = yylex (&yylval, parser);
6653 yychar = yytoken = 0;
6654 do { if ((parser->parser_yydebug)) fprintf (stderr, "Now at end of input.\n"); } while ((0));
6658 yytoken = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
6659 do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Next token is"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
6662 if (yyn < 0 || 10225 < yyn || yycheck[yyn] != yytoken)
6667 if (yyn == 0 || yyn == -555)
6676 do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
6683 yyn = yydefact[yystate];
6689 yyval = yyvsp[1-yylen];
6690 do { if ((parser->parser_yydebug)) yy_reduce_print (yyvsp, yyn, parser); } while ((0));
6695 (parser->parser_lex_state) = EXPR_BEG;
6696 local_push_gen(parser,(parser->parser_compile_for_eval));
6701 if ((yyvsp[(2) - (2)].node) && !(parser->parser_compile_for_eval)) {
6702 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))));
6704 NODE *node = (yyvsp[(2) - (2)].node);
6705 while (node->u3.node) {
6706 node = node->u3.node;
6708 void_expr_gen(parser, ((node->u1.node) = remove_begin(node->u1.node)));
6711 (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));
6712 local_pop_gen(parser);
6717 (yyval.node) = (yyvsp[(1) - (4)].node);
6718 if ((yyvsp[(2) - (4)].node)) {
6719 (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].node)));
6721 else if ((yyvsp[(3) - (4)].node)) {
6722 rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "else without rescue is useless");
6723 (yyval.node) = block_append_gen(parser,(yyval.node),(yyvsp[(3) - (4)].node));
6725 if ((yyvsp[(4) - (4)].node)) {
6727 (yyval.node) = node_newnode(parser, (NODE_ENSURE), (VALUE)((yyval.node)), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)));
6730 (yyval.node) = block_append_gen(parser,(yyvsp[(4) - (4)].node),node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
6733 fixpos((yyval.node), (yyvsp[(1) - (4)].node));
6738 void_stmts_gen(parser, (yyvsp[(1) - (2)].node));
6739 fixup_nodes(&(parser->parser_deferred_nodes));
6740 (yyval.node) = (yyvsp[(1) - (2)].node);
6745 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
6750 (yyval.node) = newline_node((yyvsp[(1) - (1)].node));
6755 (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (3)].node),newline_node((yyvsp[(3) - (3)].node)));
6760 (yyval.node) = remove_begin((yyvsp[(2) - (2)].node));
6764 {(parser->parser_lex_state) = EXPR_FNAME;;}
6768 (yyval.node) = node_newnode(parser, (NODE_ALIAS), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0));
6773 (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
6779 sprintf(buf, "$%c", (char)(yyvsp[(3) - (3)].node)->u2.argc);
6780 (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));
6785 parser_yyerror(parser, "can't make alias for the number variables");
6786 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
6791 (yyval.node) = (yyvsp[(2) - (2)].node);
6796 (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(0));
6797 fixpos((yyval.node), (yyvsp[(3) - (3)].node));
6802 (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))));
6803 fixpos((yyval.node), (yyvsp[(3) - (3)].node));
6808 if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
6809 (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
6812 (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
6818 if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
6819 (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
6822 (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
6828 NODE *resq = node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(3) - (3)].node))), (VALUE)(0));
6829 (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(resq), (VALUE)(0));
6834 if ((parser->parser_in_def) || (parser->parser_in_single)) {
6835 parser_yyerror(parser, "BEGIN in method");
6841 (parser->parser_eval_tree_begin) = block_append_gen(parser,(parser->parser_eval_tree_begin),(yyvsp[(4) - (5)].node));
6842 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
6847 if ((parser->parser_in_def) || (parser->parser_in_single)) {
6848 rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "END in method; use at_exit");
6850 (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));
6855 value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
6856 (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
6861 value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
6862 (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
6863 (yyval.node) = (yyvsp[(1) - (3)].node);
6868 value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
6869 if ((yyvsp[(1) - (3)].node)) {
6870 ID vid = (yyvsp[(1) - (3)].node)->u1.id;
6871 if ((yyvsp[(2) - (3)].id) == 331) {
6872 (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
6873 (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
6874 if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
6875 (yyval.node)->u3.id = vid;
6878 else if ((yyvsp[(2) - (3)].id) == 330) {
6879 (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
6880 (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
6883 (yyval.node) = (yyvsp[(1) - (3)].node);
6884 (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))));
6888 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
6895 value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
6896 if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
6897 args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
6898 if ((yyvsp[(5) - (6)].id) == 331) {
6899 (yyvsp[(5) - (6)].id) = 0;
6901 else if ((yyvsp[(5) - (6)].id) == 330) {
6902 (yyvsp[(5) - (6)].id) = 1;
6904 (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
6905 fixpos((yyval.node), (yyvsp[(1) - (6)].node));
6910 value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
6911 if ((yyvsp[(4) - (5)].id) == 331) {
6912 (yyvsp[(4) - (5)].id) = 0;
6914 else if ((yyvsp[(4) - (5)].id) == 330) {
6915 (yyvsp[(4) - (5)].id) = 1;
6917 (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))))));
6918 fixpos((yyval.node), (yyvsp[(1) - (5)].node));
6923 value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
6924 if ((yyvsp[(4) - (5)].id) == 331) {
6925 (yyvsp[(4) - (5)].id) = 0;
6927 else if ((yyvsp[(4) - (5)].id) == 330) {
6928 (yyvsp[(4) - (5)].id) = 1;
6930 (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))))));
6931 fixpos((yyval.node), (yyvsp[(1) - (5)].node));
6936 value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
6937 if ((yyvsp[(4) - (5)].id) == 331) {
6938 (yyvsp[(4) - (5)].id) = 0;
6940 else if ((yyvsp[(4) - (5)].id) == 330) {
6941 (yyvsp[(4) - (5)].id) = 1;
6943 (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))))));
6944 fixpos((yyval.node), (yyvsp[(1) - (5)].node));
6949 rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
6950 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
6955 value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
6956 (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
6961 (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
6962 (yyval.node) = (yyvsp[(1) - (3)].node);
6967 (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
6968 (yyval.node) = (yyvsp[(1) - (3)].node);
6973 (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
6978 (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
6983 (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (3)].node)),'!');
6988 (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
6993 value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
6994 (yyval.node) = (yyvsp[(1) - (1)].node);
6995 if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7000 (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
7005 (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
7010 (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
7015 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
7020 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
7025 dyna_push_gen(parser);
7026 (yyval.num) = (parser->parser_ruby_sourceline);
7031 (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));
7032 ((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)));
7033 dyna_pop_gen(parser);
7038 (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
7039 fixpos((yyval.node), (yyvsp[(2) - (2)].node));
7044 block_dup_check_gen(parser,(yyvsp[(2) - (3)].node),(yyvsp[(3) - (3)].node));
7045 (yyvsp[(3) - (3)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (3)].id)), (VALUE)((yyvsp[(2) - (3)].node)));
7046 (yyval.node) = (yyvsp[(3) - (3)].node);
7047 fixpos((yyval.node), (yyvsp[(2) - (3)].node));
7052 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
7053 fixpos((yyval.node), (yyvsp[(1) - (4)].node));
7058 block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
7059 (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)));
7060 (yyval.node) = (yyvsp[(5) - (5)].node);
7061 fixpos((yyval.node), (yyvsp[(1) - (5)].node));
7066 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
7067 fixpos((yyval.node), (yyvsp[(1) - (4)].node));
7072 block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
7073 (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)));
7074 (yyval.node) = (yyvsp[(5) - (5)].node);
7075 fixpos((yyval.node), (yyvsp[(1) - (5)].node));
7080 (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
7081 fixpos((yyval.node), (yyvsp[(2) - (2)].node));
7086 (yyval.node) = new_yield_gen(parser, (yyvsp[(2) - (2)].node));
7087 fixpos((yyval.node), (yyvsp[(2) - (2)].node));
7092 (yyval.node) = (yyvsp[(2) - (3)].node);
7097 (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));
7102 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
7107 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(list_append_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
7112 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)((yyvsp[(3) - (3)].node)));
7117 (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))));
7122 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(-1));
7127 (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))));
7132 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
7137 (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))));
7142 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
7147 (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))));
7152 (yyval.node) = (yyvsp[(2) - (3)].node);
7157 (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(1), (VALUE)(0));
7162 (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
7167 (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
7172 (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
7177 (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
7182 (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
7187 (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7192 (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7197 (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7202 if ((parser->parser_in_def) || (parser->parser_in_single))
7203 parser_yyerror(parser, "dynamic constant assignment");
7204 (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))));
7209 if ((parser->parser_in_def) || (parser->parser_in_single))
7210 parser_yyerror(parser, "dynamic constant assignment");
7211 (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))));
7216 rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
7217 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7222 if (!((yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7227 (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
7232 (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7237 (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7242 (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7247 if ((parser->parser_in_def) || (parser->parser_in_single))
7248 parser_yyerror(parser, "dynamic constant assignment");
7249 (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))));
7254 if ((parser->parser_in_def) || (parser->parser_in_single))
7255 parser_yyerror(parser, "dynamic constant assignment");
7256 (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))));
7261 rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
7262 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7267 parser_yyerror(parser, "class/module name must be CONSTANT");
7272 (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
7277 (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)(0), (VALUE)((yyval.node)), (VALUE)(0));
7282 (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
7287 (parser->parser_lex_state) = EXPR_END;
7288 (yyval.id) = (yyvsp[(1) - (1)].id);
7293 (parser->parser_lex_state) = EXPR_END;
7294 (yyval.id) = (yyvsp[(1) - (1)].id);
7299 (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
7304 (yyval.node) = node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0));
7308 {(parser->parser_lex_state) = EXPR_FNAME;;}
7312 (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0)));
7316 { (yyval.id) = '|'; ;}
7319 { (yyval.id) = '^'; ;}
7322 { (yyval.id) = '&'; ;}
7325 { (yyval.id) = 324; ;}
7328 { (yyval.id) = 325; ;}
7331 { (yyval.id) = 326; ;}
7334 { (yyval.id) = 332; ;}
7337 { (yyval.id) = 333; ;}
7340 { (yyval.id) = '>'; ;}
7343 { (yyval.id) = 328; ;}
7346 { (yyval.id) = '<'; ;}
7349 { (yyval.id) = 329; ;}
7352 { (yyval.id) = 327; ;}
7355 { (yyval.id) = 338; ;}
7358 { (yyval.id) = 339; ;}
7361 { (yyval.id) = '+'; ;}
7364 { (yyval.id) = '-'; ;}
7367 { (yyval.id) = '*'; ;}
7370 { (yyval.id) = '*'; ;}
7373 { (yyval.id) = '/'; ;}
7376 { (yyval.id) = '%'; ;}
7379 { (yyval.id) = 323; ;}
7382 { (yyval.id) = '!'; ;}
7385 { (yyval.id) = '~'; ;}
7388 { (yyval.id) = 321; ;}
7391 { (yyval.id) = 322; ;}
7394 { (yyval.id) = 336; ;}
7397 { (yyval.id) = 337; ;}
7400 { (yyval.id) = '`'; ;}
7404 value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
7405 (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
7410 value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
7411 (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));
7412 (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node));
7417 value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
7418 if ((yyvsp[(1) - (3)].node)) {
7419 ID vid = (yyvsp[(1) - (3)].node)->u1.id;
7420 if ((yyvsp[(2) - (3)].id) == 331) {
7421 (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
7422 (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
7423 if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
7424 (yyval.node)->u3.id = vid;
7427 else if ((yyvsp[(2) - (3)].id) == 330) {
7428 (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
7429 (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
7432 (yyval.node) = (yyvsp[(1) - (3)].node);
7433 (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))));
7437 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7443 value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
7444 (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));
7445 if ((yyvsp[(1) - (5)].node)) {
7446 ID vid = (yyvsp[(1) - (5)].node)->u1.id;
7447 if ((yyvsp[(2) - (5)].id) == 331) {
7448 (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
7449 (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
7450 if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
7451 (yyval.node)->u3.id = vid;
7454 else if ((yyvsp[(2) - (5)].id) == 330) {
7455 (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
7456 (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
7459 (yyval.node) = (yyvsp[(1) - (5)].node);
7460 (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))));
7464 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7471 value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
7472 if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7473 args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
7474 if ((yyvsp[(5) - (6)].id) == 331) {
7475 (yyvsp[(5) - (6)].id) = 0;
7477 else if ((yyvsp[(5) - (6)].id) == 330) {
7478 (yyvsp[(5) - (6)].id) = 1;
7480 (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
7481 fixpos((yyval.node), (yyvsp[(1) - (6)].node));
7486 value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
7487 if ((yyvsp[(4) - (5)].id) == 331) {
7488 (yyvsp[(4) - (5)].id) = 0;
7490 else if ((yyvsp[(4) - (5)].id) == 330) {
7491 (yyvsp[(4) - (5)].id) = 1;
7493 (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))))));
7494 fixpos((yyval.node), (yyvsp[(1) - (5)].node));
7499 value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
7500 if ((yyvsp[(4) - (5)].id) == 331) {
7501 (yyvsp[(4) - (5)].id) = 0;
7503 else if ((yyvsp[(4) - (5)].id) == 330) {
7504 (yyvsp[(4) - (5)].id) = 1;
7506 (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))))));
7507 fixpos((yyval.node), (yyvsp[(1) - (5)].node));
7512 value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
7513 if ((yyvsp[(4) - (5)].id) == 331) {
7514 (yyvsp[(4) - (5)].id) = 0;
7516 else if ((yyvsp[(4) - (5)].id) == 330) {
7517 (yyvsp[(4) - (5)].id) = 1;
7519 (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))))));
7520 fixpos((yyval.node), (yyvsp[(1) - (5)].node));
7525 parser_yyerror(parser, "constant re-assignment");
7526 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7531 parser_yyerror(parser, "constant re-assignment");
7532 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7537 rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
7538 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7543 value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
7544 value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
7545 (yyval.node) = node_newnode(parser, (NODE_DOT2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
7546 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) &&
7547 ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
7548 (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
7554 value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
7555 value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
7556 (yyval.node) = node_newnode(parser, (NODE_DOT3), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
7557 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) &&
7558 ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
7559 (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
7565 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'+',(yyvsp[(3) - (3)].node));
7570 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'-',(yyvsp[(3) - (3)].node));
7575 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'*',(yyvsp[(3) - (3)].node));
7580 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'/',(yyvsp[(3) - (3)].node));
7585 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'%',(yyvsp[(3) - (3)].node));
7590 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),323,(yyvsp[(3) - (3)].node));
7595 (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));
7600 (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));
7605 (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),321);
7610 (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),322);
7615 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'|',(yyvsp[(3) - (3)].node));
7620 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'^',(yyvsp[(3) - (3)].node));
7625 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'&',(yyvsp[(3) - (3)].node));
7630 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),324,(yyvsp[(3) - (3)].node));
7635 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'>',(yyvsp[(3) - (3)].node));
7640 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),328,(yyvsp[(3) - (3)].node));
7645 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'<',(yyvsp[(3) - (3)].node));
7650 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),329,(yyvsp[(3) - (3)].node));
7655 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),325,(yyvsp[(3) - (3)].node));
7660 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),326,(yyvsp[(3) - (3)].node));
7665 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),327,(yyvsp[(3) - (3)].node));
7670 (yyval.node) = match_op_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
7671 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) {
7672 (yyval.node) = reg_named_capture_assign_gen(parser,(yyvsp[(1) - (3)].node)->u1.value,(yyval.node));
7678 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),333,(yyvsp[(3) - (3)].node));
7683 (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
7688 (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),'~');
7693 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),338,(yyvsp[(3) - (3)].node));
7698 (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),339,(yyvsp[(3) - (3)].node));
7703 (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
7708 (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
7712 {(parser->parser_in_defined) = 1;;}
7716 (parser->parser_in_defined) = 0;
7717 (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0), (VALUE)(0));
7722 value_expr_gen(parser, ((yyvsp[(1) - (6)].node)) = remove_begin((yyvsp[(1) - (6)].node)));
7723 (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)));
7724 fixpos((yyval.node), (yyvsp[(1) - (6)].node));
7729 (yyval.node) = (yyvsp[(1) - (1)].node);
7734 value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
7735 (yyval.node) = (yyvsp[(1) - (1)].node);
7736 if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7741 (yyval.node) = (yyvsp[(1) - (2)].node);
7746 (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
7751 (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));
7756 (yyval.node) = (yyvsp[(2) - (3)].node);
7761 (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
7766 (yyval.node) = arg_blk_pass((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
7771 (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));
7772 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(2) - (2)].node));
7777 (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
7778 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(4) - (4)].node));
7783 (yyval.num) = (parser->parser_cmdarg_stack);
7784 ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((1)&1));
7789 (parser->parser_cmdarg_stack) = (yyvsp[(1) - (2)].num);
7790 (yyval.node) = (yyvsp[(2) - (2)].node);
7795 (yyval.node) = node_newnode(parser, (NODE_BLOCK_PASS), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0));
7800 (yyval.node) = (yyvsp[(2) - (2)].node);
7815 (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
7820 (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
7826 if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
7827 (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
7830 (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
7837 if ((((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) && (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
7838 (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
7841 (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
7848 if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
7849 (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
7852 (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
7859 if (((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY &&
7860 (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
7861 (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
7864 (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
7870 (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
7875 (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0));
7880 (yyval.num) = (parser->parser_ruby_sourceline);
7885 if ((yyvsp[(3) - (4)].node) == ((void *)0)) {
7886 (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7889 if (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_RESCUE ||
7890 ((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ENSURE)
7891 ((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)));
7892 (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
7894 ((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)));
7898 {(parser->parser_lex_state) = EXPR_ENDARG;;}
7902 rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "(...) interpreted as grouped expression");
7903 (yyval.node) = (yyvsp[(2) - (4)].node);
7908 (yyval.node) = (yyvsp[(2) - (3)].node);
7913 (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
7918 (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
7923 if ((yyvsp[(2) - (3)].node) == 0) {
7924 (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7927 (yyval.node) = (yyvsp[(2) - (3)].node);
7933 (yyval.node) = node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(0), (VALUE)(0));
7938 (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7943 (yyval.node) = new_yield_gen(parser, (yyvsp[(3) - (4)].node));
7948 (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
7953 (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
7957 {(parser->parser_in_defined) = 1;;}
7961 (parser->parser_in_defined) = 0;
7962 (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0), (VALUE)(0));
7967 (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (4)].node)),'!');
7972 (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0))),'!');
7977 (yyvsp[(2) - (2)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)(0));
7978 (yyval.node) = (yyvsp[(2) - (2)].node);
7979 fixpos((yyvsp[(2) - (2)].node)->u3.node, (yyvsp[(2) - (2)].node));
7984 block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
7985 (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
7986 (yyval.node) = (yyvsp[(2) - (2)].node);
7987 fixpos((yyval.node), (yyvsp[(1) - (2)].node));
7992 (yyval.node) = (yyvsp[(2) - (2)].node);
7997 (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)));
7998 fixpos((yyval.node), (yyvsp[(2) - (6)].node));
8003 (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)));
8004 fixpos((yyval.node), (yyvsp[(2) - (6)].node));
8008 {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
8011 {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
8015 (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
8016 fixpos((yyval.node), (yyvsp[(3) - (7)].node));
8020 {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
8023 {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
8027 (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
8028 fixpos((yyval.node), (yyvsp[(3) - (7)].node));
8033 (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)(0));
8034 fixpos((yyval.node), (yyvsp[(2) - (5)].node));
8039 (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
8043 {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
8046 {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
8050 ID id = internal_id_gen(parser);
8051 ID *tbl = (ID*)ruby_xmalloc2((2),sizeof(ID));
8052 NODE *m = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8054 if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_MASGN) {
8055 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));
8056 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));
8057 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))));
8058 args = new_args_gen(parser, m,0,id,0,0);
8061 if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LASGN ||
8062 ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN ||
8063 ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN_CURR) {
8064 (yyvsp[(2) - (9)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
8066 m->u3.node = (yyvsp[(2) - (9)].node);
8067 args = new_args_gen(parser, m,0,0,0,0);
8070 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)));
8071 args = new_args_gen(parser, m,0,id,0,0);
8074 scope = node_newnode(parser, (NODE_SCOPE), (VALUE)(tbl), (VALUE)((yyvsp[(8) - (9)].node)), (VALUE)(args));
8075 tbl[0] = 1; tbl[1] = id;
8076 (yyval.node) = node_newnode(parser, (NODE_FOR), (VALUE)(0), (VALUE)(scope), (VALUE)((yyvsp[(5) - (9)].node)));
8077 fixpos((yyval.node), (yyvsp[(2) - (9)].node));
8082 if ((parser->parser_in_def) || (parser->parser_in_single))
8083 parser_yyerror(parser, "class definition in method body");
8084 local_push_gen(parser,0);
8085 (yyval.num) = (parser->parser_ruby_sourceline);
8090 (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))));
8091 ((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)));
8092 local_pop_gen(parser);
8097 (yyval.num) = (parser->parser_in_def);
8098 (parser->parser_in_def) = 0;
8103 (yyval.num) = (parser->parser_in_single);
8104 (parser->parser_in_single) = 0;
8105 local_push_gen(parser,0);
8110 (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));
8111 fixpos((yyval.node), (yyvsp[(3) - (8)].node));
8112 local_pop_gen(parser);
8113 (parser->parser_in_def) = (yyvsp[(4) - (8)].num);
8114 (parser->parser_in_single) = (yyvsp[(6) - (8)].num);
8119 if ((parser->parser_in_def) || (parser->parser_in_single))
8120 parser_yyerror(parser, "module definition in method body");
8121 local_push_gen(parser,0);
8122 (yyval.num) = (parser->parser_ruby_sourceline);
8127 (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));
8128 ((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)));
8129 local_pop_gen(parser);
8134 (yyval.id) = (parser->parser_cur_mid);
8135 (parser->parser_cur_mid) = (yyvsp[(2) - (2)].id);
8136 (parser->parser_in_def)++;
8137 local_push_gen(parser,0);
8142 NODE *body = remove_begin((yyvsp[(5) - (6)].node));
8143 reduce_nodes_gen(parser,&body);
8144 (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)))));
8145 fixpos((yyval.node), (yyvsp[(4) - (6)].node));
8146 fixpos((yyval.node)->u3.node, (yyvsp[(4) - (6)].node));
8147 local_pop_gen(parser);
8148 (parser->parser_in_def)--;
8149 (parser->parser_cur_mid) = (yyvsp[(3) - (6)].id);
8153 {(parser->parser_lex_state) = EXPR_FNAME;;}
8157 (parser->parser_in_single)++;
8158 (parser->parser_lex_state) = EXPR_END;
8159 local_push_gen(parser,0);
8164 NODE *body = remove_begin((yyvsp[(8) - (9)].node));
8165 reduce_nodes_gen(parser,&body);
8166 (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)))));
8167 fixpos((yyval.node), (yyvsp[(2) - (9)].node));
8168 fixpos((yyval.node)->u3.node, (yyvsp[(2) - (9)].node));
8169 local_pop_gen(parser);
8170 (parser->parser_in_single)--;
8175 (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8180 (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8185 (yyval.node) = node_newnode(parser, (NODE_REDO), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8190 (yyval.node) = node_newnode(parser, (NODE_RETRY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8195 value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
8196 (yyval.node) = (yyvsp[(1) - (1)].node);
8197 if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8202 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "begin");
8207 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "if");
8212 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "unless");
8217 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "while");
8222 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "until");
8227 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "case");
8232 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "for");
8237 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "class");
8242 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "module");
8247 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "def");
8252 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_pop(parser, "end");
8257 (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)));
8258 fixpos((yyval.node), (yyvsp[(2) - (5)].node));
8263 (yyval.node) = (yyvsp[(2) - (2)].node);
8268 (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
8273 (yyval.node) = (yyvsp[(2) - (3)].node);
8278 (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
8283 (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
8288 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
8293 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (4)].id), 0)));
8298 (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))));
8303 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)(-1));
8308 (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))));
8313 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (2)].id), 0)));
8318 (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))));
8323 (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
8328 (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))));
8333 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
8338 (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));
8343 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
8348 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8353 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
8358 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,1,0,0);
8363 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8368 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
8373 (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
8378 (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8383 (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
8388 (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
8393 (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
8398 (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
8403 (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
8408 (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
8423 (yyval.node) = (yyvsp[(2) - (4)].node);
8433 new_bv_gen(parser, (yyvsp[(1) - (1)].id));
8443 dyna_push_gen(parser);
8444 (yyval.num) = (parser->parser_lpar_beg);
8445 (parser->parser_lpar_beg) = ++(parser->parser_paren_nest);
8450 (parser->parser_lpar_beg) = (yyvsp[(1) - (3)].num);
8451 (yyval.node) = (yyvsp[(2) - (3)].node);
8452 (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));
8453 dyna_pop_gen(parser);
8458 (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)(0), (VALUE)(0));
8463 (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
8468 (yyval.node) = (yyvsp[(2) - (3)].node);
8473 (yyval.node) = (yyvsp[(2) - (3)].node);
8478 dyna_push_gen(parser);
8479 (yyval.num) = (parser->parser_ruby_sourceline);
8484 (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));
8485 ((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)));
8486 dyna_pop_gen(parser);
8491 if (((int) (((((struct RNode*)((yyvsp[(1) - (2)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_YIELD) {
8492 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block given to yield");
8495 block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
8497 (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
8498 (yyval.node) = (yyvsp[(2) - (2)].node);
8499 fixpos((yyval.node), (yyvsp[(1) - (2)].node));
8504 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
8509 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
8514 (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
8515 fixpos((yyval.node), (yyvsp[(2) - (2)].node));
8520 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
8521 fixpos((yyval.node), (yyvsp[(1) - (4)].node));
8526 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
8527 fixpos((yyval.node), (yyvsp[(1) - (4)].node));
8532 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
8537 (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)));
8538 fixpos((yyval.node), (yyvsp[(1) - (3)].node));
8543 (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)));
8544 fixpos((yyval.node), (yyvsp[(1) - (3)].node));
8549 (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
8554 (yyval.node) = node_newnode(parser, (NODE_ZSUPER), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8559 if ((yyvsp[(1) - (4)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
8560 (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
8562 (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
8563 fixpos((yyval.node), (yyvsp[(1) - (4)].node));
8568 dyna_push_gen(parser);
8569 (yyval.num) = (parser->parser_ruby_sourceline);
8574 (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));
8575 ((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)));
8576 ((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)));
8577 ((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)));
8578 dyna_pop_gen(parser);
8583 dyna_push_gen(parser);
8584 (yyval.num) = (parser->parser_ruby_sourceline);
8589 (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));
8590 ((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)));
8591 dyna_pop_gen(parser);
8596 (yyval.node) = node_newnode(parser, (NODE_WHEN), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
8601 if ((yyvsp[(3) - (6)].node)) {
8602 (yyvsp[(3) - (6)].node) = node_assign_gen(parser, (yyvsp[(3) - (6)].node), node_newnode(parser, (NODE_ERRINFO), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
8603 (yyvsp[(5) - (6)].node) = block_append_gen(parser,(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].node));
8605 (yyval.node) = node_newnode(parser, (NODE_RESBODY), (VALUE)((yyvsp[(6) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)((yyvsp[(2) - (6)].node)));
8606 fixpos((yyval.node), (yyvsp[(2) - (6)].node)?(yyvsp[(2) - (6)].node):(yyvsp[(5) - (6)].node));
8611 (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
8616 if (!((yyval.node) = splat_array((yyvsp[(1) - (1)].node)))) (yyval.node) = (yyvsp[(1) - (1)].node);
8621 (yyval.node) = (yyvsp[(2) - (2)].node);
8626 (yyval.node) = (yyvsp[(2) - (2)].node);
8631 (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
8636 NODE *node = (yyvsp[(1) - (1)].node);
8638 node = node_newnode(parser, (NODE_STR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
8641 node = evstr2dstr_gen(parser,node);
8643 (yyval.node) = node;
8648 (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
8653 (yyval.node) = (yyvsp[(2) - (3)].node);
8658 NODE *node = (yyvsp[(2) - (3)].node);
8660 node = node_newnode(parser, (NODE_XSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
8663 switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
8665 ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_XSTR)<<8)&(((VALUE)0x7f)<<8)));
8668 ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DXSTR)<<8)&(((VALUE)0x7f)<<8)));
8671 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))));
8675 (yyval.node) = node;
8680 int options = (yyvsp[(3) - (3)].num);
8681 NODE *node = (yyvsp[(2) - (3)].node);
8684 node = node_newnode(parser, (NODE_LIT), (VALUE)(reg_compile_gen(parser, rb_enc_str_new(0,0,parser->enc), options)), (VALUE)(0), (VALUE)(0));
8686 else switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
8689 VALUE src = node->u1.value;
8690 ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
8691 node->u1.value = reg_compile_gen(parser, src, options);
8695 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))));
8697 if (options & (1<<16)) {
8698 ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX_ONCE)<<8)&(((VALUE)0x7f)<<8)));
8701 ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX)<<8)&(((VALUE)0x7f)<<8)));
8703 node->u2.id = options & 0xff;
8704 reg_fragment_check_gen(parser, node->u1.value, options);
8705 for (list = node->u3.node; list; list = list->u3.node) {
8706 if (((int) (((((struct RNode*)(list->u1.node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_STR) {
8707 reg_fragment_check_gen(parser, list->u1.node->u1.value, options);
8712 (yyval.node) = node;
8717 (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8722 (yyval.node) = (yyvsp[(2) - (3)].node);
8732 (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),evstr2dstr_gen(parser,(yyvsp[(2) - (3)].node)));
8737 (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
8742 (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8747 (yyval.node) = (yyvsp[(2) - (3)].node);
8757 (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
8767 (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
8777 (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
8782 (yyval.node) = (parser->parser_lex_strterm);
8783 (parser->parser_lex_strterm) = 0;
8784 (parser->parser_lex_state) = EXPR_BEG;
8789 (parser->parser_lex_strterm) = (yyvsp[(2) - (3)].node);
8790 (yyval.node) = node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)(((yyvsp[(3) - (3)].node))), (VALUE)(0));
8795 (yyval.node) = (parser->parser_lex_strterm);
8796 (parser->parser_lex_strterm) = 0;
8797 (parser->parser_lex_state) = EXPR_BEG;
8798 ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
8799 ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
8804 (parser->parser_lex_strterm) = (yyvsp[(2) - (4)].node);
8805 ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
8806 ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
8807 if ((yyvsp[(3) - (4)].node)) (yyvsp[(3) - (4)].node)->flags &= ~(((VALUE)1)<<7);
8808 (yyval.node) = new_evstr_gen(parser,(yyvsp[(3) - (4)].node));
8813 (yyval.node) = node_newnode(parser, (NODE_GVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(rb_global_entry((yyvsp[(1) - (1)].id))));
8818 (yyval.node) = node_newnode(parser, (NODE_IVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
8823 (yyval.node) = node_newnode(parser, (NODE_CVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
8828 (parser->parser_lex_state) = EXPR_END;
8829 (yyval.id) = (yyvsp[(2) - (2)].id);
8834 (parser->parser_lex_state) = EXPR_END;
8835 if (!((yyval.node) = (yyvsp[(2) - (3)].node))) {
8836 (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));
8840 switch (((int) (((((struct RNode*)((yyval.node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
8842 ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSYM)<<8)&(((VALUE)0x7f)<<8)));
8845 lit = (yyval.node)->u1.value;
8846 (yyval.node)->u1.value = (((VALUE)(rb_intern_str(lit))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG);
8847 ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
8850 (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))));
8858 (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
8863 (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
8867 {(yyval.id) = 289;;}
8870 {(yyval.id) = 288;;}
8873 {(yyval.id) = 290;;}
8876 {(yyval.id) = 291;;}
8879 {(yyval.id) = 305;;}
8882 {(yyval.id) = 304;;}
8885 {(yyval.id) = 306;;}
8889 if (!((yyval.node) = gettable_gen(parser,(yyvsp[(1) - (1)].id)))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8894 (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
8904 (parser->parser_lex_state) = EXPR_BEG;
8909 (yyval.node) = (yyvsp[(3) - (4)].node);
8920 (yyval.node) = (yyvsp[(2) - (3)].node);
8921 (parser->parser_lex_state) = EXPR_BEG;
8922 (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
8927 (yyval.node) = (yyvsp[(1) - (2)].node);
8932 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
8937 (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));
8942 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
8947 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8952 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
8957 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8962 (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
8967 (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
8972 (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8977 (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
8982 (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
8987 (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
8992 (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
8997 (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
9002 (yyval.node) = new_args_gen(parser, 0,0,0,0,0);
9007 parser_yyerror(parser, "formal argument cannot be a constant");
9013 parser_yyerror(parser, "formal argument cannot be an instance variable");
9019 parser_yyerror(parser, "formal argument cannot be a global variable");
9025 parser_yyerror(parser, "formal argument cannot be a class variable");
9031 if (!((((yyvsp[(1) - (1)].id))>376)&&(((yyvsp[(1) - (1)].id))&0x07)==0x00))
9032 parser_yyerror(parser, "formal argument must be local variable");
9033 shadowing_lvar_gen(parser, (yyvsp[(1) - (1)].id));
9034 (yyval.id) = (yyvsp[(1) - (1)].id);
9039 arg_var_gen(parser, (yyvsp[(1) - (1)].id));
9040 (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(1), (VALUE)(0));
9045 ID tid = internal_id_gen(parser);
9046 arg_var_gen(parser, tid);
9047 if (dyna_in_block_gen(parser)) {
9048 (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
9051 (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_LVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
9053 (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(tid), (VALUE)(1), (VALUE)(0));
9054 (yyval.node)->u3.node = (yyvsp[(2) - (3)].node);
9059 (yyval.node) = (yyvsp[(1) - (3)].node);
9060 (yyval.node)->u2.argc++;
9061 (yyval.node)->u3.node = block_append_gen(parser,(yyval.node)->u3.node,(yyvsp[(3) - (3)].node)->u3.node);
9062 rb_gc_force_recycle((VALUE)(yyvsp[(3) - (3)].node));
9067 if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
9068 parser_yyerror(parser, "formal argument must be local variable");
9069 shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
9070 arg_var_gen(parser, (yyvsp[(1) - (3)].id));
9071 (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
9076 if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
9077 parser_yyerror(parser, "formal argument must be local variable");
9078 shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
9079 arg_var_gen(parser, (yyvsp[(1) - (3)].id));
9080 (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
9085 (yyval.node) = (yyvsp[(1) - (1)].node);
9090 NODE *opts = (yyvsp[(1) - (3)].node);
9091 while (opts->u3.node) {
9092 opts = opts->u3.node;
9094 opts->u3.node = (yyvsp[(3) - (3)].node);
9095 (yyval.node) = (yyvsp[(1) - (3)].node);
9100 (yyval.node) = (yyvsp[(1) - (1)].node);
9105 NODE *opts = (yyvsp[(1) - (3)].node);
9106 while (opts->u3.node) {
9107 opts = opts->u3.node;
9109 opts->u3.node = (yyvsp[(3) - (3)].node);
9110 (yyval.node) = (yyvsp[(1) - (3)].node);
9115 if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
9116 parser_yyerror(parser, "rest argument must be local variable");
9117 shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
9118 arg_var_gen(parser, (yyvsp[(2) - (2)].id));
9119 (yyval.id) = (yyvsp[(2) - (2)].id);
9124 (yyval.id) = internal_id_gen(parser);
9125 arg_var_gen(parser, (yyval.id));
9130 if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
9131 parser_yyerror(parser, "block argument must be local variable");
9132 else if (!dyna_in_block_gen(parser) && local_id_gen(parser, (yyvsp[(2) - (2)].id)))
9133 parser_yyerror(parser, "duplicated block argument name");
9134 shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
9135 arg_var_gen(parser, (yyvsp[(2) - (2)].id));
9136 (yyval.id) = (yyvsp[(2) - (2)].id);
9141 (yyval.id) = (yyvsp[(2) - (2)].id);
9151 value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
9152 (yyval.node) = (yyvsp[(1) - (1)].node);
9153 if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
9157 {(parser->parser_lex_state) = EXPR_BEG;;}
9161 if ((yyvsp[(3) - (4)].node) == 0) {
9162 parser_yyerror(parser, "can't define singleton method for ().");
9165 switch (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
9174 parser_yyerror(parser, "can't define singleton method for literals");
9176 value_expr_gen(parser, ((yyvsp[(3) - (4)].node)) = remove_begin((yyvsp[(3) - (4)].node)));
9180 (yyval.node) = (yyvsp[(3) - (4)].node);
9185 (yyval.node) = (yyvsp[(1) - (2)].node);
9190 (yyval.node) = list_concat_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
9195 (yyval.node) = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1), (VALUE)(0)),(yyvsp[(3) - (3)].node));
9200 (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));
9204 {(yyerrstatus = 0);;}
9207 {(yyerrstatus = 0);;}
9216 do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "-> $$ ="); yy_symbol_print (stderr, yyr1[yyn], &yyval, parser); fprintf (stderr, "\n"); } } while ((0));
9217 (yyvsp -= (yylen), yyssp -= (yylen));
9219 do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
9222 yystate = yypgoto[yyn - 149] + *yyssp;
9223 if (0 <= yystate && yystate <= 10225 && yycheck[yystate] == *yyssp)
9224 yystate = yytable[yystate];
9226 yystate = yydefgoto[yyn - 149];
9233 unsigned int yysize = yysyntax_error (0, yystate, yychar);
9234 if (yymsg_alloc < yysize && yymsg_alloc < ((unsigned int) -1))
9236 unsigned int yyalloc = 2 * yysize;
9237 if (! (yysize <= yyalloc && yyalloc <= ((unsigned int) -1)))
9238 yyalloc = ((unsigned int) -1);
9239 if (yymsg != yymsgbuf)
9240 rb_parser_free(parser, yymsg);
9241 yymsg = (char *) rb_parser_malloc(parser, yyalloc);
9243 yymsg_alloc = yyalloc;
9247 yymsg_alloc = sizeof yymsgbuf;
9250 if (0 < yysize && yysize <= yymsg_alloc)
9252 (void) yysyntax_error (yymsg, yystate, yychar);
9253 parser_yyerror (parser, yymsg);
9257 parser_yyerror (parser, "syntax error");
9259 goto yyexhaustedlab;
9263 if (yyerrstatus == 3)
9272 yydestruct ("Error: discarding",
9273 yytoken, &yylval, parser);
9281 (yyvsp -= (yylen), yyssp -= (yylen));
9283 do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
9290 yyn = yypact[yystate];
9294 if (0 <= yyn && yyn <= 10225 && yycheck[yyn] == 1)
9303 yydestruct ("Error: popping",
9304 yystos[yystate], yyvsp, parser);
9305 (yyvsp -= (1), yyssp -= (1));
9307 do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
9312 do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yystos[yyn], yyvsp, parser); fprintf (stderr, "\n"); } } while ((0));
9322 parser_yyerror (parser, "memory exhausted");
9325 if (yychar != 0 && yychar != (-2))
9326 yydestruct ("Cleanup: discarding lookahead",
9327 yytoken, &yylval, parser);
9328 (yyvsp -= (yylen), yyssp -= (yylen));
9329 do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
9330 while (yyssp != yyss)
9332 yydestruct ("Cleanup: popping",
9333 yystos[*yyssp], yyvsp, parser);
9334 (yyvsp -= (1), yyssp -= (1));
9337 rb_parser_free(parser, yyss);
9338 if (yymsg != yymsgbuf)
9339 rb_parser_free(parser, yymsg);
9342 static int parser_regx_options(struct parser_params*);
9343 static int parser_tokadd_string(struct parser_params*,int,int,int,long*,rb_encoding**);
9344 static void parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc);
9345 static int parser_parse_string(struct parser_params*,NODE*);
9346 static int parser_here_document(struct parser_params*,NODE*);
9347 extern OnigEncoding OnigEncDefaultCharEncoding;
9348 unsigned long ruby_scan_oct(const char *, int, int *);
9349 unsigned long ruby_scan_hex(const char *, int, int *);
9350 void ruby_qsort(void *, const int, const int,
9351 int (*)(const void *, const void *, void *), void *);
9352 void ruby_setenv(const char *, const char *);
9353 void ruby_unsetenv(const char *);
9354 char *ruby_strdup(const char *);
9355 char *ruby_getcwd(void);
9356 double ruby_strtod(const char *, char **);
9357 void ruby_each_words(const char *, void (*)(const char*, int, void*), void *);
9359 token_info_get_column(struct parser_params *parser, const char *token)
9362 const char *p, *pend = (parser->parser_lex_p) - strlen(token);
9363 for (p = (parser->parser_lex_pbeg); p < pend; p++) {
9365 column = (((column - 1) / 8) + 1) * 8;
9372 token_info_has_nonspaces(struct parser_params *parser, const char *token)
9374 const char *p, *pend = (parser->parser_lex_p) - strlen(token);
9375 for (p = (parser->parser_lex_pbeg); p < pend; p++) {
9376 if (*p != ' ' && *p != '\t') {
9383 token_info_push(struct parser_params *parser, const char *token)
9386 if ((parser->parser_compile_for_eval)) return;
9387 ptinfo = (token_info*)ruby_xmalloc(sizeof(token_info));
9388 ptinfo->token = token;
9389 ptinfo->linenum = (parser->parser_ruby_sourceline);
9390 ptinfo->column = token_info_get_column(parser, token);
9391 ptinfo->nonspc = token_info_has_nonspaces(parser, token);
9392 ptinfo->next = parser->parser_token_info;
9393 parser->parser_token_info = ptinfo;
9396 token_info_pop(struct parser_params *parser, const char *token)
9399 token_info *ptinfo = parser->parser_token_info;
9400 if (!ptinfo) return;
9401 parser->parser_token_info = ptinfo->next;
9402 if (token_info_get_column(parser, token) == ptinfo->column) {
9405 linenum = (parser->parser_ruby_sourceline);
9406 if (linenum == ptinfo->linenum) {
9409 if (token_info_has_nonspaces(parser, token) || ptinfo->nonspc) {
9412 rb_compile_warning((parser->parser_ruby_sourcefile), linenum,
9413 "mismatched indentations at '%s' with '%s' at %d",
9414 token, ptinfo->token, ptinfo->linenum);
9419 parser_yyerror(struct parser_params *parser, const char *msg)
9421 const int max_line_margin = 30;
9425 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", msg);
9426 p = (parser->parser_lex_p);
9427 while ((parser->parser_lex_pbeg) <= p) {
9428 if (*p == '\n') break;
9432 pe = (parser->parser_lex_p);
9433 while (pe < (parser->parser_lex_pend)) {
9434 if (*pe == '\n') break;
9440 const char *pre = "", *post = "";
9441 if (len > max_line_margin * 2 + 10) {
9442 if ((parser->parser_lex_p) - p > max_line_margin) {
9443 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));
9446 if (pe - (parser->parser_lex_p) > max_line_margin) {
9447 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));
9452 buf = (char*)__builtin_alloca (sizeof(char)*(len+2));
9453 memcpy((buf), (p), sizeof(char)*(len));
9455 rb_compile_error_append("%s%s%s", pre, buf, post);
9456 i = (parser->parser_lex_p) - p;
9457 p2 = buf; pe = buf + len;
9459 if (*p2 != '\t') *p2 = ' ';
9464 rb_compile_error_append("%s%s", pre, buf);
9468 static void parser_prepare(struct parser_params *parser);
9469 VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
9471 debug_lines(const char *f)
9473 if (rb_const_defined_at(rb_cObject, (__builtin_constant_p("SCRIPT_LINES__") ? __extension__ (rb_intern2("SCRIPT_LINES__", strlen("SCRIPT_LINES__"))) : (rb_intern)("SCRIPT_LINES__")))) {
9474 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__")));
9475 if (rb_type((VALUE)(hash)) == RUBY_T_HASH) {
9476 VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
9477 VALUE lines = rb_ary_new();
9478 rb_hash_aset(hash, fname, lines);
9485 coverage(const char *f, int n)
9487 extern VALUE rb_get_coverages(void);
9488 VALUE coverages = rb_get_coverages();
9489 if ((((VALUE)(coverages) & ~((VALUE)RUBY_Qnil)) != 0) && ((struct RBasic*)(coverages))->klass == 0) {
9490 VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
9491 VALUE lines = rb_ary_new2(n);
9493 ((struct RBasic*)(lines))->klass = 0;
9494 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);
9495 ((struct RArray*)(lines))->as.heap.len = n;
9496 rb_hash_aset(coverages, fname, lines);
9502 e_option_supplied(struct parser_params *parser)
9504 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)
9505 return ((VALUE)RUBY_Qtrue);
9506 return ((VALUE)RUBY_Qfalse);
9509 yycompile0(VALUE arg, int tracing)
9513 struct parser_params *parser = (struct parser_params *)arg;
9514 if (!(parser->parser_compile_for_eval) && rb_safe_level() == 0) {
9515 (parser->debug_lines) = debug_lines((parser->parser_ruby_sourcefile));
9516 if ((parser->debug_lines) && (parser->parser_ruby_sourceline) > 0) {
9517 VALUE str = rb_enc_str_new(0,0,parser->enc);
9518 n = (parser->parser_ruby_sourceline);
9520 rb_ary_push((parser->debug_lines), str);
9523 if (!e_option_supplied(parser)) {
9524 (parser->coverage) = coverage((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline));
9527 parser_prepare(parser);
9528 (parser->parser_deferred_nodes) = 0;
9529 n = ruby_yyparse((void*)parser);
9530 (parser->debug_lines) = 0;
9531 (parser->coverage) = 0;
9532 (parser->parser_compile_for_eval) = 0;
9533 (parser->parser_lex_strterm) = 0;
9534 (parser->parser_lex_p) = (parser->parser_lex_pbeg) = (parser->parser_lex_pend) = 0;
9535 (parser->parser_lex_lastline) = (parser->parser_lex_nextline) = 0;
9539 tree = (parser->parser_eval_tree);
9541 tree = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
9543 if ((parser->parser_eval_tree_begin)) {
9544 NODE *scope = (parser->parser_eval_tree);
9546 scope->u2.node = node_newnode(parser, (NODE_PRELUDE), (VALUE)((parser->parser_eval_tree_begin)), (VALUE)(scope->u2.node), (VALUE)(0));
9551 tree = (parser->parser_eval_tree);
9556 yycompile(struct parser_params *parser, const char *f, int line)
9558 (parser->parser_ruby_sourcefile) = ruby_strdup(f);
9559 (parser->parser_ruby_sourceline) = line - 1;
9560 return (NODE *)ruby_suppress_tracing(yycompile0, (VALUE)parser, ((VALUE)RUBY_Qtrue));
9563 lex_get_str(struct parser_params *parser, VALUE s)
9565 char *beg, *end, *pend;
9566 beg = (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr);
9567 if ((parser->parser_lex_gets_ptr)) {
9568 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);
9569 beg += (parser->parser_lex_gets_ptr);
9571 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);
9573 while (end < pend) {
9574 if (*end++ == '\n') break;
9576 (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);
9577 return rb_enc_str_new(beg, end - beg, rb_enc_get(s));
9580 lex_getline(struct parser_params *parser)
9582 VALUE line = (*parser->parser_lex_gets)(parser, parser->parser_lex_input);
9583 if ((parser->debug_lines) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
9584 rb_ary_push((parser->debug_lines), line);
9586 if ((parser->coverage) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
9587 rb_ary_push((parser->coverage), ((VALUE)RUBY_Qnil));
9592 rb_compile_string(const char *f, VALUE s, int line)
9594 VALUE volatile vparser = rb_parser_new();
9595 return rb_parser_compile_string(vparser, f, s, line);
9598 rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
9600 struct parser_params *parser;
9603 do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
9604 (parser->parser_lex_gets) = lex_get_str;
9605 (parser->parser_lex_gets_ptr) = 0;
9606 (parser->parser_lex_input) = s;
9607 (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
9608 (parser->parser_compile_for_eval) = rb_parse_in_eval();
9609 node = yycompile(parser, f, line);
9614 rb_compile_cstr(const char *f, const char *s, int len, int line)
9616 return rb_compile_string(f, rb_str_new(s, len), line);
9619 rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
9621 return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
9624 lex_io_gets(struct parser_params *parser, VALUE io)
9626 return rb_io_gets(io);
9629 rb_compile_file(const char *f, VALUE file, int start)
9631 VALUE volatile vparser = rb_parser_new();
9632 return rb_parser_compile_file(vparser, f, file, start);
9635 rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
9637 struct parser_params *parser;
9640 do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
9641 (parser->parser_lex_gets) = lex_io_gets;
9642 (parser->parser_lex_input) = file;
9643 (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
9644 (parser->parser_compile_for_eval) = rb_parse_in_eval();
9645 node = yycompile(parser, f, start);
9651 str_dquote = (0x02),
9652 str_xquote = (0x02),
9653 str_regexp = (0x04|0x01|0x02),
9655 str_dword = (0x08|0x02),
9657 str_dsym = (0x10|0x02)
9660 parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *enc0)
9663 str = rb_enc_str_new(p, n, enc);
9664 if (!(func & 0x04) && ((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
9665 if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
9667 else if (enc0 == rb_usascii_encoding() && enc != rb_utf8_encoding()) {
9668 rb_enc_associate(str, rb_ascii8bit_encoding());
9674 parser_nextc(struct parser_params *parser)
9677 if ((parser->parser_lex_p) == (parser->parser_lex_pend)) {
9678 VALUE v = (parser->parser_lex_nextline);
9679 (parser->parser_lex_nextline) = 0;
9683 if (!(parser->parser_lex_input) || ((VALUE)(v = lex_getline(parser)) == ((VALUE)RUBY_Qnil))) {
9684 parser->eofp = ((VALUE)RUBY_Qtrue);
9685 (parser->parser_lex_p = parser->parser_lex_pend);
9690 if ((parser->parser_heredoc_end) > 0) {
9691 (parser->parser_ruby_sourceline) = (parser->parser_heredoc_end);
9692 (parser->parser_heredoc_end) = 0;
9694 (parser->parser_ruby_sourceline)++;
9695 parser->line_count++;
9696 (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);
9697 (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);
9698 (parser->parser_lex_lastline) = v;
9701 c = (unsigned char)*(parser->parser_lex_p)++;
9702 if (c == '\r' && ((parser->parser_lex_p) < (parser->parser_lex_pend) && ('\n') == *(parser->parser_lex_p))) {
9703 (parser->parser_lex_p)++;
9709 parser_pushback(struct parser_params *parser, int c)
9711 if (c == -1) return;
9712 (parser->parser_lex_p)--;
9713 if ((parser->parser_lex_p) > (parser->parser_lex_pbeg) && (parser->parser_lex_p)[0] == '\n' && (parser->parser_lex_p)[-1] == '\r') {
9714 (parser->parser_lex_p)--;
9718 parser_newtok(struct parser_params *parser)
9720 (parser->parser_tokidx) = 0;
9721 if (!(parser->parser_tokenbuf)) {
9722 (parser->parser_toksiz) = 60;
9723 (parser->parser_tokenbuf) = (char*)ruby_xmalloc2((60),sizeof(char));
9725 if ((parser->parser_toksiz) > 4096) {
9726 (parser->parser_toksiz) = 60;
9727 ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),(60),sizeof(char));
9729 return (parser->parser_tokenbuf);
9732 parser_tokspace(struct parser_params *parser, int n)
9734 (parser->parser_tokidx) += n;
9735 if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
9736 do {(parser->parser_toksiz) *= 2;} while ((parser->parser_toksiz) < (parser->parser_tokidx));
9737 ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
9739 return &(parser->parser_tokenbuf)[(parser->parser_tokidx)-n];
9742 parser_tokadd(struct parser_params *parser, int c)
9744 (parser->parser_tokenbuf)[(parser->parser_tokidx)++] = (char)c;
9745 if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
9746 (parser->parser_toksiz) *= 2;
9747 ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
9751 parser_tok_hex(struct parser_params *parser, int *numlen)
9754 c = ruby_scan_hex((parser->parser_lex_p), 2, numlen);
9756 parser_yyerror(parser, "invalid hex escape");
9759 (parser->parser_lex_p) += *numlen;
9763 parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp,
9764 int string_literal, int symbol_literal, int regexp_literal)
9768 if (regexp_literal) { parser_tokadd(parser, '\\'); parser_tokadd(parser, 'u'); }
9769 if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('{') == *(parser->parser_lex_p))) {
9771 if (regexp_literal) { parser_tokadd(parser, *(parser->parser_lex_p)); }
9772 parser_nextc(parser);
9773 codepoint = ruby_scan_hex((parser->parser_lex_p), 6, &numlen);
9775 parser_yyerror(parser, "invalid Unicode escape");
9778 if (codepoint > 0x10ffff) {
9779 parser_yyerror(parser, "invalid Unicode codepoint (too large)");
9782 (parser->parser_lex_p) += numlen;
9783 if (regexp_literal) {
9784 memcpy(parser_tokspace(parser, numlen), (parser->parser_lex_p) - (numlen), (numlen));
9786 else if (codepoint >= 0x80) {
9787 *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
9788 if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
9790 else if (string_literal) {
9791 if (codepoint == 0 && symbol_literal) {
9792 parser_yyerror(parser, "symbol cannot contain '\\u{0}'");
9795 parser_tokadd(parser, codepoint);
9797 } 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))));
9798 if (!((parser->parser_lex_p) < (parser->parser_lex_pend) && ('}') == *(parser->parser_lex_p))) {
9799 parser_yyerror(parser, "unterminated Unicode escape");
9802 if (regexp_literal) { parser_tokadd(parser, '}'); }
9803 parser_nextc(parser);
9806 codepoint = ruby_scan_hex((parser->parser_lex_p), 4, &numlen);
9808 parser_yyerror(parser, "invalid Unicode escape");
9811 (parser->parser_lex_p) += 4;
9812 if (regexp_literal) {
9813 memcpy(parser_tokspace(parser, 4), (parser->parser_lex_p) - (4), (4));
9815 else if (codepoint >= 0x80) {
9816 *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
9817 if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
9819 else if (string_literal) {
9820 if (codepoint == 0 && symbol_literal) {
9821 parser_yyerror(parser, "symbol cannot contain '\\u0000'");
9824 parser_tokadd(parser, codepoint);
9830 parser_read_escape(struct parser_params *parser, int flags,
9835 switch (c = parser_nextc(parser)) {
9852 case '0': case '1': case '2': case '3':
9853 case '4': case '5': case '6': case '7':
9854 if (flags & (1|2)) goto eof;
9857 parser_pushback(parser, c);
9858 c = ruby_scan_oct((parser->parser_lex_p), 3, &numlen);
9859 (parser->parser_lex_p) += numlen;
9863 if (flags & (1|2)) goto eof;
9864 c = parser_tok_hex(parser, &numlen);
9865 if (numlen == 0) return 0;
9872 if (flags & 2) goto eof;
9873 if ((c = parser_nextc(parser)) != '-') {
9874 parser_pushback(parser, c);
9877 if ((c = parser_nextc(parser)) == '\\') {
9878 return parser_read_escape(parser, flags|2, encp) | 0x80;
9880 else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
9882 return ((c & 0xff) | 0x80);
9885 if ((c = parser_nextc(parser)) != '-') {
9886 parser_pushback(parser, c);
9890 if (flags & 1) goto eof;
9891 if ((c = parser_nextc(parser))== '\\') {
9892 c = parser_read_escape(parser, flags|1, encp);
9896 else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
9900 parser_yyerror(parser, "Invalid escape character syntax");
9907 parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc)
9909 int len = rb_enc_codelen(c, enc);
9910 (enc)->code_to_mbc(c,(OnigUChar*)(parser_tokspace(parser, len)),enc);
9913 parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
9918 switch (c = parser_nextc(parser)) {
9921 case '0': case '1': case '2': case '3':
9922 case '4': case '5': case '6': case '7':
9923 if (flags & (1|2)) goto eof;
9927 oct = ruby_scan_oct(--(parser->parser_lex_p), 3, &numlen);
9928 if (numlen == 0) goto eof;
9929 (parser->parser_lex_p) += numlen;
9930 memcpy(parser_tokspace(parser, numlen + 1), (parser->parser_lex_p) - (numlen + 1), (numlen + 1));
9934 if (flags & (1|2)) goto eof;
9938 hex = parser_tok_hex(parser, &numlen);
9939 if (numlen == 0) goto eof;
9940 memcpy(parser_tokspace(parser, numlen + 2), (parser->parser_lex_p) - (numlen + 2), (numlen + 2));
9944 if (flags & 2) goto eof;
9945 if ((c = parser_nextc(parser)) != '-') {
9946 parser_pushback(parser, c);
9949 memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
9953 if (flags & 1) goto eof;
9954 if ((c = parser_nextc(parser)) != '-') {
9955 parser_pushback(parser, c);
9958 memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
9961 if (flags & 1) goto eof;
9962 memcpy(parser_tokspace(parser, 2), (parser->parser_lex_p) - (2), (2));
9965 if ((c = parser_nextc(parser)) == '\\') {
9968 else if (c == -1) goto eof;
9969 parser_tokadd(parser, c);
9973 parser_yyerror(parser, "Invalid escape character syntax");
9976 parser_tokadd(parser, '\\');
9977 parser_tokadd(parser, c);
9981 extern int rb_char_to_option_kcode(int c, int *option, int *kcode);
9983 parser_regx_options(struct parser_params *parser)
9988 parser_newtok(parser);
9989 while (c = parser_nextc(parser), rb_isalpha((unsigned char)(c))) {
9993 else if (rb_char_to_option_kcode(c, &opt, &kc)) {
9995 if (kc >= 0) kcode = c;
9998 parser_tokadd(parser, c);
10001 parser_pushback(parser, c);
10002 if ((parser->parser_tokidx)) {
10003 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
10004 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unknown regexp option%s - %s",
10005 (parser->parser_tokidx) > 1 ? "s" : "", (parser->parser_tokenbuf));
10007 return options | (((kcode)&0xff)<<8);
10010 dispose_string(VALUE str)
10012 if (((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1)))
10013 ruby_xfree((!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr));
10014 rb_gc_force_recycle(str);
10017 parser_tokadd_mbchar(struct parser_params *parser, int c)
10019 int len = rb_enc_precise_mbclen(((parser->parser_lex_p)-1),(parser->parser_lex_pend),parser->enc);
10020 if (!(0 < (len))) {
10021 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid multibyte char (%s)", (parser->enc->name));
10024 parser_tokadd(parser, c);
10025 (parser->parser_lex_p) += --len;
10026 if (len > 0) memcpy(parser_tokspace(parser, len), (parser->parser_lex_p) - (len), (len));
10030 parser_tokadd_string(struct parser_params *parser,
10031 int func, int term, int paren, long *nest,
10032 rb_encoding **encp)
10035 int has_nonascii = 0;
10036 rb_encoding *enc = *encp;
10038 static const char mixed_msg[] = "%s mixed within %s source";
10039 while ((c = parser_nextc(parser)) != -1) {
10040 if (paren && c == paren) {
10043 else if (c == term) {
10044 if (!nest || !*nest) {
10045 parser_pushback(parser, c);
10050 else if ((func & 0x02) && c == '#' && (parser->parser_lex_p) < (parser->parser_lex_pend)) {
10051 int c2 = *(parser->parser_lex_p);
10052 if (c2 == '$' || c2 == '@' || c2 == '{') {
10053 parser_pushback(parser, c);
10057 else if (c == '\\') {
10058 const char *beg = (parser->parser_lex_p) - 1;
10059 c = parser_nextc(parser);
10062 if (func & 0x08) break;
10063 if (func & 0x02) continue;
10064 parser_tokadd(parser, '\\');
10067 if (func & 0x01) parser_tokadd(parser, c);
10070 if ((func & 0x02) == 0) {
10071 parser_tokadd(parser, '\\');
10074 parser_tokadd_utf8(parser, &enc, 1,
10077 if (has_nonascii && enc != *encp) {
10078 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);
10083 parser_pushback(parser, c);
10084 if ((c = parser_tokadd_escape(parser, &enc)) < 0)
10086 if (has_nonascii && enc != *encp) {
10087 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);
10091 else if (func & 0x02) {
10092 parser_pushback(parser, c);
10093 if (func & 0x01) parser_tokadd(parser, '\\');
10094 c = parser_read_escape(parser, 0, &enc);
10096 else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
10098 else if (c != term && !(paren && c == paren)) {
10099 parser_tokadd(parser, '\\');
10103 else if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
10105 if (enc != *encp) {
10106 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); };
10109 if (parser_tokadd_mbchar(parser, c) == -1) return -1;
10112 else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
10113 parser_pushback(parser, c);
10116 if (!c && (func & 0x10)) {
10118 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "symbol cannot contain '\\0'");
10123 if (enc != *encp) {
10124 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); };
10128 parser_tokadd(parser, c);
10134 parser_parse_string(struct parser_params *parser, NODE *quote)
10136 int func = quote->u1.id;
10137 int term = ((signed short)(quote)->u2.id);
10138 int paren = (char)((quote)->u2.id >> 8*2);
10140 rb_encoding *enc = parser->enc;
10141 if (func == -1) return 361;
10142 c = parser_nextc(parser);
10143 if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
10144 do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
10147 if (c == term && !quote->u3.cnt) {
10152 if (!(func & 0x04)) return 361;
10153 (*((YYSTYPE*)(parser->parser_yylval))).num = parser_regx_options(parser);
10157 parser_pushback(parser, c);
10160 parser_newtok(parser);
10161 if ((func & 0x02) && c == '#') {
10162 switch (c = parser_nextc(parser)) {
10165 parser_pushback(parser, c);
10170 parser_tokadd(parser, '#');
10172 parser_pushback(parser, c);
10173 if (parser_tokadd_string(parser,func,term,paren,"e->u3.cnt,&enc) == -1) {
10174 (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(quote)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
10177 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated regexp meets end of file");
10182 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated string meets end of file");
10186 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
10187 (*((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));
10191 parser_heredoc_identifier(struct parser_params *parser)
10193 int c = parser_nextc(parser), term, func = 0, len;
10195 c = parser_nextc(parser);
10200 func |= str_squote; goto quoted;
10202 func |= str_dquote; goto quoted;
10204 func |= str_xquote;
10206 parser_newtok(parser);
10207 parser_tokadd(parser, func);
10209 while ((c = parser_nextc(parser)) != -1 && c != term) {
10210 if (parser_tokadd_mbchar(parser, c) == -1) return 0;
10213 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated here document identifier");
10218 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)))) {
10219 parser_pushback(parser, c);
10221 parser_pushback(parser, '-');
10225 parser_newtok(parser);
10227 parser_tokadd(parser, func |= str_dquote);
10229 if (parser_tokadd_mbchar(parser, c) == -1) return 0;
10230 } 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))));
10231 parser_pushback(parser, c);
10234 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
10235 len = (parser->parser_lex_p) - (parser->parser_lex_pbeg);
10236 (parser->parser_lex_p = parser->parser_lex_pend);
10237 (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));
10238 ((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)));
10239 return term == '`' ? 355 : 354;
10242 parser_heredoc_restore(struct parser_params *parser, NODE *here)
10245 line = here->u3.value;
10246 (parser->parser_lex_lastline) = line;
10247 (parser->parser_lex_pbeg) = (!(((struct RBasic*)(line))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(line))->as.ary : ((struct RString*)(line))->as.heap.ptr);
10248 (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);
10249 (parser->parser_lex_p) = (parser->parser_lex_pbeg) + here->u2.argc;
10250 (parser->parser_heredoc_end) = (parser->parser_ruby_sourceline);
10251 (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(here)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
10252 dispose_string(here->u1.value);
10253 rb_gc_force_recycle((VALUE)here);
10256 parser_whole_match_p(struct parser_params *parser,
10257 const char *eos, int len, int indent)
10259 const char *p = (parser->parser_lex_pbeg);
10262 while (*p && rb_isspace((unsigned char)(*p))) p++;
10264 n= (parser->parser_lex_pend) - (p + len);
10265 if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return ((VALUE)RUBY_Qfalse);
10266 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);
10267 return ((VALUE)RUBY_Qfalse);
10270 parser_here_document(struct parser_params *parser, NODE *here)
10272 int c, func, indent = 0;
10273 const char *eos, *p, *pend;
10276 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);
10277 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;
10278 indent = (func = *eos++) & 0x20;
10279 if ((c = parser_nextc(parser)) == -1) {
10281 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "can't find string \"%s\" anywhere before EOF", eos);
10283 parser_heredoc_restore(parser,(parser->parser_lex_strterm));
10284 (parser->parser_lex_strterm) = 0;
10287 if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,eos,len,indent)) {
10288 parser_heredoc_restore(parser,(parser->parser_lex_strterm));
10291 if (!(func & 0x02)) {
10293 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);
10294 pend = (parser->parser_lex_pend);
10296 switch (pend[-1]) {
10298 if (--pend == p || pend[-1] != '\r') {
10307 rb_str_cat(str, p, pend - p);
10309 str = rb_enc_str_new((p),(pend - p),parser->enc);
10310 if (pend < (parser->parser_lex_pend)) rb_str_cat(str, "\n", 1);
10311 (parser->parser_lex_p = parser->parser_lex_pend);
10312 if (parser_nextc(parser) == -1) {
10313 if (str) dispose_string(str);
10316 } while (!parser_whole_match_p(parser,eos,len,indent));
10319 rb_encoding *enc = parser->enc;
10320 parser_newtok(parser);
10322 switch (c = parser_nextc(parser)) {
10325 parser_pushback(parser, c);
10330 parser_tokadd(parser, '#');
10333 parser_pushback(parser, c);
10334 if ((c = parser_tokadd_string(parser,func,'\n',0,((void *)0),&enc)) == -1) {
10335 if (parser->eofp) goto error;
10339 (*((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));
10342 parser_tokadd(parser, parser_nextc(parser));
10343 if ((c = parser_nextc(parser)) == -1) goto error;
10344 } while (!parser_whole_match_p(parser,eos,len,indent));
10345 str = parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc);
10347 parser_heredoc_restore(parser,(parser->parser_lex_strterm));
10348 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (-1), (0) | ((0) << (8 * 2)), 0);
10349 (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(str), (VALUE)(0), (VALUE)(0));
10352 struct kwtable {const char *name; int id[2]; enum lex_state_e state;};
10353 const struct kwtable *rb_reserved_word(const char *, unsigned int);
10356 static unsigned int
10358 register const char *str;
10359 register unsigned int len;
10361 static const unsigned char asso_values[] =
10363 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10364 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10365 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10366 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10367 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10368 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10369 51, 51, 51, 26, 51, 51, 14, 51, 16, 8,
10370 11, 13, 51, 51, 51, 51, 10, 51, 13, 51,
10371 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10372 51, 51, 51, 51, 51, 11, 51, 13, 1, 26,
10373 4, 1, 8, 28, 51, 23, 51, 1, 1, 27,
10374 5, 19, 21, 51, 8, 3, 3, 11, 51, 21,
10375 24, 16, 51, 51, 51, 51, 51, 51, 51, 51,
10376 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10377 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10378 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10379 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10380 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10381 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10382 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10383 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10384 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10385 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10386 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10387 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
10388 51, 51, 51, 51, 51, 51
10390 register int hval = len;
10394 hval += asso_values[(unsigned char)str[2]];
10397 hval += asso_values[(unsigned char)str[0]];
10400 return hval + asso_values[(unsigned char)str[len - 1]];
10403 const struct kwtable *
10404 rb_reserved_word (str, len)
10405 register const char *str;
10406 register unsigned int len;
10408 static const struct kwtable wordlist[] =
10410 {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
10411 {"break", {276, 276}, EXPR_MID},
10412 {"else", {270, 270}, EXPR_BEG},
10413 {"nil", {289, 289}, EXPR_END},
10414 {"ensure", {264, 264}, EXPR_BEG},
10415 {"end", {265, 265}, EXPR_END},
10416 {"then", {268, 268}, EXPR_BEG},
10417 {"not", {294, 294}, EXPR_ARG},
10418 {"false", {291, 291}, EXPR_END},
10419 {"self", {288, 288}, EXPR_END},
10420 {"elsif", {269, 269}, EXPR_VALUE},
10421 {"rescue", {263, 299}, EXPR_MID},
10422 {"true", {290, 290}, EXPR_END},
10423 {"until", {274, 298}, EXPR_VALUE},
10424 {"unless", {267, 296}, EXPR_VALUE},
10425 {"return", {285, 285}, EXPR_MID},
10426 {"def", {260, 260}, EXPR_FNAME},
10427 {"and", {292, 292}, EXPR_VALUE},
10428 {"do", {281, 281}, EXPR_BEG},
10429 {"yield", {286, 286}, EXPR_ARG},
10430 {"for", {275, 275}, EXPR_VALUE},
10431 {"undef", {261, 261}, EXPR_FNAME},
10432 {"or", {293, 293}, EXPR_VALUE},
10433 {"in", {280, 280}, EXPR_VALUE},
10434 {"when", {272, 272}, EXPR_VALUE},
10435 {"retry", {279, 279}, EXPR_END},
10436 {"if", {266, 295}, EXPR_VALUE},
10437 {"case", {271, 271}, EXPR_VALUE},
10438 {"redo", {278, 278}, EXPR_END},
10439 {"next", {277, 277}, EXPR_MID},
10440 {"super", {287, 287}, EXPR_ARG},
10441 {"module", {259, 259}, EXPR_VALUE},
10442 {"begin", {262, 262}, EXPR_BEG},
10443 {"__LINE__", {304, 304}, EXPR_END},
10444 {"__FILE__", {305, 305}, EXPR_END},
10445 {"__ENCODING__", {306, 306}, EXPR_END},
10446 {"END", {303, 303}, EXPR_END},
10447 {"alias", {300, 300}, EXPR_FNAME},
10448 {"BEGIN", {302, 302}, EXPR_END},
10449 {"defined?", {301, 301}, EXPR_ARG},
10450 {"class", {258, 258}, EXPR_CLASS},
10452 {"while", {273, 297}, EXPR_VALUE}
10454 if (len <= 12 && len >= 2)
10456 register int key = hash (str, len);
10457 if (key <= 50 && key >= 0)
10459 register const char *s = wordlist[key].name;
10460 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)))); }))
10461 return &wordlist[key];
10467 arg_ambiguous_gen(struct parser_params *parser)
10469 rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "ambiguous first argument; put parentheses or even spaces");
10472 lvar_defined_gen(struct parser_params *parser, ID id)
10474 return (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) || local_id_gen(parser, id);
10477 parser_encode_length(struct parser_params *parser, const char *name, int len)
10480 if (len > 5 && name[nlen = len - 5] == '-') {
10481 if (rb_memcicmp(name + nlen + 1, "unix", 4) == 0)
10484 if (len > 4 && name[nlen = len - 5] == '-') {
10485 if (rb_memcicmp(name + nlen + 1, "dos", 3) == 0)
10487 if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0)
10493 parser_set_encode(struct parser_params *parser, const char *name)
10495 int idx = rb_enc_find_index(name);
10498 rb_raise(rb_eArgError, "unknown encoding name: %s", name);
10500 enc = rb_enc_from_index(idx);
10501 if (!((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
10502 rb_raise(rb_eArgError, "%s is not ASCII compatible", (enc)->name);
10507 comment_at_top(struct parser_params *parser)
10509 const char *p = (parser->parser_lex_pbeg), *pend = (parser->parser_lex_p) - 1;
10510 if (parser->line_count != (parser->has_shebang ? 2 : 1)) return 0;
10512 if (!rb_isspace((unsigned char)(*p))) return 0;
10517 typedef int (*rb_magic_comment_length_t)(struct parser_params *parser, const char *name, int len);
10518 typedef void (*rb_magic_comment_setter_t)(struct parser_params *parser, const char *name, const char *val);
10520 magic_comment_encoding(struct parser_params *parser, const char *name, const char *val)
10522 if (!comment_at_top(parser)) {
10523 rb_warning("encoding '%s' is ignored, valid only in the first line except for shebang line.",
10527 parser_set_encode(parser, val);
10529 struct magic_comment {
10531 rb_magic_comment_setter_t func;
10532 rb_magic_comment_length_t length;
10534 static const struct magic_comment magic_comments[] = {
10535 {"coding", magic_comment_encoding, parser_encode_length},
10536 {"encoding", magic_comment_encoding, parser_encode_length},
10538 static const char *
10539 magic_comment_marker(const char *str, int len)
10545 if (str[i-1] == '*' && str[i-2] == '-') {
10546 return str + i + 1;
10551 if (i + 1 >= len) return 0;
10552 if (str[i+1] != '-') {
10555 else if (str[i-1] != '-') {
10559 return str + i + 2;
10570 parser_magic_comment(struct parser_params *parser, const char *str, int len)
10572 VALUE name = 0, val = 0;
10573 const char *beg, *end, *vbeg, *vend;
10574 if (len <= 7) return ((VALUE)RUBY_Qfalse);
10575 if (!(beg = magic_comment_marker(str, len))) return ((VALUE)RUBY_Qfalse);
10576 if (!(end = magic_comment_marker(beg, str + len - beg))) return ((VALUE)RUBY_Qfalse);
10578 len = end - beg - 3;
10580 const struct magic_comment *p = magic_comments;
10583 for (; len > 0 && *str; str++, --len) {
10585 case '\'': case '"': case ':': case ';':
10588 if (!rb_isspace((unsigned char)(*str))) break;
10590 for (beg = str; len > 0; str++, --len) {
10592 case '\'': case '"': case ':': case ';':
10595 if (rb_isspace((unsigned char)(*str))) break;
10600 for (end = str; len > 0 && rb_isspace((unsigned char)(*str)); str++, --len);
10602 if (*str != ':') continue;
10603 do str++; while (--len > 0 && rb_isspace((unsigned char)(*str)));
10606 for (vbeg = ++str; --len > 0 && *str != '"'; str++) {
10607 if (*str == '\\') {
10619 for (vbeg = str; len > 0 && *str != '"' && *str != ';' && !rb_isspace((unsigned char)(*str)); --len, str++);
10622 while (len > 0 && (*str == ';' || rb_isspace((unsigned char)(*str)))) --len, str++;
10624 ((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)));
10625 s = (!(((struct RBasic*)(name))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(name))->as.ary : ((struct RString*)(name))->as.heap.ptr);
10626 for (i = 0; i < n; ++i) {
10627 if (*s == '-') *s = '_';
10630 if ((st_strncasecmp(p->name, s, n)) == 0) {
10633 n = (*p->length)(parser, vbeg, n);
10635 ((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)));
10636 (*p->func)(parser, s, (!(((struct RBasic*)(val))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(val))->as.ary : ((struct RString*)(val))->as.heap.ptr));
10639 } while (++p < magic_comments + sizeof(magic_comments) / sizeof(*p));
10641 return ((VALUE)RUBY_Qtrue);
10644 set_file_encoding(struct parser_params *parser, const char *str, const char *send)
10647 const char *beg = str;
10650 if (send - str <= 6) return;
10652 case 'C': case 'c': str += 6; continue;
10653 case 'O': case 'o': str += 5; continue;
10654 case 'D': case 'd': str += 4; continue;
10655 case 'I': case 'i': str += 3; continue;
10656 case 'N': case 'n': str += 2; continue;
10657 case 'G': case 'g': str += 1; continue;
10658 case '=': case ':':
10664 if (rb_isspace((unsigned char)(*str))) break;
10667 if ((st_strncasecmp(str-6, "coding", 6)) == 0) break;
10671 if (++str >= send) return;
10672 } while (rb_isspace((unsigned char)(*str)));
10674 if (*str != '=' && *str != ':') return;
10679 while ((*str == '-' || *str == '_' || rb_isalnum((unsigned char)(*str))) && ++str < send);
10680 s = rb_str_new(beg, parser_encode_length(parser, beg, str - beg));
10681 parser_set_encode(parser, (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr));
10682 rb_str_resize(s, 0);
10685 parser_prepare(struct parser_params *parser)
10687 int c = parser_nextc(parser);
10690 if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('!') == *(parser->parser_lex_p))) parser->has_shebang = 1;
10693 if ((parser->parser_lex_pend) - (parser->parser_lex_p) >= 2 &&
10694 (unsigned char)(parser->parser_lex_p)[0] == 0xbb &&
10695 (unsigned char)(parser->parser_lex_p)[1] == 0xbf) {
10696 parser->enc = rb_utf8_encoding();
10697 (parser->parser_lex_p) += 2;
10698 (parser->parser_lex_pbeg) = (parser->parser_lex_p);
10705 parser_pushback(parser, c);
10706 parser->enc = rb_enc_get((parser->parser_lex_lastline));
10709 parser_yylex(struct parser_params *parser)
10712 int space_seen = 0;
10714 enum lex_state_e last_state;
10717 if ((parser->parser_lex_strterm)) {
10719 if (((int) (((((struct RNode*)((parser->parser_lex_strterm))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
10720 token = parser_here_document(parser,(parser->parser_lex_strterm));
10721 if (token == 361) {
10722 (parser->parser_lex_strterm) = 0;
10723 (parser->parser_lex_state) = EXPR_END;
10727 token = parser_parse_string(parser,(parser->parser_lex_strterm));
10728 if (token == 361 || token == 320) {
10729 rb_gc_force_recycle((VALUE)(parser->parser_lex_strterm));
10730 (parser->parser_lex_strterm) = 0;
10731 (parser->parser_lex_state) = EXPR_END;
10736 cmd_state = (parser->parser_command_start);
10737 (parser->parser_command_start) = ((VALUE)RUBY_Qfalse);
10739 switch (c = parser_nextc(parser)) {
10745 case ' ': case '\t': case '\f': case '\r':
10750 if (!parser_magic_comment(parser, (parser->parser_lex_p), (parser->parser_lex_pend) - (parser->parser_lex_p))) {
10751 if (comment_at_top(parser)) {
10752 set_file_encoding(parser, (parser->parser_lex_p), (parser->parser_lex_pend));
10755 (parser->parser_lex_p) = (parser->parser_lex_pend);
10757 switch ((parser->parser_lex_state)) {
10767 while ((c = parser_nextc(parser))) {
10769 case ' ': case '\t': case '\f': case '\r':
10774 if ((c = parser_nextc(parser)) != '.') {
10775 parser_pushback(parser, c);
10776 parser_pushback(parser, '.');
10781 --(parser->parser_ruby_sourceline);
10782 (parser->parser_lex_nextline) = (parser->parser_lex_lastline);
10784 (parser->parser_lex_p = parser->parser_lex_pend);
10785 goto normal_newline;
10789 (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
10790 (parser->parser_lex_state) = EXPR_BEG;
10793 if ((c = parser_nextc(parser)) == '*') {
10794 if ((c = parser_nextc(parser)) == '=') {
10795 (*((YYSTYPE*)(parser->parser_yylval))).id = 323;
10796 (parser->parser_lex_state) = EXPR_BEG;
10799 parser_pushback(parser, c);
10804 (*((YYSTYPE*)(parser->parser_yylval))).id = '*';
10805 (parser->parser_lex_state) = EXPR_BEG;
10808 parser_pushback(parser, c);
10809 if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
10810 rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`*' interpreted as argument prefix");
10813 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)) {
10820 switch ((parser->parser_lex_state)) {
10821 case EXPR_FNAME: case EXPR_DOT:
10822 (parser->parser_lex_state) = EXPR_ARG; break;
10824 (parser->parser_lex_state) = EXPR_BEG; break;
10828 c = parser_nextc(parser);
10829 if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
10830 (parser->parser_lex_state) = EXPR_ARG;
10836 (parser->parser_lex_state) = EXPR_BEG;
10844 parser_pushback(parser, c);
10847 if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1)) {
10848 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]))) {
10850 (parser->parser_lex_p = parser->parser_lex_pend);
10851 c = parser_nextc(parser);
10853 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "embedded document meets end of file");
10856 if (c != '=') continue;
10857 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 &&
10858 ((parser->parser_lex_p) + 3 == (parser->parser_lex_pend) || rb_isspace((unsigned char)((parser->parser_lex_p)[3])))) {
10862 (parser->parser_lex_p = parser->parser_lex_pend);
10866 switch ((parser->parser_lex_state)) {
10867 case EXPR_FNAME: case EXPR_DOT:
10868 (parser->parser_lex_state) = EXPR_ARG; break;
10870 (parser->parser_lex_state) = EXPR_BEG; break;
10872 if ((c = parser_nextc(parser)) == '=') {
10873 if ((c = parser_nextc(parser)) == '=') {
10876 parser_pushback(parser, c);
10882 else if (c == '>') {
10885 parser_pushback(parser, c);
10888 c = parser_nextc(parser);
10890 (parser->parser_lex_state) != EXPR_END &&
10891 (parser->parser_lex_state) != EXPR_DOT &&
10892 (parser->parser_lex_state) != EXPR_ENDARG &&
10893 (parser->parser_lex_state) != EXPR_CLASS &&
10894 (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || space_seen)) {
10895 int token = parser_heredoc_identifier(parser);
10896 if (token) return token;
10898 switch ((parser->parser_lex_state)) {
10899 case EXPR_FNAME: case EXPR_DOT:
10900 (parser->parser_lex_state) = EXPR_ARG; break;
10902 (parser->parser_lex_state) = EXPR_BEG; break;
10905 if ((c = parser_nextc(parser)) == '>') {
10908 parser_pushback(parser, c);
10912 if ((c = parser_nextc(parser)) == '=') {
10913 (*((YYSTYPE*)(parser->parser_yylval))).id = 338;
10914 (parser->parser_lex_state) = EXPR_BEG;
10917 parser_pushback(parser, c);
10920 parser_pushback(parser, c);
10923 switch ((parser->parser_lex_state)) {
10924 case EXPR_FNAME: case EXPR_DOT:
10925 (parser->parser_lex_state) = EXPR_ARG; break;
10927 (parser->parser_lex_state) = EXPR_BEG; break;
10929 if ((c = parser_nextc(parser)) == '=') {
10933 if ((c = parser_nextc(parser)) == '=') {
10934 (*((YYSTYPE*)(parser->parser_yylval))).id = 339;
10935 (parser->parser_lex_state) = EXPR_BEG;
10938 parser_pushback(parser, c);
10941 parser_pushback(parser, c);
10944 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), ('"') | ((0) << (8 * 2)), 0);
10947 if ((parser->parser_lex_state) == EXPR_FNAME) {
10948 (parser->parser_lex_state) = EXPR_END;
10951 if ((parser->parser_lex_state) == EXPR_DOT) {
10953 (parser->parser_lex_state) = EXPR_CMDARG;
10955 (parser->parser_lex_state) = EXPR_ARG;
10958 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), ('`') | ((0) << (8 * 2)), 0);
10961 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), ('\'') | ((0) << (8 * 2)), 0);
10964 if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG) {
10965 (parser->parser_lex_state) = EXPR_VALUE;
10968 c = parser_nextc(parser);
10970 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "incomplete character syntax");
10973 if ((parser->enc)->is_code_ctype(c,9,parser->enc)) {
10974 if (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
10997 rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid character syntax; use ?\\%c", c2);
11001 parser_pushback(parser, c);
11002 (parser->parser_lex_state) = EXPR_VALUE;
11005 parser_newtok(parser);
11007 if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
11008 if (parser_tokadd_mbchar(parser, c) == -1) return 0;
11010 else if (((parser->enc)->is_code_ctype(c,13,parser->enc) || c == '_') &&
11011 (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))) {
11014 else if (c == '\\') {
11015 if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('u') == *(parser->parser_lex_p))) {
11016 parser_nextc(parser);
11017 c = parser_tokadd_utf8(parser, &enc, 0, 0, 0);
11019 parser_tokaddmbc(parser, c, enc);
11022 parser_tokadd(parser, c);
11026 c = parser_read_escape(parser, 0, &enc);
11027 parser_tokadd(parser, c);
11031 parser_tokadd(parser, c);
11033 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11034 (*((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));
11035 (parser->parser_lex_state) = EXPR_END;
11038 if ((c = parser_nextc(parser)) == '&') {
11039 (parser->parser_lex_state) = EXPR_BEG;
11040 if ((c = parser_nextc(parser)) == '=') {
11041 (*((YYSTYPE*)(parser->parser_yylval))).id = 330;
11042 (parser->parser_lex_state) = EXPR_BEG;
11045 parser_pushback(parser, c);
11048 else if (c == '=') {
11049 (*((YYSTYPE*)(parser->parser_yylval))).id = '&';
11050 (parser->parser_lex_state) = EXPR_BEG;
11053 parser_pushback(parser, c);
11054 if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
11055 rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`&' interpreted as argument prefix");
11058 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)) {
11064 switch ((parser->parser_lex_state)) {
11065 case EXPR_FNAME: case EXPR_DOT:
11066 (parser->parser_lex_state) = EXPR_ARG; break;
11068 (parser->parser_lex_state) = EXPR_BEG;
11072 if ((c = parser_nextc(parser)) == '|') {
11073 (parser->parser_lex_state) = EXPR_BEG;
11074 if ((c = parser_nextc(parser)) == '=') {
11075 (*((YYSTYPE*)(parser->parser_yylval))).id = 331;
11076 (parser->parser_lex_state) = EXPR_BEG;
11079 parser_pushback(parser, c);
11083 (*((YYSTYPE*)(parser->parser_yylval))).id = '|';
11084 (parser->parser_lex_state) = EXPR_BEG;
11087 if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
11088 (parser->parser_lex_state) = EXPR_ARG;
11091 (parser->parser_lex_state) = EXPR_BEG;
11093 parser_pushback(parser, c);
11096 c = parser_nextc(parser);
11097 if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
11098 (parser->parser_lex_state) = EXPR_ARG;
11102 parser_pushback(parser, c);
11106 (*((YYSTYPE*)(parser->parser_yylval))).id = '+';
11107 (parser->parser_lex_state) = EXPR_BEG;
11110 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) ||
11111 (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
11112 if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
11113 (parser->parser_lex_state) = EXPR_BEG;
11114 parser_pushback(parser, c);
11115 if (c != -1 && rb_isdigit((unsigned char)(c))) {
11121 (parser->parser_lex_state) = EXPR_BEG;
11122 parser_pushback(parser, c);
11125 c = parser_nextc(parser);
11126 if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
11127 (parser->parser_lex_state) = EXPR_ARG;
11131 parser_pushback(parser, c);
11135 (*((YYSTYPE*)(parser->parser_yylval))).id = '-';
11136 (parser->parser_lex_state) = EXPR_BEG;
11140 (parser->parser_lex_state) = EXPR_ARG;
11143 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) ||
11144 (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
11145 if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
11146 (parser->parser_lex_state) = EXPR_BEG;
11147 parser_pushback(parser, c);
11148 if (c != -1 && rb_isdigit((unsigned char)(c))) {
11153 (parser->parser_lex_state) = EXPR_BEG;
11154 parser_pushback(parser, c);
11157 (parser->parser_lex_state) = EXPR_BEG;
11158 if ((c = parser_nextc(parser)) == '.') {
11159 if ((c = parser_nextc(parser)) == '.') {
11162 parser_pushback(parser, c);
11165 parser_pushback(parser, c);
11166 if (c != -1 && rb_isdigit((unsigned char)(c))) {
11167 parser_yyerror(parser, "no .<digit> floating literal anymore; put 0 before dot");
11169 (parser->parser_lex_state) = EXPR_DOT;
11172 case '0': case '1': case '2': case '3': case '4':
11173 case '5': case '6': case '7': case '8': case '9':
11175 int is_float, seen_point, seen_e, nondigit;
11176 is_float = seen_point = seen_e = nondigit = 0;
11177 (parser->parser_lex_state) = EXPR_END;
11178 parser_newtok(parser);
11179 if (c == '-' || c == '+') {
11180 parser_tokadd(parser, c);
11181 c = parser_nextc(parser);
11184 int start = (parser->parser_tokidx);
11185 c = parser_nextc(parser);
11186 if (c == 'x' || c == 'X') {
11187 c = parser_nextc(parser);
11188 if (c != -1 && rb_isxdigit((unsigned char)(c))) {
11191 if (nondigit) break;
11195 if (!rb_isxdigit((unsigned char)(c))) break;
11197 parser_tokadd(parser, c);
11198 } while ((c = parser_nextc(parser)) != -1);
11200 parser_pushback(parser, c);
11201 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11202 if ((parser->parser_tokidx) == start) {
11203 parser_yyerror(parser, "numeric literal without digits");
11205 else if (nondigit) goto trailing_uc;
11206 (*((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));
11209 if (c == 'b' || c == 'B') {
11210 c = parser_nextc(parser);
11211 if (c == '0' || c == '1') {
11214 if (nondigit) break;
11218 if (c != '0' && c != '1') break;
11220 parser_tokadd(parser, c);
11221 } while ((c = parser_nextc(parser)) != -1);
11223 parser_pushback(parser, c);
11224 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11225 if ((parser->parser_tokidx) == start) {
11226 parser_yyerror(parser, "numeric literal without digits");
11228 else if (nondigit) goto trailing_uc;
11229 (*((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));
11232 if (c == 'd' || c == 'D') {
11233 c = parser_nextc(parser);
11234 if (c != -1 && rb_isdigit((unsigned char)(c))) {
11237 if (nondigit) break;
11241 if (!rb_isdigit((unsigned char)(c))) break;
11243 parser_tokadd(parser, c);
11244 } while ((c = parser_nextc(parser)) != -1);
11246 parser_pushback(parser, c);
11247 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11248 if ((parser->parser_tokidx) == start) {
11249 parser_yyerror(parser, "numeric literal without digits");
11251 else if (nondigit) goto trailing_uc;
11252 (*((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));
11258 if (c == 'o' || c == 'O') {
11259 c = parser_nextc(parser);
11260 if (c == -1 || c == '_' || !rb_isdigit((unsigned char)(c))) {
11261 parser_yyerror(parser, "numeric literal without digits");
11264 if (c >= '0' && c <= '7') {
11268 if (nondigit) break;
11272 if (c < '0' || c > '9') break;
11273 if (c > '7') goto invalid_octal;
11275 parser_tokadd(parser, c);
11276 } while ((c = parser_nextc(parser)) != -1);
11277 if ((parser->parser_tokidx) > start) {
11278 parser_pushback(parser, c);
11279 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11280 if (nondigit) goto trailing_uc;
11281 (*((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));
11285 parser_pushback(parser, c);
11289 if (c > '7' && c <= '9') {
11291 parser_yyerror(parser, "Invalid octal digit");
11293 else if (c == '.' || c == 'e' || c == 'E') {
11294 parser_tokadd(parser, '0');
11297 parser_pushback(parser, c);
11298 (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
11304 case '0': case '1': case '2': case '3': case '4':
11305 case '5': case '6': case '7': case '8': case '9':
11307 parser_tokadd(parser, c);
11310 if (nondigit) goto trailing_uc;
11311 if (seen_point || seen_e) {
11315 int c0 = parser_nextc(parser);
11316 if (c == -1 || !rb_isdigit((unsigned char)(c0))) {
11317 parser_pushback(parser, c0);
11322 parser_tokadd(parser, '.');
11323 parser_tokadd(parser, c);
11331 parser_pushback(parser, c);
11338 parser_tokadd(parser, c);
11342 c = parser_nextc(parser);
11343 if (c != '-' && c != '+') continue;
11344 parser_tokadd(parser, c);
11348 if (nondigit) goto decode_num;
11354 c = parser_nextc(parser);
11357 parser_pushback(parser, c);
11358 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11362 sprintf(tmp, "trailing `%c' in number", nondigit);
11363 parser_yyerror(parser, tmp);
11366 double d = ruby_strtod((parser->parser_tokenbuf),0);
11367 if ((*__errno_location ()) == 34) {
11368 rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Float %s out of range", (parser->parser_tokenbuf));
11369 (*__errno_location ()) = 0;
11371 (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_float_new(d)), (VALUE)(0), (VALUE)(0));
11374 (*((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));
11379 (parser->parser_paren_nest)--;
11381 ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
11382 ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
11384 (parser->parser_lex_state) = EXPR_END;
11386 (parser->parser_lex_state) = EXPR_ENDARG;
11389 c = parser_nextc(parser);
11391 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) ||
11392 (parser->parser_lex_state) == EXPR_CLASS || (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen)) {
11393 (parser->parser_lex_state) = EXPR_BEG;
11396 (parser->parser_lex_state) = EXPR_DOT;
11399 if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG || (c != -1 && rb_isspace((unsigned char)(c)))) {
11400 parser_pushback(parser, c);
11401 (parser->parser_lex_state) = EXPR_BEG;
11406 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (c) | ((0) << (8 * 2)), 0);
11409 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dsym), (c) | ((0) << (8 * 2)), 0);
11412 parser_pushback(parser, c);
11415 (parser->parser_lex_state) = EXPR_FNAME;
11418 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)) {
11419 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
11422 if ((c = parser_nextc(parser)) == '=') {
11423 (*((YYSTYPE*)(parser->parser_yylval))).id = '/';
11424 (parser->parser_lex_state) = EXPR_BEG;
11427 parser_pushback(parser, c);
11428 if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
11429 if (!rb_isspace((unsigned char)(c))) {
11430 arg_ambiguous_gen(parser);
11431 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
11435 switch ((parser->parser_lex_state)) {
11436 case EXPR_FNAME: case EXPR_DOT:
11437 (parser->parser_lex_state) = EXPR_ARG; break;
11439 (parser->parser_lex_state) = EXPR_BEG; break;
11443 if ((c = parser_nextc(parser)) == '=') {
11444 (*((YYSTYPE*)(parser->parser_yylval))).id = '^';
11445 (parser->parser_lex_state) = EXPR_BEG;
11448 switch ((parser->parser_lex_state)) {
11449 case EXPR_FNAME: case EXPR_DOT:
11450 (parser->parser_lex_state) = EXPR_ARG; break;
11452 (parser->parser_lex_state) = EXPR_BEG; break;
11454 parser_pushback(parser, c);
11457 (parser->parser_lex_state) = EXPR_BEG;
11458 (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
11461 (parser->parser_lex_state) = EXPR_BEG;
11464 if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
11465 if ((c = parser_nextc(parser)) != '@') {
11466 parser_pushback(parser, c);
11468 (parser->parser_lex_state) = EXPR_ARG;
11471 (parser->parser_lex_state) = EXPR_BEG;
11475 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)) {
11478 else if (space_seen) {
11479 if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
11483 (parser->parser_paren_nest)++;
11484 ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
11485 ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
11486 (parser->parser_lex_state) = EXPR_BEG;
11489 (parser->parser_paren_nest)++;
11490 if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
11491 (parser->parser_lex_state) = EXPR_ARG;
11492 if ((c = parser_nextc(parser)) == ']') {
11493 if ((c = parser_nextc(parser)) == '=') {
11496 parser_pushback(parser, c);
11499 parser_pushback(parser, c);
11502 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)) {
11505 else if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
11508 (parser->parser_lex_state) = EXPR_BEG;
11509 ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
11510 ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
11513 if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
11514 (parser->parser_lex_state) = EXPR_BEG;
11515 (parser->parser_lpar_beg) = 0;
11516 --(parser->parser_paren_nest);
11519 if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || (parser->parser_lex_state) == EXPR_END)
11521 else if ((parser->parser_lex_state) == EXPR_ENDARG)
11525 ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
11526 ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
11527 (parser->parser_lex_state) = EXPR_BEG;
11528 if (c != 348) (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
11531 c = parser_nextc(parser);
11536 parser_pushback(parser, c);
11539 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)) {
11542 c = parser_nextc(parser);
11544 if (c == -1 || !rb_isalnum((unsigned char)(c))) {
11549 term = parser_nextc(parser);
11550 if ((parser->enc)->is_code_ctype(term,13,parser->enc) || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
11551 parser_yyerror(parser, "unknown type of %string");
11555 if (c == -1 || term == -1) {
11556 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated quoted string meets end of file");
11560 if (term == '(') term = ')';
11561 else if (term == '[') term = ']';
11562 else if (term == '{') term = '}';
11563 else if (term == '<') term = '>';
11567 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), (term) | ((paren) << (8 * 2)), 0);
11570 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), (term) | ((paren) << (8 * 2)), 0);
11573 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dword), (term) | ((paren) << (8 * 2)), 0);
11574 do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
11575 parser_pushback(parser, c);
11578 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_sword), (term) | ((paren) << (8 * 2)), 0);
11579 do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
11580 parser_pushback(parser, c);
11583 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), (term) | ((paren) << (8 * 2)), 0);
11586 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), (term) | ((paren) << (8 * 2)), 0);
11589 (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (term) | ((paren) << (8 * 2)), 0);
11590 (parser->parser_lex_state) = EXPR_FNAME;
11593 parser_yyerror(parser, "unknown type of %string");
11597 if ((c = parser_nextc(parser)) == '=') {
11598 (*((YYSTYPE*)(parser->parser_yylval))).id = '%';
11599 (parser->parser_lex_state) = EXPR_BEG;
11602 if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
11605 switch ((parser->parser_lex_state)) {
11606 case EXPR_FNAME: case EXPR_DOT:
11607 (parser->parser_lex_state) = EXPR_ARG; break;
11609 (parser->parser_lex_state) = EXPR_BEG; break;
11611 parser_pushback(parser, c);
11614 last_state = (parser->parser_lex_state);
11615 (parser->parser_lex_state) = EXPR_END;
11616 parser_newtok(parser);
11617 c = parser_nextc(parser);
11620 c = parser_nextc(parser);
11621 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)))) {
11622 parser_tokadd(parser, '$');
11623 parser_tokadd(parser, '_');
11626 parser_pushback(parser, c);
11644 parser_tokadd(parser, '$');
11645 parser_tokadd(parser, c);
11646 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11647 (*((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)));
11650 parser_tokadd(parser, '$');
11651 parser_tokadd(parser, c);
11652 c = parser_nextc(parser);
11653 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)))) {
11654 if (parser_tokadd_mbchar(parser, c) == -1) return 0;
11657 parser_pushback(parser, c);
11660 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11661 (*((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)));
11667 if (last_state == EXPR_FNAME) {
11668 parser_tokadd(parser, '$');
11669 parser_tokadd(parser, c);
11672 (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_BACK_REF), (VALUE)(0), (VALUE)(c), (VALUE)(0));
11674 case '1': case '2': case '3':
11675 case '4': case '5': case '6':
11676 case '7': case '8': case '9':
11677 parser_tokadd(parser, '$');
11679 parser_tokadd(parser, c);
11680 c = parser_nextc(parser);
11681 } while (c != -1 && rb_isdigit((unsigned char)(c)));
11682 parser_pushback(parser, c);
11683 if (last_state == EXPR_FNAME) goto gvar;
11684 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11685 (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_NTH_REF), (VALUE)(0), (VALUE)(atoi((parser->parser_tokenbuf)+1)), (VALUE)(0));
11688 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)))) {
11689 parser_pushback(parser, c);
11693 parser_tokadd(parser, '$');
11697 c = parser_nextc(parser);
11698 parser_newtok(parser);
11699 parser_tokadd(parser, '@');
11701 parser_tokadd(parser, '@');
11702 c = parser_nextc(parser);
11704 if (c != -1 && rb_isdigit((unsigned char)(c))) {
11705 if ((parser->parser_tokidx) == 1) {
11706 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@%c' is not allowed as an instance variable name", c);
11709 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@@%c' is not allowed as a class variable name", c);
11713 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)))) {
11714 parser_pushback(parser, c);
11719 if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,"__END__",7,0)) {
11720 (parser->parser_ruby__end__seen) = 1;
11721 parser->eofp = ((VALUE)RUBY_Qtrue);
11724 parser_newtok(parser);
11727 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)))) {
11728 rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Invalid char `\\x%02X' in expression", c);
11731 parser_newtok(parser);
11734 mb = (((VALUE)1)<<(12 +8));
11736 if (!((unsigned long)((unsigned char)(c)) < 128)) mb = 0;
11737 if (parser_tokadd_mbchar(parser, c) == -1) return 0;
11738 c = parser_nextc(parser);
11739 } 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))));
11740 switch ((parser->parser_tokenbuf)[0]) {
11741 case '@': case '$':
11742 parser_pushback(parser, c);
11745 if ((c == '!' || c == '?') && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p))) {
11746 parser_tokadd(parser, c);
11749 parser_pushback(parser, c);
11752 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11755 last_state = (parser->parser_lex_state);
11756 switch ((parser->parser_tokenbuf)[0]) {
11758 (parser->parser_lex_state) = EXPR_END;
11762 (parser->parser_lex_state) = EXPR_END;
11763 if ((parser->parser_tokenbuf)[1] == '@')
11769 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) == '?') {
11773 if ((parser->parser_lex_state) == EXPR_FNAME) {
11774 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)) &&
11775 (!((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] == '>'))) {
11777 parser_tokadd(parser, c);
11778 ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11781 parser_pushback(parser, c);
11784 if (result == 0 && rb_isupper((unsigned char)((parser->parser_tokenbuf)[0]))) {
11791 if (((parser->parser_lex_state) == EXPR_BEG && !cmd_state) ||
11792 (parser->parser_lex_state) == EXPR_ARG ||
11793 (parser->parser_lex_state) == EXPR_CMDARG) {
11794 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] == ':')) {
11795 (parser->parser_lex_state) = EXPR_BEG;
11796 parser_nextc(parser);
11797 (*((YYSTYPE*)(parser->parser_yylval))).id = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
11801 if (mb == (((VALUE)1)<<(12 +8)) && (parser->parser_lex_state) != EXPR_DOT) {
11802 const struct kwtable *kw;
11803 kw = rb_reserved_word((parser->parser_tokenbuf), (parser->parser_tokidx));
11805 enum lex_state_e state = (parser->parser_lex_state);
11806 (parser->parser_lex_state) = kw->state;
11807 if (state == EXPR_FNAME) {
11808 (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p(kw->name) ? __extension__ (rb_intern2(kw->name, strlen(kw->name))) : (rb_intern)(kw->name));
11811 if (kw->id[0] == 281) {
11812 (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
11813 if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
11814 (parser->parser_lpar_beg) = 0;
11815 --(parser->parser_paren_nest);
11818 if (((parser->parser_cond_stack)&1)) return 282;
11819 if (((parser->parser_cmdarg_stack)&1) && state != EXPR_CMDARG)
11821 if (state == EXPR_ENDARG || state == EXPR_BEG)
11825 if (state == EXPR_BEG || state == EXPR_VALUE)
11828 if (kw->id[0] != kw->id[1])
11829 (parser->parser_lex_state) = EXPR_BEG;
11834 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) ||
11835 (parser->parser_lex_state) == EXPR_DOT ||
11836 ((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
11838 (parser->parser_lex_state) = EXPR_CMDARG;
11841 (parser->parser_lex_state) = EXPR_ARG;
11845 (parser->parser_lex_state) = EXPR_END;
11849 ID ident = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
11850 (*((YYSTYPE*)(parser->parser_yylval))).id = ident;
11851 if (last_state != EXPR_DOT && (((ident)>376)&&((ident)&0x07)==0x00) && lvar_defined_gen(parser, ident)) {
11852 (parser->parser_lex_state) = EXPR_END;
11859 yylex(void *lval, void *p)
11861 struct parser_params *parser = (struct parser_params*)p;
11863 parser->parser_yylval = lval;
11864 parser->parser_yylval->val = ((VALUE)RUBY_Qundef);
11865 t = parser_yylex(parser);
11869 node_newnode(struct parser_params *parser, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
11871 NODE *n = (rb_node_newnode)(type, a0, a1, a2);
11872 ((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)));
11876 nodetype(NODE *node)
11878 return (enum node_type)((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
11881 nodeline(NODE *node)
11883 return ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
11886 newline_node(NODE *node)
11889 node = remove_begin(node);
11890 node->flags |= (((VALUE)1)<<7);
11895 fixpos(NODE *node, NODE *orig)
11899 if (orig == (NODE*)1) return;
11900 ((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)));
11903 parser_warning(struct parser_params *parser, NODE *node, const char *mesg)
11905 rb_compile_warning((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
11908 parser_warn(struct parser_params *parser, NODE *node, const char *mesg)
11910 rb_compile_warn((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
11913 block_append_gen(struct parser_params *parser, NODE *head, NODE *tail)
11915 NODE *end, *h = head, *nd;
11916 if (tail == 0) return head;
11917 if (h == 0) return tail;
11918 switch (((int) (((((struct RNode*)(h)))->flags & (((VALUE)0x7f)<<8))>>8))) {
11925 parser_warning(parser, h, "unused literal ignored");
11928 h = end = node_newnode(parser, (NODE_BLOCK), (VALUE)(head), (VALUE)(0), (VALUE)(0));
11929 end->u2.node = end;
11938 switch (((int) (((((struct RNode*)(nd)))->flags & (((VALUE)0x7f)<<8))>>8))) {
11944 if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) {
11945 parser_warning(parser, nd, "statement not reached");
11951 if (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) {
11952 tail = node_newnode(parser, (NODE_BLOCK), (VALUE)(tail), (VALUE)(0), (VALUE)(0));
11953 tail->u2.node = tail;
11955 end->u3.node = tail;
11956 h->u2.node = tail->u2.node;
11960 list_append_gen(struct parser_params *parser, NODE *list, NODE *item)
11963 if (list == 0) return node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
11964 if (list->u3.node) {
11965 last = list->u3.node->u2.node;
11970 list->u2.argc += 1;
11971 last->u3.node = node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
11972 list->u3.node->u2.node = last->u3.node;
11976 list_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
11979 if (head->u3.node) {
11980 last = head->u3.node->u2.node;
11985 head->u2.argc += tail->u2.argc;
11986 last->u3.node = tail;
11987 if (tail->u3.node) {
11988 head->u3.node->u2.node = tail->u3.node->u2.node;
11991 head->u3.node->u2.node = tail;
11996 literal_concat0(struct parser_params *parser, VALUE head, VALUE tail)
11998 if (!rb_enc_compatible(head, tail)) {
11999 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal encodings differ (%s / %s)",
12000 (rb_enc_get(head))->name,
12001 (rb_enc_get(tail))->name);
12002 rb_str_resize(head, 0);
12003 rb_str_resize(tail, 0);
12006 rb_str_buf_append(head, tail);
12010 literal_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
12012 enum node_type htype;
12013 if (!head) return tail;
12014 if (!tail) return head;
12015 htype = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8));
12016 if (htype == NODE_EVSTR) {
12017 NODE *node = node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0));
12018 head = list_append_gen(parser,node,head);
12020 switch (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12022 if (htype == NODE_STR) {
12023 if (!literal_concat0(parser, head->u1.value, tail->u1.value)) {
12025 rb_gc_force_recycle((VALUE)head);
12026 rb_gc_force_recycle((VALUE)tail);
12029 rb_gc_force_recycle((VALUE)tail);
12032 list_append_gen(parser,head,tail);
12036 if (htype == NODE_STR) {
12037 if (!literal_concat0(parser, head->u1.value, tail->u1.value))
12039 tail->u1.value = head->u1.value;
12040 rb_gc_force_recycle((VALUE)head);
12044 ((struct RNode*)(tail))->flags=((((struct RNode*)(tail))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARRAY)<<8)&(((VALUE)0x7f)<<8)));
12045 tail->u1.node = node_newnode(parser, (NODE_STR), (VALUE)(tail->u1.value), (VALUE)(0), (VALUE)(0));
12046 list_concat_gen(parser,head,tail);
12050 if (htype == NODE_STR) {
12051 ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSTR)<<8)&(((VALUE)0x7f)<<8)));
12054 list_append_gen(parser,head,tail);
12060 evstr2dstr_gen(struct parser_params *parser, NODE *node)
12062 if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_EVSTR) {
12063 node = list_append_gen(parser,node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0)),node);
12068 new_evstr_gen(struct parser_params *parser, NODE *node)
12072 switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12073 case NODE_STR: case NODE_DSTR: case NODE_EVSTR:
12077 return node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)((head)), (VALUE)(0));
12080 call_bin_op_gen(struct parser_params *parser, NODE *recv, ID id, NODE *arg1)
12082 value_expr_gen(parser, (recv) = remove_begin(recv));
12083 value_expr_gen(parser, (arg1) = remove_begin(arg1));
12084 return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(arg1), (VALUE)(1), (VALUE)(0))));
12087 call_uni_op_gen(struct parser_params *parser, NODE *recv, ID id)
12089 value_expr_gen(parser, (recv) = remove_begin(recv));
12090 return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(0));
12093 match_op_gen(struct parser_params *parser, NODE *node1, NODE *node2)
12095 value_expr_gen(parser, (node1) = remove_begin(node1));
12096 value_expr_gen(parser, (node2) = remove_begin(node2));
12098 switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12100 case NODE_DREGX_ONCE:
12101 return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
12103 if (rb_type((VALUE)(node1->u1.value)) == RUBY_T_REGEXP) {
12104 return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
12109 switch (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12111 case NODE_DREGX_ONCE:
12112 return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
12114 if (rb_type((VALUE)(node2->u1.value)) == RUBY_T_REGEXP) {
12115 return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
12119 return node_newnode(parser, (NODE_CALL), (VALUE)(node1), (VALUE)(332), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0))));
12122 gettable_gen(struct parser_params *parser, ID id)
12125 return node_newnode(parser, (NODE_SELF), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12127 else if (id == 289) {
12128 return node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12130 else if (id == 290) {
12131 return node_newnode(parser, (NODE_TRUE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12133 else if (id == 291) {
12134 return node_newnode(parser, (NODE_FALSE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12136 else if (id == 305) {
12137 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));
12139 else if (id == 304) {
12140 return node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)((parser->parser_ruby_sourceline)))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
12142 else if (id == 306) {
12143 return node_newnode(parser, (NODE_LIT), (VALUE)(rb_enc_from_encoding(parser->enc)), (VALUE)(0), (VALUE)(0));
12145 else if ((((id)>376)&&((id)&0x07)==0x00)) {
12146 if (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) return node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
12147 if (local_id_gen(parser, id)) return node_newnode(parser, (NODE_LVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
12148 return node_newnode(parser, (NODE_VCALL), (VALUE)(0), (VALUE)(id), (VALUE)(0));
12150 else if ((((id)>376)&&((id)&0x07)==0x03)) {
12151 return node_newnode(parser, (NODE_GVAR), (VALUE)(id), (VALUE)(0), (VALUE)(rb_global_entry(id)));
12153 else if ((((id)>376)&&((id)&0x07)==0x01)) {
12154 return node_newnode(parser, (NODE_IVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
12156 else if ((((id)>376)&&((id)&0x07)==0x05)) {
12157 return node_newnode(parser, (NODE_CONST), (VALUE)(id), (VALUE)(0), (VALUE)(0));
12159 else if ((((id)>376)&&((id)&0x07)==0x06)) {
12160 return node_newnode(parser, (NODE_CVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
12162 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to get", rb_id2name(id));
12166 assignable_gen(struct parser_params *parser, ID id, NODE *val)
12170 parser_yyerror(parser, "Can't change the value of self");
12172 else if (id == 289) {
12173 parser_yyerror(parser, "Can't assign to nil");
12175 else if (id == 290) {
12176 parser_yyerror(parser, "Can't assign to true");
12178 else if (id == 291) {
12179 parser_yyerror(parser, "Can't assign to false");
12181 else if (id == 305) {
12182 parser_yyerror(parser, "Can't assign to __FILE__");
12184 else if (id == 304) {
12185 parser_yyerror(parser, "Can't assign to __LINE__");
12187 else if (id == 306) {
12188 parser_yyerror(parser, "Can't assign to __ENCODING__");
12190 else if ((((id)>376)&&((id)&0x07)==0x00)) {
12191 if (dyna_in_block_gen(parser)) {
12192 if (dvar_curr_gen(parser, id)) {
12193 return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12195 else if (dvar_defined_gen(parser, id)) {
12196 return node_newnode(parser, (NODE_DASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12198 else if (local_id_gen(parser, id)) {
12199 return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12202 local_var_gen(parser, id);;
12203 return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12207 if (!local_id_gen(parser, id)) {
12208 local_var_gen(parser, id);;
12210 return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12213 else if ((((id)>376)&&((id)&0x07)==0x03)) {
12214 return node_newnode(parser, (NODE_GASGN), (VALUE)(id), (VALUE)(val), (VALUE)(rb_global_entry(id)));
12216 else if ((((id)>376)&&((id)&0x07)==0x01)) {
12217 return node_newnode(parser, (NODE_IASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12219 else if ((((id)>376)&&((id)&0x07)==0x05)) {
12220 if ((parser->parser_in_def) || (parser->parser_in_single))
12221 parser_yyerror(parser, "dynamic constant assignment");
12222 return node_newnode(parser, (NODE_CDECL), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12224 else if ((((id)>376)&&((id)&0x07)==0x06)) {
12225 return node_newnode(parser, (NODE_CVASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12228 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to set", rb_id2name(id));
12233 shadowing_lvar_gen(struct parser_params *parser, ID name)
12236 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);
12237 if (uscore == name) return;
12238 if (dyna_in_block_gen(parser)) {
12239 if (dvar_curr_gen(parser, name)) {
12240 parser_yyerror(parser, "duplicated argument name");
12242 else if (dvar_defined_gen(parser, name) || local_id_gen(parser, name)) {
12243 rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "shadowing outer local variable - %s", rb_id2name(name));
12244 vtable_add((parser->parser_lvtbl)->vars, name);
12248 if (local_id_gen(parser, name)) {
12249 parser_yyerror(parser, "duplicated argument name");
12254 new_bv_gen(struct parser_params *parser, ID name)
12257 if (!(((name)>376)&&((name)&0x07)==0x00)) {
12258 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid local variable - %s",
12262 shadowing_lvar_gen(parser, name);
12263 local_var_gen(parser, name);;
12266 aryset_gen(struct parser_params *parser, NODE *recv, NODE *idx)
12268 if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
12270 return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(337), (VALUE)(idx));
12273 block_dup_check_gen(struct parser_params *parser, NODE *node1, NODE *node2)
12275 if (node2 && node1 && ((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
12276 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "both block arg and actual block given");
12280 rb_id_attrset(ID id)
12287 attrset_gen(struct parser_params *parser, NODE *recv, ID id)
12289 if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
12291 return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(rb_id_attrset(id)), (VALUE)(0));
12294 rb_backref_error_gen(struct parser_params *parser, NODE *node)
12296 switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12298 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%ld", node->u2.argc);
12300 case NODE_BACK_REF:
12301 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%c", (int)node->u2.argc);
12306 arg_concat_gen(struct parser_params *parser, NODE *node1, NODE *node2)
12308 if (!node2) return node1;
12309 switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12310 case NODE_BLOCK_PASS:
12311 node1->u3.node = arg_concat_gen(parser,node1->u3.node,node2);
12313 case NODE_ARGSPUSH:
12314 if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
12315 node1->u2.node = list_concat_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
12316 ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
12319 if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY ||
12320 ((int) (((((struct RNode*)(node1->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
12321 node1->u2.node = list_concat_gen(parser,node1->u2.node,node2);
12324 return node_newnode(parser, (NODE_ARGSCAT), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
12327 arg_append_gen(struct parser_params *parser, NODE *node1, NODE *node2)
12329 if (!node1) return node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0));
12330 switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12332 return list_append_gen(parser,node1,node2);
12333 case NODE_BLOCK_PASS:
12334 node1->u1.node = arg_append_gen(parser,node1->u1.node,node2);
12336 case NODE_ARGSPUSH:
12337 node1->u2.node = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
12338 ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
12341 return node_newnode(parser, (NODE_ARGSPUSH), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
12344 splat_array(NODE* node)
12346 if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) node = node->u1.node;
12347 if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) return node;
12351 node_assign_gen(struct parser_params *parser, NODE *lhs, NODE *rhs)
12353 if (!lhs) return 0;
12354 switch (((int) (((((struct RNode*)(lhs)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12360 case NODE_DASGN_CURR:
12364 lhs->u2.node = rhs;
12366 case NODE_ATTRASGN:
12368 lhs->u3.node = arg_append_gen(parser,lhs->u3.node,rhs);
12376 value_expr_gen(struct parser_params *parser, NODE *node)
12380 rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "empty expression");
12383 switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12386 parser_warning(parser, node, "void value expression");
12387 return ((VALUE)RUBY_Qfalse);
12393 if (!cond) parser_yyerror(parser, "void value expression");
12394 return ((VALUE)RUBY_Qfalse);
12396 while (node->u3.node) {
12397 node = node->u3.node;
12399 node = node->u1.node;
12402 node = node->u2.node;
12405 if (!node->u2.node) {
12406 node = node->u3.node;
12409 else if (!node->u3.node) {
12410 node = node->u2.node;
12413 if (!value_expr_gen(parser, (node->u2.node) = remove_begin(node->u2.node))) return ((VALUE)RUBY_Qfalse);
12414 node = node->u3.node;
12419 node = node->u2.node;
12422 return ((VALUE)RUBY_Qtrue);
12425 return ((VALUE)RUBY_Qtrue);
12428 void_expr_gen(struct parser_params *parser, NODE *node)
12430 const char *useless = 0;
12431 if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
12433 switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12435 switch (node->u2.id) {
12454 useless = rb_id2name(node->u2.id);
12464 case NODE_BACK_REF:
12465 useless = "a variable";
12468 useless = "a constant";
12474 case NODE_DREGX_ONCE:
12475 useless = "a literal";
12500 useless = "defined?";
12504 int line = (parser->parser_ruby_sourceline);
12505 (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
12506 rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "useless use of %s in void context", useless);
12507 (parser->parser_ruby_sourceline) = line;
12511 void_stmts_gen(struct parser_params *parser, NODE *node)
12513 if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
12515 if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) return;
12517 if (!node->u3.node) return;
12518 void_expr_gen(parser, (node->u1.node));
12519 node = node->u3.node;
12523 remove_begin(NODE *node)
12525 NODE **n = &node, *n1 = node;
12526 while (n1 && ((int) (((((struct RNode*)(n1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN && n1->u2.node) {
12527 *n = n1 = n1->u2.node;
12532 reduce_nodes_gen(struct parser_params *parser, NODE **body)
12534 NODE *node = *body;
12536 *body = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12540 switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12546 *body = node = node->u1.node;
12549 *body = node = node->u2.node;
12552 body = &node->u2.node->u1.node;
12555 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;
12558 body = &node->u2.node;
12561 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;
12564 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;
12567 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;
12576 assign_in_cond(struct parser_params *parser, NODE *node)
12578 switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12580 parser_yyerror(parser, "multiple assignment in conditional");
12590 switch (((int) (((((struct RNode*)(node->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12596 parser_warn(parser, node->u2.node, "found = in conditional, should be ==");
12609 warn_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
12611 if (!e_option_supplied(parser)) parser_warn(parser, node, str);
12614 warning_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
12616 if (!e_option_supplied(parser)) parser_warning(parser, node, str);
12619 fixup_nodes(NODE **rootnode)
12621 NODE *node, *next, *head;
12622 for (node = *rootnode; node; node = next) {
12623 enum node_type type;
12625 next = node->u3.node;
12626 head = node->u1.node;
12627 rb_gc_force_recycle((VALUE)node);
12629 switch (type = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12632 val = rb_range_new(head->u1.node->u1.value, head->u2.node->u1.value,
12633 type == NODE_DOT3 ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
12634 rb_gc_force_recycle((VALUE)head->u1.node);
12635 rb_gc_force_recycle((VALUE)head->u2.node);
12636 ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
12637 head->u1.value = val;
12644 static NODE *cond0(struct parser_params*,NODE*);
12646 range_op(struct parser_params *parser, NODE *node)
12648 enum node_type type;
12649 if (node == 0) return 0;
12650 type = ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
12651 value_expr_gen(parser, (node) = remove_begin(node));
12652 if (type == NODE_LIT && (((long)(node->u1.value))&RUBY_FIXNUM_FLAG)) {
12653 warn_unless_e_option(parser, node, "integer literal in conditional range");
12654 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))));
12656 return cond0(parser, node);
12659 literal_node(NODE *node)
12661 if (!node) return 1;
12662 switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12668 case NODE_DREGX_ONCE:
12679 cond0(struct parser_params *parser, NODE *node)
12681 if (node == 0) return 0;
12682 assign_in_cond(parser, node);
12683 switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12687 rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal in condition");
12690 case NODE_DREGX_ONCE:
12691 warning_unless_e_option(parser, node, "regex literal in condition");
12692 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));
12695 node->u1.node = cond0(parser, node->u1.node);
12696 node->u2.node = cond0(parser, node->u2.node);
12700 node->u1.node = range_op(parser, node->u1.node);
12701 node->u2.node = range_op(parser, node->u2.node);
12702 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)));
12703 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)));
12704 if (!e_option_supplied(parser)) {
12705 int b = literal_node(node->u1.node);
12706 int e = literal_node(node->u2.node);
12707 if ((b == 1 && e == 1) || (b + e >= 2 && (((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0))) {
12708 parser_warn(parser, node, "range literal in condition");
12713 parser_warning(parser, node, "literal in condition");
12716 if (rb_type((VALUE)(node->u1.value)) == RUBY_T_REGEXP) {
12717 warn_unless_e_option(parser, node, "regex literal in condition");
12718 ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_MATCH)<<8)&(((VALUE)0x7f)<<8)));
12721 parser_warning(parser, node, "literal in condition");
12729 cond_gen(struct parser_params *parser, NODE *node)
12731 if (node == 0) return 0;
12732 return cond0(parser, node);
12735 logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *right)
12737 value_expr_gen(parser, (left) = remove_begin(left));
12738 if (left && ((int) (((((struct RNode*)(left)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
12739 NODE *node = left, *second;
12740 while ((second = node->u2.node) != 0 && ((int) (((((struct RNode*)(second)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
12743 node->u2.node = node_newnode(parser, (type), (VALUE)(second), (VALUE)(right), (VALUE)(0));
12746 return node_newnode(parser, (type), (VALUE)(left), (VALUE)(right), (VALUE)(0));
12749 no_blockarg(struct parser_params *parser, NODE *node)
12751 if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
12752 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block argument should not be given");
12756 ret_args_gen(struct parser_params *parser, NODE *node)
12759 no_blockarg(parser, node);
12760 if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
12761 if (node->u3.node == 0) {
12762 node = node->u1.node;
12765 ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_VALUES)<<8)&(((VALUE)0x7f)<<8)));
12772 new_yield_gen(struct parser_params *parser, NODE *node)
12774 long state = ((VALUE)RUBY_Qtrue);
12776 no_blockarg(parser, node);
12777 if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) {
12778 state = ((VALUE)RUBY_Qtrue);
12782 state = ((VALUE)RUBY_Qfalse);
12784 return node_newnode(parser, (NODE_YIELD), (VALUE)(node), (VALUE)(0), (VALUE)(state));
12787 negate_lit(NODE *node)
12789 switch (rb_type((VALUE)(node->u1.value))) {
12790 case RUBY_T_FIXNUM:
12791 node->u1.value = ((VALUE)(((long)(-(((long)node->u1.value)>>(int)1)))<<1 | RUBY_FIXNUM_FLAG));
12793 case RUBY_T_BIGNUM:
12794 node->u1.value = rb_funcall(node->u1.value,322,0,0);
12797 ((struct RFloat*)(node->u1.value))->float_value = -(((struct RFloat*)(node->u1.value))->float_value);
12805 arg_blk_pass(NODE *node1, NODE *node2)
12808 node2->u1.node = node1;
12814 new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, ID b)
12816 int saved_line = (parser->parser_ruby_sourceline);
12819 node = node_newnode(parser, (NODE_ARGS), (VALUE)(o), (VALUE)(m ? m->u2.argc : 0), (VALUE)(0));
12820 i1 = m ? m->u3.node : 0;
12821 node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(r), (VALUE)(b), (VALUE)(0));
12824 node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(p->u1.id), (VALUE)(p->u2.argc), (VALUE)(0));
12827 node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12830 node->u3.node->u3.node->u3.node = node_newnode(parser, (NODE_AND), (VALUE)(i1), (VALUE)(i2), (VALUE)(0));
12832 (parser->parser_ruby_sourceline) = saved_line;
12836 local_push_gen(struct parser_params *parser, int inherit_dvars)
12838 struct local_vars *local;
12839 local = (struct local_vars*)ruby_xmalloc(sizeof(struct local_vars));
12840 local->prev = (parser->parser_lvtbl);
12841 local->args = vtable_alloc(0);
12842 local->vars = vtable_alloc(inherit_dvars ? ((void*)1) : ((void *)0));
12843 (parser->parser_lvtbl) = local;
12846 local_pop_gen(struct parser_params *parser)
12848 struct local_vars *local = (parser->parser_lvtbl)->prev;
12849 vtable_free((parser->parser_lvtbl)->args);
12850 vtable_free((parser->parser_lvtbl)->vars);
12851 ruby_xfree((parser->parser_lvtbl));
12852 (parser->parser_lvtbl) = local;
12855 vtable_tblcpy(ID *buf, const struct vtable *src)
12857 int i, cnt = vtable_size(src);
12860 for (i = 0; i < cnt; i++) {
12861 buf[i] = src->tbl[i];
12868 local_tbl_gen(struct parser_params *parser)
12870 int cnt = vtable_size((parser->parser_lvtbl)->args) + vtable_size((parser->parser_lvtbl)->vars);
12872 if (cnt <= 0) return 0;
12873 buf = (ID*)ruby_xmalloc2((cnt + 1),sizeof(ID));
12874 vtable_tblcpy(buf+1, (parser->parser_lvtbl)->args);
12875 vtable_tblcpy(buf+vtable_size((parser->parser_lvtbl)->args)+1, (parser->parser_lvtbl)->vars);
12880 arg_var_gen(struct parser_params *parser, ID id)
12882 vtable_add((parser->parser_lvtbl)->args, id);
12883 return vtable_size((parser->parser_lvtbl)->args) - 1;
12886 local_var_gen(struct parser_params *parser, ID id)
12888 vtable_add((parser->parser_lvtbl)->vars, id);
12889 return vtable_size((parser->parser_lvtbl)->vars) - 1;
12892 local_id_gen(struct parser_params *parser, ID id)
12894 struct vtable *vars, *args;
12895 vars = (parser->parser_lvtbl)->vars;
12896 args = (parser->parser_lvtbl)->args;
12897 while (vars && ((VALUE)(vars->prev) & ~(VALUE)3)) {
12901 if (vars && vars->prev == ((void*)1)) {
12902 return rb_local_defined(id);
12905 return (vtable_included(args, id) ||
12906 vtable_included(vars, id));
12910 dyna_push_gen(struct parser_params *parser)
12912 (parser->parser_lvtbl)->args = vtable_alloc((parser->parser_lvtbl)->args);
12913 (parser->parser_lvtbl)->vars = vtable_alloc((parser->parser_lvtbl)->vars);
12916 dyna_pop_gen(struct parser_params *parser)
12918 struct vtable *tmp;
12919 tmp = (parser->parser_lvtbl)->args;
12920 (parser->parser_lvtbl)->args = (parser->parser_lvtbl)->args->prev;
12922 tmp = (parser->parser_lvtbl)->vars;
12923 (parser->parser_lvtbl)->vars = (parser->parser_lvtbl)->vars->prev;
12927 dyna_in_block_gen(struct parser_params *parser)
12929 return ((VALUE)((parser->parser_lvtbl)->vars) & ~(VALUE)3) && (parser->parser_lvtbl)->vars->prev != ((void *)0);
12932 dvar_defined_gen(struct parser_params *parser, ID id)
12934 struct vtable *vars, *args;
12935 args = (parser->parser_lvtbl)->args;
12936 vars = (parser->parser_lvtbl)->vars;
12937 while (((VALUE)(vars) & ~(VALUE)3)) {
12938 if (vtable_included(args, id)) {
12941 if (vtable_included(vars, id)) {
12947 if (vars == ((void*)1)) {
12948 return rb_dvar_defined(id);
12953 dvar_curr_gen(struct parser_params *parser, ID id)
12955 return (vtable_included((parser->parser_lvtbl)->args, id) ||
12956 vtable_included((parser->parser_lvtbl)->vars, id));
12958 VALUE rb_reg_compile(VALUE str, int options);
12959 VALUE rb_reg_check_preprocess(VALUE);
12961 reg_fragment_setenc_gen(struct parser_params* parser, VALUE str, int options)
12963 int c = (((options)>>8)&0xff);
12966 rb_char_to_option_kcode(c, &opt, &idx);
12967 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)) &&
12968 rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
12971 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);
12973 else if (((options)&32)) {
12974 if (!(((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) == 0) &&
12975 rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
12979 rb_enc_associate(str, rb_ascii8bit_encoding());
12981 else if (parser->enc == rb_usascii_encoding()) {
12982 if (rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
12983 rb_enc_associate(str, rb_usascii_encoding());
12986 rb_enc_associate(str, rb_ascii8bit_encoding());
12991 parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline),
12992 "regexp encoding option '%c' differs from source encoding '%s'",
12993 c, (rb_enc_get(str))->name);
12996 reg_fragment_check_gen(struct parser_params* parser, VALUE str, int options)
12999 reg_fragment_setenc_gen(parser, str, options);
13000 err = rb_reg_check_preprocess(str);
13001 if (err != ((VALUE)RUBY_Qnil)) {
13002 err = rb_obj_as_string(err);
13003 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));
13004 (*(volatile VALUE *)&(err));
13008 struct parser_params* parser;
13013 } reg_named_capture_assign_t;
13015 reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
13016 int back_num, int *back_refs, OnigRegex regex, void *arg0)
13018 reg_named_capture_assign_t *arg = (reg_named_capture_assign_t*)arg0;
13019 struct parser_params* parser = arg->parser;
13020 rb_encoding *enc = arg->enc;
13021 int len = name_end - name;
13022 const char *s = (const char *)name;
13025 if (arg->succ_block == 0) {
13026 arg->succ_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
13027 arg->fail_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
13029 if (!len || (*name != '_' && ((unsigned long)((unsigned char)(*name)) < 128) && !(enc)->is_code_ctype(*name,6,enc)) ||
13030 rb_reserved_word(s, len) || !rb_enc_symname2_p(s, len, enc)) {
13031 return ST_CONTINUE;
13033 var = rb_intern3(s, len, enc);
13034 if (dvar_defined_gen(parser, var) || local_id_gen(parser, var)) {
13035 rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "named capture conflicts a local variable - %s", rb_id2name(var));
13037 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)))))));
13038 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)))));
13039 return ST_CONTINUE;
13042 reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match)
13044 reg_named_capture_assign_t arg;
13045 arg.parser = parser;
13046 arg.enc = rb_enc_get(regexp);
13047 arg.succ_block = 0;
13048 arg.fail_block = 0;
13050 onig_foreach_name(((struct RRegexp*)(regexp))->ptr, reg_named_capture_assign_iter, (void*)&arg);
13054 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)))))));
13057 reg_compile_gen(struct parser_params* parser, VALUE str, int options)
13061 reg_fragment_setenc_gen(parser, str, options);
13062 err = rb_errinfo();
13063 re = rb_reg_compile(str, options & 0xff);
13064 if (((VALUE)(re) == ((VALUE)RUBY_Qnil))) {
13065 ID mesg = (__builtin_constant_p("mesg") ? __extension__ (rb_intern2("mesg", strlen("mesg"))) : (rb_intern)("mesg"));
13066 VALUE m = rb_attr_get(rb_errinfo(), mesg);
13067 rb_set_errinfo(err);
13068 if (!((VALUE)(err) == ((VALUE)RUBY_Qnil))) {
13069 rb_str_append(rb_str_cat(rb_attr_get(err, mesg), "\n", 1), m);
13072 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));
13074 return ((VALUE)RUBY_Qnil);
13079 rb_gc_mark_parser(void)
13083 rb_parser_append_print(VALUE vparser, NODE *node)
13086 NODE *scope = node;
13087 struct parser_params *parser;
13088 if (!node) return node;
13089 do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
13090 node = node->u2.node;
13091 if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
13093 node = node->u2.node;
13095 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)))));
13097 prelude->u2.node = node;
13098 scope->u2.node = prelude;
13101 scope->u2.node = node;
13106 rb_parser_while_loop(VALUE vparser, NODE *node, int chop, int split)
13109 NODE *scope = node;
13110 struct parser_params *parser;
13111 if (!node) return node;
13112 do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
13113 node = node->u2.node;
13114 if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
13116 node = node->u2.node;
13119 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);
13122 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);
13124 node = node_newnode(parser, (NODE_OPT_N), (VALUE)(0), (VALUE)(node), (VALUE)(0));
13126 prelude->u2.node = node;
13127 scope->u2.node = prelude;
13130 scope->u2.node = node;
13134 static const struct {
13140 {'+', "+(binary)"},
13141 {'-', "-(binary)"},
13159 static struct symbols {
13163 st_table *ivar2_id;
13164 st_table *id_ivar2;
13166 } global_symbols = {tLAST_ID};
13167 static const struct st_hash_type symhash = {
13176 ivar2_cmp(struct ivar2_key *key1, struct ivar2_key *key2)
13178 if (key1->id == key2->id && key1->klass == key2->klass) {
13184 ivar2_hash(struct ivar2_key *key)
13186 return (key->id << 8) ^ (key->klass >> 2);
13188 static const struct st_hash_type ivar2_hash_type = {
13195 global_symbols.sym_id = st_init_table_with_size(&symhash, 1000);
13196 global_symbols.id_str = st_init_numtable_with_size(1000);
13197 global_symbols.ivar2_id = st_init_table_with_size(&ivar2_hash_type, 1000);
13198 global_symbols.id_ivar2 = st_init_numtable_with_size(1000);
13202 rb_gc_mark_symbols(void)
13204 rb_mark_tbl(global_symbols.id_str);
13205 rb_gc_mark_locations(global_symbols.op_sym,
13206 global_symbols.op_sym + 376);
13209 internal_id_gen(struct parser_params *parser)
13211 ID id = (ID)vtable_size((parser->parser_lvtbl)->args) + (ID)vtable_size((parser->parser_lvtbl)->vars);
13212 id += ((376 - 0x07) >> 3) + 1;
13213 return 0x07 | (id << 3);
13216 is_special_global_name(const char *m, const char *e, rb_encoding *enc)
13219 if (m >= e) return 0;
13221 case '~': case '*': case '$': case '?': case '!': case '@':
13222 case '/': case '\\': case ';': case ',': case '.': case '=':
13223 case ':': case '<': case '>': case '\"':
13224 case '&': case '`': case '\'': case '+':
13230 if (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
13231 if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
13232 m += rb_enc_mbclen(m, e, enc);
13236 if (!(enc)->is_code_ctype(*m,4,enc)) return 0;
13238 if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
13240 } while ((enc)->is_code_ctype(*m,4,enc));
13242 return m == e ? mb + 1 : 0;
13245 rb_symname_p(const char *name)
13247 return rb_enc_symname_p(name, rb_ascii8bit_encoding());
13250 rb_enc_symname_p(const char *name, rb_encoding *enc)
13252 return rb_enc_symname2_p(name, strlen(name), enc);
13255 rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
13257 const char *m = name;
13258 const char *e = m + len;
13259 int localid = ((VALUE)RUBY_Qfalse);
13260 if (!m) return ((VALUE)RUBY_Qfalse);
13263 return ((VALUE)RUBY_Qfalse);
13265 if (is_special_global_name(++m, e, enc)) return ((VALUE)RUBY_Qtrue);
13268 if (*++m == '@') ++m;
13272 case '<': ++m; break;
13273 case '=': if (*++m == '>') ++m; break;
13279 case '>': case '=': ++m; break;
13284 case '~': ++m; break;
13285 case '=': if (*++m == '=') ++m; break;
13286 default: return ((VALUE)RUBY_Qfalse);
13290 if (*++m == '*') ++m;
13292 case '+': case '-':
13293 if (*++m == '@') ++m;
13295 case '|': case '^': case '&': case '/': case '%': case '~': case '`':
13299 if (*++m != ']') return ((VALUE)RUBY_Qfalse);
13300 if (*++m == '=') ++m;
13304 case '\0': return ((VALUE)RUBY_Qtrue);
13305 case '=': case '~': ++m; break;
13306 default: return ((VALUE)RUBY_Qfalse);
13310 localid = !(enc)->is_code_ctype(*m,10,enc);
13312 if (m >= e || (*m != '_' && !(enc)->is_code_ctype(*m,1,enc) && ((unsigned long)((unsigned char)(*m)) < 128)))
13313 return ((VALUE)RUBY_Qfalse);
13314 while (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) m += rb_enc_mbclen(m, e, enc);
13317 case '!': case '?': case '=': ++m;
13322 return *m ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
13325 register_symid(ID id, const char *name, long len, rb_encoding *enc)
13327 VALUE str = rb_enc_str_new(name, len, enc);
13328 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);
13329 st_add_direct(global_symbols.sym_id, (st_data_t)str, id);
13330 st_add_direct(global_symbols.id_str, id, (st_data_t)str);
13334 rb_intern3(const char *name, long len, rb_encoding *enc)
13336 const char *m = name;
13337 const char *e = m + len;
13343 struct RString fake_str;
13344 fake_str.basic.flags = RUBY_T_STRING|(((VALUE)1)<<(12 +1))|(((VALUE)1)<<11);
13345 fake_str.basic.klass = rb_cString;
13346 fake_str.as.heap.len = len;
13347 fake_str.as.heap.ptr = (char *)name;
13348 fake_str.as.heap.aux.capa = len;
13349 str = (VALUE)&fake_str;
13350 rb_enc_associate(str, enc);
13351 if (st_lookup(global_symbols.sym_id, str, (st_data_t *)&id))
13353 if (rb_cString && !((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
13362 if ((mb = is_special_global_name(++m, e, enc)) != 0) {
13363 if (!--mb) enc = rb_ascii8bit_encoding();
13379 if (c != '_' && ((c) < 128) && (enc)->is_code_ctype(c,8,enc)) {
13385 for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
13386 if (*op_tbl[i].name == *m &&
13387 __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) {
13388 id = op_tbl[i].token;
13393 if (m[last] == '=') {
13394 id = rb_intern3(name, last, enc);
13395 if (id > 376 && !(((id)>376)&&((id)&0x07)==0x04)) {
13396 enc = rb_enc_get(rb_id2str(id));
13397 id = rb_id_attrset(id);
13402 else if ((enc)->is_code_ctype(m[0],10,enc)) {
13411 if (!(enc)->is_code_ctype(*m,4,enc)) {
13412 while (m <= name + last && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
13413 if (((unsigned long)((unsigned char)(*m)) < 128)) {
13418 m += rb_enc_mbclen(m, e, enc);
13422 if (m - name < len) id = 0x07;
13423 if (enc != rb_usascii_encoding()) {
13425 for (; m <= name + len; ++m) {
13426 if (!((unsigned long)((unsigned char)(*m)) < 128)) goto mbstr;
13428 enc = rb_usascii_encoding();
13433 id |= ++global_symbols.last_id << 3;
13435 return register_symid(id, name, len, enc);
13438 rb_intern2(const char *name, long len)
13440 return rb_intern3(name, len, rb_usascii_encoding());
13443 rb_intern(const char *name)
13445 return rb_intern2(name, strlen(name));
13448 rb_intern_str(VALUE str)
13452 if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
13453 enc = rb_usascii_encoding();
13456 enc = rb_enc_get(str);
13458 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);
13459 (*(volatile VALUE *)&(str));
13468 if (rb_ispunct(id)) {
13469 VALUE str = global_symbols.op_sym[i = (int)id];
13472 name[0] = (char)id;
13474 str = rb_usascii_str_new(name, 1);
13475 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);
13476 global_symbols.op_sym[i] = str;
13480 for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
13481 if (op_tbl[i].token == id) {
13482 VALUE str = global_symbols.op_sym[i];
13484 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); });
13485 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);
13486 global_symbols.op_sym[i] = str;
13492 if (st_lookup(global_symbols.id_str, id, &data)) {
13493 VALUE str = (VALUE)data;
13494 if (((struct RBasic*)(str))->klass == 0)
13495 ((struct RBasic*)(str))->klass = rb_cString;
13498 if ((((id)>376)&&((id)&0x07)==0x04)) {
13499 ID id2 = (id & ~0x07) | 0x00;
13501 while (!(str = rb_id2str(id2))) {
13502 if (!(((id2)>376)&&((id2)&0x07)==0x00)) return 0;
13503 id2 = (id & ~0x07) | 0x05;
13505 str = rb_str_dup(str);
13506 rb_str_cat(str, "=", 1);
13507 rb_intern_str(str);
13508 if (st_lookup(global_symbols.id_str, id, &data)) {
13509 VALUE str = (VALUE)data;
13510 if (((struct RBasic*)(str))->klass == 0)
13511 ((struct RBasic*)(str))->klass = rb_cString;
13520 VALUE str = rb_id2str(id);
13521 if (!str) return 0;
13522 return (!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr);
13525 symbols_i(VALUE sym, ID value, VALUE ary)
13527 rb_ary_push(ary, (((VALUE)(value)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG));
13528 return ST_CONTINUE;
13531 rb_sym_all_symbols(void)
13533 VALUE ary = rb_ary_new2(global_symbols.sym_id->num_entries);
13534 st_foreach(global_symbols.sym_id, symbols_i, ary);
13538 rb_is_const_id(ID id)
13540 if ((((id)>376)&&((id)&0x07)==0x05)) return ((VALUE)RUBY_Qtrue);
13541 return ((VALUE)RUBY_Qfalse);
13544 rb_is_class_id(ID id)
13546 if ((((id)>376)&&((id)&0x07)==0x06)) return ((VALUE)RUBY_Qtrue);
13547 return ((VALUE)RUBY_Qfalse);
13550 rb_is_instance_id(ID id)
13552 if ((((id)>376)&&((id)&0x07)==0x01)) return ((VALUE)RUBY_Qtrue);
13553 return ((VALUE)RUBY_Qfalse);
13556 rb_is_local_id(ID id)
13558 if ((((id)>376)&&((id)&0x07)==0x00)) return ((VALUE)RUBY_Qtrue);
13559 return ((VALUE)RUBY_Qfalse);
13562 rb_is_junk_id(ID id)
13564 if ((((id)>376)&&((id)&0x07)==0x07)) return ((VALUE)RUBY_Qtrue);
13565 return ((VALUE)RUBY_Qfalse);
13568 parser_initialize(struct parser_params *parser)
13570 parser->eofp = ((VALUE)RUBY_Qfalse);
13571 parser->parser_lex_strterm = 0;
13572 parser->parser_cond_stack = 0;
13573 parser->parser_cmdarg_stack = 0;
13574 parser->parser_class_nest = 0;
13575 parser->parser_paren_nest = 0;
13576 parser->parser_lpar_beg = 0;
13577 parser->parser_in_single = 0;
13578 parser->parser_in_def = 0;
13579 parser->parser_in_defined = 0;
13580 parser->parser_compile_for_eval = 0;
13581 parser->parser_cur_mid = 0;
13582 parser->parser_tokenbuf = ((void *)0);
13583 parser->parser_tokidx = 0;
13584 parser->parser_toksiz = 0;
13585 parser->parser_heredoc_end = 0;
13586 parser->parser_command_start = ((VALUE)RUBY_Qtrue);
13587 parser->parser_deferred_nodes = 0;
13588 parser->parser_lex_pbeg = 0;
13589 parser->parser_lex_p = 0;
13590 parser->parser_lex_pend = 0;
13591 parser->parser_lvtbl = 0;
13592 parser->parser_ruby__end__seen = 0;
13593 parser->parser_ruby_sourcefile = 0;
13594 parser->is_ripper = 0;
13595 parser->parser_eval_tree_begin = 0;
13596 parser->parser_eval_tree = 0;
13597 parser->heap = ((void *)0);
13598 parser->enc = rb_usascii_encoding();
13601 parser_mark(void *ptr)
13603 struct parser_params *p = (struct parser_params*)ptr;
13604 rb_gc_mark((VALUE)p->parser_lex_strterm);
13605 rb_gc_mark((VALUE)p->parser_deferred_nodes);
13606 rb_gc_mark(p->parser_lex_input);
13607 rb_gc_mark(p->parser_lex_lastline);
13608 rb_gc_mark(p->parser_lex_nextline);
13609 rb_gc_mark((VALUE)p->parser_eval_tree_begin) ;
13610 rb_gc_mark((VALUE)p->parser_eval_tree) ;
13611 rb_gc_mark(p->debug_lines);
13612 rb_gc_mark((VALUE)p->heap);
13615 parser_free(void *ptr)
13617 struct parser_params *p = (struct parser_params*)ptr;
13618 struct local_vars *local, *prev;
13619 if (p->parser_tokenbuf) {
13620 ruby_xfree(p->parser_tokenbuf);
13622 for (local = p->parser_lvtbl; local; local = prev) {
13623 if (local->vars) ruby_xfree(local->vars);
13624 prev = local->prev;
13627 ruby_xfree(p->parser_ruby_sourcefile);
13630 VALUE rb_parser_get_yydebug(VALUE);
13631 VALUE rb_parser_set_yydebug(VALUE, VALUE);
13632 static struct parser_params *
13635 struct parser_params *p;
13636 p = (struct parser_params*)ruby_xmalloc2((1),sizeof(struct parser_params));
13637 memset((p), 0, sizeof(struct parser_params)*(1));
13638 parser_initialize(p);
13642 rb_parser_new(void)
13644 struct parser_params *p = parser_new();
13645 return rb_data_object_alloc(0,p,(RUBY_DATA_FUNC)parser_mark,(RUBY_DATA_FUNC)parser_free);
13648 rb_parser_end_seen_p(VALUE vparser)
13650 struct parser_params *parser;
13651 do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
13652 return (parser->parser_ruby__end__seen) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13655 rb_parser_encoding(VALUE vparser)
13657 struct parser_params *parser;
13658 do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
13659 return rb_enc_from_encoding(parser->enc);
13662 rb_parser_get_yydebug(VALUE self)
13664 struct parser_params *parser;
13665 do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
13666 return (parser->parser_yydebug) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13669 rb_parser_set_yydebug(VALUE self, VALUE flag)
13671 struct parser_params *parser;
13672 do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
13673 (parser->parser_yydebug) = (((VALUE)(flag) & ~((VALUE)RUBY_Qnil)) != 0);
13677 rb_parser_malloc(struct parser_params *parser, size_t size)
13679 size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
13680 NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
13681 void *ptr = ruby_xmalloc(size);
13682 return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
13685 rb_parser_calloc(struct parser_params *parser, size_t nelem, size_t size)
13687 size_t cnt = ((nelem) * (size) / sizeof(YYSTYPE));
13688 NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
13689 void *ptr = ruby_xcalloc(nelem, size);
13690 return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
13693 rb_parser_realloc(struct parser_params *parser, void *ptr, size_t size)
13696 size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
13697 if (ptr && (n = parser->heap) != ((void *)0)) {
13699 if (n->u1.node == ptr) {
13700 n->u1.node = ptr = ruby_xrealloc(ptr, size);
13701 if (n->u3.cnt) n->u3.cnt = cnt;
13704 } while ((n = n->u2.node) != ((void *)0));
13706 n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
13707 ptr = ruby_xrealloc(ptr, size);
13708 return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
13711 rb_parser_free(struct parser_params *parser, void *ptr)
13713 NODE **prev = &parser->heap, *n;
13714 while ((n = *prev) != ((void *)0)) {
13715 if (n->u1.node == ptr) {
13716 *prev = n->u2.node;
13717 rb_gc_force_recycle((VALUE)n);
13720 prev = &n->u2.node;