]> git.wh0rd.org Git - ICEs.git/blob - 264653/parse_.i.1
more
[ICEs.git] / 264653 / parse_.i.1
1    enum yytokentype {
2      keyword_class = 258,
3      keyword_module = 259,
4      keyword_def = 260,
5      keyword_undef = 261,
6      keyword_begin = 262,
7      keyword_rescue = 263,
8      keyword_ensure = 264,
9      keyword_end = 265,
10      keyword_if = 266,
11      keyword_unless = 267,
12      keyword_then = 268,
13      keyword_elsif = 269,
14      keyword_else = 270,
15      keyword_case = 271,
16      keyword_when = 272,
17      keyword_while = 273,
18      keyword_until = 274,
19      keyword_for = 275,
20      keyword_break = 276,
21      keyword_next = 277,
22      keyword_redo = 278,
23      keyword_retry = 279,
24      keyword_in = 280,
25      keyword_do = 281,
26      keyword_do_cond = 282,
27      keyword_do_block = 283,
28      keyword_do_LAMBDA = 284,
29      keyword_return = 285,
30      keyword_yield = 286,
31      keyword_super = 287,
32      keyword_self = 288,
33      keyword_nil = 289,
34      keyword_true = 290,
35      keyword_false = 291,
36      keyword_and = 292,
37      keyword_or = 293,
38      keyword_not = 294,
39      modifier_if = 295,
40      modifier_unless = 296,
41      modifier_while = 297,
42      modifier_until = 298,
43      modifier_rescue = 299,
44      keyword_alias = 300,
45      keyword_defined = 301,
46      keyword_BEGIN = 302,
47      keyword_END = 303,
48      keyword__LINE__ = 304,
49      keyword__FILE__ = 305,
50      keyword__ENCODING__ = 306,
51      tIDENTIFIER = 307,
52      tFID = 308,
53      tGVAR = 309,
54      tIVAR = 310,
55      tCONSTANT = 311,
56      tCVAR = 312,
57      tLABEL = 313,
58      tINTEGER = 314,
59      tFLOAT = 315,
60      tSTRING_CONTENT = 316,
61      tCHAR = 317,
62      tNTH_REF = 318,
63      tBACK_REF = 319,
64      tREGEXP_END = 320,
65      tUPLUS = 321,
66      tUMINUS = 322,
67      tPOW = 323,
68      tCMP = 324,
69      tEQ = 325,
70      tEQQ = 326,
71      tNEQ = 327,
72      tGEQ = 328,
73      tLEQ = 329,
74      tANDOP = 330,
75      tOROP = 331,
76      tMATCH = 332,
77      tNMATCH = 333,
78      tDOT2 = 334,
79      tDOT3 = 335,
80      tAREF = 336,
81      tASET = 337,
82      tLSHFT = 338,
83      tRSHFT = 339,
84      tCOLON2 = 340,
85      tCOLON3 = 341,
86      tOP_ASGN = 342,
87      tASSOC = 343,
88      tLPAREN = 344,
89      tLPAREN_ARG = 345,
90      tRPAREN = 346,
91      tLBRACK = 347,
92      tLBRACE = 348,
93      tLBRACE_ARG = 349,
94      tSTAR = 350,
95      tAMPER = 351,
96      tLAMBDA = 352,
97      tSYMBEG = 353,
98      tSTRING_BEG = 354,
99      tXSTRING_BEG = 355,
100      tREGEXP_BEG = 356,
101      tWORDS_BEG = 357,
102      tQWORDS_BEG = 358,
103      tSTRING_DBEG = 359,
104      tSTRING_DVAR = 360,
105      tSTRING_END = 361,
106      tLAMBEG = 362,
107      tLOWEST = 363,
108      tUMINUS_NUM = 364,
109      idNULL = 365,
110      idRespond_to = 366,
111      idIFUNC = 367,
112      idCFUNC = 368,
113      idThrowState = 369,
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,
120      tLAST_TOKEN = 376
121    };
122 typedef unsigned int size_t;
123 typedef int wchar_t;
124 union wait
125   {
126     int w_status;
127     struct
128       {
129  unsigned int __w_termsig:7;
130  unsigned int __w_coredump:1;
131  unsigned int __w_retcode:8;
132  unsigned int:16;
133       } __wait_terminated;
134     struct
135       {
136  unsigned int __w_stopval:8;
137  unsigned int __w_stopsig:8;
138  unsigned int:16;
139       } __wait_stopped;
140   };
141 typedef union
142   {
143     union wait *__uptr;
144     int *__iptr;
145   } __WAIT_STATUS __attribute__ ((__transparent_union__));
146 typedef struct
147   {
148     int quot;
149     int rem;
150   } div_t;
151 typedef struct
152   {
153     long int quot;
154     long int rem;
155   } ldiv_t;
156 __extension__ typedef struct
157   {
158     long long int quot;
159     long long int rem;
160   } lldiv_t;
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))) ;
184 __extension__
185 extern long long int strtoq (__const char *__restrict __nptr,
186         char **__restrict __endptr, int __base)
187      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
188 __extension__
189 extern unsigned long long int strtouq (__const char *__restrict __nptr,
190            char **__restrict __endptr, int __base)
191      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
192 __extension__
193 extern long long int strtoll (__const char *__restrict __nptr,
194          char **__restrict __endptr, int __base)
195      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
196 __extension__
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
201 {
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];
207 } *__locale_t;
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))) ;
215 __extension__
216 extern long long int strtoll_l (__const char *__restrict __nptr,
217     char **__restrict __endptr, int __base,
218     __locale_t __loc)
219      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
220 __extension__
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,
233          __locale_t __loc)
234      __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
235 extern __inline double
236 __attribute__ ((__nothrow__)) atof (__const char *__nptr)
237 {
238   return strtod (__nptr, (char **) ((void *)0));
239 }
240 extern __inline int
241 __attribute__ ((__nothrow__)) atoi (__const char *__nptr)
242 {
243   return (int) strtol (__nptr, (char **) ((void *)0), 10);
244 }
245 extern __inline long int
246 __attribute__ ((__nothrow__)) atol (__const char *__nptr)
247 {
248   return strtol (__nptr, (char **) ((void *)0), 10);
249 }
250 __extension__ extern __inline long long int
251 __attribute__ ((__nothrow__)) atoll (__const char *__nptr)
252 {
253   return strtoll (__nptr, (char **) ((void *)0), 10);
254 }
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;
326 typedef __id_t id_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;
350 typedef struct
351   {
352     unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
353   } __sigset_t;
354 typedef __sigset_t sigset_t;
355 struct timespec
356   {
357     __time_t tv_sec;
358     long int tv_nsec;
359   };
360 struct timeval
361   {
362     __time_t tv_sec;
363     __suseconds_t tv_usec;
364   };
365 typedef long int __fd_mask;
366 typedef struct
367   {
368     __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
369   } fd_set;
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);
380 __extension__
381 extern unsigned int gnu_dev_major (unsigned long long int __dev)
382      __attribute__ ((__nothrow__));
383 __extension__
384 extern unsigned int gnu_dev_minor (unsigned long long int __dev)
385      __attribute__ ((__nothrow__));
386 __extension__
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)
392 {
393   return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
394 }
395 __extension__ extern __inline unsigned int
396 __attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
397 {
398   return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
399 }
400 __extension__ extern __inline unsigned long long int
401 __attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
402 {
403   return ((__minor & 0xff) | ((__major & 0xfff) << 8)
404    | (((unsigned long long int) (__minor & ~0xff)) << 12)
405    | (((unsigned long long int) (__major & ~0xfff)) << 32));
406 }
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;
415 typedef union
416 {
417   char __size[36];
418   long int __align;
419 } pthread_attr_t;
420 typedef struct __pthread_internal_slist
421 {
422   struct __pthread_internal_slist *__next;
423 } __pthread_slist_t;
424 typedef union
425 {
426   struct __pthread_mutex_s
427   {
428     int __lock;
429     unsigned int __count;
430     int __owner;
431     int __kind;
432     unsigned int __nusers;
433     __extension__ union
434     {
435       int __spins;
436       __pthread_slist_t __list;
437     };
438   } __data;
439   char __size[24];
440   long int __align;
441 } pthread_mutex_t;
442 typedef union
443 {
444   char __size[4];
445   int __align;
446 } pthread_mutexattr_t;
447 typedef union
448 {
449   struct
450   {
451     int __lock;
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;
456     void *__mutex;
457     unsigned int __nwaiters;
458     unsigned int __broadcast_seq;
459   } __data;
460   char __size[48];
461   __extension__ long long int __align;
462 } pthread_cond_t;
463 typedef union
464 {
465   char __size[4];
466   int __align;
467 } pthread_condattr_t;
468 typedef unsigned int pthread_key_t;
469 typedef int pthread_once_t;
470 typedef union
471 {
472   struct
473   {
474     int __lock;
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;
484     int __writer;
485   } __data;
486   char __size[32];
487   long int __align;
488 } pthread_rwlock_t;
489 typedef union
490 {
491   char __size[8];
492   long int __align;
493 } pthread_rwlockattr_t;
494 typedef volatile int pthread_spinlock_t;
495 typedef union
496 {
497   char __size[20];
498   long int __align;
499 } pthread_barrier_t;
500 typedef union
501 {
502   char __size[4];
503   int __align;
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)));
510 struct random_data
511   {
512     int32_t *fptr;
513     int32_t *rptr;
514     int32_t *state;
515     int rand_type;
516     int rand_deg;
517     int rand_sep;
518     int32_t *end_ptr;
519   };
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,
525    size_t __statelen,
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)));
546 struct drand48_data
547   {
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;
553   };
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,
694         int __c, size_t __n)
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,
792     __locale_t __loc)
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)
820 {
821   register size_t __result = 0;
822   while (__s[__result] != '\0' && __s[__result] != __reject)
823     ++__result;
824   return __result;
825 }
826 extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
827          int __reject2);
828 extern __inline size_t
829 __strcspn_c2 (__const char *__s, int __reject1, int __reject2)
830 {
831   register size_t __result = 0;
832   while (__s[__result] != '\0' && __s[__result] != __reject1
833   && __s[__result] != __reject2)
834     ++__result;
835   return __result;
836 }
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,
841        int __reject3)
842 {
843   register size_t __result = 0;
844   while (__s[__result] != '\0' && __s[__result] != __reject1
845   && __s[__result] != __reject2 && __s[__result] != __reject3)
846     ++__result;
847   return __result;
848 }
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)
852 {
853   register size_t __result = 0;
854   while (__s[__result] == __accept)
855     ++__result;
856   return __result;
857 }
858 extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
859         int __accept2);
860 extern __inline size_t
861 __strspn_c2 (__const char *__s, int __accept1, int __accept2)
862 {
863   register size_t __result = 0;
864   while (__s[__result] == __accept1 || __s[__result] == __accept2)
865     ++__result;
866   return __result;
867 }
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)
872 {
873   register size_t __result = 0;
874   while (__s[__result] == __accept1 || __s[__result] == __accept2
875   || __s[__result] == __accept3)
876     ++__result;
877   return __result;
878 }
879 extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
880          int __accept2);
881 extern __inline char *
882 __strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
883 {
884   while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
885     ++__s;
886   return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
887 }
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,
892        int __accept3)
893 {
894   while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
895   && *__s != __accept3)
896     ++__s;
897   return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
898 }
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)
902 {
903   char *__result;
904   if (__s == ((void *)0))
905     __s = *__nextp;
906   while (*__s == __sep)
907     ++__s;
908   __result = ((void *)0);
909   if (*__s != '\0')
910     {
911       __result = __s++;
912       while (*__s != '\0')
913  if (*__s++ == __sep)
914    {
915      __s[-1] = '\0';
916      break;
917    }
918       *__nextp = __s;
919     }
920   return __result;
921 }
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)
926 {
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))
929     *(*__s)++ = '\0';
930   return __retval;
931 }
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)
935 {
936   register char *__retval = *__s;
937   if (__retval != ((void *)0))
938     {
939       register char *__cp = __retval;
940       while (1)
941  {
942    if (*__cp == '\0')
943      {
944        __cp = ((void *)0);
945    break;
946      }
947    if (*__cp == __reject1 || *__cp == __reject2)
948      {
949        *__cp++ = '\0';
950        break;
951      }
952    ++__cp;
953  }
954       *__s = __cp;
955     }
956   return __retval;
957 }
958 extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
959        char __reject3);
960 extern __inline char *
961 __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
962 {
963   register char *__retval = *__s;
964   if (__retval != ((void *)0))
965     {
966       register char *__cp = __retval;
967       while (1)
968  {
969    if (*__cp == '\0')
970      {
971        __cp = ((void *)0);
972    break;
973      }
974    if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
975      {
976        *__cp++ = '\0';
977        break;
978      }
979    ++__cp;
980  }
981       *__s = __cp;
982     }
983   return __retval;
984 }
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;
991 __extension__
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;
996 __extension__
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;
1001 __extension__
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;
1006 __extension__
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;
1011 __extension__
1012 typedef unsigned long long int uint_fast64_t;
1013 typedef int intptr_t;
1014 typedef unsigned int uintptr_t;
1015 __extension__
1016 typedef long long int intmax_t;
1017 __extension__
1018 typedef unsigned long long int uintmax_t;
1019 typedef int __gwchar_t;
1020 typedef struct
1021   {
1022     long long int quot;
1023     long long int rem;
1024   } imaxdiv_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__));
1038 __extension__
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)
1045 {
1046   return __strtoll_internal (nptr, endptr, base, 0);
1047 }
1048 __extension__
1049 extern unsigned long long int __strtoull_internal (__const char *
1050          __restrict __nptr,
1051          char **
1052          __restrict __endptr,
1053          int __base,
1054          int __group)
1055   __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
1056 extern __inline uintmax_t
1057 __attribute__ ((__nothrow__)) strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)
1058 {
1059   return __strtoull_internal (nptr, endptr, base, 0);
1060 }
1061 __extension__
1062 extern long long int __wcstoll_internal (__const __gwchar_t *
1063       __restrict __nptr,
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)
1069 {
1070   return __wcstoll_internal (nptr, endptr, base, 0);
1071 }
1072 __extension__
1073 extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
1074          __restrict __nptr,
1075          __gwchar_t **
1076          __restrict __endptr,
1077          int __base,
1078          int __group)
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)
1082 {
1083   return __wcstoull_internal (nptr, endptr, base, 0);
1084 }
1085 typedef int ptrdiff_t;
1086 struct _IO_FILE;
1087 typedef struct _IO_FILE FILE;
1088 typedef struct _IO_FILE __FILE;
1089 typedef struct
1090 {
1091   int __count;
1092   union
1093   {
1094     unsigned int __wch;
1095     char __wchb[4];
1096   } __value;
1097 } __mbstate_t;
1098 typedef struct
1099 {
1100   __off_t __pos;
1101   __mbstate_t __state;
1102 } _G_fpos_t;
1103 typedef struct
1104 {
1105   __off64_t __pos;
1106   __mbstate_t __state;
1107 } _G_fpos64_t;
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;
1115 struct _IO_marker {
1116   struct _IO_marker *_next;
1117   struct _IO_FILE *_sbuf;
1118   int _pos;
1119 };
1120 enum __codecvt_result
1121 {
1122   __codecvt_ok,
1123   __codecvt_partial,
1124   __codecvt_error,
1125   __codecvt_noconv
1126 };
1127 struct _IO_FILE {
1128   int _flags;
1129   char* _IO_read_ptr;
1130   char* _IO_read_end;
1131   char* _IO_read_base;
1132   char* _IO_write_base;
1133   char* _IO_write_ptr;
1134   char* _IO_write_end;
1135   char* _IO_buf_base;
1136   char* _IO_buf_end;
1137   char *_IO_save_base;
1138   char *_IO_backup_base;
1139   char *_IO_save_end;
1140   struct _IO_marker *_markers;
1141   struct _IO_FILE *_chain;
1142   int _fileno;
1143   int _flags2;
1144   __off_t _old_offset;
1145   unsigned short _cur_column;
1146   signed char _vtable_offset;
1147   char _shortbuf[1];
1148   _IO_lock_t *_lock;
1149   __off64_t _offset;
1150   void *__pad1;
1151   void *__pad2;
1152   void *__pad3;
1153   void *__pad4;
1154   size_t __pad5;
1155   int _mode;
1156   char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
1157 };
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,
1165      size_t __n);
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;
1172 typedef struct
1173 {
1174   __io_read_fn *read;
1175   __io_write_fn *write;
1176   __io_seek_fn *seek;
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,
1197     __gnuc_va_list);
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")
1224   ;
1225 extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64")
1226   ;
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)
1303      ;
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);
1357 struct obstack;
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__));
1368 extern __inline int
1369 vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
1370 {
1371   return vfprintf (stdout, __fmt, __arg);
1372 }
1373 extern __inline int
1374 getchar (void)
1375 {
1376   return _IO_getc (stdin);
1377 }
1378 extern __inline int
1379 fgetc_unlocked (FILE *__fp)
1380 {
1381   return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
1382 }
1383 extern __inline int
1384 getc_unlocked (FILE *__fp)
1385 {
1386   return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
1387 }
1388 extern __inline int
1389 getchar_unlocked (void)
1390 {
1391   return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
1392 }
1393 extern __inline int
1394 putchar (int __c)
1395 {
1396   return _IO_putc (__c, stdout);
1397 }
1398 extern __inline int
1399 fputc_unlocked (int __c, FILE *__stream)
1400 {
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)));
1402 }
1403 extern __inline int
1404 putc_unlocked (int __c, FILE *__stream)
1405 {
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)));
1407 }
1408 extern __inline int
1409 putchar_unlocked (int __c)
1410 {
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)));
1412 }
1413 extern __inline __ssize_t
1414 getline (char **__lineptr, size_t *__n, FILE *__stream)
1415 {
1416   return __getdelim (__lineptr, __n, '\n', __stream);
1417 }
1418 extern __inline int
1419 __attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
1420 {
1421   return (((__stream)->_flags & 0x10) != 0);
1422 }
1423 extern __inline int
1424 __attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
1425 {
1426   return (((__stream)->_flags & 0x20) != 0);
1427 }
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 {
1441     RUBY_Qfalse = 0,
1442     RUBY_Qtrue = 2,
1443     RUBY_Qnil = 4,
1444     RUBY_Qundef = 6,
1445     RUBY_IMMEDIATE_MASK = 0x03,
1446     RUBY_FIXNUM_FLAG = 0x01,
1447     RUBY_SYMBOL_FLAG = 0x0e,
1448     RUBY_SPECIAL_SHIFT = 8
1449 };
1450 enum ruby_value_type {
1451     RUBY_T_NONE = 0x00,
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,
1459     RUBY_T_HASH = 0x08,
1460     RUBY_T_STRUCT = 0x09,
1461     RUBY_T_BIGNUM = 0x0a,
1462     RUBY_T_FILE = 0x0b,
1463     RUBY_T_DATA = 0x0c,
1464     RUBY_T_MATCH = 0x0d,
1465     RUBY_T_COMPLEX = 0x0e,
1466     RUBY_T_RATIONAL = 0x0f,
1467     RUBY_T_NIL = 0x11,
1468     RUBY_T_TRUE = 0x12,
1469     RUBY_T_FALSE = 0x13,
1470     RUBY_T_SYMBOL = 0x14,
1471     RUBY_T_FIXNUM = 0x15,
1472     RUBY_T_UNDEF = 0x1b,
1473     RUBY_T_NODE = 0x1c,
1474     RUBY_T_ICLASS = 0x1d,
1475     RUBY_T_ZOMBIE = 0x1e,
1476     RUBY_T_MASK = 0x1f
1477 };
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);
1498 static inline long
1499 NUM2LONG(VALUE x)
1500 {
1501     return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2long(x);
1502 }
1503 long long rb_num2ll(VALUE);
1504 unsigned long long rb_num2ull(VALUE);
1505 static inline long long
1506 NUM2LL(VALUE x)
1507 {
1508     return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2ll(x);
1509 }
1510 double rb_num2dbl(VALUE);
1511 VALUE rb_uint2big(VALUE);
1512 VALUE rb_int2big(long);
1513 static inline VALUE
1514 INT2NUM(int v)
1515 {
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));
1519 }
1520 static inline VALUE
1521 UINT2NUM(unsigned int v)
1522 {
1523     if (!((v) < (2147483647L>>1)+1))
1524  return rb_uint2big(v);
1525     return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
1526 }
1527 static inline VALUE
1528 LONG2NUM(long v)
1529 {
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);
1532 }
1533 static inline VALUE
1534 ULONG2NUM(unsigned long v)
1535 {
1536     if (((v) < (2147483647L>>1)+1)) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
1537     return rb_uint2big(v);
1538 }
1539 char *rb_str2cstr(VALUE,long*);
1540 VALUE rb_newobj(void);
1541 struct RBasic {
1542     VALUE flags;
1543     VALUE klass;
1544 };
1545 struct RObject {
1546     struct RBasic basic;
1547     union {
1548  struct {
1549      long numiv;
1550      VALUE *ivptr;
1551             struct st_table *iv_index_tbl;
1552  } heap;
1553  VALUE ary[3];
1554     } as;
1555 };
1556 typedef struct {
1557     VALUE super;
1558     struct st_table *iv_tbl;
1559 } rb_classext_t;
1560 struct RClass {
1561     struct RBasic basic;
1562     rb_classext_t *ptr;
1563     struct st_table *m_tbl;
1564     struct st_table *iv_index_tbl;
1565 };
1566 struct RFloat {
1567     struct RBasic basic;
1568     double float_value;
1569 };
1570 struct RString {
1571     struct RBasic basic;
1572     union {
1573  struct {
1574      long len;
1575      char *ptr;
1576      union {
1577   long capa;
1578   VALUE shared;
1579      } aux;
1580  } heap;
1581  char ary[((sizeof(VALUE)*3)/sizeof(char)-1) + 1];
1582     } as;
1583 };
1584 struct RArray {
1585     struct RBasic basic;
1586     union {
1587  struct {
1588      long len;
1589      union {
1590   long capa;
1591   VALUE shared;
1592      } aux;
1593      VALUE *ptr;
1594  } heap;
1595  VALUE ary[3];
1596     } as;
1597 };
1598 struct RRegexp {
1599     struct RBasic basic;
1600     struct re_pattern_buffer *ptr;
1601     VALUE src;
1602     unsigned long usecnt;
1603 };
1604 struct RHash {
1605     struct RBasic basic;
1606     struct st_table *ntbl;
1607     int iter_lev;
1608     VALUE ifnone;
1609 };
1610 struct RFile {
1611     struct RBasic basic;
1612     struct rb_io_t *fptr;
1613 };
1614 struct RRational {
1615     struct RBasic basic;
1616     VALUE num;
1617     VALUE den;
1618 };
1619 struct RComplex {
1620     struct RBasic basic;
1621     VALUE real;
1622     VALUE imag;
1623 };
1624 struct RData {
1625     struct RBasic basic;
1626     void (*dmark)(void*);
1627     void (*dfree)(void*);
1628     void *data;
1629 };
1630 typedef void (*RUBY_DATA_FUNC)(void*);
1631 VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
1632 struct RStruct {
1633     struct RBasic basic;
1634     union {
1635  struct {
1636      long len;
1637      VALUE *ptr;
1638  } heap;
1639  VALUE ary[3];
1640     } as;
1641 };
1642 struct RBignum {
1643     struct RBasic basic;
1644     union {
1645         struct {
1646             long len;
1647             unsigned int *digits;
1648         } heap;
1649         unsigned int ary[((sizeof(VALUE)*3)/sizeof(unsigned int))];
1650     } as;
1651 };
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);
1697 ID rb_to_id(VALUE);
1698 VALUE rb_id2str(ID);
1699 const char *rb_class2name(VALUE);
1700 const char *rb_obj_classname(VALUE);
1701 void rb_p(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;
1829 static inline VALUE
1830 rb_class_of(VALUE obj)
1831 {
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;
1836     }
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;
1840     }
1841     return ((struct RBasic*)(obj))->klass;
1842 }
1843 static inline int
1844 rb_type(VALUE obj)
1845 {
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;
1851     }
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;
1855     }
1856     return (((struct RBasic*)(obj))->flags & RUBY_T_MASK);
1857 }
1858 static inline int
1859 rb_special_const_p(VALUE obj)
1860 {
1861     if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0))) return ((VALUE)RUBY_Qtrue);
1862     return ((VALUE)RUBY_Qfalse);
1863 }
1864 struct timezone
1865   {
1866     int tz_minuteswest;
1867     int tz_dsttime;
1868   };
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__));
1877 enum __itimer_which
1878   {
1879     ITIMER_REAL = 0,
1880     ITIMER_VIRTUAL = 1,
1881     ITIMER_PROF = 2
1882   };
1883 struct itimerval
1884   {
1885     struct timeval it_interval;
1886     struct timeval it_value;
1887   };
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 {
1908     int (*compare)( );
1909     int (*hash)( );
1910 };
1911 typedef st_data_t st_index_t;
1912 struct st_table {
1913     const struct st_hash_type *type;
1914     st_index_t num_bins;
1915     unsigned int entries_packed : 1;
1916     __extension__
1917     st_index_t num_entries : (sizeof(st_index_t) * 8) - 1;
1918     struct st_table_entry **bins;
1919     struct st_table_entry *head;
1920 };
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);
2078 typedef struct {
2079     int maxfd;
2080     fd_set *fdset;
2081 } rb_fdset_t;
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);
2194 void rb_gc(void);
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);
2218 extern VALUE rb_fs;
2219 extern VALUE rb_output_fs;
2220 extern VALUE rb_rs;
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 {
2304     int argc;
2305     VALUE *argv;
2306     const char *prog;
2307     VALUE options;
2308     VALUE redirect_fds;
2309 };
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;
2527     VALUE data;
2528     struct rb_event_hook_struct *next;
2529 } rb_event_hook_t;
2530 void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
2531          VALUE data);
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;
2556 typedef struct {
2557   int byte_len;
2558   int code_len;
2559   OnigCodePoint code[3];
2560 } OnigCaseFoldCodeItem;
2561 typedef struct {
2562   OnigCodePoint esc;
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);
2572   const char* name;
2573   int max_enc_len;
2574   int min_enc_len;
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;
2588 } OnigEncodingType;
2589 typedef OnigEncodingType* OnigEncoding;
2590 extern OnigEncodingType OnigEncodingASCII;
2591 extern
2592 int onigenc_mbclen_approximate (const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
2593 extern
2594 OnigUChar* onigenc_step_back (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
2595 extern
2596 int onigenc_init (void);
2597 extern
2598 int onigenc_set_default_encoding (OnigEncoding enc);
2599 extern
2600 OnigEncoding onigenc_get_default_encoding (void);
2601 extern
2602 void onigenc_set_default_caseconv_table (const OnigUChar* table);
2603 extern
2604 OnigUChar* onigenc_get_right_adjust_char_head_with_prev (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
2605 extern
2606 OnigUChar* onigenc_get_prev_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
2607 extern
2608 OnigUChar* onigenc_get_left_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
2609 extern
2610 OnigUChar* onigenc_get_right_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
2611 extern
2612 int onigenc_strlen (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
2613 extern
2614 int onigenc_strlen_null (OnigEncoding enc, const OnigUChar* p);
2615 extern
2616 int onigenc_str_bytelen_null (OnigEncoding enc, const OnigUChar* p);
2617 typedef unsigned int OnigOptionType;
2618 typedef struct {
2619   unsigned int op;
2620   unsigned int op2;
2621   unsigned int behavior;
2622   OnigOptionType options;
2623   OnigMetaCharTableType meta_char_table;
2624 } OnigSyntaxType;
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 {
2637   int group;
2638   int beg;
2639   int end;
2640   int allocated;
2641   int num_childs;
2642   struct OnigCaptureTreeNodeStruct** childs;
2643 } OnigCaptureTreeNode;
2644 struct re_registers {
2645   int allocated;
2646   int num_regs;
2647   int* beg;
2648   int* end;
2649   OnigCaptureTreeNode* history_root;
2650 };
2651 typedef struct re_registers OnigRegion;
2652 typedef struct {
2653   OnigEncoding enc;
2654   OnigUChar* par;
2655   OnigUChar* par_end;
2656 } OnigErrorInfo;
2657 typedef struct {
2658   int lower;
2659   int upper;
2660 } OnigRepeatRange;
2661 typedef void (*OnigWarnFunc) (const char* s);
2662 extern void onig_null_warn (const char* s);
2663 typedef struct re_pattern_buffer {
2664   unsigned char* p;
2665   unsigned int used;
2666   unsigned int alloc;
2667   int state;
2668   int num_mem;
2669   int num_repeat;
2670   int num_null_check;
2671   int num_comb_exp_check;
2672   int num_call;
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;
2679   OnigEncoding enc;
2680   OnigOptionType options;
2681   const OnigSyntaxType* syntax;
2682   OnigCaseFoldType case_fold_flag;
2683   void* name_table;
2684   int optimize;
2685   int threshold_len;
2686   int anchor;
2687   OnigDistance anchor_dmin;
2688   OnigDistance anchor_dmax;
2689   int sub_anchor;
2690   unsigned char *exact;
2691   unsigned char *exact_end;
2692   unsigned char map[256];
2693   int *int_map;
2694   int *int_map_backward;
2695   OnigDistance dmin;
2696   OnigDistance dmax;
2697   struct re_pattern_buffer* chain;
2698 } OnigRegexType;
2699 typedef OnigRegexType* OnigRegex;
2700   typedef OnigRegexType regex_t;
2701 typedef struct {
2702   int num_of_elements;
2703   OnigEncoding pattern_enc;
2704   OnigEncoding target_enc;
2705   OnigSyntaxType* syntax;
2706   OnigOptionType option;
2707   OnigCaseFoldType case_fold_flag;
2708 } OnigCompileInfo;
2709 extern
2710 int onig_init (void);
2711 extern
2712 int onig_error_code_to_str (OnigUChar* s, int err_code, ...);
2713 extern
2714 void onig_set_warn_func (OnigWarnFunc f);
2715 extern
2716 void onig_set_verb_warn_func (OnigWarnFunc f);
2717 extern
2718 int onig_new (OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
2719 extern
2720 int onig_new_deluxe (OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
2721 extern
2722 void onig_free (OnigRegex);
2723 extern
2724 int onig_recompile (OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo);
2725 extern
2726 int onig_recompile_deluxe (OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
2727 extern
2728 int onig_search (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
2729 extern
2730 int onig_match (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
2731 extern
2732 OnigRegion* onig_region_new (void);
2733 extern
2734 void onig_region_init (OnigRegion* region);
2735 extern
2736 void onig_region_free (OnigRegion* region, int free_self);
2737 extern
2738 void onig_region_copy (OnigRegion* to, OnigRegion* from);
2739 extern
2740 void onig_region_clear (OnigRegion* region);
2741 extern
2742 int onig_region_resize (OnigRegion* region, int n);
2743 extern
2744 int onig_region_set (OnigRegion* region, int at, int beg, int end);
2745 extern
2746 int onig_name_to_group_numbers (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
2747 extern
2748 int onig_name_to_backref_number (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region);
2749 extern
2750 int onig_foreach_name (OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
2751 extern
2752 int onig_number_of_names (OnigRegex reg);
2753 extern
2754 int onig_number_of_captures (OnigRegex reg);
2755 extern
2756 int onig_number_of_capture_histories (OnigRegex reg);
2757 extern
2758 OnigCaptureTreeNode* onig_get_capture_tree (OnigRegion* region);
2759 extern
2760 int onig_capture_tree_traverse (OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg);
2761 extern
2762 int onig_noname_group_capture_is_active (OnigRegex reg);
2763 extern
2764 OnigEncoding onig_get_encoding (OnigRegex reg);
2765 extern
2766 OnigOptionType onig_get_options (OnigRegex reg);
2767 extern
2768 OnigCaseFoldType onig_get_case_fold_flag (OnigRegex reg);
2769 extern
2770 const OnigSyntaxType* onig_get_syntax (OnigRegex reg);
2771 extern
2772 int onig_set_default_syntax (const OnigSyntaxType* syntax);
2773 extern
2774 void onig_copy_syntax (OnigSyntaxType* to, const OnigSyntaxType* from);
2775 extern
2776 unsigned int onig_get_syntax_op (OnigSyntaxType* syntax);
2777 extern
2778 unsigned int onig_get_syntax_op2 (OnigSyntaxType* syntax);
2779 extern
2780 unsigned int onig_get_syntax_behavior (OnigSyntaxType* syntax);
2781 extern
2782 OnigOptionType onig_get_syntax_options (OnigSyntaxType* syntax);
2783 extern
2784 void onig_set_syntax_op (OnigSyntaxType* syntax, unsigned int op);
2785 extern
2786 void onig_set_syntax_op2 (OnigSyntaxType* syntax, unsigned int op2);
2787 extern
2788 void onig_set_syntax_behavior (OnigSyntaxType* syntax, unsigned int behavior);
2789 extern
2790 void onig_set_syntax_options (OnigSyntaxType* syntax, OnigOptionType options);
2791 extern
2792 int onig_set_meta_char (OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
2793 extern
2794 void onig_copy_encoding (OnigEncoding to, OnigEncoding from);
2795 extern
2796 OnigCaseFoldType onig_get_default_case_fold_flag (void);
2797 extern
2798 int onig_set_default_case_fold_flag (OnigCaseFoldType case_fold_flag);
2799 extern
2800 unsigned int onig_get_match_stack_limit_size (void);
2801 extern
2802 int onig_set_match_stack_limit_size (unsigned int size);
2803 extern
2804 int onig_end (void);
2805 extern
2806 const char* onig_version (void);
2807 extern
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;
2868 static inline int
2869 rb_enc_dummy_p(rb_encoding *enc)
2870 {
2871     return ((enc)->ruby_encoding_index & (1<<24)) != 0;
2872 }
2873 typedef enum {
2874     econv_invalid_byte_sequence,
2875     econv_undefined_conversion,
2876     econv_destination_buffer_full,
2877     econv_source_buffer_empty,
2878     econv_finished,
2879     econv_after_output,
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,
2891     int flags);
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);
2910 enum node_type {
2911     NODE_METHOD,
2912     NODE_FBODY,
2913     NODE_CFUNC,
2914     NODE_SCOPE,
2915     NODE_BLOCK,
2916     NODE_IF,
2917     NODE_CASE,
2918     NODE_WHEN,
2919     NODE_OPT_N,
2920     NODE_WHILE,
2921     NODE_UNTIL,
2922     NODE_ITER,
2923     NODE_FOR,
2924     NODE_BREAK,
2925     NODE_NEXT,
2926     NODE_REDO,
2927     NODE_RETRY,
2928     NODE_BEGIN,
2929     NODE_RESCUE,
2930     NODE_RESBODY,
2931     NODE_ENSURE,
2932     NODE_AND,
2933     NODE_OR,
2934     NODE_MASGN,
2935     NODE_LASGN,
2936     NODE_DASGN,
2937     NODE_DASGN_CURR,
2938     NODE_GASGN,
2939     NODE_IASGN,
2940     NODE_IASGN2,
2941     NODE_CDECL,
2942     NODE_CVASGN,
2943     NODE_CVDECL,
2944     NODE_OP_ASGN1,
2945     NODE_OP_ASGN2,
2946     NODE_OP_ASGN_AND,
2947     NODE_OP_ASGN_OR,
2948     NODE_CALL,
2949     NODE_FCALL,
2950     NODE_VCALL,
2951     NODE_SUPER,
2952     NODE_ZSUPER,
2953     NODE_ARRAY,
2954     NODE_ZARRAY,
2955     NODE_VALUES,
2956     NODE_HASH,
2957     NODE_RETURN,
2958     NODE_YIELD,
2959     NODE_LVAR,
2960     NODE_DVAR,
2961     NODE_GVAR,
2962     NODE_IVAR,
2963     NODE_CONST,
2964     NODE_CVAR,
2965     NODE_NTH_REF,
2966     NODE_BACK_REF,
2967     NODE_MATCH,
2968     NODE_MATCH2,
2969     NODE_MATCH3,
2970     NODE_LIT,
2971     NODE_STR,
2972     NODE_DSTR,
2973     NODE_XSTR,
2974     NODE_DXSTR,
2975     NODE_EVSTR,
2976     NODE_DREGX,
2977     NODE_DREGX_ONCE,
2978     NODE_ARGS,
2979     NODE_ARGS_AUX,
2980     NODE_OPT_ARG,
2981     NODE_POSTARG,
2982     NODE_ARGSCAT,
2983     NODE_ARGSPUSH,
2984     NODE_SPLAT,
2985     NODE_TO_ARY,
2986     NODE_BLOCK_ARG,
2987     NODE_BLOCK_PASS,
2988     NODE_DEFN,
2989     NODE_DEFS,
2990     NODE_ALIAS,
2991     NODE_VALIAS,
2992     NODE_UNDEF,
2993     NODE_CLASS,
2994     NODE_MODULE,
2995     NODE_SCLASS,
2996     NODE_COLON2,
2997     NODE_COLON3,
2998     NODE_DOT2,
2999     NODE_DOT3,
3000     NODE_FLIP2,
3001     NODE_FLIP3,
3002     NODE_ATTRSET,
3003     NODE_SELF,
3004     NODE_NIL,
3005     NODE_TRUE,
3006     NODE_FALSE,
3007     NODE_ERRINFO,
3008     NODE_DEFINED,
3009     NODE_POSTEXE,
3010     NODE_ALLOCA,
3011     NODE_BMETHOD,
3012     NODE_MEMO,
3013     NODE_IFUNC,
3014     NODE_DSYM,
3015     NODE_ATTRASGN,
3016     NODE_PRELUDE,
3017     NODE_LAMBDA,
3018     NODE_OPTBLOCK,
3019     NODE_LAST
3020 };
3021 typedef struct RNode {
3022     unsigned long flags;
3023     char *nd_file;
3024     union {
3025  struct RNode *node;
3026  ID id;
3027  VALUE value;
3028  VALUE (*cfunc)();
3029  ID *tbl;
3030     } u1;
3031     union {
3032  struct RNode *node;
3033  ID id;
3034  long argc;
3035  VALUE value;
3036     } u2;
3037     union {
3038  struct RNode *node;
3039  ID id;
3040  long state;
3041  struct global_entry *entry;
3042  long cnt;
3043  VALUE value;
3044     } u3;
3045 } NODE;
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
3064 {
3065     VALUE val;
3066     NODE *node;
3067     ID id;
3068     int num;
3069 }
3070  YYSTYPE;
3071 enum ruby_method_ids {
3072     idPLUS = '+',
3073     idMINUS = '-',
3074     idMULT = '*',
3075     idDIV = '/',
3076     idMOD = '%',
3077     idLT = '<',
3078     idLTLT = 338,
3079     idLE = 329,
3080     idGT = '>',
3081     idGE = 328,
3082     idEq = 325,
3083     idEqq = 326,
3084     idNeq = 327,
3085     idNot = '!',
3086     idBackquote = '`',
3087     idEqTilde = 332,
3088     idAREF = 336,
3089     idASET = 337,
3090     idLAST_TOKEN = 376 >> 3,
3091     tIntern,
3092     tMethodMissing,
3093     tLength,
3094     tGets,
3095     tSucc,
3096     tEach,
3097     tLambda,
3098     tSend,
3099     t__send__,
3100     tInitialize,
3101     tLAST_ID,
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)
3112 };
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];
3146 };
3147 typedef struct {
3148   OnigCodePoint from;
3149   OnigCodePoint to;
3150 } OnigPairCaseFoldCodes;
3151 typedef struct {
3152   OnigUChar *name;
3153   int ctype;
3154   short int len;
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[];
3189 extern int
3190 onigenc_with_ascii_strncmp (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, const OnigUChar* sascii , int n);
3191 extern OnigUChar*
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;
3201 enum
3202 {
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))
3215 };
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__));
3241 extern __inline int
3242 __attribute__ ((__nothrow__)) tolower (int __c)
3243 {
3244   return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
3245 }
3246 extern __inline int
3247 __attribute__ ((__nothrow__)) toupper (int __c)
3248 {
3249   return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
3250 }
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 *);
3268 static void
3269 Init_id(void)
3270 {
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);
3293 }
3294 enum lex_state_e {
3295     EXPR_BEG,
3296     EXPR_END,
3297     EXPR_ENDARG,
3298     EXPR_ARG,
3299     EXPR_CMDARG,
3300     EXPR_MID,
3301     EXPR_FNAME,
3302     EXPR_DOT,
3303     EXPR_CLASS,
3304     EXPR_VALUE
3305 };
3306 typedef unsigned long long stack_type;
3307 struct vtable {
3308     ID *tbl;
3309     int pos;
3310     int capa;
3311     struct vtable *prev;
3312 };
3313 struct local_vars {
3314     struct vtable *args;
3315     struct vtable *vars;
3316     struct local_vars *prev;
3317 };
3318 static int
3319 vtable_size(const struct vtable *tbl)
3320 {
3321     if (((VALUE)(tbl) & ~(VALUE)3)) {
3322         return tbl->pos;
3323     }
3324     else {
3325         return 0;
3326     }
3327 }
3328 static struct vtable *
3329 vtable_alloc(struct vtable *prev)
3330 {
3331     struct vtable *tbl = (struct vtable*)ruby_xmalloc(sizeof(struct vtable));
3332     tbl->pos = 0;
3333     tbl->capa = 8;
3334     tbl->tbl = (ID*)ruby_xmalloc2((tbl->capa),sizeof(ID));
3335     tbl->prev = prev;
3336     if (0) printf("vtable_alloc: %p\n", (void *)tbl);
3337     return tbl;
3338 }
3339 static void
3340 vtable_free(struct vtable *tbl)
3341 {
3342     if (0)printf("vtable_free: %p\n", (void *)tbl);
3343     if (((VALUE)(tbl) & ~(VALUE)3)) {
3344         if (tbl->tbl) {
3345             ruby_xfree(tbl->tbl);
3346         }
3347         ruby_xfree(tbl);
3348     }
3349 }
3350 static void
3351 vtable_add(struct vtable *tbl, ID id)
3352 {
3353     if (!((VALUE)(tbl) & ~(VALUE)3)) {
3354         rb_bug("vtable_add: vtable is not allocated (%p)", (void *)tbl);
3355     }
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));
3360     }
3361     tbl->tbl[tbl->pos++] = id;
3362 }
3363 static int
3364 vtable_included(const struct vtable * tbl, ID id)
3365 {
3366     int i;
3367     if (((VALUE)(tbl) & ~(VALUE)3)) {
3368         for (i = 0; i < tbl->pos; i++) {
3369             if (tbl->tbl[i] == id) {
3370                 return 1;
3371             }
3372         }
3373     }
3374     return 0;
3375 }
3376 typedef struct token_info {
3377     const char *token;
3378     int linenum;
3379     int column;
3380     int nonspc;
3381     struct token_info *next;
3382 } token_info;
3383 struct parser_params {
3384     int is_ripper;
3385     NODE *heap;
3386     YYSTYPE *parser_yylval;
3387     VALUE eofp;
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;
3396     int parser_in_def;
3397     int parser_compile_for_eval;
3398     VALUE parser_cur_mid;
3399     int parser_in_defined;
3400     char *parser_tokenbuf;
3401     int parser_tokidx;
3402     int parser_toksiz;
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;
3416     int line_count;
3417     int has_shebang;
3418     char *parser_ruby_sourcefile;
3419     int parser_ruby_sourceline;
3420     rb_encoding *enc;
3421     rb_encoding *utf8;
3422     int parser_yydebug;
3423     NODE *parser_eval_tree_begin;
3424     NODE *parser_eval_tree;
3425     VALUE debug_lines;
3426     VALUE coverage;
3427     int nerr;
3428     token_info *parser_token_info;
3429 };
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;
3500 union yyalloc
3501 {
3502   yytype_int16 yyss;
3503   YYSTYPE yyvs;
3504   };
3505 static const yytype_uint8 yytranslate[] =
3506 {
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
3545 };
3546 static const yytype_uint16 yyprhs[] =
3547 {
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
3604 };
3605 static const yytype_int16 yyrhs[] =
3606 {
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
3779 };
3780 static const yytype_uint16 yyrline[] =
3781 {
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
3838 };
3839 static const char *const yytname[] =
3840 {
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
3898 };
3899 static const yytype_uint16 yyr1[] =
3900 {
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
3957 };
3958 static const yytype_uint8 yyr2[] =
3959 {
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,
4015        1, 1, 1, 2, 0
4016 };
4017 static const yytype_uint16 yydefact[] =
4018 {
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,
4115      354
4116 };
4117 static const yytype_int16 yydefgoto[] =
4118 {
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
4136 };
4137 static const yytype_int16 yypact[] =
4138 {
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,
4235     -747
4236 };
4237 static const yytype_int16 yypgoto[] =
4238 {
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
4256 };
4257 static const yytype_int16 yytable[] =
4258 {
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
5282 };
5283 static const yytype_int16 yycheck[] =
5284 {
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
6308 };
6309 static const yytype_uint16 yystos[] =
6310 {
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,
6407      297
6408 };
6409 static void
6410 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
6411 {
6412   if (!yyvaluep)
6413     return;
6414   ((void) (parser));
6415   ((void) (yyoutput));
6416   switch (yytype)
6417     {
6418       default:
6419  break;
6420     }
6421 }
6422 static void
6423 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
6424 {
6425   if (yytype < 149)
6426     fprintf (yyoutput, "token %s (", yytname[yytype]);
6427   else
6428     fprintf (yyoutput, "nterm %s (", yytname[yytype]);
6429   yy_symbol_value_print (yyoutput, yytype, yyvaluep, parser);
6430   fprintf (yyoutput, ")");
6431 }
6432 static void
6433 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
6434 {
6435   fprintf (stderr, "Stack now");
6436   for (; bottom <= top; ++bottom)
6437     fprintf (stderr, " %d", *bottom);
6438   fprintf (stderr, "\n");
6439 }
6440 static void
6441 yy_reduce_print (YYSTYPE *yyvsp, int yyrule, struct parser_params *parser)
6442 {
6443   int yynrhs = yyr2[yyrule];
6444   int yyi;
6445   unsigned long int yylno = yyrline[yyrule];
6446   fprintf (stderr, "Reducing stack by rule %d (line %lu):\n",
6447       yyrule - 1, yylno);
6448   for (yyi = 0; yyi < yynrhs; yyi++)
6449     {
6450       fprintf (stderr, "   $%d = ", yyi + 1);
6451       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
6452          &(yyvsp[(yyi + 1) - (yynrhs)])
6453                   , parser);
6454       fprintf (stderr, "\n");
6455     }
6456 }
6457 static unsigned int
6458 yytnamerr (char *yyres, const char *yystr)
6459 {
6460   if (*yystr == '"')
6461     {
6462       unsigned int yyn = 0;
6463       char const *yyp = yystr;
6464       for (;;)
6465  switch (*++yyp)
6466    {
6467    case '\'':
6468    case ',':
6469      goto do_not_strip_quotes;
6470    case '\\':
6471      if (*++yyp != '\\')
6472        goto do_not_strip_quotes;
6473    default:
6474      if (yyres)
6475        yyres[yyn] = *yyp;
6476      yyn++;
6477      break;
6478    case '"':
6479      if (yyres)
6480        yyres[yyn] = '\0';
6481      return yyn;
6482    }
6483     do_not_strip_quotes: ;
6484     }
6485   if (! yyres)
6486     return strlen (yystr);
6487   return __builtin_stpcpy (yyres, yystr) - yyres;
6488 }
6489 static unsigned int
6490 yysyntax_error (char *yyresult, int yystate, int yychar)
6491 {
6492   int yyn = yypact[yystate];
6493   if (! (-747 < yyn && yyn <= 10225))
6494     return 0;
6495   else
6496     {
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];
6504       int yyx;
6505       char *yyfmt;
6506       char const *yyf;
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;
6518       int yycount = 1;
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)
6523    {
6524      if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
6525        {
6526   yycount = 1;
6527   yysize = yysize0;
6528   yyformat[sizeof yyunexpected - 1] = '\0';
6529   break;
6530        }
6531      yyarg[yycount++] = yytname[yyx];
6532      yysize1 = yysize + yytnamerr (0, yytname[yyx]);
6533      yysize_overflow |= (yysize1 < yysize);
6534      yysize = yysize1;
6535      yyfmt = __builtin_stpcpy (yyfmt, yyprefix);
6536      yyprefix = yyor;
6537    }
6538       yyf = yyformat;
6539       yysize1 = yysize + strlen (yyf);
6540       yysize_overflow |= (yysize1 < yysize);
6541       yysize = yysize1;
6542       if (yysize_overflow)
6543  return ((unsigned int) -1);
6544       if (yyresult)
6545  {
6546    char *yyp = yyresult;
6547    int yyi = 0;
6548    while ((*yyp = *yyf) != '\0')
6549      {
6550        if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
6551   {
6552     yyp += yytnamerr (yyp, yyarg[yyi++]);
6553     yyf += 2;
6554   }
6555        else
6556   {
6557     yyp++;
6558     yyf++;
6559   }
6560      }
6561  }
6562       return yysize;
6563     }
6564 }
6565 static void
6566 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_params *parser)
6567 {
6568   ((void) (yyvaluep));
6569   ((void) (parser));
6570   if (!yymsg)
6571     yymsg = "Deleting";
6572   do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", yymsg); yy_symbol_print (stderr, yytype, yyvaluep, parser); fprintf (stderr, "\n"); } } while ((0));
6573   switch (yytype)
6574     {
6575       default:
6576  break;
6577     }
6578 }
6579 int ruby_yyparse (struct parser_params *parser);
6580 int
6581 ruby_yyparse (struct parser_params *parser)
6582 {
6583 int yychar;
6584 YYSTYPE yylval;
6585 int yynerrs;
6586   int yystate;
6587   int yyn;
6588   int yyresult;
6589   int yyerrstatus;
6590   int yytoken = 0;
6591   char yymsgbuf[128];
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;
6597   YYSTYPE yyvsa[200];
6598   YYSTYPE *yyvs = yyvsa;
6599   YYSTYPE *yyvsp;
6600   unsigned int yystacksize = 200;
6601   YYSTYPE yyval;
6602   int yylen = 0;
6603   do { if ((parser->parser_yydebug)) fprintf (stderr, "Starting parse\n"); } while ((0));
6604   yystate = 0;
6605   yyerrstatus = 0;
6606   yynerrs = 0;
6607   yychar = (-2);
6608   yyssp = yyss;
6609   yyvsp = yyvs;
6610   goto yysetstate;
6611  yynewstate:
6612   yyssp++;
6613  yysetstate:
6614   *yyssp = yystate;
6615   if (yyss + yystacksize - 1 <= yyssp)
6616     {
6617       unsigned int yysize = yyssp - yyss + 1;
6618       if (10000 <= yystacksize)
6619  goto yyexhaustedlab;
6620       yystacksize *= 2;
6621       if (10000 < yystacksize)
6622  yystacksize = 10000;
6623       {
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)));
6627  if (! yyptr)
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));
6631  if (yyss1 != yyssa)
6632    rb_parser_free(parser, yyss1);
6633       }
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)
6638  goto yyabortlab;
6639     }
6640   do { if ((parser->parser_yydebug)) fprintf (stderr, "Entering state %d\n", yystate); } while ((0));
6641   goto yybackup;
6642 yybackup:
6643   yyn = yypact[yystate];
6644   if (yyn == -747)
6645     goto yydefault;
6646   if (yychar == (-2))
6647     {
6648       do { if ((parser->parser_yydebug)) fprintf (stderr, "Reading a token: "); } while ((0));
6649       yychar = yylex (&yylval, parser);
6650     }
6651   if (yychar <= 0)
6652     {
6653       yychar = yytoken = 0;
6654       do { if ((parser->parser_yydebug)) fprintf (stderr, "Now at end of input.\n"); } while ((0));
6655     }
6656   else
6657     {
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));
6660     }
6661   yyn += yytoken;
6662   if (yyn < 0 || 10225 < yyn || yycheck[yyn] != yytoken)
6663     goto yydefault;
6664   yyn = yytable[yyn];
6665   if (yyn <= 0)
6666     {
6667       if (yyn == 0 || yyn == -555)
6668  goto yyerrlab;
6669       yyn = -yyn;
6670       goto yyreduce;
6671     }
6672   if (yyn == 3)
6673     goto yyacceptlab;
6674   if (yyerrstatus)
6675     yyerrstatus--;
6676   do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
6677   if (yychar != 0)
6678     yychar = (-2);
6679   yystate = yyn;
6680   *++yyvsp = yylval;
6681   goto yynewstate;
6682 yydefault:
6683   yyn = yydefact[yystate];
6684   if (yyn == 0)
6685     goto yyerrlab;
6686   goto yyreduce;
6687 yyreduce:
6688   yylen = yyr2[yyn];
6689   yyval = yyvsp[1-yylen];
6690   do { if ((parser->parser_yydebug)) yy_reduce_print (yyvsp, yyn, parser); } while ((0));
6691   switch (yyn)
6692     {
6693         case 2:
6694     {
6695    (parser->parser_lex_state) = EXPR_BEG;
6696    local_push_gen(parser,(parser->parser_compile_for_eval));
6697       ;}
6698     break;
6699   case 3:
6700     {
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))));
6703        else {
6704     NODE *node = (yyvsp[(2) - (2)].node);
6705     while (node->u3.node) {
6706         node = node->u3.node;
6707     }
6708     void_expr_gen(parser, ((node->u1.node) = remove_begin(node->u1.node)));
6709        }
6710    }
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);
6713       ;}
6714     break;
6715   case 4:
6716     {
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)));
6720    }
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));
6724    }
6725    if ((yyvsp[(4) - (4)].node)) {
6726        if ((yyval.node)) {
6727     (yyval.node) = node_newnode(parser, (NODE_ENSURE), (VALUE)((yyval.node)), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)));
6728        }
6729        else {
6730     (yyval.node) = block_append_gen(parser,(yyvsp[(4) - (4)].node),node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
6731        }
6732    }
6733    fixpos((yyval.node), (yyvsp[(1) - (4)].node));
6734       ;}
6735     break;
6736   case 5:
6737     {
6738    void_stmts_gen(parser, (yyvsp[(1) - (2)].node));
6739    fixup_nodes(&(parser->parser_deferred_nodes));
6740    (yyval.node) = (yyvsp[(1) - (2)].node);
6741       ;}
6742     break;
6743   case 6:
6744     {
6745    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
6746       ;}
6747     break;
6748   case 7:
6749     {
6750    (yyval.node) = newline_node((yyvsp[(1) - (1)].node));
6751       ;}
6752     break;
6753   case 8:
6754     {
6755    (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (3)].node),newline_node((yyvsp[(3) - (3)].node)));
6756       ;}
6757     break;
6758   case 9:
6759     {
6760    (yyval.node) = remove_begin((yyvsp[(2) - (2)].node));
6761       ;}
6762     break;
6763   case 10:
6764     {(parser->parser_lex_state) = EXPR_FNAME;;}
6765     break;
6766   case 11:
6767     {
6768    (yyval.node) = node_newnode(parser, (NODE_ALIAS), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0));
6769       ;}
6770     break;
6771   case 12:
6772     {
6773    (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
6774       ;}
6775     break;
6776   case 13:
6777     {
6778    char buf[3];
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));
6781       ;}
6782     break;
6783   case 14:
6784     {
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));
6787       ;}
6788     break;
6789   case 15:
6790     {
6791    (yyval.node) = (yyvsp[(2) - (2)].node);
6792       ;}
6793     break;
6794   case 16:
6795     {
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));
6798       ;}
6799     break;
6800   case 17:
6801     {
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));
6804       ;}
6805     break;
6806   case 18:
6807     {
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));
6810    }
6811    else {
6812        (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
6813    }
6814       ;}
6815     break;
6816   case 19:
6817     {
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));
6820    }
6821    else {
6822        (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
6823    }
6824       ;}
6825     break;
6826   case 20:
6827     {
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));
6830       ;}
6831     break;
6832   case 21:
6833     {
6834    if ((parser->parser_in_def) || (parser->parser_in_single)) {
6835        parser_yyerror(parser, "BEGIN in method");
6836    }
6837       ;}
6838     break;
6839   case 22:
6840     {
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));
6843       ;}
6844     break;
6845   case 23:
6846     {
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");
6849    }
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));
6851       ;}
6852     break;
6853   case 24:
6854     {
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));
6857       ;}
6858     break;
6859   case 25:
6860     {
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);
6864       ;}
6865     break;
6866   case 26:
6867     {
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;
6876     }
6877        }
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));
6881        }
6882        else {
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))));
6885        }
6886    }
6887    else {
6888        (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
6889    }
6890       ;}
6891     break;
6892   case 27:
6893     {
6894    NODE *args;
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;
6900    }
6901    else if ((yyvsp[(5) - (6)].id) == 330) {
6902        (yyvsp[(5) - (6)].id) = 1;
6903    }
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));
6906       ;}
6907     break;
6908   case 28:
6909     {
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;
6913    }
6914    else if ((yyvsp[(4) - (5)].id) == 330) {
6915        (yyvsp[(4) - (5)].id) = 1;
6916    }
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));
6919       ;}
6920     break;
6921   case 29:
6922     {
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;
6926    }
6927    else if ((yyvsp[(4) - (5)].id) == 330) {
6928        (yyvsp[(4) - (5)].id) = 1;
6929    }
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));
6932       ;}
6933     break;
6934   case 30:
6935     {
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;
6939    }
6940    else if ((yyvsp[(4) - (5)].id) == 330) {
6941        (yyvsp[(4) - (5)].id) = 1;
6942    }
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));
6945       ;}
6946     break;
6947   case 31:
6948     {
6949    rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
6950    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
6951       ;}
6952     break;
6953   case 32:
6954     {
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));
6957       ;}
6958     break;
6959   case 33:
6960     {
6961    (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
6962    (yyval.node) = (yyvsp[(1) - (3)].node);
6963       ;}
6964     break;
6965   case 34:
6966     {
6967    (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
6968    (yyval.node) = (yyvsp[(1) - (3)].node);
6969       ;}
6970     break;
6971   case 37:
6972     {
6973    (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
6974       ;}
6975     break;
6976   case 38:
6977     {
6978    (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
6979       ;}
6980     break;
6981   case 39:
6982     {
6983    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (3)].node)),'!');
6984       ;}
6985     break;
6986   case 40:
6987     {
6988    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
6989       ;}
6990     break;
6991   case 42:
6992     {
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));
6996       ;}
6997     break;
6998   case 45:
6999     {
7000    (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
7001       ;}
7002     break;
7003   case 46:
7004     {
7005    (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
7006       ;}
7007     break;
7008   case 47:
7009     {
7010    (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
7011       ;}
7012     break;
7013   case 49:
7014     {
7015    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
7016       ;}
7017     break;
7018   case 50:
7019     {
7020    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
7021       ;}
7022     break;
7023   case 51:
7024     {
7025    dyna_push_gen(parser);
7026    (yyval.num) = (parser->parser_ruby_sourceline);
7027       ;}
7028     break;
7029   case 52:
7030     {
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);
7034       ;}
7035     break;
7036   case 53:
7037     {
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));
7040       ;}
7041     break;
7042   case 54:
7043     {
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));
7048       ;}
7049     break;
7050   case 55:
7051     {
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));
7054       ;}
7055     break;
7056   case 56:
7057     {
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));
7062      ;}
7063     break;
7064   case 57:
7065     {
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));
7068       ;}
7069     break;
7070   case 58:
7071     {
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));
7076      ;}
7077     break;
7078   case 59:
7079     {
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));
7082       ;}
7083     break;
7084   case 60:
7085     {
7086    (yyval.node) = new_yield_gen(parser, (yyvsp[(2) - (2)].node));
7087    fixpos((yyval.node), (yyvsp[(2) - (2)].node));
7088       ;}
7089     break;
7090   case 62:
7091     {
7092    (yyval.node) = (yyvsp[(2) - (3)].node);
7093       ;}
7094     break;
7095   case 64:
7096     {
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));
7098       ;}
7099     break;
7100   case 65:
7101     {
7102    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
7103       ;}
7104     break;
7105   case 66:
7106     {
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));
7108       ;}
7109     break;
7110   case 67:
7111     {
7112    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)((yyvsp[(3) - (3)].node)));
7113       ;}
7114     break;
7115   case 68:
7116     {
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))));
7118       ;}
7119     break;
7120   case 69:
7121     {
7122    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(-1));
7123       ;}
7124     break;
7125   case 70:
7126     {
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))));
7128       ;}
7129     break;
7130   case 71:
7131     {
7132    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
7133       ;}
7134     break;
7135   case 72:
7136     {
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))));
7138       ;}
7139     break;
7140   case 73:
7141     {
7142    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
7143       ;}
7144     break;
7145   case 74:
7146     {
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))));
7148       ;}
7149     break;
7150   case 76:
7151     {
7152    (yyval.node) = (yyvsp[(2) - (3)].node);
7153       ;}
7154     break;
7155   case 77:
7156     {
7157    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(1), (VALUE)(0));
7158       ;}
7159     break;
7160   case 78:
7161     {
7162    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
7163       ;}
7164     break;
7165   case 79:
7166     {
7167    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
7168       ;}
7169     break;
7170   case 80:
7171     {
7172    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
7173       ;}
7174     break;
7175   case 81:
7176     {
7177    (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
7178       ;}
7179     break;
7180   case 82:
7181     {
7182    (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
7183       ;}
7184     break;
7185   case 83:
7186     {
7187    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7188       ;}
7189     break;
7190   case 84:
7191     {
7192    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7193       ;}
7194     break;
7195   case 85:
7196     {
7197    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7198       ;}
7199     break;
7200   case 86:
7201     {
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))));
7205       ;}
7206     break;
7207   case 87:
7208     {
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))));
7212       ;}
7213     break;
7214   case 88:
7215     {
7216    rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
7217    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7218       ;}
7219     break;
7220   case 89:
7221     {
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));
7223       ;}
7224     break;
7225   case 90:
7226     {
7227    (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
7228       ;}
7229     break;
7230   case 91:
7231     {
7232    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7233       ;}
7234     break;
7235   case 92:
7236     {
7237    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7238       ;}
7239     break;
7240   case 93:
7241     {
7242    (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
7243       ;}
7244     break;
7245   case 94:
7246     {
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))));
7250       ;}
7251     break;
7252   case 95:
7253     {
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))));
7257       ;}
7258     break;
7259   case 96:
7260     {
7261    rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
7262    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7263       ;}
7264     break;
7265   case 97:
7266     {
7267    parser_yyerror(parser, "class/module name must be CONSTANT");
7268       ;}
7269     break;
7270   case 99:
7271     {
7272    (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
7273       ;}
7274     break;
7275   case 100:
7276     {
7277    (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)(0), (VALUE)((yyval.node)), (VALUE)(0));
7278       ;}
7279     break;
7280   case 101:
7281     {
7282    (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
7283       ;}
7284     break;
7285   case 105:
7286     {
7287    (parser->parser_lex_state) = EXPR_END;
7288    (yyval.id) = (yyvsp[(1) - (1)].id);
7289       ;}
7290     break;
7291   case 106:
7292     {
7293    (parser->parser_lex_state) = EXPR_END;
7294    (yyval.id) = (yyvsp[(1) - (1)].id);
7295       ;}
7296     break;
7297   case 109:
7298     {
7299    (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
7300       ;}
7301     break;
7302   case 111:
7303     {
7304    (yyval.node) = node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0));
7305       ;}
7306     break;
7307   case 112:
7308     {(parser->parser_lex_state) = EXPR_FNAME;;}
7309     break;
7310   case 113:
7311     {
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)));
7313       ;}
7314     break;
7315   case 114:
7316     { (yyval.id) = '|'; ;}
7317     break;
7318   case 115:
7319     { (yyval.id) = '^'; ;}
7320     break;
7321   case 116:
7322     { (yyval.id) = '&'; ;}
7323     break;
7324   case 117:
7325     { (yyval.id) = 324; ;}
7326     break;
7327   case 118:
7328     { (yyval.id) = 325; ;}
7329     break;
7330   case 119:
7331     { (yyval.id) = 326; ;}
7332     break;
7333   case 120:
7334     { (yyval.id) = 332; ;}
7335     break;
7336   case 121:
7337     { (yyval.id) = 333; ;}
7338     break;
7339   case 122:
7340     { (yyval.id) = '>'; ;}
7341     break;
7342   case 123:
7343     { (yyval.id) = 328; ;}
7344     break;
7345   case 124:
7346     { (yyval.id) = '<'; ;}
7347     break;
7348   case 125:
7349     { (yyval.id) = 329; ;}
7350     break;
7351   case 126:
7352     { (yyval.id) = 327; ;}
7353     break;
7354   case 127:
7355     { (yyval.id) = 338; ;}
7356     break;
7357   case 128:
7358     { (yyval.id) = 339; ;}
7359     break;
7360   case 129:
7361     { (yyval.id) = '+'; ;}
7362     break;
7363   case 130:
7364     { (yyval.id) = '-'; ;}
7365     break;
7366   case 131:
7367     { (yyval.id) = '*'; ;}
7368     break;
7369   case 132:
7370     { (yyval.id) = '*'; ;}
7371     break;
7372   case 133:
7373     { (yyval.id) = '/'; ;}
7374     break;
7375   case 134:
7376     { (yyval.id) = '%'; ;}
7377     break;
7378   case 135:
7379     { (yyval.id) = 323; ;}
7380     break;
7381   case 136:
7382     { (yyval.id) = '!'; ;}
7383     break;
7384   case 137:
7385     { (yyval.id) = '~'; ;}
7386     break;
7387   case 138:
7388     { (yyval.id) = 321; ;}
7389     break;
7390   case 139:
7391     { (yyval.id) = 322; ;}
7392     break;
7393   case 140:
7394     { (yyval.id) = 336; ;}
7395     break;
7396   case 141:
7397     { (yyval.id) = 337; ;}
7398     break;
7399   case 142:
7400     { (yyval.id) = '`'; ;}
7401     break;
7402   case 184:
7403     {
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));
7406       ;}
7407     break;
7408   case 185:
7409     {
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));
7413       ;}
7414     break;
7415   case 186:
7416     {
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;
7425     }
7426        }
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));
7430        }
7431        else {
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))));
7434        }
7435    }
7436    else {
7437        (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7438    }
7439       ;}
7440     break;
7441   case 187:
7442     {
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;
7452     }
7453        }
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));
7457        }
7458        else {
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))));
7461        }
7462    }
7463    else {
7464        (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7465    }
7466       ;}
7467     break;
7468   case 188:
7469     {
7470    NODE *args;
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;
7476    }
7477    else if ((yyvsp[(5) - (6)].id) == 330) {
7478        (yyvsp[(5) - (6)].id) = 1;
7479    }
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));
7482       ;}
7483     break;
7484   case 189:
7485     {
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;
7489    }
7490    else if ((yyvsp[(4) - (5)].id) == 330) {
7491        (yyvsp[(4) - (5)].id) = 1;
7492    }
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));
7495       ;}
7496     break;
7497   case 190:
7498     {
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;
7502    }
7503    else if ((yyvsp[(4) - (5)].id) == 330) {
7504        (yyvsp[(4) - (5)].id) = 1;
7505    }
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));
7508       ;}
7509     break;
7510   case 191:
7511     {
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;
7515    }
7516    else if ((yyvsp[(4) - (5)].id) == 330) {
7517        (yyvsp[(4) - (5)].id) = 1;
7518    }
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));
7521       ;}
7522     break;
7523   case 192:
7524     {
7525    parser_yyerror(parser, "constant re-assignment");
7526    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7527       ;}
7528     break;
7529   case 193:
7530     {
7531    parser_yyerror(parser, "constant re-assignment");
7532    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7533       ;}
7534     break;
7535   case 194:
7536     {
7537    rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
7538    (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7539       ;}
7540     break;
7541   case 195:
7542     {
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));
7549    }
7550       ;}
7551     break;
7552   case 196:
7553     {
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));
7560    }
7561       ;}
7562     break;
7563   case 197:
7564     {
7565    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'+',(yyvsp[(3) - (3)].node));
7566       ;}
7567     break;
7568   case 198:
7569     {
7570    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'-',(yyvsp[(3) - (3)].node));
7571       ;}
7572     break;
7573   case 199:
7574     {
7575    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'*',(yyvsp[(3) - (3)].node));
7576       ;}
7577     break;
7578   case 200:
7579     {
7580    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'/',(yyvsp[(3) - (3)].node));
7581       ;}
7582     break;
7583   case 201:
7584     {
7585    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'%',(yyvsp[(3) - (3)].node));
7586       ;}
7587     break;
7588   case 202:
7589     {
7590    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),323,(yyvsp[(3) - (3)].node));
7591       ;}
7592     break;
7593   case 203:
7594     {
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));
7596       ;}
7597     break;
7598   case 204:
7599     {
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));
7601       ;}
7602     break;
7603   case 205:
7604     {
7605    (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),321);
7606       ;}
7607     break;
7608   case 206:
7609     {
7610    (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),322);
7611       ;}
7612     break;
7613   case 207:
7614     {
7615    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'|',(yyvsp[(3) - (3)].node));
7616       ;}
7617     break;
7618   case 208:
7619     {
7620    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'^',(yyvsp[(3) - (3)].node));
7621       ;}
7622     break;
7623   case 209:
7624     {
7625    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'&',(yyvsp[(3) - (3)].node));
7626       ;}
7627     break;
7628   case 210:
7629     {
7630    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),324,(yyvsp[(3) - (3)].node));
7631       ;}
7632     break;
7633   case 211:
7634     {
7635    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'>',(yyvsp[(3) - (3)].node));
7636       ;}
7637     break;
7638   case 212:
7639     {
7640    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),328,(yyvsp[(3) - (3)].node));
7641       ;}
7642     break;
7643   case 213:
7644     {
7645    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'<',(yyvsp[(3) - (3)].node));
7646       ;}
7647     break;
7648   case 214:
7649     {
7650    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),329,(yyvsp[(3) - (3)].node));
7651       ;}
7652     break;
7653   case 215:
7654     {
7655    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),325,(yyvsp[(3) - (3)].node));
7656       ;}
7657     break;
7658   case 216:
7659     {
7660    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),326,(yyvsp[(3) - (3)].node));
7661       ;}
7662     break;
7663   case 217:
7664     {
7665    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),327,(yyvsp[(3) - (3)].node));
7666       ;}
7667     break;
7668   case 218:
7669     {
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));
7673                         }
7674       ;}
7675     break;
7676   case 219:
7677     {
7678    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),333,(yyvsp[(3) - (3)].node));
7679       ;}
7680     break;
7681   case 220:
7682     {
7683    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
7684       ;}
7685     break;
7686   case 221:
7687     {
7688    (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),'~');
7689       ;}
7690     break;
7691   case 222:
7692     {
7693    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),338,(yyvsp[(3) - (3)].node));
7694       ;}
7695     break;
7696   case 223:
7697     {
7698    (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),339,(yyvsp[(3) - (3)].node));
7699       ;}
7700     break;
7701   case 224:
7702     {
7703    (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
7704       ;}
7705     break;
7706   case 225:
7707     {
7708    (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
7709       ;}
7710     break;
7711   case 226:
7712     {(parser->parser_in_defined) = 1;;}
7713     break;
7714   case 227:
7715     {
7716    (parser->parser_in_defined) = 0;
7717    (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0), (VALUE)(0));
7718       ;}
7719     break;
7720   case 228:
7721     {
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));
7725       ;}
7726     break;
7727   case 229:
7728     {
7729    (yyval.node) = (yyvsp[(1) - (1)].node);
7730       ;}
7731     break;
7732   case 230:
7733     {
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));
7737       ;}
7738     break;
7739   case 232:
7740     {
7741    (yyval.node) = (yyvsp[(1) - (2)].node);
7742       ;}
7743     break;
7744   case 233:
7745     {
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)));
7747       ;}
7748     break;
7749   case 234:
7750     {
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));
7752       ;}
7753     break;
7754   case 235:
7755     {
7756    (yyval.node) = (yyvsp[(2) - (3)].node);
7757       ;}
7758     break;
7759   case 240:
7760     {
7761    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
7762       ;}
7763     break;
7764   case 241:
7765     {
7766    (yyval.node) = arg_blk_pass((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
7767       ;}
7768     break;
7769   case 242:
7770     {
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));
7773       ;}
7774     break;
7775   case 243:
7776     {
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));
7779       ;}
7780     break;
7781   case 245:
7782     {
7783    (yyval.num) = (parser->parser_cmdarg_stack);
7784    ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((1)&1));
7785       ;}
7786     break;
7787   case 246:
7788     {
7789    (parser->parser_cmdarg_stack) = (yyvsp[(1) - (2)].num);
7790    (yyval.node) = (yyvsp[(2) - (2)].node);
7791       ;}
7792     break;
7793   case 247:
7794     {
7795    (yyval.node) = node_newnode(parser, (NODE_BLOCK_PASS), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0));
7796       ;}
7797     break;
7798   case 248:
7799     {
7800    (yyval.node) = (yyvsp[(2) - (2)].node);
7801       ;}
7802     break;
7803   case 249:
7804     {
7805    (yyval.node) = 0;
7806       ;}
7807     break;
7808   case 250:
7809     {
7810    (yyval.node) = 0;
7811       ;}
7812     break;
7813   case 251:
7814     {
7815    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
7816       ;}
7817     break;
7818   case 252:
7819     {
7820    (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
7821       ;}
7822     break;
7823   case 253:
7824     {
7825    NODE *n1;
7826    if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
7827        (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
7828    }
7829    else {
7830        (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
7831    }
7832       ;}
7833     break;
7834   case 254:
7835     {
7836    NODE *n1;
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));
7839    }
7840    else {
7841        (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
7842    }
7843       ;}
7844     break;
7845   case 255:
7846     {
7847    NODE *n1;
7848    if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
7849        (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
7850    }
7851    else {
7852        (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
7853    }
7854       ;}
7855     break;
7856   case 256:
7857     {
7858    NODE *n1;
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));
7862    }
7863    else {
7864        (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
7865    }
7866       ;}
7867     break;
7868   case 257:
7869     {
7870    (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
7871       ;}
7872     break;
7873   case 266:
7874     {
7875    (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0));
7876       ;}
7877     break;
7878   case 267:
7879     {
7880    (yyval.num) = (parser->parser_ruby_sourceline);
7881       ;}
7882     break;
7883   case 268:
7884     {
7885    if ((yyvsp[(3) - (4)].node) == ((void *)0)) {
7886        (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7887    }
7888    else {
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));
7893    }
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)));
7895       ;}
7896     break;
7897   case 269:
7898     {(parser->parser_lex_state) = EXPR_ENDARG;;}
7899     break;
7900   case 270:
7901     {
7902    rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "(...) interpreted as grouped expression");
7903    (yyval.node) = (yyvsp[(2) - (4)].node);
7904       ;}
7905     break;
7906   case 271:
7907     {
7908    (yyval.node) = (yyvsp[(2) - (3)].node);
7909       ;}
7910     break;
7911   case 272:
7912     {
7913    (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
7914       ;}
7915     break;
7916   case 273:
7917     {
7918    (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
7919       ;}
7920     break;
7921   case 274:
7922     {
7923    if ((yyvsp[(2) - (3)].node) == 0) {
7924        (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7925    }
7926    else {
7927        (yyval.node) = (yyvsp[(2) - (3)].node);
7928    }
7929       ;}
7930     break;
7931   case 275:
7932     {
7933    (yyval.node) = node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(0), (VALUE)(0));
7934       ;}
7935     break;
7936   case 276:
7937     {
7938    (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
7939       ;}
7940     break;
7941   case 277:
7942     {
7943    (yyval.node) = new_yield_gen(parser, (yyvsp[(3) - (4)].node));
7944       ;}
7945     break;
7946   case 278:
7947     {
7948    (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
7949       ;}
7950     break;
7951   case 279:
7952     {
7953    (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
7954       ;}
7955     break;
7956   case 280:
7957     {(parser->parser_in_defined) = 1;;}
7958     break;
7959   case 281:
7960     {
7961    (parser->parser_in_defined) = 0;
7962    (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0), (VALUE)(0));
7963       ;}
7964     break;
7965   case 282:
7966     {
7967    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (4)].node)),'!');
7968       ;}
7969     break;
7970   case 283:
7971     {
7972    (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0))),'!');
7973       ;}
7974     break;
7975   case 284:
7976     {
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));
7980       ;}
7981     break;
7982   case 286:
7983     {
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));
7988       ;}
7989     break;
7990   case 287:
7991     {
7992    (yyval.node) = (yyvsp[(2) - (2)].node);
7993       ;}
7994     break;
7995   case 288:
7996     {
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));
7999       ;}
8000     break;
8001   case 289:
8002     {
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));
8005       ;}
8006     break;
8007   case 290:
8008     {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
8009     break;
8010   case 291:
8011     {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
8012     break;
8013   case 292:
8014     {
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));
8017       ;}
8018     break;
8019   case 293:
8020     {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
8021     break;
8022   case 294:
8023     {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
8024     break;
8025   case 295:
8026     {
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));
8029       ;}
8030     break;
8031   case 296:
8032     {
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));
8035       ;}
8036     break;
8037   case 297:
8038     {
8039    (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
8040       ;}
8041     break;
8042   case 298:
8043     {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
8044     break;
8045   case 299:
8046     {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
8047     break;
8048   case 300:
8049     {
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));
8053    NODE *args, *scope;
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);
8059    }
8060    else {
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));
8065     m->u2.argc = 1;
8066     m->u3.node = (yyvsp[(2) - (9)].node);
8067     args = new_args_gen(parser, m,0,0,0,0);
8068        }
8069        else {
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);
8072        }
8073    }
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));
8078       ;}
8079     break;
8080   case 301:
8081     {
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);
8086       ;}
8087     break;
8088   case 302:
8089     {
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);
8093       ;}
8094     break;
8095   case 303:
8096     {
8097    (yyval.num) = (parser->parser_in_def);
8098    (parser->parser_in_def) = 0;
8099       ;}
8100     break;
8101   case 304:
8102     {
8103    (yyval.num) = (parser->parser_in_single);
8104    (parser->parser_in_single) = 0;
8105    local_push_gen(parser,0);
8106       ;}
8107     break;
8108   case 305:
8109     {
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);
8115       ;}
8116     break;
8117   case 306:
8118     {
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);
8123       ;}
8124     break;
8125   case 307:
8126     {
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);
8130       ;}
8131     break;
8132   case 308:
8133     {
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);
8138       ;}
8139     break;
8140   case 309:
8141     {
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);
8150       ;}
8151     break;
8152   case 310:
8153     {(parser->parser_lex_state) = EXPR_FNAME;;}
8154     break;
8155   case 311:
8156     {
8157    (parser->parser_in_single)++;
8158    (parser->parser_lex_state) = EXPR_END;
8159    local_push_gen(parser,0);
8160       ;}
8161     break;
8162   case 312:
8163     {
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)--;
8171       ;}
8172     break;
8173   case 313:
8174     {
8175    (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8176       ;}
8177     break;
8178   case 314:
8179     {
8180    (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8181       ;}
8182     break;
8183   case 315:
8184     {
8185    (yyval.node) = node_newnode(parser, (NODE_REDO), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8186       ;}
8187     break;
8188   case 316:
8189     {
8190    (yyval.node) = node_newnode(parser, (NODE_RETRY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8191       ;}
8192     break;
8193   case 317:
8194     {
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));
8198       ;}
8199     break;
8200   case 318:
8201     {
8202    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "begin");
8203       ;}
8204     break;
8205   case 319:
8206     {
8207    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "if");
8208       ;}
8209     break;
8210   case 320:
8211     {
8212    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "unless");
8213       ;}
8214     break;
8215   case 321:
8216     {
8217    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "while");
8218       ;}
8219     break;
8220   case 322:
8221     {
8222    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "until");
8223       ;}
8224     break;
8225   case 323:
8226     {
8227    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "case");
8228       ;}
8229     break;
8230   case 324:
8231     {
8232    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "for");
8233       ;}
8234     break;
8235   case 325:
8236     {
8237    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "class");
8238       ;}
8239     break;
8240   case 326:
8241     {
8242    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "module");
8243       ;}
8244     break;
8245   case 327:
8246     {
8247    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "def");
8248       ;}
8249     break;
8250   case 328:
8251     {
8252    if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_pop(parser, "end");
8253       ;}
8254     break;
8255   case 335:
8256     {
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));
8259       ;}
8260     break;
8261   case 337:
8262     {
8263    (yyval.node) = (yyvsp[(2) - (2)].node);
8264       ;}
8265     break;
8266   case 340:
8267     {
8268    (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
8269       ;}
8270     break;
8271   case 341:
8272     {
8273    (yyval.node) = (yyvsp[(2) - (3)].node);
8274       ;}
8275     break;
8276   case 342:
8277     {
8278    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
8279       ;}
8280     break;
8281   case 343:
8282     {
8283    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
8284       ;}
8285     break;
8286   case 344:
8287     {
8288    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
8289       ;}
8290     break;
8291   case 345:
8292     {
8293    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (4)].id), 0)));
8294       ;}
8295     break;
8296   case 346:
8297     {
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))));
8299       ;}
8300     break;
8301   case 347:
8302     {
8303    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)(-1));
8304       ;}
8305     break;
8306   case 348:
8307     {
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))));
8309       ;}
8310     break;
8311   case 349:
8312     {
8313    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (2)].id), 0)));
8314       ;}
8315     break;
8316   case 350:
8317     {
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))));
8319       ;}
8320     break;
8321   case 351:
8322     {
8323    (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
8324       ;}
8325     break;
8326   case 352:
8327     {
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))));
8329       ;}
8330     break;
8331   case 353:
8332     {
8333    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
8334       ;}
8335     break;
8336   case 354:
8337     {
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));
8339       ;}
8340     break;
8341   case 355:
8342     {
8343    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
8344       ;}
8345     break;
8346   case 356:
8347     {
8348    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8349       ;}
8350     break;
8351   case 357:
8352     {
8353    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
8354       ;}
8355     break;
8356   case 358:
8357     {
8358    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,1,0,0);
8359       ;}
8360     break;
8361   case 359:
8362     {
8363    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8364       ;}
8365     break;
8366   case 360:
8367     {
8368    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
8369       ;}
8370     break;
8371   case 361:
8372     {
8373    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
8374       ;}
8375     break;
8376   case 362:
8377     {
8378    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8379       ;}
8380     break;
8381   case 363:
8382     {
8383    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
8384       ;}
8385     break;
8386   case 364:
8387     {
8388    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
8389       ;}
8390     break;
8391   case 365:
8392     {
8393    (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
8394       ;}
8395     break;
8396   case 366:
8397     {
8398    (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
8399       ;}
8400     break;
8401   case 367:
8402     {
8403    (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
8404       ;}
8405     break;
8406   case 369:
8407     {
8408    (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
8409       ;}
8410     break;
8411   case 370:
8412     {
8413    (yyval.node) = 0;
8414       ;}
8415     break;
8416   case 371:
8417     {
8418    (yyval.node) = 0;
8419       ;}
8420     break;
8421   case 372:
8422     {
8423    (yyval.node) = (yyvsp[(2) - (4)].node);
8424       ;}
8425     break;
8426   case 374:
8427     {
8428    (yyval.node) = 0;
8429       ;}
8430     break;
8431   case 377:
8432     {
8433    new_bv_gen(parser, (yyvsp[(1) - (1)].id));
8434       ;}
8435     break;
8436   case 378:
8437     {
8438    (yyval.node) = 0;
8439       ;}
8440     break;
8441   case 379:
8442     {
8443    dyna_push_gen(parser);
8444    (yyval.num) = (parser->parser_lpar_beg);
8445    (parser->parser_lpar_beg) = ++(parser->parser_paren_nest);
8446       ;}
8447     break;
8448   case 380:
8449     {
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);
8454       ;}
8455     break;
8456   case 381:
8457     {
8458    (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)(0), (VALUE)(0));
8459       ;}
8460     break;
8461   case 382:
8462     {
8463    (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
8464       ;}
8465     break;
8466   case 383:
8467     {
8468    (yyval.node) = (yyvsp[(2) - (3)].node);
8469       ;}
8470     break;
8471   case 384:
8472     {
8473    (yyval.node) = (yyvsp[(2) - (3)].node);
8474       ;}
8475     break;
8476   case 385:
8477     {
8478    dyna_push_gen(parser);
8479    (yyval.num) = (parser->parser_ruby_sourceline);
8480       ;}
8481     break;
8482   case 386:
8483     {
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);
8487       ;}
8488     break;
8489   case 387:
8490     {
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");
8493    }
8494    else {
8495        block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
8496    }
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));
8500       ;}
8501     break;
8502   case 388:
8503     {
8504    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
8505       ;}
8506     break;
8507   case 389:
8508     {
8509    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
8510       ;}
8511     break;
8512   case 390:
8513     {
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));
8516       ;}
8517     break;
8518   case 391:
8519     {
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));
8522       ;}
8523     break;
8524   case 392:
8525     {
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));
8528       ;}
8529     break;
8530   case 393:
8531     {
8532    (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
8533       ;}
8534     break;
8535   case 394:
8536     {
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));
8539       ;}
8540     break;
8541   case 395:
8542     {
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));
8545       ;}
8546     break;
8547   case 396:
8548     {
8549    (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
8550       ;}
8551     break;
8552   case 397:
8553     {
8554    (yyval.node) = node_newnode(parser, (NODE_ZSUPER), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8555       ;}
8556     break;
8557   case 398:
8558     {
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)));
8561    else
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));
8564       ;}
8565     break;
8566   case 399:
8567     {
8568    dyna_push_gen(parser);
8569    (yyval.num) = (parser->parser_ruby_sourceline);
8570       ;}
8571     break;
8572   case 400:
8573     {
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);
8579       ;}
8580     break;
8581   case 401:
8582     {
8583    dyna_push_gen(parser);
8584    (yyval.num) = (parser->parser_ruby_sourceline);
8585       ;}
8586     break;
8587   case 402:
8588     {
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);
8592       ;}
8593     break;
8594   case 403:
8595     {
8596    (yyval.node) = node_newnode(parser, (NODE_WHEN), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
8597       ;}
8598     break;
8599   case 406:
8600     {
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));
8604    }
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));
8607       ;}
8608     break;
8609   case 408:
8610     {
8611    (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
8612       ;}
8613     break;
8614   case 409:
8615     {
8616    if (!((yyval.node) = splat_array((yyvsp[(1) - (1)].node)))) (yyval.node) = (yyvsp[(1) - (1)].node);
8617       ;}
8618     break;
8619   case 411:
8620     {
8621    (yyval.node) = (yyvsp[(2) - (2)].node);
8622       ;}
8623     break;
8624   case 413:
8625     {
8626    (yyval.node) = (yyvsp[(2) - (2)].node);
8627       ;}
8628     break;
8629   case 416:
8630     {
8631    (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
8632       ;}
8633     break;
8634   case 418:
8635     {
8636    NODE *node = (yyvsp[(1) - (1)].node);
8637    if (!node) {
8638        node = node_newnode(parser, (NODE_STR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
8639    }
8640    else {
8641        node = evstr2dstr_gen(parser,node);
8642    }
8643    (yyval.node) = node;
8644       ;}
8645     break;
8646   case 421:
8647     {
8648    (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
8649       ;}
8650     break;
8651   case 422:
8652     {
8653    (yyval.node) = (yyvsp[(2) - (3)].node);
8654       ;}
8655     break;
8656   case 423:
8657     {
8658    NODE *node = (yyvsp[(2) - (3)].node);
8659    if (!node) {
8660        node = node_newnode(parser, (NODE_XSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
8661    }
8662    else {
8663        switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
8664          case NODE_STR:
8665     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_XSTR)<<8)&(((VALUE)0x7f)<<8)));
8666     break;
8667          case NODE_DSTR:
8668     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DXSTR)<<8)&(((VALUE)0x7f)<<8)));
8669     break;
8670          default:
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))));
8672     break;
8673        }
8674    }
8675    (yyval.node) = node;
8676       ;}
8677     break;
8678   case 424:
8679     {
8680    int options = (yyvsp[(3) - (3)].num);
8681    NODE *node = (yyvsp[(2) - (3)].node);
8682                         NODE *list;
8683    if (!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));
8685    }
8686    else switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
8687      case NODE_STR:
8688        {
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);
8692        }
8693        break;
8694      default:
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))));
8696      case NODE_DSTR:
8697        if (options & (1<<16)) {
8698     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX_ONCE)<<8)&(((VALUE)0x7f)<<8)));
8699        }
8700        else {
8701     ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX)<<8)&(((VALUE)0x7f)<<8)));
8702        }
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);
8708                                 }
8709                             }
8710        break;
8711    }
8712    (yyval.node) = node;
8713       ;}
8714     break;
8715   case 425:
8716     {
8717    (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8718       ;}
8719     break;
8720   case 426:
8721     {
8722    (yyval.node) = (yyvsp[(2) - (3)].node);
8723       ;}
8724     break;
8725   case 427:
8726     {
8727    (yyval.node) = 0;
8728       ;}
8729     break;
8730   case 428:
8731     {
8732    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),evstr2dstr_gen(parser,(yyvsp[(2) - (3)].node)));
8733       ;}
8734     break;
8735   case 430:
8736     {
8737    (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
8738       ;}
8739     break;
8740   case 431:
8741     {
8742    (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8743       ;}
8744     break;
8745   case 432:
8746     {
8747    (yyval.node) = (yyvsp[(2) - (3)].node);
8748       ;}
8749     break;
8750   case 433:
8751     {
8752    (yyval.node) = 0;
8753       ;}
8754     break;
8755   case 434:
8756     {
8757    (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
8758       ;}
8759     break;
8760   case 435:
8761     {
8762    (yyval.node) = 0;
8763       ;}
8764     break;
8765   case 436:
8766     {
8767    (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
8768       ;}
8769     break;
8770   case 437:
8771     {
8772    (yyval.node) = 0;
8773       ;}
8774     break;
8775   case 438:
8776     {
8777    (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
8778       ;}
8779     break;
8780   case 440:
8781     {
8782    (yyval.node) = (parser->parser_lex_strterm);
8783    (parser->parser_lex_strterm) = 0;
8784    (parser->parser_lex_state) = EXPR_BEG;
8785       ;}
8786     break;
8787   case 441:
8788     {
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));
8791       ;}
8792     break;
8793   case 442:
8794     {
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));
8800       ;}
8801     break;
8802   case 443:
8803     {
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));
8809       ;}
8810     break;
8811   case 444:
8812     {
8813    (yyval.node) = node_newnode(parser, (NODE_GVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(rb_global_entry((yyvsp[(1) - (1)].id))));
8814       ;}
8815     break;
8816   case 445:
8817     {
8818    (yyval.node) = node_newnode(parser, (NODE_IVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
8819       ;}
8820     break;
8821   case 446:
8822     {
8823    (yyval.node) = node_newnode(parser, (NODE_CVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
8824       ;}
8825     break;
8826   case 448:
8827     {
8828    (parser->parser_lex_state) = EXPR_END;
8829    (yyval.id) = (yyvsp[(2) - (2)].id);
8830       ;}
8831     break;
8832   case 453:
8833     {
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));
8837    }
8838    else {
8839        VALUE lit;
8840        switch (((int) (((((struct RNode*)((yyval.node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
8841          case NODE_DSTR:
8842     ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSYM)<<8)&(((VALUE)0x7f)<<8)));
8843     break;
8844          case NODE_STR:
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)));
8848     break;
8849          default:
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))));
8851     break;
8852        }
8853    }
8854       ;}
8855     break;
8856   case 456:
8857     {
8858    (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
8859       ;}
8860     break;
8861   case 457:
8862     {
8863    (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
8864       ;}
8865     break;
8866   case 463:
8867     {(yyval.id) = 289;;}
8868     break;
8869   case 464:
8870     {(yyval.id) = 288;;}
8871     break;
8872   case 465:
8873     {(yyval.id) = 290;;}
8874     break;
8875   case 466:
8876     {(yyval.id) = 291;;}
8877     break;
8878   case 467:
8879     {(yyval.id) = 305;;}
8880     break;
8881   case 468:
8882     {(yyval.id) = 304;;}
8883     break;
8884   case 469:
8885     {(yyval.id) = 306;;}
8886     break;
8887   case 470:
8888     {
8889    if (!((yyval.node) = gettable_gen(parser,(yyvsp[(1) - (1)].id)))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
8890       ;}
8891     break;
8892   case 471:
8893     {
8894    (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
8895       ;}
8896     break;
8897   case 474:
8898     {
8899    (yyval.node) = 0;
8900       ;}
8901     break;
8902   case 475:
8903     {
8904    (parser->parser_lex_state) = EXPR_BEG;
8905       ;}
8906     break;
8907   case 476:
8908     {
8909    (yyval.node) = (yyvsp[(3) - (4)].node);
8910       ;}
8911     break;
8912   case 477:
8913     {
8914    (yyerrstatus = 0);
8915    (yyval.node) = 0;
8916       ;}
8917     break;
8918   case 478:
8919     {
8920    (yyval.node) = (yyvsp[(2) - (3)].node);
8921    (parser->parser_lex_state) = EXPR_BEG;
8922    (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
8923       ;}
8924     break;
8925   case 479:
8926     {
8927    (yyval.node) = (yyvsp[(1) - (2)].node);
8928       ;}
8929     break;
8930   case 480:
8931     {
8932    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
8933       ;}
8934     break;
8935   case 481:
8936     {
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));
8938       ;}
8939     break;
8940   case 482:
8941     {
8942    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
8943       ;}
8944     break;
8945   case 483:
8946     {
8947    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8948       ;}
8949     break;
8950   case 484:
8951     {
8952    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
8953       ;}
8954     break;
8955   case 485:
8956     {
8957    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8958       ;}
8959     break;
8960   case 486:
8961     {
8962    (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
8963       ;}
8964     break;
8965   case 487:
8966     {
8967    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
8968       ;}
8969     break;
8970   case 488:
8971     {
8972    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
8973       ;}
8974     break;
8975   case 489:
8976     {
8977    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
8978       ;}
8979     break;
8980   case 490:
8981     {
8982    (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
8983       ;}
8984     break;
8985   case 491:
8986     {
8987    (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
8988       ;}
8989     break;
8990   case 492:
8991     {
8992    (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
8993       ;}
8994     break;
8995   case 493:
8996     {
8997    (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
8998       ;}
8999     break;
9000   case 494:
9001     {
9002    (yyval.node) = new_args_gen(parser, 0,0,0,0,0);
9003       ;}
9004     break;
9005   case 495:
9006     {
9007    parser_yyerror(parser, "formal argument cannot be a constant");
9008    (yyval.id) = 0;
9009       ;}
9010     break;
9011   case 496:
9012     {
9013    parser_yyerror(parser, "formal argument cannot be an instance variable");
9014    (yyval.id) = 0;
9015       ;}
9016     break;
9017   case 497:
9018     {
9019    parser_yyerror(parser, "formal argument cannot be a global variable");
9020    (yyval.id) = 0;
9021       ;}
9022     break;
9023   case 498:
9024     {
9025    parser_yyerror(parser, "formal argument cannot be a class variable");
9026    (yyval.id) = 0;
9027       ;}
9028     break;
9029   case 500:
9030     {
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);
9035       ;}
9036     break;
9037   case 501:
9038     {
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));
9041       ;}
9042     break;
9043   case 502:
9044     {
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));
9049    }
9050    else {
9051        (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_LVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
9052    }
9053    (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(tid), (VALUE)(1), (VALUE)(0));
9054    (yyval.node)->u3.node = (yyvsp[(2) - (3)].node);
9055       ;}
9056     break;
9057   case 504:
9058     {
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));
9063       ;}
9064     break;
9065   case 505:
9066     {
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));
9072       ;}
9073     break;
9074   case 506:
9075     {
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));
9081       ;}
9082     break;
9083   case 507:
9084     {
9085    (yyval.node) = (yyvsp[(1) - (1)].node);
9086       ;}
9087     break;
9088   case 508:
9089     {
9090    NODE *opts = (yyvsp[(1) - (3)].node);
9091    while (opts->u3.node) {
9092        opts = opts->u3.node;
9093    }
9094    opts->u3.node = (yyvsp[(3) - (3)].node);
9095    (yyval.node) = (yyvsp[(1) - (3)].node);
9096       ;}
9097     break;
9098   case 509:
9099     {
9100    (yyval.node) = (yyvsp[(1) - (1)].node);
9101       ;}
9102     break;
9103   case 510:
9104     {
9105    NODE *opts = (yyvsp[(1) - (3)].node);
9106    while (opts->u3.node) {
9107        opts = opts->u3.node;
9108    }
9109    opts->u3.node = (yyvsp[(3) - (3)].node);
9110    (yyval.node) = (yyvsp[(1) - (3)].node);
9111       ;}
9112     break;
9113   case 513:
9114     {
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);
9120       ;}
9121     break;
9122   case 514:
9123     {
9124    (yyval.id) = internal_id_gen(parser);
9125    arg_var_gen(parser, (yyval.id));
9126       ;}
9127     break;
9128   case 517:
9129     {
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);
9137       ;}
9138     break;
9139   case 518:
9140     {
9141    (yyval.id) = (yyvsp[(2) - (2)].id);
9142       ;}
9143     break;
9144   case 519:
9145     {
9146    (yyval.id) = 0;
9147       ;}
9148     break;
9149   case 520:
9150     {
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));
9154       ;}
9155     break;
9156   case 521:
9157     {(parser->parser_lex_state) = EXPR_BEG;;}
9158     break;
9159   case 522:
9160     {
9161    if ((yyvsp[(3) - (4)].node) == 0) {
9162        parser_yyerror(parser, "can't define singleton method for ().");
9163    }
9164    else {
9165        switch (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
9166          case NODE_STR:
9167          case NODE_DSTR:
9168          case NODE_XSTR:
9169          case NODE_DXSTR:
9170          case NODE_DREGX:
9171          case NODE_LIT:
9172          case NODE_ARRAY:
9173          case NODE_ZARRAY:
9174     parser_yyerror(parser, "can't define singleton method for literals");
9175          default:
9176     value_expr_gen(parser, ((yyvsp[(3) - (4)].node)) = remove_begin((yyvsp[(3) - (4)].node)));
9177     break;
9178        }
9179    }
9180    (yyval.node) = (yyvsp[(3) - (4)].node);
9181       ;}
9182     break;
9183   case 524:
9184     {
9185    (yyval.node) = (yyvsp[(1) - (2)].node);
9186       ;}
9187     break;
9188   case 526:
9189     {
9190    (yyval.node) = list_concat_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
9191       ;}
9192     break;
9193   case 527:
9194     {
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));
9196       ;}
9197     break;
9198   case 528:
9199     {
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));
9201       ;}
9202     break;
9203   case 550:
9204     {(yyerrstatus = 0);;}
9205     break;
9206   case 553:
9207     {(yyerrstatus = 0);;}
9208     break;
9209   case 554:
9210     {
9211    (yyval.node) = 0;
9212       ;}
9213     break;
9214       default: break;
9215     }
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));
9218   yylen = 0;
9219   do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
9220   *++yyvsp = yyval;
9221   yyn = yyr1[yyn];
9222   yystate = yypgoto[yyn - 149] + *yyssp;
9223   if (0 <= yystate && yystate <= 10225 && yycheck[yystate] == *yyssp)
9224     yystate = yytable[yystate];
9225   else
9226     yystate = yydefgoto[yyn - 149];
9227   goto yynewstate;
9228 yyerrlab:
9229   if (!yyerrstatus)
9230     {
9231       ++yynerrs;
9232       {
9233  unsigned int yysize = yysyntax_error (0, yystate, yychar);
9234  if (yymsg_alloc < yysize && yymsg_alloc < ((unsigned int) -1))
9235    {
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);
9242      if (yymsg)
9243        yymsg_alloc = yyalloc;
9244      else
9245        {
9246   yymsg = yymsgbuf;
9247   yymsg_alloc = sizeof yymsgbuf;
9248        }
9249    }
9250  if (0 < yysize && yysize <= yymsg_alloc)
9251    {
9252      (void) yysyntax_error (yymsg, yystate, yychar);
9253      parser_yyerror (parser, yymsg);
9254    }
9255  else
9256    {
9257      parser_yyerror (parser, "syntax error");
9258      if (yysize != 0)
9259        goto yyexhaustedlab;
9260    }
9261       }
9262     }
9263   if (yyerrstatus == 3)
9264     {
9265       if (yychar <= 0)
9266  {
9267    if (yychar == 0)
9268      goto yyabortlab;
9269  }
9270       else
9271  {
9272    yydestruct ("Error: discarding",
9273         yytoken, &yylval, parser);
9274    yychar = (-2);
9275  }
9276     }
9277   goto yyerrlab1;
9278 yyerrorlab:
9279   if ( 0)
9280      goto yyerrorlab;
9281   (yyvsp -= (yylen), yyssp -= (yylen));
9282   yylen = 0;
9283   do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
9284   yystate = *yyssp;
9285   goto yyerrlab1;
9286 yyerrlab1:
9287   yyerrstatus = 3;
9288   for (;;)
9289     {
9290       yyn = yypact[yystate];
9291       if (yyn != -747)
9292  {
9293    yyn += 1;
9294    if (0 <= yyn && yyn <= 10225 && yycheck[yyn] == 1)
9295      {
9296        yyn = yytable[yyn];
9297        if (0 < yyn)
9298   break;
9299      }
9300  }
9301       if (yyssp == yyss)
9302  goto yyabortlab;
9303       yydestruct ("Error: popping",
9304     yystos[yystate], yyvsp, parser);
9305       (yyvsp -= (1), yyssp -= (1));
9306       yystate = *yyssp;
9307       do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
9308     }
9309   if (yyn == 3)
9310     goto yyacceptlab;
9311   *++yyvsp = yylval;
9312   do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yystos[yyn], yyvsp, parser); fprintf (stderr, "\n"); } } while ((0));
9313   yystate = yyn;
9314   goto yynewstate;
9315 yyacceptlab:
9316   yyresult = 0;
9317   goto yyreturn;
9318 yyabortlab:
9319   yyresult = 1;
9320   goto yyreturn;
9321 yyexhaustedlab:
9322   parser_yyerror (parser, "memory exhausted");
9323   yyresult = 2;
9324 yyreturn:
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)
9331     {
9332       yydestruct ("Cleanup: popping",
9333     yystos[*yyssp], yyvsp, parser);
9334       (yyvsp -= (1), yyssp -= (1));
9335     }
9336   if (yyss != yyssa)
9337     rb_parser_free(parser, yyss);
9338   if (yymsg != yymsgbuf)
9339     rb_parser_free(parser, yymsg);
9340   return (yyresult);
9341 }
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 *);
9358 static int
9359 token_info_get_column(struct parser_params *parser, const char *token)
9360 {
9361     int column = 1;
9362     const char *p, *pend = (parser->parser_lex_p) - strlen(token);
9363     for (p = (parser->parser_lex_pbeg); p < pend; p++) {
9364  if (*p == '\t') {
9365      column = (((column - 1) / 8) + 1) * 8;
9366  }
9367  column++;
9368     }
9369     return column;
9370 }
9371 static int
9372 token_info_has_nonspaces(struct parser_params *parser, const char *token)
9373 {
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') {
9377      return 1;
9378  }
9379     }
9380     return 0;
9381 }
9382 static void
9383 token_info_push(struct parser_params *parser, const char *token)
9384 {
9385     token_info *ptinfo;
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;
9394 }
9395 static void
9396 token_info_pop(struct parser_params *parser, const char *token)
9397 {
9398     int linenum;
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) {
9403  goto finish;
9404     }
9405     linenum = (parser->parser_ruby_sourceline);
9406     if (linenum == ptinfo->linenum) {
9407  goto finish;
9408     }
9409     if (token_info_has_nonspaces(parser, token) || ptinfo->nonspc) {
9410  goto finish;
9411     }
9412     rb_compile_warning((parser->parser_ruby_sourcefile), linenum,
9413                "mismatched indentations at '%s' with '%s' at %d",
9414         token, ptinfo->token, ptinfo->linenum);
9415   finish:
9416     ruby_xfree(ptinfo);
9417 }
9418 static int
9419 parser_yyerror(struct parser_params *parser, const char *msg)
9420 {
9421     const int max_line_margin = 30;
9422     const char *p, *pe;
9423     char *buf;
9424     int len, i;
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;
9429  p--;
9430     }
9431     p++;
9432     pe = (parser->parser_lex_p);
9433     while (pe < (parser->parser_lex_pend)) {
9434  if (*pe == '\n') break;
9435  pe++;
9436     }
9437     len = pe - p;
9438     if (len > 4) {
9439  char *p2;
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));
9444   pre = "...";
9445      }
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));
9448   post = "...";
9449      }
9450      len = pe - p;
9451  }
9452  buf = (char*)__builtin_alloca (sizeof(char)*(len+2));
9453  memcpy((buf), (p), sizeof(char)*(len));
9454  buf[len] = '\0';
9455  rb_compile_error_append("%s%s%s", pre, buf, post);
9456  i = (parser->parser_lex_p) - p;
9457  p2 = buf; pe = buf + len;
9458  while (p2 < pe) {
9459      if (*p2 != '\t') *p2 = ' ';
9460      p2++;
9461  }
9462  buf[i] = '^';
9463  buf[i+1] = '\0';
9464  rb_compile_error_append("%s%s", pre, buf);
9465     }
9466     return 0;
9467 }
9468 static void parser_prepare(struct parser_params *parser);
9469 VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
9470 static VALUE
9471 debug_lines(const char *f)
9472 {
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);
9479      return lines;
9480  }
9481     }
9482     return 0;
9483 }
9484 static VALUE
9485 coverage(const char *f, int n)
9486 {
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);
9492  int i;
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);
9497  return lines;
9498     }
9499     return 0;
9500 }
9501 static int
9502 e_option_supplied(struct parser_params *parser)
9503 {
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);
9507 }
9508 static VALUE
9509 yycompile0(VALUE arg, int tracing)
9510 {
9511     int n;
9512     NODE *tree;
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);
9519      do {
9520   rb_ary_push((parser->debug_lines), str);
9521      } while (--n);
9522  }
9523  if (!e_option_supplied(parser)) {
9524      (parser->coverage) = coverage((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline));
9525  }
9526     }
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;
9536     if (parser->nerr) {
9537  return 0;
9538     }
9539     tree = (parser->parser_eval_tree);
9540     if (!tree) {
9541  tree = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
9542     }
9543     if ((parser->parser_eval_tree_begin)) {
9544  NODE *scope = (parser->parser_eval_tree);
9545         if (scope) {
9546      scope->u2.node = node_newnode(parser, (NODE_PRELUDE), (VALUE)((parser->parser_eval_tree_begin)), (VALUE)(scope->u2.node), (VALUE)(0));
9547  }
9548  tree = scope;
9549     }
9550     else {
9551  tree = (parser->parser_eval_tree);
9552     }
9553     return (VALUE)tree;
9554 }
9555 static NODE*
9556 yycompile(struct parser_params *parser, const char *f, int line)
9557 {
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));
9561 }
9562 static VALUE
9563 lex_get_str(struct parser_params *parser, VALUE s)
9564 {
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);
9570     }
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);
9572     end = beg;
9573     while (end < pend) {
9574  if (*end++ == '\n') break;
9575     }
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));
9578 }
9579 static VALUE
9580 lex_getline(struct parser_params *parser)
9581 {
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);
9585     }
9586     if ((parser->coverage) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
9587  rb_ary_push((parser->coverage), ((VALUE)RUBY_Qnil));
9588     }
9589     return line;
9590 }
9591 NODE*
9592 rb_compile_string(const char *f, VALUE s, int line)
9593 {
9594     VALUE volatile vparser = rb_parser_new();
9595     return rb_parser_compile_string(vparser, f, s, line);
9596 }
9597 NODE*
9598 rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
9599 {
9600     struct parser_params *parser;
9601     NODE *node;
9602     volatile VALUE tmp;
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);
9610     tmp = vparser;
9611     return node;
9612 }
9613 NODE*
9614 rb_compile_cstr(const char *f, const char *s, int len, int line)
9615 {
9616     return rb_compile_string(f, rb_str_new(s, len), line);
9617 }
9618 NODE*
9619 rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
9620 {
9621     return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
9622 }
9623 static VALUE
9624 lex_io_gets(struct parser_params *parser, VALUE io)
9625 {
9626     return rb_io_gets(io);
9627 }
9628 NODE*
9629 rb_compile_file(const char *f, VALUE file, int start)
9630 {
9631     VALUE volatile vparser = rb_parser_new();
9632     return rb_parser_compile_file(vparser, f, file, start);
9633 }
9634 NODE*
9635 rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
9636 {
9637     struct parser_params *parser;
9638     volatile VALUE tmp;
9639     NODE *node;
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);
9646     tmp = vparser;
9647     return node;
9648 }
9649 enum string_type {
9650     str_squote = (0),
9651     str_dquote = (0x02),
9652     str_xquote = (0x02),
9653     str_regexp = (0x04|0x01|0x02),
9654     str_sword = (0x08),
9655     str_dword = (0x08|0x02),
9656     str_ssym = (0x10),
9657     str_dsym = (0x10|0x02)
9658 };
9659 static VALUE
9660 parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *enc0)
9661 {
9662     VALUE str;
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))) {
9666  }
9667  else if (enc0 == rb_usascii_encoding() && enc != rb_utf8_encoding()) {
9668      rb_enc_associate(str, rb_ascii8bit_encoding());
9669  }
9670     }
9671     return str;
9672 }
9673 static inline int
9674 parser_nextc(struct parser_params *parser)
9675 {
9676     int c;
9677     if ((parser->parser_lex_p) == (parser->parser_lex_pend)) {
9678  VALUE v = (parser->parser_lex_nextline);
9679  (parser->parser_lex_nextline) = 0;
9680  if (!v) {
9681      if (parser->eofp)
9682   return -1;
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);
9686   return -1;
9687      }
9688  }
9689  {
9690      if ((parser->parser_heredoc_end) > 0) {
9691   (parser->parser_ruby_sourceline) = (parser->parser_heredoc_end);
9692   (parser->parser_heredoc_end) = 0;
9693      }
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;
9699  }
9700     }
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)++;
9704  c = '\n';
9705     }
9706     return c;
9707 }
9708 static void
9709 parser_pushback(struct parser_params *parser, int c)
9710 {
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)--;
9715     }
9716 }
9717 static char*
9718 parser_newtok(struct parser_params *parser)
9719 {
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));
9724     }
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));
9728     }
9729     return (parser->parser_tokenbuf);
9730 }
9731 static char *
9732 parser_tokspace(struct parser_params *parser, int n)
9733 {
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));
9738     }
9739     return &(parser->parser_tokenbuf)[(parser->parser_tokidx)-n];
9740 }
9741 static void
9742 parser_tokadd(struct parser_params *parser, int c)
9743 {
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));
9748     }
9749 }
9750 static int
9751 parser_tok_hex(struct parser_params *parser, int *numlen)
9752 {
9753     int c;
9754     c = ruby_scan_hex((parser->parser_lex_p), 2, numlen);
9755     if (!*numlen) {
9756  parser_yyerror(parser, "invalid hex escape");
9757  return 0;
9758     }
9759     (parser->parser_lex_p) += *numlen;
9760     return c;
9761 }
9762 static int
9763 parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp,
9764                    int string_literal, int symbol_literal, int regexp_literal)
9765 {
9766     int codepoint;
9767     int numlen;
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))) {
9770  do {
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);
9774      if (numlen == 0) {
9775   parser_yyerror(parser, "invalid Unicode escape");
9776   return 0;
9777      }
9778      if (codepoint > 0x10ffff) {
9779   parser_yyerror(parser, "invalid Unicode codepoint (too large)");
9780   return 0;
9781      }
9782      (parser->parser_lex_p) += numlen;
9783             if (regexp_literal) {
9784                 memcpy(parser_tokspace(parser, numlen), (parser->parser_lex_p) - (numlen), (numlen));
9785             }
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);
9789      }
9790      else if (string_literal) {
9791   if (codepoint == 0 && symbol_literal) {
9792       parser_yyerror(parser, "symbol cannot contain '\\u{0}'");
9793       return 0;
9794   }
9795   parser_tokadd(parser, codepoint);
9796      }
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");
9800      return 0;
9801  }
9802         if (regexp_literal) { parser_tokadd(parser, '}'); }
9803  parser_nextc(parser);
9804     }
9805     else {
9806  codepoint = ruby_scan_hex((parser->parser_lex_p), 4, &numlen);
9807  if (numlen < 4) {
9808      parser_yyerror(parser, "invalid Unicode escape");
9809      return 0;
9810  }
9811  (parser->parser_lex_p) += 4;
9812         if (regexp_literal) {
9813             memcpy(parser_tokspace(parser, 4), (parser->parser_lex_p) - (4), (4));
9814         }
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);
9818  }
9819  else if (string_literal) {
9820      if (codepoint == 0 && symbol_literal) {
9821   parser_yyerror(parser, "symbol cannot contain '\\u0000'");
9822   return 0;
9823      }
9824      parser_tokadd(parser, codepoint);
9825  }
9826     }
9827     return codepoint;
9828 }
9829 static int
9830 parser_read_escape(struct parser_params *parser, int flags,
9831      rb_encoding **encp)
9832 {
9833     int c;
9834     int numlen;
9835     switch (c = parser_nextc(parser)) {
9836       case '\\':
9837  return c;
9838       case 'n':
9839  return '\n';
9840       case 't':
9841  return '\t';
9842       case 'r':
9843  return '\r';
9844       case 'f':
9845  return '\f';
9846       case 'v':
9847  return '\13';
9848       case 'a':
9849  return '\007';
9850       case 'e':
9851  return 033;
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;
9855  {
9856      int numlen;
9857      parser_pushback(parser, c);
9858      c = ruby_scan_oct((parser->parser_lex_p), 3, &numlen);
9859      (parser->parser_lex_p) += numlen;
9860  }
9861  return c;
9862       case 'x':
9863  if (flags & (1|2)) goto eof;
9864  c = parser_tok_hex(parser, &numlen);
9865  if (numlen == 0) return 0;
9866  return c;
9867       case 'b':
9868  return '\010';
9869       case 's':
9870  return ' ';
9871       case 'M':
9872  if (flags & 2) goto eof;
9873  if ((c = parser_nextc(parser)) != '-') {
9874      parser_pushback(parser, c);
9875      goto eof;
9876  }
9877  if ((c = parser_nextc(parser)) == '\\') {
9878      return parser_read_escape(parser, flags|2, encp) | 0x80;
9879  }
9880  else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
9881  else {
9882      return ((c & 0xff) | 0x80);
9883  }
9884       case 'C':
9885  if ((c = parser_nextc(parser)) != '-') {
9886      parser_pushback(parser, c);
9887      goto eof;
9888  }
9889       case 'c':
9890  if (flags & 1) goto eof;
9891  if ((c = parser_nextc(parser))== '\\') {
9892      c = parser_read_escape(parser, flags|1, encp);
9893  }
9894  else if (c == '?')
9895      return 0177;
9896  else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
9897  return c & 0x9f;
9898       eof:
9899       case -1:
9900         parser_yyerror(parser, "Invalid escape character syntax");
9901  return '\0';
9902       default:
9903  return c;
9904     }
9905 }
9906 static void
9907 parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc)
9908 {
9909     int len = rb_enc_codelen(c, enc);
9910     (enc)->code_to_mbc(c,(OnigUChar*)(parser_tokspace(parser, len)),enc);
9911 }
9912 static int
9913 parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
9914 {
9915     int c;
9916     int flags = 0;
9917   first:
9918     switch (c = parser_nextc(parser)) {
9919       case '\n':
9920  return 0;
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;
9924  {
9925      int numlen;
9926      int oct;
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));
9931  }
9932  return 0;
9933       case 'x':
9934  if (flags & (1|2)) goto eof;
9935  {
9936      int numlen;
9937      int hex;
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));
9941  }
9942  return 0;
9943       case 'M':
9944  if (flags & 2) goto eof;
9945  if ((c = parser_nextc(parser)) != '-') {
9946      parser_pushback(parser, c);
9947      goto eof;
9948  }
9949  memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
9950  flags |= 2;
9951  goto escaped;
9952       case 'C':
9953  if (flags & 1) goto eof;
9954  if ((c = parser_nextc(parser)) != '-') {
9955      parser_pushback(parser, c);
9956      goto eof;
9957  }
9958  memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
9959  goto escaped;
9960       case 'c':
9961  if (flags & 1) goto eof;
9962  memcpy(parser_tokspace(parser, 2), (parser->parser_lex_p) - (2), (2));
9963  flags |= 1;
9964       escaped:
9965  if ((c = parser_nextc(parser)) == '\\') {
9966      goto first;
9967  }
9968  else if (c == -1) goto eof;
9969  parser_tokadd(parser, c);
9970  return 0;
9971       eof:
9972       case -1:
9973         parser_yyerror(parser, "Invalid escape character syntax");
9974  return -1;
9975       default:
9976         parser_tokadd(parser, '\\');
9977  parser_tokadd(parser, c);
9978     }
9979     return 0;
9980 }
9981 extern int rb_char_to_option_kcode(int c, int *option, int *kcode);
9982 static int
9983 parser_regx_options(struct parser_params *parser)
9984 {
9985     int kcode = 0;
9986     int options = 0;
9987     int c, opt, kc;
9988     parser_newtok(parser);
9989     while (c = parser_nextc(parser), rb_isalpha((unsigned char)(c))) {
9990         if (c == 'o') {
9991             options |= (1<<16);
9992         }
9993         else if (rb_char_to_option_kcode(c, &opt, &kc)) {
9994             options |= opt;
9995      if (kc >= 0) kcode = c;
9996         }
9997         else {
9998      parser_tokadd(parser, c);
9999         }
10000     }
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));
10006     }
10007     return options | (((kcode)&0xff)<<8);
10008 }
10009 static void
10010 dispose_string(VALUE str)
10011 {
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);
10015 }
10016 static int
10017 parser_tokadd_mbchar(struct parser_params *parser, int c)
10018 {
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));
10022  return -1;
10023     }
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));
10027     return c;
10028 }
10029 static int
10030 parser_tokadd_string(struct parser_params *parser,
10031        int func, int term, int paren, long *nest,
10032        rb_encoding **encp)
10033 {
10034     int c;
10035     int has_nonascii = 0;
10036     rb_encoding *enc = *encp;
10037     char *errbuf = 0;
10038     static const char mixed_msg[] = "%s mixed within %s source";
10039     while ((c = parser_nextc(parser)) != -1) {
10040  if (paren && c == paren) {
10041      ++*nest;
10042  }
10043  else if (c == term) {
10044      if (!nest || !*nest) {
10045   parser_pushback(parser, c);
10046   break;
10047      }
10048      --*nest;
10049  }
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);
10054   break;
10055      }
10056  }
10057  else if (c == '\\') {
10058      const char *beg = (parser->parser_lex_p) - 1;
10059      c = parser_nextc(parser);
10060      switch (c) {
10061        case '\n':
10062   if (func & 0x08) break;
10063   if (func & 0x02) continue;
10064   parser_tokadd(parser, '\\');
10065   break;
10066        case '\\':
10067   if (func & 0x01) parser_tokadd(parser, c);
10068   break;
10069        case 'u':
10070   if ((func & 0x02) == 0) {
10071       parser_tokadd(parser, '\\');
10072       break;
10073   }
10074   parser_tokadd_utf8(parser, &enc, 1,
10075        func & 0x10,
10076                                    func & 0x04);
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);
10079   }
10080   continue;
10081        default:
10082   if (func & 0x04) {
10083       parser_pushback(parser, c);
10084       if ((c = parser_tokadd_escape(parser, &enc)) < 0)
10085    return -1;
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);
10088       }
10089       continue;
10090   }
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);
10095   }
10096   else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
10097   }
10098   else if (c != term && !(paren && c == paren)) {
10099       parser_tokadd(parser, '\\');
10100   }
10101      }
10102  }
10103  else if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
10104      has_nonascii = 1;
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); };
10107   continue;
10108      }
10109      if (parser_tokadd_mbchar(parser, c) == -1) return -1;
10110      continue;
10111  }
10112  else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
10113      parser_pushback(parser, c);
10114      break;
10115  }
10116  if (!c && (func & 0x10)) {
10117      func &= ~0x10;
10118      parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "symbol cannot contain '\\0'");
10119      continue;
10120  }
10121         if (c & 0x80) {
10122             has_nonascii = 1;
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); };
10125   continue;
10126      }
10127         }
10128  parser_tokadd(parser, c);
10129     }
10130     *encp = enc;
10131     return c;
10132 }
10133 static int
10134 parser_parse_string(struct parser_params *parser, NODE *quote)
10135 {
10136     int func = quote->u1.id;
10137     int term = ((signed short)(quote)->u2.id);
10138     int paren = (char)((quote)->u2.id >> 8*2);
10139     int c, space = 0;
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)));
10145  space = 1;
10146     }
10147     if (c == term && !quote->u3.cnt) {
10148  if (func & 0x08) {
10149      quote->u1.id = -1;
10150      return ' ';
10151  }
10152  if (!(func & 0x04)) return 361;
10153         (*((YYSTYPE*)(parser->parser_yylval))).num = parser_regx_options(parser);
10154  return 320;
10155     }
10156     if (space) {
10157  parser_pushback(parser, c);
10158  return ' ';
10159     }
10160     parser_newtok(parser);
10161     if ((func & 0x02) && c == '#') {
10162  switch (c = parser_nextc(parser)) {
10163    case '$':
10164    case '@':
10165      parser_pushback(parser, c);
10166      return 360;
10167    case '{':
10168      return 359;
10169  }
10170  parser_tokadd(parser, '#');
10171     }
10172     parser_pushback(parser, c);
10173     if (parser_tokadd_string(parser,func,term,paren,&quote->u3.cnt,&enc) == -1) {
10174  (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(quote)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
10175  if (func & 0x04) {
10176      if (parser->eofp)
10177   parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated regexp meets end of file");
10178      return 320;
10179  }
10180  else {
10181      if (parser->eofp)
10182   parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated string meets end of file");
10183      return 361;
10184  }
10185     }
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));
10188     return 316;
10189 }
10190 static int
10191 parser_heredoc_identifier(struct parser_params *parser)
10192 {
10193     int c = parser_nextc(parser), term, func = 0, len;
10194     if (c == '-') {
10195  c = parser_nextc(parser);
10196  func = 0x20;
10197     }
10198     switch (c) {
10199       case '\'':
10200  func |= str_squote; goto quoted;
10201       case '"':
10202  func |= str_dquote; goto quoted;
10203       case '`':
10204  func |= str_xquote;
10205       quoted:
10206  parser_newtok(parser);
10207  parser_tokadd(parser, func);
10208  term = c;
10209  while ((c = parser_nextc(parser)) != -1 && c != term) {
10210      if (parser_tokadd_mbchar(parser, c) == -1) return 0;
10211  }
10212  if (c == -1) {
10213      parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated here document identifier");
10214      return 0;
10215  }
10216  break;
10217       default:
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);
10220      if (func & 0x20) {
10221   parser_pushback(parser, '-');
10222      }
10223      return 0;
10224  }
10225  parser_newtok(parser);
10226  term = '"';
10227  parser_tokadd(parser, func |= str_dquote);
10228  do {
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);
10232  break;
10233     }
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;
10240 }
10241 static void
10242 parser_heredoc_restore(struct parser_params *parser, NODE *here)
10243 {
10244     VALUE line;
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);
10254 }
10255 static int
10256 parser_whole_match_p(struct parser_params *parser,
10257     const char *eos, int len, int indent)
10258 {
10259     const char *p = (parser->parser_lex_pbeg);
10260     int n;
10261     if (indent) {
10262  while (*p && rb_isspace((unsigned char)(*p))) p++;
10263     }
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);
10268 }
10269 static int
10270 parser_here_document(struct parser_params *parser, NODE *here)
10271 {
10272     int c, func, indent = 0;
10273     const char *eos, *p, *pend;
10274     long len;
10275     VALUE str = 0;
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) {
10280       error:
10281  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "can't find string \"%s\" anywhere before EOF", eos);
10282       restore:
10283  parser_heredoc_restore(parser,(parser->parser_lex_strterm));
10284  (parser->parser_lex_strterm) = 0;
10285  return 0;
10286     }
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));
10289  return 361;
10290     }
10291     if (!(func & 0x02)) {
10292  do {
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);
10295      if (pend > p) {
10296   switch (pend[-1]) {
10297     case '\n':
10298       if (--pend == p || pend[-1] != '\r') {
10299    pend++;
10300    break;
10301       }
10302     case '\r':
10303       --pend;
10304   }
10305      }
10306      if (str)
10307   rb_str_cat(str, p, pend - p);
10308      else
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);
10314   goto error;
10315      }
10316  } while (!parser_whole_match_p(parser,eos,len,indent));
10317     }
10318     else {
10319  rb_encoding *enc = parser->enc;
10320  parser_newtok(parser);
10321  if (c == '#') {
10322      switch (c = parser_nextc(parser)) {
10323        case '$':
10324        case '@':
10325   parser_pushback(parser, c);
10326   return 360;
10327        case '{':
10328   return 359;
10329      }
10330      parser_tokadd(parser, '#');
10331  }
10332  do {
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;
10336   goto restore;
10337      }
10338      if (c != '\n') {
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));
10340   return 316;
10341      }
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);
10346     }
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));
10350     return 316;
10351 }
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);
10354 struct kwtable;
10355 __inline
10356 static unsigned int
10357 hash (str, len)
10358      register const char *str;
10359      register unsigned int len;
10360 {
10361   static const unsigned char asso_values[] =
10362     {
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
10389     };
10390   register int hval = len;
10391   switch (hval)
10392     {
10393       default:
10394         hval += asso_values[(unsigned char)str[2]];
10395       case 2:
10396       case 1:
10397         hval += asso_values[(unsigned char)str[0]];
10398         break;
10399     }
10400   return hval + asso_values[(unsigned char)str[len - 1]];
10401 }
10402 __inline
10403 const struct kwtable *
10404 rb_reserved_word (str, len)
10405      register const char *str;
10406      register unsigned int len;
10407 {
10408   static const struct kwtable wordlist[] =
10409     {
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},
10451       {""}, {""},
10452       {"while", {273, 297}, EXPR_VALUE}
10453     };
10454   if (len <= 12 && len >= 2)
10455     {
10456       register int key = hash (str, len);
10457       if (key <= 50 && key >= 0)
10458         {
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];
10462         }
10463     }
10464   return 0;
10465 }
10466 static void
10467 arg_ambiguous_gen(struct parser_params *parser)
10468 {
10469     rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "ambiguous first argument; put parentheses or even spaces");
10470 }
10471 static int
10472 lvar_defined_gen(struct parser_params *parser, ID id)
10473 {
10474     return (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) || local_id_gen(parser, id);
10475 }
10476 static int
10477 parser_encode_length(struct parser_params *parser, const char *name, int len)
10478 {
10479     int nlen;
10480     if (len > 5 && name[nlen = len - 5] == '-') {
10481  if (rb_memcicmp(name + nlen + 1, "unix", 4) == 0)
10482      return nlen;
10483     }
10484     if (len > 4 && name[nlen = len - 5] == '-') {
10485  if (rb_memcicmp(name + nlen + 1, "dos", 3) == 0)
10486      return nlen;
10487  if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0)
10488      return nlen;
10489     }
10490     return len;
10491 }
10492 static void
10493 parser_set_encode(struct parser_params *parser, const char *name)
10494 {
10495     int idx = rb_enc_find_index(name);
10496     rb_encoding *enc;
10497     if (idx < 0) {
10498  rb_raise(rb_eArgError, "unknown encoding name: %s", name);
10499     }
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);
10503     }
10504     parser->enc = enc;
10505 }
10506 static int
10507 comment_at_top(struct parser_params *parser)
10508 {
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;
10511     while (p < pend) {
10512  if (!rb_isspace((unsigned char)(*p))) return 0;
10513  p++;
10514     }
10515     return 1;
10516 }
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);
10519 static void
10520 magic_comment_encoding(struct parser_params *parser, const char *name, const char *val)
10521 {
10522     if (!comment_at_top(parser)) {
10523  rb_warning("encoding '%s' is ignored, valid only in the first line except for shebang line.",
10524      val);
10525  return;
10526     }
10527     parser_set_encode(parser, val);
10528 }
10529 struct magic_comment {
10530     const char *name;
10531     rb_magic_comment_setter_t func;
10532     rb_magic_comment_length_t length;
10533 };
10534 static const struct magic_comment magic_comments[] = {
10535     {"coding", magic_comment_encoding, parser_encode_length},
10536     {"encoding", magic_comment_encoding, parser_encode_length},
10537 };
10538 static const char *
10539 magic_comment_marker(const char *str, int len)
10540 {
10541     int i = 2;
10542     while (i < len) {
10543  switch (str[i]) {
10544    case '-':
10545      if (str[i-1] == '*' && str[i-2] == '-') {
10546   return str + i + 1;
10547      }
10548      i += 2;
10549      break;
10550    case '*':
10551      if (i + 1 >= len) return 0;
10552      if (str[i+1] != '-') {
10553   i += 4;
10554      }
10555      else if (str[i-1] != '-') {
10556   i += 2;
10557      }
10558      else {
10559   return str + i + 2;
10560      }
10561      break;
10562    default:
10563      i += 3;
10564      break;
10565  }
10566     }
10567     return 0;
10568 }
10569 static int
10570 parser_magic_comment(struct parser_params *parser, const char *str, int len)
10571 {
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);
10577     str = beg;
10578     len = end - beg - 3;
10579     while (len > 0) {
10580  const struct magic_comment *p = magic_comments;
10581  char *s;
10582  int i, n = 0;
10583  for (; len > 0 && *str; str++, --len) {
10584      switch (*str) {
10585        case '\'': case '"': case ':': case ';':
10586   continue;
10587      }
10588      if (!rb_isspace((unsigned char)(*str))) break;
10589  }
10590  for (beg = str; len > 0; str++, --len) {
10591      switch (*str) {
10592        case '\'': case '"': case ':': case ';':
10593   break;
10594        default:
10595   if (rb_isspace((unsigned char)(*str))) break;
10596   continue;
10597      }
10598      break;
10599  }
10600  for (end = str; len > 0 && rb_isspace((unsigned char)(*str)); str++, --len);
10601  if (!len) break;
10602  if (*str != ':') continue;
10603  do str++; while (--len > 0 && rb_isspace((unsigned char)(*str)));
10604  if (!len) break;
10605  if (*str == '"') {
10606      for (vbeg = ++str; --len > 0 && *str != '"'; str++) {
10607   if (*str == '\\') {
10608       --len;
10609       ++str;
10610   }
10611      }
10612      vend = str;
10613      if (len) {
10614   --len;
10615   ++str;
10616      }
10617  }
10618  else {
10619      for (vbeg = str; len > 0 && *str != '"' && *str != ';' && !rb_isspace((unsigned char)(*str)); --len, str++);
10620      vend = str;
10621  }
10622  while (len > 0 && (*str == ';' || rb_isspace((unsigned char)(*str)))) --len, str++;
10623  n = end - beg;
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 = '_';
10628  }
10629  do {
10630      if ((st_strncasecmp(p->name, s, n)) == 0) {
10631   n = vend - vbeg;
10632   if (p->length) {
10633       n = (*p->length)(parser, vbeg, n);
10634   }
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));
10637   break;
10638      }
10639  } while (++p < magic_comments + sizeof(magic_comments) / sizeof(*p));
10640     }
10641     return ((VALUE)RUBY_Qtrue);
10642 }
10643 static void
10644 set_file_encoding(struct parser_params *parser, const char *str, const char *send)
10645 {
10646     int sep = 0;
10647     const char *beg = str;
10648     VALUE s;
10649     for (;;) {
10650  if (send - str <= 6) return;
10651  switch (str[6]) {
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 ':':
10659      sep = 1;
10660      str += 6;
10661      break;
10662    default:
10663      str += 6;
10664      if (rb_isspace((unsigned char)(*str))) break;
10665      continue;
10666  }
10667  if ((st_strncasecmp(str-6, "coding", 6)) == 0) break;
10668     }
10669     for (;;) {
10670  do {
10671      if (++str >= send) return;
10672  } while (rb_isspace((unsigned char)(*str)));
10673  if (sep) break;
10674  if (*str != '=' && *str != ':') return;
10675  sep = 1;
10676  str++;
10677     }
10678     beg = str;
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);
10683 }
10684 static void
10685 parser_prepare(struct parser_params *parser)
10686 {
10687     int c = parser_nextc(parser);
10688     switch (c) {
10689       case '#':
10690  if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('!') == *(parser->parser_lex_p))) parser->has_shebang = 1;
10691  break;
10692       case 0xef:
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);
10699      return;
10700  }
10701  break;
10702       case (-1):
10703  return;
10704     }
10705     parser_pushback(parser, c);
10706     parser->enc = rb_enc_get((parser->parser_lex_lastline));
10707 }
10708 static int
10709 parser_yylex(struct parser_params *parser)
10710 {
10711     register int c;
10712     int space_seen = 0;
10713     int cmd_state;
10714     enum lex_state_e last_state;
10715     rb_encoding *enc;
10716     int mb;
10717     if ((parser->parser_lex_strterm)) {
10718  int token;
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;
10724      }
10725  }
10726  else {
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;
10732      }
10733  }
10734  return token;
10735     }
10736     cmd_state = (parser->parser_command_start);
10737     (parser->parser_command_start) = ((VALUE)RUBY_Qfalse);
10738   retry:
10739     switch (c = parser_nextc(parser)) {
10740       case '\0':
10741       case '\004':
10742       case '\032':
10743       case -1:
10744  return 0;
10745       case ' ': case '\t': case '\f': case '\r':
10746       case '\13':
10747  space_seen++;
10748  goto retry;
10749       case '#':
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));
10753      }
10754  }
10755  (parser->parser_lex_p) = (parser->parser_lex_pend);
10756       case '\n':
10757  switch ((parser->parser_lex_state)) {
10758    case EXPR_BEG:
10759    case EXPR_FNAME:
10760    case EXPR_DOT:
10761    case EXPR_CLASS:
10762    case EXPR_VALUE:
10763      goto retry;
10764    default:
10765      break;
10766  }
10767  while ((c = parser_nextc(parser))) {
10768      switch (c) {
10769        case ' ': case '\t': case '\f': case '\r':
10770        case '\13':
10771   space_seen++;
10772   break;
10773        case '.': {
10774     if ((c = parser_nextc(parser)) != '.') {
10775         parser_pushback(parser, c);
10776         parser_pushback(parser, '.');
10777         goto retry;
10778     }
10779        }
10780        default:
10781   --(parser->parser_ruby_sourceline);
10782   (parser->parser_lex_nextline) = (parser->parser_lex_lastline);
10783        case -1:
10784   (parser->parser_lex_p = parser->parser_lex_pend);
10785   goto normal_newline;
10786      }
10787  }
10788       normal_newline:
10789  (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
10790  (parser->parser_lex_state) = EXPR_BEG;
10791  return '\n';
10792       case '*':
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;
10797   return 342;
10798      }
10799      parser_pushback(parser, c);
10800      c = 323;
10801  }
10802  else {
10803      if (c == '=') {
10804                 (*((YYSTYPE*)(parser->parser_yylval))).id = '*';
10805   (parser->parser_lex_state) = EXPR_BEG;
10806   return 342;
10807      }
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");
10811   c = 350;
10812      }
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)) {
10814   c = 350;
10815      }
10816      else {
10817   c = '*';
10818      }
10819  }
10820  switch ((parser->parser_lex_state)) {
10821    case EXPR_FNAME: case EXPR_DOT:
10822      (parser->parser_lex_state) = EXPR_ARG; break;
10823    default:
10824      (parser->parser_lex_state) = EXPR_BEG; break;
10825  }
10826  return c;
10827       case '!':
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;
10831      if (c == '@') {
10832   return '!';
10833      }
10834  }
10835  else {
10836      (parser->parser_lex_state) = EXPR_BEG;
10837  }
10838  if (c == '=') {
10839      return 327;
10840  }
10841  if (c == '~') {
10842      return 333;
10843  }
10844  parser_pushback(parser, c);
10845  return '!';
10846       case '=':
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]))) {
10849   for (;;) {
10850       (parser->parser_lex_p = parser->parser_lex_pend);
10851       c = parser_nextc(parser);
10852       if (c == -1) {
10853    parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "embedded document meets end of file");
10854    return 0;
10855       }
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])))) {
10859    break;
10860       }
10861   }
10862   (parser->parser_lex_p = parser->parser_lex_pend);
10863   goto retry;
10864      }
10865  }
10866  switch ((parser->parser_lex_state)) {
10867    case EXPR_FNAME: case EXPR_DOT:
10868      (parser->parser_lex_state) = EXPR_ARG; break;
10869    default:
10870      (parser->parser_lex_state) = EXPR_BEG; break;
10871  }
10872  if ((c = parser_nextc(parser)) == '=') {
10873      if ((c = parser_nextc(parser)) == '=') {
10874   return 326;
10875      }
10876      parser_pushback(parser, c);
10877      return 325;
10878  }
10879  if (c == '~') {
10880      return 332;
10881  }
10882  else if (c == '>') {
10883      return 343;
10884  }
10885  parser_pushback(parser, c);
10886  return '=';
10887       case '<':
10888  c = parser_nextc(parser);
10889  if (c == '<' &&
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;
10897  }
10898  switch ((parser->parser_lex_state)) {
10899    case EXPR_FNAME: case EXPR_DOT:
10900      (parser->parser_lex_state) = EXPR_ARG; break;
10901    default:
10902      (parser->parser_lex_state) = EXPR_BEG; break;
10903  }
10904  if (c == '=') {
10905      if ((c = parser_nextc(parser)) == '>') {
10906   return 324;
10907      }
10908      parser_pushback(parser, c);
10909      return 329;
10910  }
10911  if (c == '<') {
10912      if ((c = parser_nextc(parser)) == '=') {
10913                 (*((YYSTYPE*)(parser->parser_yylval))).id = 338;
10914   (parser->parser_lex_state) = EXPR_BEG;
10915   return 342;
10916      }
10917      parser_pushback(parser, c);
10918      return 338;
10919  }
10920  parser_pushback(parser, c);
10921  return '<';
10922       case '>':
10923  switch ((parser->parser_lex_state)) {
10924    case EXPR_FNAME: case EXPR_DOT:
10925      (parser->parser_lex_state) = EXPR_ARG; break;
10926    default:
10927      (parser->parser_lex_state) = EXPR_BEG; break;
10928  }
10929  if ((c = parser_nextc(parser)) == '=') {
10930      return 328;
10931  }
10932  if (c == '>') {
10933      if ((c = parser_nextc(parser)) == '=') {
10934                 (*((YYSTYPE*)(parser->parser_yylval))).id = 339;
10935   (parser->parser_lex_state) = EXPR_BEG;
10936   return 342;
10937      }
10938      parser_pushback(parser, c);
10939      return 339;
10940  }
10941  parser_pushback(parser, c);
10942  return '>';
10943       case '"':
10944  (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), ('"') | ((0) << (8 * 2)), 0);
10945  return 354;
10946       case '`':
10947  if ((parser->parser_lex_state) == EXPR_FNAME) {
10948      (parser->parser_lex_state) = EXPR_END;
10949      return c;
10950  }
10951  if ((parser->parser_lex_state) == EXPR_DOT) {
10952      if (cmd_state)
10953   (parser->parser_lex_state) = EXPR_CMDARG;
10954      else
10955   (parser->parser_lex_state) = EXPR_ARG;
10956      return c;
10957  }
10958  (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), ('`') | ((0) << (8 * 2)), 0);
10959  return 355;
10960       case '\'':
10961  (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), ('\'') | ((0) << (8 * 2)), 0);
10962  return 354;
10963       case '?':
10964  if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG) {
10965      (parser->parser_lex_state) = EXPR_VALUE;
10966      return '?';
10967  }
10968  c = parser_nextc(parser);
10969  if (c == -1) {
10970      parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "incomplete character syntax");
10971      return 0;
10972  }
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)) {
10975   int c2 = 0;
10976   switch (c) {
10977     case ' ':
10978       c2 = 's';
10979       break;
10980     case '\n':
10981       c2 = 'n';
10982       break;
10983     case '\t':
10984       c2 = 't';
10985       break;
10986     case '\v':
10987       c2 = 'v';
10988       break;
10989     case '\r':
10990       c2 = 'r';
10991       break;
10992     case '\f':
10993       c2 = 'f';
10994       break;
10995   }
10996   if (c2) {
10997       rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid character syntax; use ?\\%c", c2);
10998   }
10999      }
11000    ternary:
11001      parser_pushback(parser, c);
11002      (parser->parser_lex_state) = EXPR_VALUE;
11003      return '?';
11004  }
11005  parser_newtok(parser);
11006  enc = parser->enc;
11007  if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
11008      if (parser_tokadd_mbchar(parser, c) == -1) return 0;
11009  }
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))) {
11012      goto ternary;
11013  }
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);
11018                 if (0x80 <= c) {
11019                     parser_tokaddmbc(parser, c, enc);
11020                 }
11021                 else {
11022                     parser_tokadd(parser, c);
11023                 }
11024             }
11025             else {
11026                 c = parser_read_escape(parser, 0, &enc);
11027                 parser_tokadd(parser, c);
11028             }
11029         }
11030         else {
11031      parser_tokadd(parser, c);
11032         }
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;
11036  return 317;
11037       case '&':
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;
11043   return 342;
11044      }
11045      parser_pushback(parser, c);
11046      return 330;
11047  }
11048  else if (c == '=') {
11049             (*((YYSTYPE*)(parser->parser_yylval))).id = '&';
11050      (parser->parser_lex_state) = EXPR_BEG;
11051      return 342;
11052  }
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");
11056      c = 351;
11057  }
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)) {
11059      c = 351;
11060  }
11061  else {
11062      c = '&';
11063  }
11064  switch ((parser->parser_lex_state)) {
11065    case EXPR_FNAME: case EXPR_DOT:
11066      (parser->parser_lex_state) = EXPR_ARG; break;
11067    default:
11068      (parser->parser_lex_state) = EXPR_BEG;
11069  }
11070  return c;
11071       case '|':
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;
11077   return 342;
11078      }
11079      parser_pushback(parser, c);
11080      return 331;
11081  }
11082  if (c == '=') {
11083             (*((YYSTYPE*)(parser->parser_yylval))).id = '|';
11084      (parser->parser_lex_state) = EXPR_BEG;
11085      return 342;
11086  }
11087  if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
11088      (parser->parser_lex_state) = EXPR_ARG;
11089  }
11090  else {
11091      (parser->parser_lex_state) = EXPR_BEG;
11092  }
11093  parser_pushback(parser, c);
11094  return '|';
11095       case '+':
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;
11099      if (c == '@') {
11100   return 321;
11101      }
11102      parser_pushback(parser, c);
11103      return '+';
11104  }
11105  if (c == '=') {
11106             (*((YYSTYPE*)(parser->parser_yylval))).id = '+';
11107      (parser->parser_lex_state) = EXPR_BEG;
11108      return 342;
11109  }
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))) {
11116   c = '+';
11117   goto start_num;
11118      }
11119      return 321;
11120  }
11121  (parser->parser_lex_state) = EXPR_BEG;
11122  parser_pushback(parser, c);
11123  return '+';
11124       case '-':
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;
11128      if (c == '@') {
11129   return 322;
11130      }
11131      parser_pushback(parser, c);
11132      return '-';
11133  }
11134  if (c == '=') {
11135             (*((YYSTYPE*)(parser->parser_yylval))).id = '-';
11136      (parser->parser_lex_state) = EXPR_BEG;
11137      return 342;
11138  }
11139  if (c == '>') {
11140      (parser->parser_lex_state) = EXPR_ARG;
11141      return 352;
11142  }
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))) {
11149   return 364;
11150      }
11151      return 322;
11152  }
11153  (parser->parser_lex_state) = EXPR_BEG;
11154  parser_pushback(parser, c);
11155  return '-';
11156       case '.':
11157  (parser->parser_lex_state) = EXPR_BEG;
11158  if ((c = parser_nextc(parser)) == '.') {
11159      if ((c = parser_nextc(parser)) == '.') {
11160   return 335;
11161      }
11162      parser_pushback(parser, c);
11163      return 334;
11164  }
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");
11168  }
11169  (parser->parser_lex_state) = EXPR_DOT;
11170  return '.';
11171       start_num:
11172       case '0': case '1': case '2': case '3': case '4':
11173       case '5': case '6': case '7': case '8': case '9':
11174  {
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);
11182      }
11183      if (c == '0') {
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))) {
11189    do {
11190        if (c == '_') {
11191     if (nondigit) break;
11192     nondigit = c;
11193     continue;
11194        }
11195        if (!rb_isxdigit((unsigned char)(c))) break;
11196        nondigit = 0;
11197        parser_tokadd(parser, c);
11198    } while ((c = parser_nextc(parser)) != -1);
11199       }
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");
11204       }
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));
11207       return 314;
11208   }
11209   if (c == 'b' || c == 'B') {
11210       c = parser_nextc(parser);
11211       if (c == '0' || c == '1') {
11212    do {
11213        if (c == '_') {
11214     if (nondigit) break;
11215     nondigit = c;
11216     continue;
11217        }
11218        if (c != '0' && c != '1') break;
11219        nondigit = 0;
11220        parser_tokadd(parser, c);
11221    } while ((c = parser_nextc(parser)) != -1);
11222       }
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");
11227       }
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));
11230       return 314;
11231   }
11232   if (c == 'd' || c == 'D') {
11233       c = parser_nextc(parser);
11234       if (c != -1 && rb_isdigit((unsigned char)(c))) {
11235    do {
11236        if (c == '_') {
11237     if (nondigit) break;
11238     nondigit = c;
11239     continue;
11240        }
11241        if (!rb_isdigit((unsigned char)(c))) break;
11242        nondigit = 0;
11243        parser_tokadd(parser, c);
11244    } while ((c = parser_nextc(parser)) != -1);
11245       }
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");
11250       }
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));
11253       return 314;
11254   }
11255   if (c == '_') {
11256       goto octal_number;
11257   }
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");
11262       }
11263   }
11264   if (c >= '0' && c <= '7') {
11265     octal_number:
11266              do {
11267    if (c == '_') {
11268        if (nondigit) break;
11269        nondigit = c;
11270        continue;
11271    }
11272    if (c < '0' || c > '9') break;
11273    if (c > '7') goto invalid_octal;
11274    nondigit = 0;
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));
11282    return 314;
11283       }
11284       if (nondigit) {
11285    parser_pushback(parser, c);
11286    goto trailing_uc;
11287       }
11288   }
11289   if (c > '7' && c <= '9') {
11290     invalid_octal:
11291       parser_yyerror(parser, "Invalid octal digit");
11292   }
11293   else if (c == '.' || c == 'e' || c == 'E') {
11294       parser_tokadd(parser, '0');
11295   }
11296   else {
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));
11299       return 314;
11300   }
11301      }
11302      for (;;) {
11303   switch (c) {
11304     case '0': case '1': case '2': case '3': case '4':
11305     case '5': case '6': case '7': case '8': case '9':
11306       nondigit = 0;
11307       parser_tokadd(parser, c);
11308       break;
11309     case '.':
11310       if (nondigit) goto trailing_uc;
11311       if (seen_point || seen_e) {
11312    goto decode_num;
11313       }
11314       else {
11315    int c0 = parser_nextc(parser);
11316    if (c == -1 || !rb_isdigit((unsigned char)(c0))) {
11317        parser_pushback(parser, c0);
11318        goto decode_num;
11319    }
11320    c = c0;
11321       }
11322       parser_tokadd(parser, '.');
11323       parser_tokadd(parser, c);
11324       is_float++;
11325       seen_point++;
11326       nondigit = 0;
11327       break;
11328     case 'e':
11329     case 'E':
11330       if (nondigit) {
11331    parser_pushback(parser, c);
11332    c = nondigit;
11333    goto decode_num;
11334       }
11335       if (seen_e) {
11336    goto decode_num;
11337       }
11338       parser_tokadd(parser, c);
11339       seen_e++;
11340       is_float++;
11341       nondigit = c;
11342       c = parser_nextc(parser);
11343       if (c != '-' && c != '+') continue;
11344       parser_tokadd(parser, c);
11345       nondigit = c;
11346       break;
11347     case '_':
11348       if (nondigit) goto decode_num;
11349       nondigit = c;
11350       break;
11351     default:
11352       goto decode_num;
11353   }
11354   c = parser_nextc(parser);
11355      }
11356    decode_num:
11357      parser_pushback(parser, c);
11358      ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11359      if (nondigit) {
11360   char tmp[30];
11361        trailing_uc:
11362   sprintf(tmp, "trailing `%c' in number", nondigit);
11363   parser_yyerror(parser, tmp);
11364      }
11365      if (is_float) {
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;
11370   }
11371                 (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_float_new(d)), (VALUE)(0), (VALUE)(0));
11372   return 315;
11373      }
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));
11375      return 314;
11376  }
11377       case ')':
11378       case ']':
11379  (parser->parser_paren_nest)--;
11380       case '}':
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));
11383  if (c == ')')
11384      (parser->parser_lex_state) = EXPR_END;
11385  else
11386      (parser->parser_lex_state) = EXPR_ENDARG;
11387  return c;
11388       case ':':
11389  c = parser_nextc(parser);
11390  if (c == ':') {
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;
11394   return 341;
11395      }
11396      (parser->parser_lex_state) = EXPR_DOT;
11397      return 340;
11398  }
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;
11402      return ':';
11403  }
11404  switch (c) {
11405    case '\'':
11406      (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (c) | ((0) << (8 * 2)), 0);
11407      break;
11408    case '"':
11409      (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dsym), (c) | ((0) << (8 * 2)), 0);
11410      break;
11411    default:
11412      parser_pushback(parser, c);
11413      break;
11414  }
11415  (parser->parser_lex_state) = EXPR_FNAME;
11416  return 353;
11417       case '/':
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);
11420      return 356;
11421  }
11422  if ((c = parser_nextc(parser)) == '=') {
11423             (*((YYSTYPE*)(parser->parser_yylval))).id = '/';
11424      (parser->parser_lex_state) = EXPR_BEG;
11425      return 342;
11426  }
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);
11432   return 356;
11433      }
11434  }
11435  switch ((parser->parser_lex_state)) {
11436    case EXPR_FNAME: case EXPR_DOT:
11437      (parser->parser_lex_state) = EXPR_ARG; break;
11438    default:
11439      (parser->parser_lex_state) = EXPR_BEG; break;
11440  }
11441  return '/';
11442       case '^':
11443  if ((c = parser_nextc(parser)) == '=') {
11444             (*((YYSTYPE*)(parser->parser_yylval))).id = '^';
11445      (parser->parser_lex_state) = EXPR_BEG;
11446      return 342;
11447  }
11448  switch ((parser->parser_lex_state)) {
11449    case EXPR_FNAME: case EXPR_DOT:
11450      (parser->parser_lex_state) = EXPR_ARG; break;
11451    default:
11452      (parser->parser_lex_state) = EXPR_BEG; break;
11453  }
11454  parser_pushback(parser, c);
11455  return '^';
11456       case ';':
11457  (parser->parser_lex_state) = EXPR_BEG;
11458  (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
11459  return ';';
11460       case ',':
11461  (parser->parser_lex_state) = EXPR_BEG;
11462  return ',';
11463       case '~':
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);
11467      }
11468      (parser->parser_lex_state) = EXPR_ARG;
11469  }
11470  else {
11471      (parser->parser_lex_state) = EXPR_BEG;
11472  }
11473  return '~';
11474       case '(':
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)) {
11476      c = 344;
11477  }
11478  else if (space_seen) {
11479      if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
11480   c = 345;
11481      }
11482  }
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;
11487  return c;
11488       case '[':
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)) == '=') {
11494       return 337;
11495   }
11496   parser_pushback(parser, c);
11497   return 336;
11498      }
11499      parser_pushback(parser, c);
11500      return '[';
11501  }
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)) {
11503      c = 347;
11504  }
11505  else if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
11506      c = 347;
11507  }
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));
11511  return c;
11512       case '{':
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);
11517      return 362;
11518  }
11519  if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || (parser->parser_lex_state) == EXPR_END)
11520      c = '{';
11521  else if ((parser->parser_lex_state) == EXPR_ENDARG)
11522      c = 349;
11523  else
11524      c = 348;
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);
11529  return c;
11530       case '\\':
11531  c = parser_nextc(parser);
11532  if (c == '\n') {
11533      space_seen = 1;
11534      goto retry;
11535  }
11536  parser_pushback(parser, c);
11537  return '\\';
11538       case '%':
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)) {
11540      int term;
11541      int paren;
11542      c = parser_nextc(parser);
11543    quotation:
11544      if (c == -1 || !rb_isalnum((unsigned char)(c))) {
11545   term = c;
11546   c = 'Q';
11547      }
11548      else {
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");
11552       return 0;
11553   }
11554      }
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");
11557   return 0;
11558      }
11559      paren = term;
11560      if (term == '(') term = ')';
11561      else if (term == '[') term = ']';
11562      else if (term == '{') term = '}';
11563      else if (term == '<') term = '>';
11564      else paren = 0;
11565      switch (c) {
11566        case 'Q':
11567   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), (term) | ((paren) << (8 * 2)), 0);
11568   return 354;
11569        case 'q':
11570   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), (term) | ((paren) << (8 * 2)), 0);
11571   return 354;
11572        case 'W':
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);
11576   return 357;
11577        case 'w':
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);
11581   return 358;
11582        case 'x':
11583   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), (term) | ((paren) << (8 * 2)), 0);
11584   return 355;
11585        case 'r':
11586   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), (term) | ((paren) << (8 * 2)), 0);
11587   return 356;
11588        case 's':
11589   (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (term) | ((paren) << (8 * 2)), 0);
11590   (parser->parser_lex_state) = EXPR_FNAME;
11591   return 353;
11592        default:
11593   parser_yyerror(parser, "unknown type of %string");
11594   return 0;
11595      }
11596  }
11597  if ((c = parser_nextc(parser)) == '=') {
11598             (*((YYSTYPE*)(parser->parser_yylval))).id = '%';
11599      (parser->parser_lex_state) = EXPR_BEG;
11600      return 342;
11601  }
11602  if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
11603      goto quotation;
11604  }
11605  switch ((parser->parser_lex_state)) {
11606    case EXPR_FNAME: case EXPR_DOT:
11607      (parser->parser_lex_state) = EXPR_ARG; break;
11608    default:
11609      (parser->parser_lex_state) = EXPR_BEG; break;
11610  }
11611  parser_pushback(parser, c);
11612  return '%';
11613       case '$':
11614  last_state = (parser->parser_lex_state);
11615  (parser->parser_lex_state) = EXPR_END;
11616  parser_newtok(parser);
11617  c = parser_nextc(parser);
11618  switch (c) {
11619    case '_':
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, '_');
11624   break;
11625      }
11626      parser_pushback(parser, c);
11627      c = '_';
11628    case '~':
11629    case '*':
11630    case '$':
11631    case '?':
11632    case '!':
11633    case '@':
11634    case '/':
11635    case '\\':
11636    case ';':
11637    case ',':
11638    case '.':
11639    case '=':
11640    case ':':
11641    case '<':
11642    case '>':
11643    case '\"':
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)));
11648      return 309;
11649    case '-':
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;
11655      }
11656      else {
11657   parser_pushback(parser, c);
11658      }
11659    gvar:
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)));
11662      return 309;
11663    case '&':
11664    case '`':
11665    case '\'':
11666    case '+':
11667      if (last_state == EXPR_FNAME) {
11668   parser_tokadd(parser, '$');
11669   parser_tokadd(parser, c);
11670   goto gvar;
11671      }
11672      (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_BACK_REF), (VALUE)(0), (VALUE)(c), (VALUE)(0));
11673      return 319;
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, '$');
11678      do {
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));
11686      return 318;
11687    default:
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);
11690   return '$';
11691      }
11692    case '0':
11693      parser_tokadd(parser, '$');
11694  }
11695  break;
11696       case '@':
11697  c = parser_nextc(parser);
11698  parser_newtok(parser);
11699  parser_tokadd(parser, '@');
11700  if (c == '@') {
11701      parser_tokadd(parser, '@');
11702      c = parser_nextc(parser);
11703  }
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);
11707      }
11708      else {
11709   parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@@%c' is not allowed as a class variable name", c);
11710      }
11711      return 0;
11712  }
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);
11715      return '@';
11716  }
11717  break;
11718       case '_':
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);
11722      return -1;
11723  }
11724  parser_newtok(parser);
11725  break;
11726       default:
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);
11729      goto retry;
11730  }
11731  parser_newtok(parser);
11732  break;
11733     }
11734     mb = (((VALUE)1)<<(12 +8));
11735     do {
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);
11743  break;
11744       default:
11745  if ((c == '!' || c == '?') && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p))) {
11746      parser_tokadd(parser, c);
11747  }
11748  else {
11749      parser_pushback(parser, c);
11750  }
11751     }
11752     ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11753     {
11754  int result = 0;
11755  last_state = (parser->parser_lex_state);
11756  switch ((parser->parser_tokenbuf)[0]) {
11757    case '$':
11758      (parser->parser_lex_state) = EXPR_END;
11759      result = 309;
11760      break;
11761    case '@':
11762      (parser->parser_lex_state) = EXPR_END;
11763      if ((parser->parser_tokenbuf)[1] == '@')
11764   result = 312;
11765      else
11766   result = 310;
11767      break;
11768    default:
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) == '?') {
11770   result = 308;
11771      }
11772      else {
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] == '>'))) {
11776    result = 307;
11777    parser_tokadd(parser, c);
11778    ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
11779       }
11780       else {
11781    parser_pushback(parser, c);
11782       }
11783   }
11784   if (result == 0 && rb_isupper((unsigned char)((parser->parser_tokenbuf)[0]))) {
11785       result = 311;
11786   }
11787   else {
11788       result = 307;
11789   }
11790      }
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);
11798       return 313;
11799   }
11800      }
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));
11804   if (kw) {
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));
11809    return kw->id[0];
11810       }
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);
11816        return 284;
11817    }
11818    if (((parser->parser_cond_stack)&1)) return 282;
11819    if (((parser->parser_cmdarg_stack)&1) && state != EXPR_CMDARG)
11820        return 283;
11821    if (state == EXPR_ENDARG || state == EXPR_BEG)
11822        return 283;
11823    return 281;
11824       }
11825       if (state == EXPR_BEG || state == EXPR_VALUE)
11826    return kw->id[0];
11827       else {
11828    if (kw->id[0] != kw->id[1])
11829        (parser->parser_lex_state) = EXPR_BEG;
11830    return kw->id[1];
11831       }
11832   }
11833      }
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)) {
11837   if (cmd_state) {
11838       (parser->parser_lex_state) = EXPR_CMDARG;
11839   }
11840   else {
11841       (parser->parser_lex_state) = EXPR_ARG;
11842   }
11843      }
11844      else {
11845   (parser->parser_lex_state) = EXPR_END;
11846      }
11847  }
11848         {
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;
11853             }
11854         }
11855  return result;
11856     }
11857 }
11858 static int
11859 yylex(void *lval, void *p)
11860 {
11861     struct parser_params *parser = (struct parser_params*)p;
11862     int t;
11863     parser->parser_yylval = lval;
11864     parser->parser_yylval->val = ((VALUE)RUBY_Qundef);
11865     t = parser_yylex(parser);
11866     return t;
11867 }
11868 static NODE*
11869 node_newnode(struct parser_params *parser, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
11870 {
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)));
11873     return n;
11874 }
11875 enum node_type
11876 nodetype(NODE *node)
11877 {
11878     return (enum node_type)((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
11879 }
11880 int
11881 nodeline(NODE *node)
11882 {
11883     return ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
11884 }
11885 static NODE*
11886 newline_node(NODE *node)
11887 {
11888     if (node) {
11889  node = remove_begin(node);
11890  node->flags |= (((VALUE)1)<<7);
11891     }
11892     return node;
11893 }
11894 static void
11895 fixpos(NODE *node, NODE *orig)
11896 {
11897     if (!node) return;
11898     if (!orig) return;
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)));
11901 }
11902 static void
11903 parser_warning(struct parser_params *parser, NODE *node, const char *mesg)
11904 {
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);
11906 }
11907 static void
11908 parser_warn(struct parser_params *parser, NODE *node, const char *mesg)
11909 {
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);
11911 }
11912 static NODE*
11913 block_append_gen(struct parser_params *parser, NODE *head, NODE *tail)
11914 {
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))) {
11919       case NODE_LIT:
11920       case NODE_STR:
11921       case NODE_SELF:
11922       case NODE_TRUE:
11923       case NODE_FALSE:
11924       case NODE_NIL:
11925  parser_warning(parser, h, "unused literal ignored");
11926  return tail;
11927       default:
11928  h = end = node_newnode(parser, (NODE_BLOCK), (VALUE)(head), (VALUE)(0), (VALUE)(0));
11929  end->u2.node = end;
11930  fixpos(end, head);
11931  head = end;
11932  break;
11933       case NODE_BLOCK:
11934  end = h->u2.node;
11935  break;
11936     }
11937     nd = end->u1.node;
11938     switch (((int) (((((struct RNode*)(nd)))->flags & (((VALUE)0x7f)<<8))>>8))) {
11939       case NODE_RETURN:
11940       case NODE_BREAK:
11941       case NODE_NEXT:
11942       case NODE_REDO:
11943       case NODE_RETRY:
11944  if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) {
11945      parser_warning(parser, nd, "statement not reached");
11946  }
11947  break;
11948       default:
11949  break;
11950     }
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;
11954     }
11955     end->u3.node = tail;
11956     h->u2.node = tail->u2.node;
11957     return head;
11958 }
11959 static NODE*
11960 list_append_gen(struct parser_params *parser, NODE *list, NODE *item)
11961 {
11962     NODE *last;
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;
11966     }
11967     else {
11968  last = list;
11969     }
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;
11973     return list;
11974 }
11975 static NODE*
11976 list_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
11977 {
11978     NODE *last;
11979     if (head->u3.node) {
11980  last = head->u3.node->u2.node;
11981     }
11982     else {
11983  last = head;
11984     }
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;
11989     }
11990     else {
11991  head->u3.node->u2.node = tail;
11992     }
11993     return head;
11994 }
11995 static int
11996 literal_concat0(struct parser_params *parser, VALUE head, VALUE tail)
11997 {
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);
12004  return 0;
12005     }
12006     rb_str_buf_append(head, tail);
12007     return 1;
12008 }
12009 static NODE *
12010 literal_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
12011 {
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);
12019     }
12020     switch (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12021       case NODE_STR:
12022  if (htype == NODE_STR) {
12023      if (!literal_concat0(parser, head->u1.value, tail->u1.value)) {
12024        error:
12025   rb_gc_force_recycle((VALUE)head);
12026   rb_gc_force_recycle((VALUE)tail);
12027   return 0;
12028      }
12029      rb_gc_force_recycle((VALUE)tail);
12030  }
12031  else {
12032      list_append_gen(parser,head,tail);
12033  }
12034  break;
12035       case NODE_DSTR:
12036  if (htype == NODE_STR) {
12037      if (!literal_concat0(parser, head->u1.value, tail->u1.value))
12038   goto error;
12039      tail->u1.value = head->u1.value;
12040      rb_gc_force_recycle((VALUE)head);
12041      head = tail;
12042  }
12043  else {
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);
12047  }
12048  break;
12049       case NODE_EVSTR:
12050  if (htype == NODE_STR) {
12051      ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSTR)<<8)&(((VALUE)0x7f)<<8)));
12052      head->u2.argc = 1;
12053  }
12054  list_append_gen(parser,head,tail);
12055  break;
12056     }
12057     return head;
12058 }
12059 static NODE *
12060 evstr2dstr_gen(struct parser_params *parser, NODE *node)
12061 {
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);
12064     }
12065     return node;
12066 }
12067 static NODE *
12068 new_evstr_gen(struct parser_params *parser, NODE *node)
12069 {
12070     NODE *head = node;
12071     if (node) {
12072  switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12073    case NODE_STR: case NODE_DSTR: case NODE_EVSTR:
12074      return node;
12075  }
12076     }
12077     return node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)((head)), (VALUE)(0));
12078 }
12079 static NODE *
12080 call_bin_op_gen(struct parser_params *parser, NODE *recv, ID id, NODE *arg1)
12081 {
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))));
12085 }
12086 static NODE *
12087 call_uni_op_gen(struct parser_params *parser, NODE *recv, ID id)
12088 {
12089     value_expr_gen(parser, (recv) = remove_begin(recv));
12090     return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(0));
12091 }
12092 static NODE*
12093 match_op_gen(struct parser_params *parser, NODE *node1, NODE *node2)
12094 {
12095     value_expr_gen(parser, (node1) = remove_begin(node1));
12096     value_expr_gen(parser, (node2) = remove_begin(node2));
12097     if (node1) {
12098  switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12099    case NODE_DREGX:
12100    case NODE_DREGX_ONCE:
12101      return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
12102    case NODE_LIT:
12103      if (rb_type((VALUE)(node1->u1.value)) == RUBY_T_REGEXP) {
12104   return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
12105      }
12106  }
12107     }
12108     if (node2) {
12109  switch (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12110    case NODE_DREGX:
12111    case NODE_DREGX_ONCE:
12112      return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
12113    case NODE_LIT:
12114      if (rb_type((VALUE)(node2->u1.value)) == RUBY_T_REGEXP) {
12115   return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
12116      }
12117  }
12118     }
12119     return node_newnode(parser, (NODE_CALL), (VALUE)(node1), (VALUE)(332), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0))));
12120 }
12121 static NODE*
12122 gettable_gen(struct parser_params *parser, ID id)
12123 {
12124     if (id == 288) {
12125  return node_newnode(parser, (NODE_SELF), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12126     }
12127     else if (id == 289) {
12128  return node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12129     }
12130     else if (id == 290) {
12131  return node_newnode(parser, (NODE_TRUE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12132     }
12133     else if (id == 291) {
12134  return node_newnode(parser, (NODE_FALSE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12135     }
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));
12138     }
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));
12141     }
12142     else if (id == 306) {
12143  return node_newnode(parser, (NODE_LIT), (VALUE)(rb_enc_from_encoding(parser->enc)), (VALUE)(0), (VALUE)(0));
12144     }
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));
12149     }
12150     else if ((((id)>376)&&((id)&0x07)==0x03)) {
12151  return node_newnode(parser, (NODE_GVAR), (VALUE)(id), (VALUE)(0), (VALUE)(rb_global_entry(id)));
12152     }
12153     else if ((((id)>376)&&((id)&0x07)==0x01)) {
12154  return node_newnode(parser, (NODE_IVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
12155     }
12156     else if ((((id)>376)&&((id)&0x07)==0x05)) {
12157  return node_newnode(parser, (NODE_CONST), (VALUE)(id), (VALUE)(0), (VALUE)(0));
12158     }
12159     else if ((((id)>376)&&((id)&0x07)==0x06)) {
12160  return node_newnode(parser, (NODE_CVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
12161     }
12162     parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to get", rb_id2name(id));
12163     return 0;
12164 }
12165 static NODE*
12166 assignable_gen(struct parser_params *parser, ID id, NODE *val)
12167 {
12168     if (!id) return 0;
12169     if (id == 288) {
12170  parser_yyerror(parser, "Can't change the value of self");
12171     }
12172     else if (id == 289) {
12173  parser_yyerror(parser, "Can't assign to nil");
12174     }
12175     else if (id == 290) {
12176  parser_yyerror(parser, "Can't assign to true");
12177     }
12178     else if (id == 291) {
12179  parser_yyerror(parser, "Can't assign to false");
12180     }
12181     else if (id == 305) {
12182  parser_yyerror(parser, "Can't assign to __FILE__");
12183     }
12184     else if (id == 304) {
12185  parser_yyerror(parser, "Can't assign to __LINE__");
12186     }
12187     else if (id == 306) {
12188  parser_yyerror(parser, "Can't assign to __ENCODING__");
12189     }
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));
12194      }
12195      else if (dvar_defined_gen(parser, id)) {
12196   return node_newnode(parser, (NODE_DASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12197      }
12198      else if (local_id_gen(parser, id)) {
12199   return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12200      }
12201      else{
12202   local_var_gen(parser, id);;
12203   return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12204      }
12205  }
12206  else {
12207      if (!local_id_gen(parser, id)) {
12208   local_var_gen(parser, id);;
12209      }
12210      return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12211  }
12212     }
12213     else if ((((id)>376)&&((id)&0x07)==0x03)) {
12214  return node_newnode(parser, (NODE_GASGN), (VALUE)(id), (VALUE)(val), (VALUE)(rb_global_entry(id)));
12215     }
12216     else if ((((id)>376)&&((id)&0x07)==0x01)) {
12217  return node_newnode(parser, (NODE_IASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12218     }
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));
12223     }
12224     else if ((((id)>376)&&((id)&0x07)==0x06)) {
12225  return node_newnode(parser, (NODE_CVASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
12226     }
12227     else {
12228  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to set", rb_id2name(id));
12229     }
12230     return 0;
12231 }
12232 static void
12233 shadowing_lvar_gen(struct parser_params *parser, ID name)
12234 {
12235     ID uscore;
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");
12241  }
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);
12245  }
12246     }
12247     else {
12248  if (local_id_gen(parser, name)) {
12249      parser_yyerror(parser, "duplicated argument name");
12250  }
12251     }
12252 }
12253 static void
12254 new_bv_gen(struct parser_params *parser, ID name)
12255 {
12256     if (!name) return;
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",
12259         rb_id2name(name));
12260  return;
12261     }
12262     shadowing_lvar_gen(parser, name);
12263     local_var_gen(parser, name);;
12264 }
12265 static NODE *
12266 aryset_gen(struct parser_params *parser, NODE *recv, NODE *idx)
12267 {
12268     if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
12269  recv = (NODE *)1;
12270     return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(337), (VALUE)(idx));
12271 }
12272 static void
12273 block_dup_check_gen(struct parser_params *parser, NODE *node1, NODE *node2)
12274 {
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");
12277     }
12278 }
12279 ID
12280 rb_id_attrset(ID id)
12281 {
12282     id &= ~0x07;
12283     id |= 0x04;
12284     return id;
12285 }
12286 static NODE *
12287 attrset_gen(struct parser_params *parser, NODE *recv, ID id)
12288 {
12289     if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
12290  recv = (NODE *)1;
12291     return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(rb_id_attrset(id)), (VALUE)(0));
12292 }
12293 static void
12294 rb_backref_error_gen(struct parser_params *parser, NODE *node)
12295 {
12296     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12297       case NODE_NTH_REF:
12298  parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%ld", node->u2.argc);
12299  break;
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);
12302  break;
12303     }
12304 }
12305 static NODE *
12306 arg_concat_gen(struct parser_params *parser, NODE *node1, NODE *node2)
12307 {
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);
12312  return node1;
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)));
12317  return node1;
12318       case NODE_ARGSCAT:
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);
12322  return node1;
12323     }
12324     return node_newnode(parser, (NODE_ARGSCAT), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
12325 }
12326 static NODE *
12327 arg_append_gen(struct parser_params *parser, NODE *node1, NODE *node2)
12328 {
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))) {
12331       case NODE_ARRAY:
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);
12335  return node1;
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)));
12339  return node1;
12340     }
12341     return node_newnode(parser, (NODE_ARGSPUSH), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
12342 }
12343 static NODE *
12344 splat_array(NODE* node)
12345 {
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;
12348     return 0;
12349 }
12350 static NODE *
12351 node_assign_gen(struct parser_params *parser, NODE *lhs, NODE *rhs)
12352 {
12353     if (!lhs) return 0;
12354     switch (((int) (((((struct RNode*)(lhs)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12355       case NODE_GASGN:
12356       case NODE_IASGN:
12357       case NODE_IASGN2:
12358       case NODE_LASGN:
12359       case NODE_DASGN:
12360       case NODE_DASGN_CURR:
12361       case NODE_MASGN:
12362       case NODE_CDECL:
12363       case NODE_CVASGN:
12364  lhs->u2.node = rhs;
12365  break;
12366       case NODE_ATTRASGN:
12367       case NODE_CALL:
12368  lhs->u3.node = arg_append_gen(parser,lhs->u3.node,rhs);
12369  break;
12370       default:
12371  break;
12372     }
12373     return lhs;
12374 }
12375 static int
12376 value_expr_gen(struct parser_params *parser, NODE *node)
12377 {
12378     int cond = 0;
12379     if (!node) {
12380  rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "empty expression");
12381     }
12382     while (node) {
12383  switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12384    case NODE_DEFN:
12385    case NODE_DEFS:
12386      parser_warning(parser, node, "void value expression");
12387      return ((VALUE)RUBY_Qfalse);
12388    case NODE_RETURN:
12389    case NODE_BREAK:
12390    case NODE_NEXT:
12391    case NODE_REDO:
12392    case NODE_RETRY:
12393      if (!cond) parser_yyerror(parser, "void value expression");
12394      return ((VALUE)RUBY_Qfalse);
12395    case NODE_BLOCK:
12396      while (node->u3.node) {
12397   node = node->u3.node;
12398      }
12399      node = node->u1.node;
12400      break;
12401    case NODE_BEGIN:
12402      node = node->u2.node;
12403      break;
12404    case NODE_IF:
12405      if (!node->u2.node) {
12406   node = node->u3.node;
12407   break;
12408      }
12409      else if (!node->u3.node) {
12410   node = node->u2.node;
12411   break;
12412      }
12413      if (!value_expr_gen(parser, (node->u2.node) = remove_begin(node->u2.node))) return ((VALUE)RUBY_Qfalse);
12414      node = node->u3.node;
12415      break;
12416    case NODE_AND:
12417    case NODE_OR:
12418      cond = 1;
12419      node = node->u2.node;
12420      break;
12421    default:
12422      return ((VALUE)RUBY_Qtrue);
12423  }
12424     }
12425     return ((VALUE)RUBY_Qtrue);
12426 }
12427 static void
12428 void_expr_gen(struct parser_params *parser, NODE *node)
12429 {
12430     const char *useless = 0;
12431     if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
12432     if (!node) return;
12433     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12434       case NODE_CALL:
12435  switch (node->u2.id) {
12436    case '+':
12437    case '-':
12438    case '*':
12439    case '/':
12440    case '%':
12441    case 323:
12442    case 321:
12443    case 322:
12444    case '|':
12445    case '^':
12446    case '&':
12447    case 324:
12448    case '>':
12449    case 328:
12450    case '<':
12451    case 329:
12452    case 325:
12453    case 327:
12454      useless = rb_id2name(node->u2.id);
12455      break;
12456  }
12457  break;
12458       case NODE_LVAR:
12459       case NODE_DVAR:
12460       case NODE_GVAR:
12461       case NODE_IVAR:
12462       case NODE_CVAR:
12463       case NODE_NTH_REF:
12464       case NODE_BACK_REF:
12465  useless = "a variable";
12466  break;
12467       case NODE_CONST:
12468  useless = "a constant";
12469  break;
12470       case NODE_LIT:
12471       case NODE_STR:
12472       case NODE_DSTR:
12473       case NODE_DREGX:
12474       case NODE_DREGX_ONCE:
12475  useless = "a literal";
12476  break;
12477       case NODE_COLON2:
12478       case NODE_COLON3:
12479  useless = "::";
12480  break;
12481       case NODE_DOT2:
12482  useless = "..";
12483  break;
12484       case NODE_DOT3:
12485  useless = "...";
12486  break;
12487       case NODE_SELF:
12488  useless = "self";
12489  break;
12490       case NODE_NIL:
12491  useless = "nil";
12492  break;
12493       case NODE_TRUE:
12494  useless = "true";
12495  break;
12496       case NODE_FALSE:
12497  useless = "false";
12498  break;
12499       case NODE_DEFINED:
12500  useless = "defined?";
12501  break;
12502     }
12503     if (useless) {
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;
12508     }
12509 }
12510 static void
12511 void_stmts_gen(struct parser_params *parser, NODE *node)
12512 {
12513     if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
12514     if (!node) return;
12515     if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) return;
12516     for (;;) {
12517  if (!node->u3.node) return;
12518  void_expr_gen(parser, (node->u1.node));
12519  node = node->u3.node;
12520     }
12521 }
12522 static NODE *
12523 remove_begin(NODE *node)
12524 {
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;
12528     }
12529     return node;
12530 }
12531 static void
12532 reduce_nodes_gen(struct parser_params *parser, NODE **body)
12533 {
12534     NODE *node = *body;
12535     if (!node) {
12536  *body = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12537  return;
12538     }
12539     while (node) {
12540  switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12541    end:
12542    case NODE_NIL:
12543      *body = 0;
12544      return;
12545    case NODE_RETURN:
12546      *body = node = node->u1.node;
12547      continue;
12548    case NODE_BEGIN:
12549      *body = node = node->u2.node;
12550      continue;
12551    case NODE_BLOCK:
12552      body = &node->u2.node->u1.node;
12553      break;
12554    case NODE_IF:
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;
12556      return;
12557    case NODE_CASE:
12558      body = &node->u2.node;
12559      break;
12560    case NODE_WHEN:
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;
12562      break;
12563    case NODE_ENSURE:
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;
12565      break;
12566    case NODE_RESCUE:
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;
12568      break;
12569    default:
12570      return;
12571  }
12572  node = *body;
12573     }
12574 }
12575 static int
12576 assign_in_cond(struct parser_params *parser, NODE *node)
12577 {
12578     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12579       case NODE_MASGN:
12580  parser_yyerror(parser, "multiple assignment in conditional");
12581  return 1;
12582       case NODE_LASGN:
12583       case NODE_DASGN:
12584       case NODE_GASGN:
12585       case NODE_IASGN:
12586  break;
12587       default:
12588  return 0;
12589     }
12590     switch (((int) (((((struct RNode*)(node->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12591       case NODE_LIT:
12592       case NODE_STR:
12593       case NODE_NIL:
12594       case NODE_TRUE:
12595       case NODE_FALSE:
12596  parser_warn(parser, node->u2.node, "found = in conditional, should be ==");
12597  return 1;
12598       case NODE_DSTR:
12599       case NODE_XSTR:
12600       case NODE_DXSTR:
12601       case NODE_EVSTR:
12602       case NODE_DREGX:
12603       default:
12604  break;
12605     }
12606     return 1;
12607 }
12608 static void
12609 warn_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
12610 {
12611     if (!e_option_supplied(parser)) parser_warn(parser, node, str);
12612 }
12613 static void
12614 warning_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
12615 {
12616     if (!e_option_supplied(parser)) parser_warning(parser, node, str);
12617 }
12618 static void
12619 fixup_nodes(NODE **rootnode)
12620 {
12621     NODE *node, *next, *head;
12622     for (node = *rootnode; node; node = next) {
12623  enum node_type type;
12624  VALUE val;
12625  next = node->u3.node;
12626  head = node->u1.node;
12627  rb_gc_force_recycle((VALUE)node);
12628  *rootnode = next;
12629  switch (type = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12630    case NODE_DOT2:
12631    case NODE_DOT3:
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;
12638      break;
12639    default:
12640      break;
12641  }
12642     }
12643 }
12644 static NODE *cond0(struct parser_params*,NODE*);
12645 static NODE*
12646 range_op(struct parser_params *parser, NODE *node)
12647 {
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))));
12655     }
12656     return cond0(parser, node);
12657 }
12658 static int
12659 literal_node(NODE *node)
12660 {
12661     if (!node) return 1;
12662     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12663       case NODE_LIT:
12664       case NODE_STR:
12665       case NODE_DSTR:
12666       case NODE_EVSTR:
12667       case NODE_DREGX:
12668       case NODE_DREGX_ONCE:
12669       case NODE_DSYM:
12670  return 2;
12671       case NODE_TRUE:
12672       case NODE_FALSE:
12673       case NODE_NIL:
12674  return 1;
12675     }
12676     return 0;
12677 }
12678 static NODE*
12679 cond0(struct parser_params *parser, NODE *node)
12680 {
12681     if (node == 0) return 0;
12682     assign_in_cond(parser, node);
12683     switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
12684       case NODE_DSTR:
12685       case NODE_EVSTR:
12686       case NODE_STR:
12687  rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal in condition");
12688  break;
12689       case NODE_DREGX:
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));
12693       case NODE_AND:
12694       case NODE_OR:
12695  node->u1.node = cond0(parser, node->u1.node);
12696  node->u2.node = cond0(parser, node->u2.node);
12697  break;
12698       case NODE_DOT2:
12699       case NODE_DOT3:
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");
12709      }
12710  }
12711  break;
12712       case NODE_DSYM:
12713  parser_warning(parser, node, "literal in condition");
12714  break;
12715       case NODE_LIT:
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)));
12719  }
12720  else {
12721      parser_warning(parser, node, "literal in condition");
12722  }
12723       default:
12724  break;
12725     }
12726     return node;
12727 }
12728 static NODE*
12729 cond_gen(struct parser_params *parser, NODE *node)
12730 {
12731     if (node == 0) return 0;
12732     return cond0(parser, node);
12733 }
12734 static NODE*
12735 logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *right)
12736 {
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) {
12741      node = second;
12742  }
12743  node->u2.node = node_newnode(parser, (type), (VALUE)(second), (VALUE)(right), (VALUE)(0));
12744  return left;
12745     }
12746     return node_newnode(parser, (type), (VALUE)(left), (VALUE)(right), (VALUE)(0));
12747 }
12748 static void
12749 no_blockarg(struct parser_params *parser, NODE *node)
12750 {
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");
12753     }
12754 }
12755 static NODE *
12756 ret_args_gen(struct parser_params *parser, NODE *node)
12757 {
12758     if (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;
12763      }
12764      else {
12765   ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_VALUES)<<8)&(((VALUE)0x7f)<<8)));
12766      }
12767  }
12768     }
12769     return node;
12770 }
12771 static NODE *
12772 new_yield_gen(struct parser_params *parser, NODE *node)
12773 {
12774     long state = ((VALUE)RUBY_Qtrue);
12775     if (node) {
12776         no_blockarg(parser, node);
12777  if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) {
12778      state = ((VALUE)RUBY_Qtrue);
12779  }
12780     }
12781     else {
12782         state = ((VALUE)RUBY_Qfalse);
12783     }
12784     return node_newnode(parser, (NODE_YIELD), (VALUE)(node), (VALUE)(0), (VALUE)(state));
12785 }
12786 static NODE*
12787 negate_lit(NODE *node)
12788 {
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));
12792  break;
12793       case RUBY_T_BIGNUM:
12794  node->u1.value = rb_funcall(node->u1.value,322,0,0);
12795  break;
12796       case RUBY_T_FLOAT:
12797  ((struct RFloat*)(node->u1.value))->float_value = -(((struct RFloat*)(node->u1.value))->float_value);
12798  break;
12799       default:
12800  break;
12801     }
12802     return node;
12803 }
12804 static NODE *
12805 arg_blk_pass(NODE *node1, NODE *node2)
12806 {
12807     if (node2) {
12808  node2->u1.node = node1;
12809  return node2;
12810     }
12811     return node1;
12812 }
12813 static NODE*
12814 new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, ID b)
12815 {
12816     int saved_line = (parser->parser_ruby_sourceline);
12817     NODE *node;
12818     NODE *i1, *i2 = 0;
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));
12822     if (p) {
12823  i2 = p->u3.node;
12824  node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(p->u1.id), (VALUE)(p->u2.argc), (VALUE)(0));
12825     }
12826     else if (i1) {
12827  node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
12828     }
12829     if (i1 || i2) {
12830  node->u3.node->u3.node->u3.node = node_newnode(parser, (NODE_AND), (VALUE)(i1), (VALUE)(i2), (VALUE)(0));
12831     }
12832     (parser->parser_ruby_sourceline) = saved_line;
12833     return node;
12834 }
12835 static void
12836 local_push_gen(struct parser_params *parser, int inherit_dvars)
12837 {
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;
12844 }
12845 static void
12846 local_pop_gen(struct parser_params *parser)
12847 {
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;
12853 }
12854 static ID*
12855 vtable_tblcpy(ID *buf, const struct vtable *src)
12856 {
12857     int i, cnt = vtable_size(src);
12858     if (cnt > 0) {
12859         buf[0] = cnt;
12860         for (i = 0; i < cnt; i++) {
12861             buf[i] = src->tbl[i];
12862         }
12863         return buf;
12864     }
12865     return 0;
12866 }
12867 static ID*
12868 local_tbl_gen(struct parser_params *parser)
12869 {
12870     int cnt = vtable_size((parser->parser_lvtbl)->args) + vtable_size((parser->parser_lvtbl)->vars);
12871     ID *buf;
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);
12876     buf[0] = cnt;
12877     return buf;
12878 }
12879 static int
12880 arg_var_gen(struct parser_params *parser, ID id)
12881 {
12882     vtable_add((parser->parser_lvtbl)->args, id);
12883     return vtable_size((parser->parser_lvtbl)->args) - 1;
12884 }
12885 static int
12886 local_var_gen(struct parser_params *parser, ID id)
12887 {
12888     vtable_add((parser->parser_lvtbl)->vars, id);
12889     return vtable_size((parser->parser_lvtbl)->vars) - 1;
12890 }
12891 static int
12892 local_id_gen(struct parser_params *parser, ID id)
12893 {
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)) {
12898  vars = vars->prev;
12899  args = args->prev;
12900     }
12901     if (vars && vars->prev == ((void*)1)) {
12902  return rb_local_defined(id);
12903     }
12904     else {
12905  return (vtable_included(args, id) ||
12906   vtable_included(vars, id));
12907     }
12908 }
12909 static void
12910 dyna_push_gen(struct parser_params *parser)
12911 {
12912     (parser->parser_lvtbl)->args = vtable_alloc((parser->parser_lvtbl)->args);
12913     (parser->parser_lvtbl)->vars = vtable_alloc((parser->parser_lvtbl)->vars);
12914 }
12915 static void
12916 dyna_pop_gen(struct parser_params *parser)
12917 {
12918     struct vtable *tmp;
12919     tmp = (parser->parser_lvtbl)->args;
12920     (parser->parser_lvtbl)->args = (parser->parser_lvtbl)->args->prev;
12921     vtable_free(tmp);
12922     tmp = (parser->parser_lvtbl)->vars;
12923     (parser->parser_lvtbl)->vars = (parser->parser_lvtbl)->vars->prev;
12924     vtable_free(tmp);
12925 }
12926 static int
12927 dyna_in_block_gen(struct parser_params *parser)
12928 {
12929     return ((VALUE)((parser->parser_lvtbl)->vars) & ~(VALUE)3) && (parser->parser_lvtbl)->vars->prev != ((void *)0);
12930 }
12931 static int
12932 dvar_defined_gen(struct parser_params *parser, ID id)
12933 {
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)) {
12939      return 1;
12940  }
12941  if (vtable_included(vars, id)) {
12942      return 1;
12943  }
12944  args = args->prev;
12945  vars = vars->prev;
12946     }
12947     if (vars == ((void*)1)) {
12948         return rb_dvar_defined(id);
12949     }
12950     return 0;
12951 }
12952 static int
12953 dvar_curr_gen(struct parser_params *parser, ID id)
12954 {
12955     return (vtable_included((parser->parser_lvtbl)->args, id) ||
12956      vtable_included((parser->parser_lvtbl)->vars, id));
12957 }
12958 VALUE rb_reg_compile(VALUE str, int options);
12959 VALUE rb_reg_check_preprocess(VALUE);
12960 static void
12961 reg_fragment_setenc_gen(struct parser_params* parser, VALUE str, int options)
12962 {
12963     int c = (((options)>>8)&0xff);
12964     if (c) {
12965  int opt, idx;
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))) {
12969             goto error;
12970  }
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);
12972     }
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))) {
12976             c = 'n';
12977             goto error;
12978         }
12979  rb_enc_associate(str, rb_ascii8bit_encoding());
12980     }
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());
12984  }
12985  else {
12986      rb_enc_associate(str, rb_ascii8bit_encoding());
12987  }
12988     }
12989     return;
12990   error:
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);
12994 }
12995 static void
12996 reg_fragment_check_gen(struct parser_params* parser, VALUE str, int options)
12997 {
12998     VALUE err;
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));
13005     }
13006 }
13007 typedef struct {
13008     struct parser_params* parser;
13009     rb_encoding *enc;
13010     NODE *succ_block;
13011     NODE *fail_block;
13012     int num;
13013 } reg_named_capture_assign_t;
13014 static int
13015 reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
13016           int back_num, int *back_refs, OnigRegex regex, void *arg0)
13017 {
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;
13023     ID var;
13024     arg->num++;
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));
13028     }
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;
13032     }
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));
13036     }
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;
13040 }
13041 static NODE *
13042 reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match)
13043 {
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;
13049     arg.num = 0;
13050     onig_foreach_name(((struct RRegexp*)(regexp))->ptr, reg_named_capture_assign_iter, (void*)&arg);
13051     if (arg.num == 0)
13052         return match;
13053     return
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)))))));
13055 }
13056 static VALUE
13057 reg_compile_gen(struct parser_params* parser, VALUE str, int options)
13058 {
13059     VALUE re;
13060     VALUE err;
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);
13070  }
13071  else {
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));
13073  }
13074  return ((VALUE)RUBY_Qnil);
13075     }
13076     return re;
13077 }
13078 void
13079 rb_gc_mark_parser(void)
13080 {
13081 }
13082 NODE*
13083 rb_parser_append_print(VALUE vparser, NODE *node)
13084 {
13085     NODE *prelude = 0;
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) {
13092  prelude = node;
13093  node = node->u2.node;
13094     }
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)))));
13096     if (prelude) {
13097  prelude->u2.node = node;
13098  scope->u2.node = prelude;
13099     }
13100     else {
13101  scope->u2.node = node;
13102     }
13103     return scope;
13104 }
13105 NODE *
13106 rb_parser_while_loop(VALUE vparser, NODE *node, int chop, int split)
13107 {
13108     NODE *prelude = 0;
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) {
13115  prelude = node;
13116  node = node->u2.node;
13117     }
13118     if (split) {
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);
13120     }
13121     if (chop) {
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);
13123     }
13124     node = node_newnode(parser, (NODE_OPT_N), (VALUE)(0), (VALUE)(node), (VALUE)(0));
13125     if (prelude) {
13126  prelude->u2.node = node;
13127  scope->u2.node = prelude;
13128     }
13129     else {
13130  scope->u2.node = node;
13131     }
13132     return scope;
13133 }
13134 static const struct {
13135     ID token;
13136     const char *name;
13137 } op_tbl[] = {
13138     {334, ".."},
13139     {335, "..."},
13140     {'+', "+(binary)"},
13141     {'-', "-(binary)"},
13142     {323, "**"},
13143     {321, "+@"},
13144     {322, "-@"},
13145     {324, "<=>"},
13146     {328, ">="},
13147     {329, "<="},
13148     {325, "=="},
13149     {326, "==="},
13150     {327, "!="},
13151     {332, "=~"},
13152     {333, "!~"},
13153     {336, "[]"},
13154     {337, "[]="},
13155     {338, "<<"},
13156     {339, ">>"},
13157     {340, "::"},
13158 };
13159 static struct symbols {
13160     ID last_id;
13161     st_table *sym_id;
13162     st_table *id_str;
13163     st_table *ivar2_id;
13164     st_table *id_ivar2;
13165     VALUE op_sym[376];
13166 } global_symbols = {tLAST_ID};
13167 static const struct st_hash_type symhash = {
13168     rb_str_hash_cmp,
13169     rb_str_hash,
13170 };
13171 struct ivar2_key {
13172     ID id;
13173     VALUE klass;
13174 };
13175 static int
13176 ivar2_cmp(struct ivar2_key *key1, struct ivar2_key *key2)
13177 {
13178     if (key1->id == key2->id && key1->klass == key2->klass) {
13179  return 0;
13180     }
13181     return 1;
13182 }
13183 static int
13184 ivar2_hash(struct ivar2_key *key)
13185 {
13186     return (key->id << 8) ^ (key->klass >> 2);
13187 }
13188 static const struct st_hash_type ivar2_hash_type = {
13189     ivar2_cmp,
13190     ivar2_hash,
13191 };
13192 void
13193 Init_sym(void)
13194 {
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);
13199     Init_id();
13200 }
13201 void
13202 rb_gc_mark_symbols(void)
13203 {
13204     rb_mark_tbl(global_symbols.id_str);
13205     rb_gc_mark_locations(global_symbols.op_sym,
13206     global_symbols.op_sym + 376);
13207 }
13208 static ID
13209 internal_id_gen(struct parser_params *parser)
13210 {
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);
13214 }
13215 static int
13216 is_special_global_name(const char *m, const char *e, rb_encoding *enc)
13217 {
13218     int mb = 0;
13219     if (m >= e) return 0;
13220     switch (*m) {
13221       case '~': case '*': case '$': case '?': case '!': case '@':
13222       case '/': case '\\': case ';': case ',': case '.': case '=':
13223       case ':': case '<': case '>': case '\"':
13224       case '&': case '`': case '\'': case '+':
13225       case '0':
13226  ++m;
13227  break;
13228       case '-':
13229  ++m;
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);
13233  }
13234  break;
13235       default:
13236  if (!(enc)->is_code_ctype(*m,4,enc)) return 0;
13237  do {
13238      if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
13239      ++m;
13240  } while ((enc)->is_code_ctype(*m,4,enc));
13241     }
13242     return m == e ? mb + 1 : 0;
13243 }
13244 int
13245 rb_symname_p(const char *name)
13246 {
13247     return rb_enc_symname_p(name, rb_ascii8bit_encoding());
13248 }
13249 int
13250 rb_enc_symname_p(const char *name, rb_encoding *enc)
13251 {
13252     return rb_enc_symname2_p(name, strlen(name), enc);
13253 }
13254 int
13255 rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
13256 {
13257     const char *m = name;
13258     const char *e = m + len;
13259     int localid = ((VALUE)RUBY_Qfalse);
13260     if (!m) return ((VALUE)RUBY_Qfalse);
13261     switch (*m) {
13262       case '\0':
13263  return ((VALUE)RUBY_Qfalse);
13264       case '$':
13265  if (is_special_global_name(++m, e, enc)) return ((VALUE)RUBY_Qtrue);
13266  goto id;
13267       case '@':
13268  if (*++m == '@') ++m;
13269  goto id;
13270       case '<':
13271  switch (*++m) {
13272    case '<': ++m; break;
13273    case '=': if (*++m == '>') ++m; break;
13274    default: break;
13275  }
13276  break;
13277       case '>':
13278  switch (*++m) {
13279    case '>': case '=': ++m; break;
13280  }
13281  break;
13282       case '=':
13283  switch (*++m) {
13284    case '~': ++m; break;
13285    case '=': if (*++m == '=') ++m; break;
13286    default: return ((VALUE)RUBY_Qfalse);
13287  }
13288  break;
13289       case '*':
13290  if (*++m == '*') ++m;
13291  break;
13292       case '+': case '-':
13293  if (*++m == '@') ++m;
13294  break;
13295       case '|': case '^': case '&': case '/': case '%': case '~': case '`':
13296  ++m;
13297  break;
13298       case '[':
13299  if (*++m != ']') return ((VALUE)RUBY_Qfalse);
13300  if (*++m == '=') ++m;
13301  break;
13302       case '!':
13303  switch (*++m) {
13304    case '\0': return ((VALUE)RUBY_Qtrue);
13305    case '=': case '~': ++m; break;
13306    default: return ((VALUE)RUBY_Qfalse);
13307  }
13308  break;
13309       default:
13310  localid = !(enc)->is_code_ctype(*m,10,enc);
13311       id:
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);
13315  if (localid) {
13316      switch (*m) {
13317        case '!': case '?': case '=': ++m;
13318      }
13319  }
13320  break;
13321     }
13322     return *m ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
13323 }
13324 static ID
13325 register_symid(ID id, const char *name, long len, rb_encoding *enc)
13326 {
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);
13331     return id;
13332 }
13333 ID
13334 rb_intern3(const char *name, long len, rb_encoding *enc)
13335 {
13336     const char *m = name;
13337     const char *e = m + len;
13338     unsigned char c;
13339     VALUE str;
13340     ID id;
13341     int last;
13342     int mb;
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))
13352  return id;
13353     if (rb_cString && !((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
13354  id = 0x07;
13355  goto new_id;
13356     }
13357     last = len-1;
13358     id = 0;
13359     switch (*m) {
13360       case '$':
13361  id |= 0x03;
13362  if ((mb = is_special_global_name(++m, e, enc)) != 0) {
13363      if (!--mb) enc = rb_ascii8bit_encoding();
13364      goto new_id;
13365  }
13366  break;
13367       case '@':
13368  if (m[1] == '@') {
13369      m++;
13370      id |= 0x06;
13371  }
13372  else {
13373      id |= 0x01;
13374  }
13375  m++;
13376  break;
13377       default:
13378  c = m[0];
13379  if (c != '_' && ((c) < 128) && (enc)->is_code_ctype(c,8,enc)) {
13380      int i;
13381      if (len == 1) {
13382   id = c;
13383   goto id_register;
13384      }
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;
13389       goto id_register;
13390   }
13391      }
13392  }
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);
13398   goto id_register;
13399      }
13400      id = 0x04;
13401  }
13402  else if ((enc)->is_code_ctype(m[0],10,enc)) {
13403      id = 0x05;
13404         }
13405  else {
13406      id = 0x00;
13407  }
13408  break;
13409     }
13410     mb = 0;
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)) {
13414   m++;
13415      }
13416      else {
13417   mb = 1;
13418   m += rb_enc_mbclen(m, e, enc);
13419      }
13420  }
13421     }
13422     if (m - name < len) id = 0x07;
13423     if (enc != rb_usascii_encoding()) {
13424  if (!mb) {
13425      for (; m <= name + len; ++m) {
13426   if (!((unsigned long)((unsigned char)(*m)) < 128)) goto mbstr;
13427      }
13428      enc = rb_usascii_encoding();
13429  }
13430       mbstr:;
13431     }
13432   new_id:
13433     id |= ++global_symbols.last_id << 3;
13434   id_register:
13435     return register_symid(id, name, len, enc);
13436 }
13437 ID
13438 rb_intern2(const char *name, long len)
13439 {
13440     return rb_intern3(name, len, rb_usascii_encoding());
13441 }
13442 ID
13443 rb_intern(const char *name)
13444 {
13445     return rb_intern2(name, strlen(name));
13446 }
13447 ID
13448 rb_intern_str(VALUE str)
13449 {
13450     rb_encoding *enc;
13451     ID id;
13452     if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
13453  enc = rb_usascii_encoding();
13454     }
13455     else {
13456  enc = rb_enc_get(str);
13457     }
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));
13460     return id;
13461 }
13462 VALUE
13463 rb_id2str(ID id)
13464 {
13465     st_data_t data;
13466     if (id < 376) {
13467  int i = 0;
13468  if (rb_ispunct(id)) {
13469      VALUE str = global_symbols.op_sym[i = (int)id];
13470      if (!str) {
13471   char name[2];
13472   name[0] = (char)id;
13473   name[1] = 0;
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;
13477      }
13478      return str;
13479  }
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];
13483   if (!str) {
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;
13487   }
13488   return str;
13489      }
13490  }
13491     }
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;
13496  return str;
13497     }
13498     if ((((id)>376)&&((id)&0x07)==0x04)) {
13499  ID id2 = (id & ~0x07) | 0x00;
13500  VALUE str;
13501  while (!(str = rb_id2str(id2))) {
13502      if (!(((id2)>376)&&((id2)&0x07)==0x00)) return 0;
13503      id2 = (id & ~0x07) | 0x05;
13504  }
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;
13512             return str;
13513         }
13514     }
13515     return 0;
13516 }
13517 const char *
13518 rb_id2name(ID id)
13519 {
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);
13523 }
13524 static int
13525 symbols_i(VALUE sym, ID value, VALUE ary)
13526 {
13527     rb_ary_push(ary, (((VALUE)(value)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG));
13528     return ST_CONTINUE;
13529 }
13530 VALUE
13531 rb_sym_all_symbols(void)
13532 {
13533     VALUE ary = rb_ary_new2(global_symbols.sym_id->num_entries);
13534     st_foreach(global_symbols.sym_id, symbols_i, ary);
13535     return ary;
13536 }
13537 int
13538 rb_is_const_id(ID id)
13539 {
13540     if ((((id)>376)&&((id)&0x07)==0x05)) return ((VALUE)RUBY_Qtrue);
13541     return ((VALUE)RUBY_Qfalse);
13542 }
13543 int
13544 rb_is_class_id(ID id)
13545 {
13546     if ((((id)>376)&&((id)&0x07)==0x06)) return ((VALUE)RUBY_Qtrue);
13547     return ((VALUE)RUBY_Qfalse);
13548 }
13549 int
13550 rb_is_instance_id(ID id)
13551 {
13552     if ((((id)>376)&&((id)&0x07)==0x01)) return ((VALUE)RUBY_Qtrue);
13553     return ((VALUE)RUBY_Qfalse);
13554 }
13555 int
13556 rb_is_local_id(ID id)
13557 {
13558     if ((((id)>376)&&((id)&0x07)==0x00)) return ((VALUE)RUBY_Qtrue);
13559     return ((VALUE)RUBY_Qfalse);
13560 }
13561 int
13562 rb_is_junk_id(ID id)
13563 {
13564     if ((((id)>376)&&((id)&0x07)==0x07)) return ((VALUE)RUBY_Qtrue);
13565     return ((VALUE)RUBY_Qfalse);
13566 }
13567 static void
13568 parser_initialize(struct parser_params *parser)
13569 {
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();
13599 }
13600 static void
13601 parser_mark(void *ptr)
13602 {
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);
13613 }
13614 static void
13615 parser_free(void *ptr)
13616 {
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);
13621     }
13622     for (local = p->parser_lvtbl; local; local = prev) {
13623  if (local->vars) ruby_xfree(local->vars);
13624  prev = local->prev;
13625  ruby_xfree(local);
13626     }
13627     ruby_xfree(p->parser_ruby_sourcefile);
13628     ruby_xfree(p);
13629 }
13630 VALUE rb_parser_get_yydebug(VALUE);
13631 VALUE rb_parser_set_yydebug(VALUE, VALUE);
13632 static struct parser_params *
13633 parser_new(void)
13634 {
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);
13639     return p;
13640 }
13641 VALUE
13642 rb_parser_new(void)
13643 {
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);
13646 }
13647 VALUE
13648 rb_parser_end_seen_p(VALUE vparser)
13649 {
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);
13653 }
13654 VALUE
13655 rb_parser_encoding(VALUE vparser)
13656 {
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);
13660 }
13661 VALUE
13662 rb_parser_get_yydebug(VALUE self)
13663 {
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);
13667 }
13668 VALUE
13669 rb_parser_set_yydebug(VALUE self, VALUE flag)
13670 {
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);
13674     return flag;
13675 }
13676 void *
13677 rb_parser_malloc(struct parser_params *parser, size_t size)
13678 {
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));
13683 }
13684 void *
13685 rb_parser_calloc(struct parser_params *parser, size_t nelem, size_t size)
13686 {
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));
13691 }
13692 void *
13693 rb_parser_realloc(struct parser_params *parser, void *ptr, size_t size)
13694 {
13695     NODE *n;
13696     size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
13697     if (ptr && (n = parser->heap) != ((void *)0)) {
13698  do {
13699      if (n->u1.node == ptr) {
13700   n->u1.node = ptr = ruby_xrealloc(ptr, size);
13701   if (n->u3.cnt) n->u3.cnt = cnt;
13702   return ptr;
13703      }
13704  } while ((n = n->u2.node) != ((void *)0));
13705     }
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));
13709 }
13710 void
13711 rb_parser_free(struct parser_params *parser, void *ptr)
13712 {
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);
13718      break;
13719  }
13720  prev = &n->u2.node;
13721     }
13722     ruby_xfree(ptr);
13723 }