]> git.wh0rd.org - 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 }