Coverage Report

Created: 2025-02-15 06:23

/src/mruby/mrbgems/mruby-compiler/core/y.tab.c
Line
Count
Source (jump to first uncovered line)
1
/* A Bison parser, made by Lrama 0.6.9.  */
2
3
/* Bison implementation for Yacc-like parsers in C
4
5
   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6
   Inc.
7
8
   This program is free software: you can redistribute it and/or modify
9
   it under the terms of the GNU General Public License as published by
10
   the Free Software Foundation, either version 3 of the License, or
11
   (at your option) any later version.
12
13
   This program is distributed in the hope that it will be useful,
14
   but WITHOUT ANY WARRANTY; without even the implied warranty of
15
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
   GNU General Public License for more details.
17
18
   You should have received a copy of the GNU General Public License
19
   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
20
21
/* As a special exception, you may create a larger work that contains
22
   part or all of the Bison parser skeleton and distribute that work
23
   under terms of your choice, so long as that work isn't itself a
24
   parser generator using the skeleton or a modified version thereof
25
   as a parser skeleton.  Alternatively, if you modify or redistribute
26
   the parser skeleton itself, you may (at your option) remove this
27
   special exception, which will cause the skeleton and the resulting
28
   Bison output files to be licensed under the GNU General Public
29
   License without this special exception.
30
31
   This special exception was added by the Free Software Foundation in
32
   version 2.2 of Bison.  */
33
34
/* C LALR(1) parser skeleton written by Richard Stallman, by
35
   simplifying the original so-called "semantic" parser.  */
36
37
/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38
   especially those whose name start with YY_ or yy_.  They are
39
   private implementation details that can be changed or removed.  */
40
41
/* All symbols defined below should begin with yy or YY, to avoid
42
   infringing on user name space.  This should be done even for local
43
   variables, as they might otherwise be expanded by user macros.
44
   There are some unavoidable exceptions within include files to
45
   define necessary library symbols; they are noted "INFRINGES ON
46
   USER NAME SPACE" below.  */
47
48
/* Identify Bison output, and Bison version.  */
49
#define YYBISON 30802
50
51
/* Bison version string.  */
52
#define YYBISON_VERSION "3.8.2"
53
54
/* Skeleton name.  */
55
#define YYSKELETON_NAME "yacc.c"
56
57
/* Pure parsers.  */
58
#define YYPURE 1
59
60
/* Push parsers.  */
61
#define YYPUSH 0
62
63
/* Pull parsers.  */
64
#define YYPULL 1
65
66
67
/* First part of user prologue.  */
68
#line 7 "mrbgems/mruby-compiler/core/parse.y"
69
70
#undef PARSER_DEBUG
71
#ifdef PARSER_DEBUG
72
# define YYDEBUG 1
73
#endif
74
#define YYSTACK_USE_ALLOCA 1
75
76
#include <ctype.h>
77
#include <stdlib.h>
78
#include <string.h>
79
#include <mruby.h>
80
#include <mruby/compile.h>
81
#include <mruby/proc.h>
82
#include <mruby/error.h>
83
#include <mruby/throw.h>
84
#include <mruby/string.h>
85
#include <mruby/dump.h>
86
#include <mruby/internal.h>
87
#include <mruby/presym.h>
88
#include "node.h"
89
90
#define YYLEX_PARAM p
91
92
typedef mrb_ast_node node;
93
typedef struct mrb_parser_state parser_state;
94
typedef struct mrb_parser_heredoc_info parser_heredoc_info;
95
96
static int yyparse(parser_state *p);
97
static int yylex(void *lval, void *lp, parser_state *p);
98
static void yyerror(void *lp, parser_state *p, const char *s);
99
static void yywarning(parser_state *p, const char *s);
100
static void backref_error(parser_state *p, node *n);
101
static void void_expr_error(parser_state *p, node *n);
102
static void tokadd(parser_state *p, int32_t c);
103
104
672k
#define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
105
106
typedef unsigned int stack_type;
107
108
135k
#define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
109
0
#define BITSTACK_POP(stack)     ((stack) = (stack) >> 1)
110
135k
#define BITSTACK_LEXPOP(stack)  ((stack) = ((stack) >> 1) | ((stack) & 1))
111
0
#define BITSTACK_SET_P(stack)   ((stack)&1)
112
113
67.7k
#define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
114
0
#define COND_POP()      BITSTACK_POP(p->cond_stack)
115
67.7k
#define COND_LEXPOP()   BITSTACK_LEXPOP(p->cond_stack)
116
0
#define COND_P()        BITSTACK_SET_P(p->cond_stack)
117
118
67.7k
#define CMDARG_PUSH(n)  BITSTACK_PUSH(p->cmdarg_stack, (n))
119
#define CMDARG_POP()    BITSTACK_POP(p->cmdarg_stack)
120
67.7k
#define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack)
121
0
#define CMDARG_P()      BITSTACK_SET_P(p->cmdarg_stack)
122
123
4.33k
#define SET_LINENO(c,n) ((c)->lineno = (n))
124
138k
#define NODE_LINENO(c,n) do {\
125
138k
  if (n) {\
126
138k
     (c)->filename_index = (n)->filename_index;\
127
138k
     (c)->lineno = (n)->lineno;\
128
138k
  }\
129
138k
} while (0)
130
131
26.2M
#define sym(x) ((mrb_sym)(intptr_t)(x))
132
#define nsym(x) ((node*)(intptr_t)(x))
133
103
#define nint(x) ((node*)(intptr_t)(x))
134
1.45M
#define intn(x) ((int)(intptr_t)(x))
135
0
#define typen(x) ((enum node_type)(intptr_t)(x))
136
137
753k
#define NUM_SUFFIX_R   (1<<0)
138
753k
#define NUM_SUFFIX_I   (1<<1)
139
140
static inline mrb_sym
141
intern_cstr_gen(parser_state *p, const char *s)
142
24.8k
{
143
24.8k
  return mrb_intern_cstr(p->mrb, s);
144
24.8k
}
145
24.8k
#define intern_cstr(s) intern_cstr_gen(p,(s))
146
147
static inline mrb_sym
148
intern_gen(parser_state *p, const char *s, size_t len)
149
71.8k
{
150
71.8k
  return mrb_intern(p->mrb, s, len);
151
71.8k
}
152
71.8k
#define intern(s,len) intern_gen(p,(s),(len))
153
154
6.41k
#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
155
156
static mrb_sym
157
intern_numparam_gen(parser_state *p, int num)
158
0
{
159
0
  char buf[3];
160
0
  buf[0] = '_'; buf[1] = '0'+num; buf[2] = '\0';
161
0
  return intern(buf, 2);
162
0
}
163
0
#define intern_numparam(n) intern_numparam_gen(p,(n))
164
165
static void
166
cons_free_gen(parser_state *p, node *cons)
167
1.06M
{
168
1.06M
  cons->cdr = p->cells;
169
1.06M
  p->cells = cons;
170
1.06M
}
171
1.06M
#define cons_free(c) cons_free_gen(p, (c))
172
173
static void*
174
parser_palloc(parser_state *p, size_t size)
175
3.27M
{
176
3.27M
  void *m = mrb_mempool_alloc(p->pool, size);
177
178
3.27M
  if (!m) {
179
0
    MRB_THROW(p->mrb->jmp);
180
0
  }
181
3.27M
  return m;
182
3.27M
}
183
184
300k
#define parser_pfree(ptr) do { if (sizeof(node) <= sizeof(*(ptr))) cons_free((node*)ptr);} while (0)
185
186
static node*
187
cons_gen(parser_state *p, node *car, node *cdr)
188
3.48M
{
189
3.48M
  node *c;
190
191
3.48M
  if (p->cells) {
192
1.06M
    c = p->cells;
193
1.06M
    p->cells = p->cells->cdr;
194
1.06M
  }
195
2.42M
  else {
196
2.42M
    c = (node*)parser_palloc(p, sizeof(mrb_ast_node));
197
2.42M
  }
198
199
3.48M
  c->car = car;
200
3.48M
  c->cdr = cdr;
201
3.48M
  c->lineno = p->lineno;
202
3.48M
  c->filename_index = p->current_filename_index;
203
  /* beginning of next partial file; need to point the previous file */
204
3.48M
  if (p->lineno == 0 && p->current_filename_index > 0) {
205
0
    c->filename_index--;
206
0
  }
207
3.48M
  return c;
208
3.48M
}
209
2.40M
#define cons(a,b) cons_gen(p,(a),(b))
210
211
static node*
212
list1_gen(parser_state *p, node *a)
213
707k
{
214
707k
  return cons(a, 0);
215
707k
}
216
707k
#define list1(a) list1_gen(p, (a))
217
218
static node*
219
list2_gen(parser_state *p, node *a, node *b)
220
56.0k
{
221
56.0k
  return cons(a, cons(b,0));
222
56.0k
}
223
56.0k
#define list2(a,b) list2_gen(p, (a),(b))
224
225
static node*
226
list3_gen(parser_state *p, node *a, node *b, node *c)
227
251k
{
228
251k
  return cons(a, cons(b, cons(c,0)));
229
251k
}
230
251k
#define list3(a,b,c) list3_gen(p, (a),(b),(c))
231
232
static node*
233
list4_gen(parser_state *p, node *a, node *b, node *c, node *d)
234
49.2k
{
235
49.2k
  return cons(a, cons(b, cons(c, cons(d, 0))));
236
49.2k
}
237
72.1k
#define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d))
238
239
static node*
240
list5_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e)
241
103
{
242
103
  return cons(a, cons(b, cons(c, cons(d, cons(e, 0)))));
243
103
}
244
103
#define list5(a,b,c,d,e) list5_gen(p, (a),(b),(c),(d),(e))
245
246
static node*
247
list6_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e, node *f)
248
0
{
249
0
  return cons(a, cons(b, cons(c, cons(d, cons(e, cons(f, 0))))));
250
0
}
251
0
#define list6(a,b,c,d,e,f) list6_gen(p, (a),(b),(c),(d),(e),(f))
252
253
static node*
254
append_gen(parser_state *p, node *a, node *b)
255
663k
{
256
663k
  node *c = a;
257
258
663k
  if (!a) return b;
259
391k
  if (!b) return a;
260
1.96G
  while (c->cdr) {
261
1.96G
    c = c->cdr;
262
1.96G
  }
263
391k
  c->cdr = b;
264
391k
  return a;
265
391k
}
266
0
#define append(a,b) append_gen(p,(a),(b))
267
663k
#define push(a,b) append_gen(p,(a),list1(b))
268
269
static char*
270
parser_strndup(parser_state *p, const char *s, size_t len)
271
551k
{
272
551k
  char *b = (char*)parser_palloc(p, len+1);
273
274
551k
  memcpy(b, s, len);
275
551k
  b[len] = '\0';
276
551k
  return b;
277
551k
}
278
#undef strndup
279
0
#define strndup(s,len) parser_strndup(p, s, len)
280
281
static char*
282
parser_strdup(parser_state *p, const char *s)
283
251k
{
284
251k
  return parser_strndup(p, s, strlen(s));
285
251k
}
286
#undef strdup
287
#define strdup(s) parser_strdup(p, s)
288
289
static void
290
dump_int(uint16_t i, char *s)
291
0
{
292
0
  char *p = s;
293
0
  char *t = s;
294
295
0
  while (i > 0) {
296
0
    *p++ = (i % 10)+'0';
297
0
    i /= 10;
298
0
  }
299
0
  if (p == s) *p++ = '0';
300
0
  *p = 0;
301
0
  p--;  /* point the last char */
302
0
  while (t < p) {
303
0
    char c = *t;
304
0
    *t++ = *p;
305
0
    *p-- = c;
306
0
  }
307
0
}
308
309
/* xxx ----------------------------- */
310
311
static node*
312
local_switch(parser_state *p)
313
103
{
314
103
  node *prev = p->locals;
315
316
103
  p->locals = cons(0, 0);
317
103
  return prev;
318
103
}
319
320
static void
321
local_resume(parser_state *p, node *prev)
322
103
{
323
103
  p->locals = prev;
324
103
}
325
326
static void
327
local_nest(parser_state *p)
328
0
{
329
0
  p->locals = cons(0, p->locals);
330
0
}
331
332
static void
333
local_unnest(parser_state *p)
334
0
{
335
0
  if (p->locals) {
336
0
    p->locals = p->locals->cdr;
337
0
  }
338
0
}
339
340
static mrb_bool
341
local_var_p(parser_state *p, mrb_sym sym)
342
101k
{
343
101k
  const struct RProc *u;
344
101k
  node *l = p->locals;
345
346
133k
  while (l) {
347
101k
    node *n = l->car;
348
21.5M
    while (n) {
349
21.4M
      if (sym(n->car) == sym) return TRUE;
350
21.4M
      n = n->cdr;
351
21.4M
    }
352
31.6k
    l = l->cdr;
353
31.6k
  }
354
355
31.6k
  u = p->upper;
356
31.6k
  while (u && !MRB_PROC_CFUNC_P(u)) {
357
0
    const struct mrb_irep *ir = u->body.irep;
358
0
    const mrb_sym *v = ir->lv;
359
0
    int i;
360
361
0
    if (v) {
362
0
      for (i=0; i+1 < ir->nlocals; i++) {
363
0
        if (v[i] == sym) return TRUE;
364
0
      }
365
0
    }
366
0
    if (MRB_PROC_SCOPE_P(u)) break;
367
0
    u = u->upper;
368
0
  }
369
31.6k
  return FALSE;
370
31.6k
}
371
372
static void
373
local_add_f(parser_state *p, mrb_sym sym)
374
15.7k
{
375
15.7k
  if (p->locals) {
376
15.7k
    node *n = p->locals->car;
377
4.68M
    while (n) {
378
4.67M
      if (sym(n->car) == sym) {
379
0
        mrb_int len;
380
0
        const char* name = mrb_sym_name_len(p->mrb, sym, &len);
381
0
        if (len > 0 && name[0] != '_') {
382
0
          yyerror(NULL, p, "duplicated argument name");
383
0
          return;
384
0
        }
385
0
      }
386
4.67M
      n = n->cdr;
387
4.67M
    }
388
15.7k
    p->locals->car = push(p->locals->car, nsym(sym));
389
15.7k
  }
390
15.7k
}
391
392
static void
393
local_add(parser_state *p, mrb_sym sym)
394
34.6k
{
395
34.6k
  if (!local_var_p(p, sym)) {
396
15.6k
    local_add_f(p, sym);
397
15.6k
  }
398
34.6k
}
399
400
/* allocate register for block */
401
0
#define local_add_blk(p) local_add_f(p, 0)
402
403
static void
404
local_add_kw(parser_state *p, mrb_sym kwd)
405
0
{
406
  /* allocate register for keywords hash */
407
0
  local_add_f(p, kwd ? kwd : intern_op(pow));
408
0
}
409
410
static node*
411
locals_node(parser_state *p)
412
206
{
413
206
  return p->locals ? p->locals->car : NULL;
414
206
}
415
416
static void
417
nvars_nest(parser_state *p)
418
0
{
419
0
  p->nvars = cons(nint(0), p->nvars);
420
0
}
421
422
static void
423
nvars_block(parser_state *p)
424
103
{
425
103
  p->nvars = cons(nint(-2), p->nvars);
426
103
}
427
428
static void
429
nvars_unnest(parser_state *p)
430
103
{
431
103
  p->nvars = p->nvars->cdr;
432
103
}
433
434
/* (:scope (vars..) (prog...)) */
435
static node*
436
new_scope(parser_state *p, node *body)
437
103
{
438
103
  return cons((node*)NODE_SCOPE, cons(locals_node(p), body));
439
103
}
440
441
/* (:begin prog...) */
442
static node*
443
new_begin(parser_state *p, node *body)
444
62.7k
{
445
62.7k
  if (body) {
446
56.0k
    return list2((node*)NODE_BEGIN, body);
447
56.0k
  }
448
6.77k
  return cons((node*)NODE_BEGIN, 0);
449
62.7k
}
450
451
#define newline_node(n) (n)
452
453
/* (:rescue body rescue else) */
454
static node*
455
new_rescue(parser_state *p, node *body, node *resq, node *els)
456
0
{
457
0
  return list4((node*)NODE_RESCUE, body, resq, els);
458
0
}
459
460
static node*
461
new_mod_rescue(parser_state *p, node *body, node *resq)
462
0
{
463
0
  return new_rescue(p, body, list1(list3(0, 0, resq)), 0);
464
0
}
465
466
/* (:ensure body ensure) */
467
static node*
468
new_ensure(parser_state *p, node *a, node *b)
469
0
{
470
0
  return cons((node*)NODE_ENSURE, cons(a, cons(0, b)));
471
0
}
472
473
/* (:nil) */
474
static node*
475
new_nil(parser_state *p)
476
0
{
477
0
  return list1((node*)NODE_NIL);
478
0
}
479
480
/* (:true) */
481
static node*
482
new_true(parser_state *p)
483
0
{
484
0
  return list1((node*)NODE_TRUE);
485
0
}
486
487
/* (:false) */
488
static node*
489
new_false(parser_state *p)
490
0
{
491
0
  return list1((node*)NODE_FALSE);
492
0
}
493
494
/* (:alias new old) */
495
static node*
496
new_alias(parser_state *p, mrb_sym a, mrb_sym b)
497
0
{
498
0
  return cons((node*)NODE_ALIAS, cons(nsym(a), nsym(b)));
499
0
}
500
501
/* (:if cond then else) */
502
static node*
503
new_if(parser_state *p, node *a, node *b, node *c)
504
6.62k
{
505
6.62k
  void_expr_error(p, a);
506
6.62k
  return list4((node*)NODE_IF, a, b, c);
507
6.62k
}
508
509
/* (:unless cond then else) */
510
static node*
511
new_unless(parser_state *p, node *a, node *b, node *c)
512
0
{
513
0
  void_expr_error(p, a);
514
0
  return list4((node*)NODE_IF, a, c, b);
515
0
}
516
517
/* (:while cond body) */
518
static node*
519
new_while(parser_state *p, node *a, node *b)
520
0
{
521
0
  void_expr_error(p, a);
522
0
  return cons((node*)NODE_WHILE, cons(a, b));
523
0
}
524
525
/* (:until cond body) */
526
static node*
527
new_until(parser_state *p, node *a, node *b)
528
0
{
529
0
  void_expr_error(p, a);
530
0
  return cons((node*)NODE_UNTIL, cons(a, b));
531
0
}
532
533
/* (:for var obj body) */
534
static node*
535
new_for(parser_state *p, node *v, node *o, node *b)
536
0
{
537
0
  void_expr_error(p, o);
538
0
  return list4((node*)NODE_FOR, v, o, b);
539
0
}
540
541
/* (:case a ((when ...) body) ((when...) body)) */
542
static node*
543
new_case(parser_state *p, node *a, node *b)
544
0
{
545
0
  node *n = list2((node*)NODE_CASE, a);
546
0
  node *n2 = n;
547
548
0
  void_expr_error(p, a);
549
0
  while (n2->cdr) {
550
0
    n2 = n2->cdr;
551
0
  }
552
0
  n2->cdr = b;
553
0
  return n;
554
0
}
555
556
/* (:postexe a) */
557
static node*
558
new_postexe(parser_state *p, node *a)
559
0
{
560
0
  return cons((node*)NODE_POSTEXE, a);
561
0
}
562
563
/* (:self) */
564
static node*
565
new_self(parser_state *p)
566
0
{
567
0
  return list1((node*)NODE_SELF);
568
0
}
569
570
/* (:call a b c) */
571
static node*
572
new_call(parser_state *p, node *a, mrb_sym b, node *c, int pass)
573
36.0k
{
574
36.0k
  node *n = list4(nint(pass?NODE_CALL:NODE_SCALL), a, nsym(b), c);
575
36.0k
  void_expr_error(p, a);
576
36.0k
  NODE_LINENO(n, a);
577
36.0k
  return n;
578
36.0k
}
579
580
/* (:fcall self mid args) */
581
static node*
582
new_fcall(parser_state *p, mrb_sym b, node *c)
583
103
{
584
103
  node *n = list4((node*)NODE_FCALL, 0, nsym(b), c);
585
103
  NODE_LINENO(n, c);
586
103
  return n;
587
103
}
588
589
/* (a b . c) */
590
static node*
591
new_callargs(parser_state *p, node *a, node *b, node *c)
592
35.2k
{
593
35.2k
  return cons(a, cons(b, c));
594
35.2k
}
595
596
/* (:super . c) */
597
static node*
598
new_super(parser_state *p, node *c)
599
0
{
600
0
  return cons((node*)NODE_SUPER, c);
601
0
}
602
603
/* (:zsuper) */
604
static node*
605
new_zsuper(parser_state *p)
606
0
{
607
0
  return cons((node*)NODE_ZSUPER, 0);
608
0
}
609
610
/* (:yield . c) */
611
static node*
612
new_yield(parser_state *p, node *c)
613
0
{
614
0
  if (c && c->cdr && c->cdr->cdr) {
615
0
        yyerror(NULL, p, "both block arg and actual block given");
616
0
  }
617
618
0
  return cons((node*)NODE_YIELD, c);
619
0
}
620
621
/* (:return . c) */
622
static node*
623
new_return(parser_state *p, node *c)
624
0
{
625
0
  return cons((node*)NODE_RETURN, c);
626
0
}
627
628
/* (:break . c) */
629
static node*
630
new_break(parser_state *p, node *c)
631
0
{
632
0
  return cons((node*)NODE_BREAK, c);
633
0
}
634
635
/* (:next . c) */
636
static node*
637
new_next(parser_state *p, node *c)
638
0
{
639
0
  return cons((node*)NODE_NEXT, c);
640
0
}
641
642
/* (:redo) */
643
static node*
644
new_redo(parser_state *p)
645
0
{
646
0
  return list1((node*)NODE_REDO);
647
0
}
648
649
/* (:retry) */
650
static node*
651
new_retry(parser_state *p)
652
0
{
653
0
  return list1((node*)NODE_RETRY);
654
0
}
655
656
/* (:dot2 a b) */
657
static node*
658
new_dot2(parser_state *p, node *a, node *b)
659
0
{
660
0
  return cons((node*)NODE_DOT2, cons(a, b));
661
0
}
662
663
/* (:dot3 a b) */
664
static node*
665
new_dot3(parser_state *p, node *a, node *b)
666
0
{
667
0
  return cons((node*)NODE_DOT3, cons(a, b));
668
0
}
669
670
/* (:colon2 b c) */
671
static node*
672
new_colon2(parser_state *p, node *b, mrb_sym c)
673
75
{
674
75
  void_expr_error(p, b);
675
75
  return cons((node*)NODE_COLON2, cons(b, nsym(c)));
676
75
}
677
678
/* (:colon3 . c) */
679
static node*
680
new_colon3(parser_state *p, mrb_sym c)
681
0
{
682
0
  return cons((node*)NODE_COLON3, nsym(c));
683
0
}
684
685
/* (:and a b) */
686
static node*
687
new_and(parser_state *p, node *a, node *b)
688
1.45k
{
689
1.45k
  void_expr_error(p, a);
690
1.45k
  return cons((node*)NODE_AND, cons(a, b));
691
1.45k
}
692
693
/* (:or a b) */
694
static node*
695
new_or(parser_state *p, node *a, node *b)
696
2.05k
{
697
2.05k
  void_expr_error(p, a);
698
2.05k
  return cons((node*)NODE_OR, cons(a, b));
699
2.05k
}
700
701
/* (:array a...) */
702
static node*
703
new_array(parser_state *p, node *a)
704
7.92k
{
705
7.92k
  return cons((node*)NODE_ARRAY, a);
706
7.92k
}
707
708
/* (:splat . a) */
709
static node*
710
new_splat(parser_state *p, node *a)
711
0
{
712
0
  void_expr_error(p, a);
713
0
  return cons((node*)NODE_SPLAT, a);
714
0
}
715
716
/* (:hash (k . v) (k . v)...) */
717
static node*
718
new_hash(parser_state *p, node *a)
719
1.03k
{
720
1.03k
  return cons((node*)NODE_HASH, a);
721
1.03k
}
722
723
/* (:kw_hash (k . v) (k . v)...) */
724
static node*
725
new_kw_hash(parser_state *p, node *a)
726
0
{
727
0
  return cons((node*)NODE_KW_HASH, a);
728
0
}
729
730
/* (:sym . a) */
731
static node*
732
new_sym(parser_state *p, mrb_sym sym)
733
0
{
734
0
  return cons((node*)NODE_SYM, nsym(sym));
735
0
}
736
737
static mrb_sym
738
new_strsym(parser_state *p, node* str)
739
0
{
740
0
  const char *s = (const char*)str->cdr->car;
741
0
  size_t len = (size_t)str->cdr->cdr;
742
743
0
  return mrb_intern(p->mrb, s, len);
744
0
}
745
746
/* (:lvar . a) */
747
static node*
748
new_lvar(parser_state *p, mrb_sym sym)
749
50.7k
{
750
50.7k
  return cons((node*)NODE_LVAR, nsym(sym));
751
50.7k
}
752
753
/* (:gvar . a) */
754
static node*
755
new_gvar(parser_state *p, mrb_sym sym)
756
0
{
757
0
  return cons((node*)NODE_GVAR, nsym(sym));
758
0
}
759
760
/* (:ivar . a) */
761
static node*
762
new_ivar(parser_state *p, mrb_sym sym)
763
6.41k
{
764
6.41k
  return cons((node*)NODE_IVAR, nsym(sym));
765
6.41k
}
766
767
/* (:cvar . a) */
768
static node*
769
new_cvar(parser_state *p, mrb_sym sym)
770
0
{
771
0
  return cons((node*)NODE_CVAR, nsym(sym));
772
0
}
773
774
/* (:nvar . a) */
775
static node*
776
new_nvar(parser_state *p, int num)
777
0
{
778
0
  int nvar;
779
0
  node *nvars = p->nvars->cdr;
780
0
  while (nvars) {
781
0
    nvar = intn(nvars->car);
782
0
    if (nvar == -2) break; /* top of the scope */
783
0
    if (nvar > 0) {
784
0
      yyerror(NULL, p, "numbered parameter used in outer block");
785
0
      break;
786
0
    }
787
0
    nvars->car = nint(-1);
788
0
    nvars = nvars->cdr;
789
0
  }
790
0
  nvar = intn(p->nvars->car);
791
0
  if (nvar == -1) {
792
0
    yyerror(NULL, p, "numbered parameter used in inner block");
793
0
  }
794
0
  else {
795
0
    p->nvars->car = nint(nvar > num ? nvar : num);
796
0
  }
797
0
  return cons((node*)NODE_NVAR, nint(num));
798
0
}
799
800
/* (:const . a) */
801
static node*
802
new_const(parser_state *p, mrb_sym sym)
803
3.36k
{
804
3.36k
  return cons((node*)NODE_CONST, nsym(sym));
805
3.36k
}
806
807
/* (:undef a...) */
808
static node*
809
new_undef(parser_state *p, mrb_sym sym)
810
0
{
811
0
  return list2((node*)NODE_UNDEF, nsym(sym));
812
0
}
813
814
/* (:class class super body) */
815
static node*
816
new_class(parser_state *p, node *c, node *s, node *b)
817
0
{
818
0
  void_expr_error(p, s);
819
0
  return list4((node*)NODE_CLASS, c, s, cons(locals_node(p), b));
820
0
}
821
822
/* (:sclass obj body) */
823
static node*
824
new_sclass(parser_state *p, node *o, node *b)
825
0
{
826
0
  void_expr_error(p, o);
827
0
  return list3((node*)NODE_SCLASS, o, cons(locals_node(p), b));
828
0
}
829
830
/* (:module module body) */
831
static node*
832
new_module(parser_state *p, node *m, node *b)
833
0
{
834
0
  return list3((node*)NODE_MODULE, m, cons(locals_node(p), b));
835
0
}
836
837
/* (:def m lv (arg . body)) */
838
static node*
839
new_def(parser_state *p, mrb_sym m, node *a, node *b)
840
103
{
841
103
  return list5((node*)NODE_DEF, nsym(m), 0, a, b);
842
103
}
843
844
static void
845
defn_setup(parser_state *p, node *d, node *a, node *b)
846
103
{
847
103
  node *n = d->cdr->cdr;
848
849
103
  n->car = locals_node(p);
850
103
  p->cmdarg_stack = intn(n->cdr->car);
851
103
  n->cdr->car = a;
852
103
  local_resume(p, n->cdr->cdr->car);
853
103
  n->cdr->cdr->car = b;
854
103
}
855
856
/* (:sdef obj m lv (arg . body)) */
857
static node*
858
new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b)
859
0
{
860
0
  void_expr_error(p, o);
861
0
  return list6((node*)NODE_SDEF, o, nsym(m), 0, a, b);
862
0
}
863
864
static void
865
defs_setup(parser_state *p, node *d, node *a, node *b)
866
0
{
867
0
  node *n = d->cdr->cdr->cdr;
868
869
0
  n->car = locals_node(p);
870
0
  p->cmdarg_stack = intn(n->cdr->car);
871
0
  n->cdr->car = a;
872
0
  local_resume(p, n->cdr->cdr->car);
873
0
  n->cdr->cdr->car = b;
874
0
}
875
876
/* (:arg . sym) */
877
static node*
878
new_arg(parser_state *p, mrb_sym sym)
879
0
{
880
0
  return cons((node*)NODE_ARG, nsym(sym));
881
0
}
882
883
static void
884
local_add_margs(parser_state *p, node *n)
885
206
{
886
206
  while (n) {
887
0
    if (typen(n->car->car) == NODE_MASGN) {
888
0
      node *t = n->car->cdr->cdr;
889
890
0
      n->car->cdr->cdr = NULL;
891
0
      while (t) {
892
0
        local_add_f(p, sym(t->car));
893
0
        t = t->cdr;
894
0
      }
895
0
      local_add_margs(p, n->car->cdr->car->car);
896
0
      local_add_margs(p, n->car->cdr->car->cdr->cdr->car);
897
0
    }
898
0
    n = n->cdr;
899
0
  }
900
206
}
901
902
static void
903
local_add_lv(parser_state *p, node *lv)
904
0
{
905
0
  while (lv) {
906
0
    local_add_f(p, sym(lv->car));
907
0
    lv = lv->cdr;
908
0
  }
909
0
}
910
911
/* (m o r m2 tail) */
912
/* m: (a b c) */
913
/* o: ((a . e1) (b . e2)) */
914
/* r: a */
915
/* m2: (a b c) */
916
/* b: a */
917
static node*
918
new_args(parser_state *p, node *m, node *opt, mrb_sym rest, node *m2, node *tail)
919
103
{
920
103
  node *n;
921
922
103
  local_add_margs(p, m);
923
103
  local_add_margs(p, m2);
924
103
  n = cons(m2, tail);
925
103
  n = cons(nsym(rest), n);
926
103
  n = cons(opt, n);
927
103
  while (opt) {
928
    /* opt: (sym . (opt . lv)) -> (sym . opt) */
929
0
    local_add_lv(p, opt->car->cdr->cdr);
930
0
    opt->car->cdr = opt->car->cdr->car;
931
0
    opt = opt->cdr;
932
0
  }
933
103
  return cons(m, n);
934
103
}
935
936
/* (:args_tail keywords rest_keywords_sym block_sym) */
937
static node*
938
new_args_tail(parser_state *p, node *kws, node *kwrest, mrb_sym blk)
939
0
{
940
0
  node *k;
941
942
0
  if (kws || kwrest) {
943
0
    local_add_kw(p, (kwrest && kwrest->cdr)? sym(kwrest->cdr) : 0);
944
0
  }
945
946
0
  local_add_blk(p);
947
0
  if (blk) local_add_f(p, blk);
948
949
  /* allocate register for keywords arguments */
950
  /* order is for Proc#parameters */
951
0
  for (k = kws; k; k = k->cdr) {
952
0
    if (!k->car->cdr->cdr->car) { /* allocate required keywords */
953
0
      local_add_f(p, sym(k->car->cdr->car));
954
0
    }
955
0
  }
956
0
  for (k = kws; k; k = k->cdr) {
957
0
    if (k->car->cdr->cdr->car) { /* allocate keywords with default */
958
0
      local_add_lv(p, k->car->cdr->cdr->car->cdr);
959
0
      k->car->cdr->cdr->car = k->car->cdr->cdr->car->car;
960
0
      local_add_f(p, sym(k->car->cdr->car));
961
0
    }
962
0
  }
963
964
0
  return list4((node*)NODE_ARGS_TAIL, kws, kwrest, nsym(blk));
965
0
}
966
967
/* (:kw_arg kw_sym def_arg) */
968
static node*
969
new_kw_arg(parser_state *p, mrb_sym kw, node *def_arg)
970
0
{
971
0
  mrb_assert(kw);
972
0
  return list3((node*)NODE_KW_ARG, nsym(kw), def_arg);
973
0
}
974
975
/* (:kw_rest_args . a) */
976
static node*
977
new_kw_rest_args(parser_state *p, mrb_sym sym)
978
0
{
979
0
  return cons((node*)NODE_KW_REST_ARGS, nsym(sym));
980
0
}
981
982
static node*
983
new_args_dots(parser_state *p, node *m)
984
0
{
985
0
  mrb_sym r = intern_op(mul);
986
0
  mrb_sym k = intern_op(pow);
987
0
  mrb_sym b = intern_op(and);
988
0
  local_add_f(p, r);
989
0
  return new_args(p, m, 0, r, 0,
990
0
                  new_args_tail(p, 0, new_kw_rest_args(p, k), b));
991
0
}
992
993
/* (:block_arg . a) */
994
static node*
995
new_block_arg(parser_state *p, node *a)
996
0
{
997
0
  return cons((node*)NODE_BLOCK_ARG, a);
998
0
}
999
1000
static node*
1001
setup_numparams(parser_state *p, node *a)
1002
0
{
1003
0
  int nvars = intn(p->nvars->car);
1004
0
  if (nvars > 0) {
1005
0
    int i;
1006
0
    mrb_sym sym;
1007
    // m || opt || rest || tail
1008
0
    if (a && (a->car || (a->cdr && a->cdr->car) || (a->cdr->cdr && a->cdr->cdr->car) || (a->cdr->cdr->cdr->cdr && a->cdr->cdr->cdr->cdr->car))) {
1009
0
      yyerror(NULL, p, "ordinary parameter is defined");
1010
0
    }
1011
0
    else if (p->locals) {
1012
      /* p->locals should not be NULL unless error happens before the point */
1013
0
      node* args = 0;
1014
0
      for (i = nvars; i > 0; i--) {
1015
0
        char buf[3];
1016
1017
0
        buf[0] = '_';
1018
0
        buf[1] = i+'0';
1019
0
        buf[2] = '\0';
1020
0
        sym = intern_cstr(buf);
1021
0
        args = cons(new_arg(p, sym), args);
1022
0
        p->locals->car = cons(nsym(sym), p->locals->car);
1023
0
      }
1024
0
      a = new_args(p, args, 0, 0, 0, 0);
1025
0
    }
1026
0
  }
1027
0
  return a;
1028
0
}
1029
1030
/* (:block arg body) */
1031
static node*
1032
new_block(parser_state *p, node *a, node *b)
1033
0
{
1034
0
  a = setup_numparams(p, a);
1035
0
  return list4((node*)NODE_BLOCK, locals_node(p), a, b);
1036
0
}
1037
1038
/* (:lambda arg body) */
1039
static node*
1040
new_lambda(parser_state *p, node *a, node *b)
1041
0
{
1042
0
  a = setup_numparams(p, a);
1043
0
  return list4((node*)NODE_LAMBDA, locals_node(p), a, b);
1044
0
}
1045
1046
/* (:asgn lhs rhs) */
1047
static node*
1048
new_asgn(parser_state *p, node *a, node *b)
1049
34.6k
{
1050
34.6k
  void_expr_error(p, b);
1051
34.6k
  return cons((node*)NODE_ASGN, cons(a, b));
1052
34.6k
}
1053
1054
/* (:masgn mlhs=(pre rest post)  mrhs) */
1055
static node*
1056
new_masgn(parser_state *p, node *a, node *b)
1057
0
{
1058
0
  void_expr_error(p, b);
1059
0
  return cons((node*)NODE_MASGN, cons(a, b));
1060
0
}
1061
1062
/* (:masgn mlhs mrhs) no check */
1063
static node*
1064
new_masgn_param(parser_state *p, node *a, node *b)
1065
0
{
1066
0
  return cons((node*)NODE_MASGN, cons(a, b));
1067
0
}
1068
1069
/* (:asgn lhs rhs) */
1070
static node*
1071
new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b)
1072
6.41k
{
1073
6.41k
  void_expr_error(p, b);
1074
6.41k
  return list4((node*)NODE_OP_ASGN, a, nsym(op), b);
1075
6.41k
}
1076
1077
static node*
1078
new_imaginary(parser_state *p, node *imaginary)
1079
0
{
1080
0
  return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Complex),
1081
0
                  new_callargs(p, list2(list3((node*)NODE_INT, (node*)strdup("0"), nint(10)), imaginary), 0, 0), '.');
1082
0
}
1083
1084
static node*
1085
new_rational(parser_state *p, node *rational)
1086
0
{
1087
0
  return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Rational), new_callargs(p, list1(rational), 0, 0), '.');
1088
0
}
1089
1090
/* (:int . i) */
1091
static node*
1092
new_int(parser_state *p, const char *s, int base, int suffix)
1093
251k
{
1094
251k
  node* result = list3((node*)NODE_INT, (node*)strdup(s), nint(base));
1095
251k
  if (suffix & NUM_SUFFIX_R) {
1096
0
    result = new_rational(p, result);
1097
0
  }
1098
251k
  if (suffix & NUM_SUFFIX_I) {
1099
0
    result = new_imaginary(p, result);
1100
0
  }
1101
251k
  return result;
1102
251k
}
1103
1104
#ifndef MRB_NO_FLOAT
1105
/* (:float . i) */
1106
static node*
1107
new_float(parser_state *p, const char *s, int suffix)
1108
0
{
1109
0
  node* result = cons((node*)NODE_FLOAT, (node*)strdup(s));
1110
0
  if (suffix & NUM_SUFFIX_R) {
1111
0
    result = new_rational(p, result);
1112
0
  }
1113
0
  if (suffix & NUM_SUFFIX_I) {
1114
0
    result = new_imaginary(p, result);
1115
0
  }
1116
0
  return result;
1117
0
}
1118
#endif
1119
1120
/* (:str . (s . len)) */
1121
static node*
1122
new_str(parser_state *p, const char *s, size_t len)
1123
300k
{
1124
300k
  return cons((node*)NODE_STR, cons((node*)strndup(s, len), nint(len)));
1125
300k
}
1126
1127
/* (:dstr . a) */
1128
static node*
1129
new_dstr(parser_state *p, node *a)
1130
0
{
1131
0
  return cons((node*)NODE_DSTR, a);
1132
0
}
1133
1134
static int
1135
string_node_p(node *n)
1136
0
{
1137
0
  return (int)(typen(n->car) == NODE_STR);
1138
0
}
1139
1140
static node*
1141
composite_string_node(parser_state *p, node *a, node *b)
1142
0
{
1143
0
  size_t newlen = (size_t)a->cdr + (size_t)b->cdr;
1144
0
  char *str = (char*)mrb_mempool_realloc(p->pool, a->car, (size_t)a->cdr + 1, newlen + 1);
1145
0
  memcpy(str + (size_t)a->cdr, b->car, (size_t)b->cdr);
1146
0
  str[newlen] = '\0';
1147
0
  a->car = (node*)str;
1148
0
  a->cdr = (node*)newlen;
1149
0
  cons_free(b);
1150
0
  return a;
1151
0
}
1152
1153
static node*
1154
concat_string(parser_state *p, node *a, node *b)
1155
0
{
1156
0
  if (string_node_p(a)) {
1157
0
    if (string_node_p(b)) {
1158
      /* a == NODE_STR && b == NODE_STR */
1159
0
      composite_string_node(p, a->cdr, b->cdr);
1160
0
      cons_free(b);
1161
0
      return a;
1162
0
    }
1163
0
    else {
1164
      /* a == NODE_STR && b == NODE_DSTR */
1165
1166
0
      if (string_node_p(b->cdr->car)) {
1167
        /* a == NODE_STR && b->[NODE_STR, ...] */
1168
0
        composite_string_node(p, a->cdr, b->cdr->car->cdr);
1169
0
        cons_free(b->cdr->car);
1170
0
        b->cdr->car = a;
1171
0
        return b;
1172
0
      }
1173
0
    }
1174
0
  }
1175
0
  else {
1176
0
    node *c; /* last node of a */
1177
0
    for (c = a; c->cdr != NULL; c = c->cdr)
1178
0
      ;
1179
0
    if (string_node_p(b)) {
1180
      /* a == NODE_DSTR && b == NODE_STR */
1181
0
      if (string_node_p(c->car)) {
1182
        /* a->[..., NODE_STR] && b == NODE_STR */
1183
0
        composite_string_node(p, c->car->cdr, b->cdr);
1184
0
        cons_free(b);
1185
0
        return a;
1186
0
      }
1187
1188
0
      push(a, b);
1189
0
      return a;
1190
0
    }
1191
0
    else {
1192
      /* a == NODE_DSTR && b == NODE_DSTR */
1193
0
      if (string_node_p(c->car) && string_node_p(b->cdr->car)) {
1194
        /* a->[..., NODE_STR] && b->[NODE_STR, ...] */
1195
0
        node *d = b->cdr;
1196
0
        cons_free(b);
1197
0
        composite_string_node(p, c->car->cdr, d->car->cdr);
1198
0
        cons_free(d->car);
1199
0
        c->cdr = d->cdr;
1200
0
        cons_free(d);
1201
0
        return a;
1202
0
      }
1203
0
      else {
1204
0
        c->cdr = b->cdr;
1205
0
        cons_free(b);
1206
0
        return a;
1207
0
      }
1208
0
    }
1209
0
  }
1210
1211
0
  return new_dstr(p, list2(a, b));
1212
0
}
1213
1214
/* (:str . (s . len)) */
1215
static node*
1216
new_xstr(parser_state *p, const char *s, int len)
1217
0
{
1218
0
  return cons((node*)NODE_XSTR, cons((node*)strndup(s, len), nint(len)));
1219
0
}
1220
1221
/* (:xstr . a) */
1222
static node*
1223
new_dxstr(parser_state *p, node *a)
1224
0
{
1225
0
  return cons((node*)NODE_DXSTR, a);
1226
0
}
1227
1228
/* (:dsym . a) */
1229
static node*
1230
new_dsym(parser_state *p, node *a)
1231
0
{
1232
0
  return cons((node*)NODE_DSYM, a);
1233
0
}
1234
1235
/* (:regx . (s . (opt . enc))) */
1236
static node*
1237
new_regx(parser_state *p, const char *p1, const char* p2, const char* p3)
1238
0
{
1239
0
  return cons((node*)NODE_REGX, cons((node*)p1, cons((node*)p2, (node*)p3)));
1240
0
}
1241
1242
/* (:dregx . (a . b)) */
1243
static node*
1244
new_dregx(parser_state *p, node *a, node *b)
1245
0
{
1246
0
  return cons((node*)NODE_DREGX, cons(a, b));
1247
0
}
1248
1249
/* (:backref . n) */
1250
static node*
1251
new_back_ref(parser_state *p, int n)
1252
0
{
1253
0
  return cons((node*)NODE_BACK_REF, nint(n));
1254
0
}
1255
1256
/* (:nthref . n) */
1257
static node*
1258
new_nth_ref(parser_state *p, int n)
1259
0
{
1260
0
  return cons((node*)NODE_NTH_REF, nint(n));
1261
0
}
1262
1263
/* (:heredoc . a) */
1264
static node*
1265
new_heredoc(parser_state *p)
1266
0
{
1267
0
  parser_heredoc_info *inf = (parser_heredoc_info*)parser_palloc(p, sizeof(parser_heredoc_info));
1268
0
  return cons((node*)NODE_HEREDOC, (node*)inf);
1269
0
}
1270
1271
static void
1272
new_bv(parser_state *p, mrb_sym id)
1273
0
{
1274
0
}
1275
1276
static node*
1277
new_literal_delim(parser_state *p)
1278
0
{
1279
0
  return cons((node*)NODE_LITERAL_DELIM, 0);
1280
0
}
1281
1282
/* (:words . a) */
1283
static node*
1284
new_words(parser_state *p, node *a)
1285
0
{
1286
0
  return cons((node*)NODE_WORDS, a);
1287
0
}
1288
1289
/* (:symbols . a) */
1290
static node*
1291
new_symbols(parser_state *p, node *a)
1292
0
{
1293
0
  return cons((node*)NODE_SYMBOLS, a);
1294
0
}
1295
1296
/* xxx ----------------------------- */
1297
1298
/* (:call a op) */
1299
static node*
1300
call_uni_op(parser_state *p, node *recv, const char *m)
1301
0
{
1302
0
  void_expr_error(p, recv);
1303
0
  return new_call(p, recv, intern_cstr(m), 0, '.');
1304
0
}
1305
1306
/* (:call a op b) */
1307
static node*
1308
call_bin_op(parser_state *p, node *recv, const char *m, node *arg1)
1309
24.8k
{
1310
24.8k
  return new_call(p, recv, intern_cstr(m), new_callargs(p, list1(arg1), 0, 0), '.');
1311
24.8k
}
1312
1313
static void
1314
args_with_block(parser_state *p, node *a, node *b)
1315
0
{
1316
0
  if (b) {
1317
0
    if (a->cdr && a->cdr->cdr) {
1318
0
      yyerror(NULL, p, "both block arg and actual block given");
1319
0
    }
1320
0
    a->cdr->cdr = b;
1321
0
  }
1322
0
}
1323
1324
static void
1325
endless_method_name(parser_state *p, node *defn)
1326
0
{
1327
0
  mrb_sym sym = sym(defn->cdr->car);
1328
0
  mrb_int len;
1329
0
  const char *name = mrb_sym_name_len(p->mrb, sym, &len);
1330
1331
0
  if (len > 1 && name[len-1] == '=') {
1332
0
    for (int i=0; i<len-1; i++) {
1333
0
      if (!identchar(name[i])) return;
1334
0
    }
1335
0
    yyerror(NULL, p, "setter method cannot be defined by endless method definition");
1336
0
  }
1337
0
}
1338
1339
static void
1340
call_with_block(parser_state *p, node *a, node *b)
1341
0
{
1342
0
  node *n;
1343
1344
0
  switch (typen(a->car)) {
1345
0
  case NODE_SUPER:
1346
0
  case NODE_ZSUPER:
1347
0
    if (!a->cdr) a->cdr = new_callargs(p, 0, 0, b);
1348
0
    else args_with_block(p, a->cdr, b);
1349
0
    break;
1350
0
  case NODE_CALL:
1351
0
  case NODE_FCALL:
1352
0
  case NODE_SCALL:
1353
    /* (NODE_CALL recv mid (args kw . blk)) */
1354
0
    n = a->cdr->cdr->cdr; /* (args kw . blk) */
1355
0
    if (!n->car) n->car = new_callargs(p, 0, 0, b);
1356
0
    else args_with_block(p, n->car, b);
1357
0
    break;
1358
0
  case NODE_RETURN:
1359
0
  case NODE_BREAK:
1360
0
  case NODE_NEXT:
1361
0
    if (a->cdr == NULL) return;
1362
0
    call_with_block(p, a->cdr, b);
1363
0
    break;
1364
0
  default:
1365
0
    break;
1366
0
  }
1367
0
}
1368
1369
static node*
1370
new_negate(parser_state *p, node *n)
1371
0
{
1372
0
  return cons((node*)NODE_NEGATE, n);
1373
0
}
1374
1375
static node*
1376
cond(node *n)
1377
6.62k
{
1378
6.62k
  return n;
1379
6.62k
}
1380
1381
static node*
1382
ret_args(parser_state *p, node *n)
1383
0
{
1384
0
  if (n->cdr->cdr) {
1385
0
    yyerror(NULL, p, "block argument should not be given");
1386
0
    return NULL;
1387
0
  }
1388
0
  if (!n->car) return NULL;
1389
0
  if (!n->car->cdr) return n->car->car;
1390
0
  return new_array(p, n->car);
1391
0
}
1392
1393
static void
1394
assignable(parser_state *p, node *lhs)
1395
41.0k
{
1396
41.0k
  switch (intn(lhs->car)) {
1397
34.6k
  case NODE_LVAR:
1398
34.6k
    local_add(p, sym(lhs->cdr));
1399
34.6k
    break;
1400
0
  case NODE_CONST:
1401
0
    if (p->in_def)
1402
0
      yyerror(NULL, p, "dynamic constant assignment");
1403
0
    break;
1404
41.0k
  }
1405
41.0k
}
1406
1407
static node*
1408
var_reference(parser_state *p, node *lhs)
1409
19.4k
{
1410
19.4k
  if (intn(lhs->car) == NODE_LVAR) {
1411
16.1k
    if (!local_var_p(p, sym(lhs->cdr))) {
1412
103
      node *n = new_fcall(p, sym(lhs->cdr), 0);
1413
103
      cons_free(lhs);
1414
103
      return n;
1415
103
    }
1416
16.1k
  }
1417
19.3k
  return lhs;
1418
19.4k
}
1419
1420
static node*
1421
label_reference(parser_state *p, mrb_sym sym)
1422
0
{
1423
0
  const char *name = mrb_sym_name(p->mrb, sym);
1424
1425
0
  if (local_var_p(p, sym)) {
1426
0
    return new_lvar(p, sym);
1427
0
  }
1428
0
  else if (ISUPPER(name[0])) {
1429
0
    return new_const(p, sym);
1430
0
  }
1431
0
  else {
1432
0
    return new_fcall(p, sym, 0);
1433
0
  }
1434
0
}
1435
1436
typedef enum mrb_string_type  string_type;
1437
1438
typedef struct parser_lex_strterm {
1439
  int type;
1440
  int level;
1441
  int term;
1442
  int paren;
1443
  struct parser_lex_strterm *prev;
1444
} parser_lex_strterm;
1445
1446
static parser_lex_strterm*
1447
new_strterm(parser_state *p, string_type type, int term, int paren)
1448
300k
{
1449
300k
  parser_lex_strterm *lex = (parser_lex_strterm*)parser_palloc(p, sizeof(parser_lex_strterm));
1450
300k
  lex->type = type;
1451
300k
  lex->level = 0;
1452
300k
  lex->term = term;
1453
300k
  lex->paren = paren;
1454
300k
  lex->prev = p->lex_strterm;
1455
300k
  return lex;
1456
300k
}
1457
1458
static void
1459
end_strterm(parser_state *p)
1460
300k
{
1461
300k
  parser_lex_strterm *term = p->lex_strterm->prev;
1462
300k
  parser_pfree(p->lex_strterm);
1463
300k
  p->lex_strterm = term;
1464
300k
}
1465
1466
static node*
1467
push_strterm(parser_state *p)
1468
0
{
1469
0
  node *n = cons((node*)p->lex_strterm, p->parsing_heredoc);
1470
0
  p->lex_strterm = NULL;
1471
0
  return n;
1472
0
}
1473
1474
static void
1475
pop_strterm(parser_state *p, node *n)
1476
0
{
1477
0
  p->lex_strterm = (parser_lex_strterm*)n->car;
1478
0
  p->parsing_heredoc = n->cdr;
1479
0
  cons_free(n);
1480
0
}
1481
1482
static parser_heredoc_info *
1483
parsing_heredoc_info(parser_state *p)
1484
0
{
1485
0
  node *nd = p->parsing_heredoc;
1486
0
  if (nd == NULL) return NULL;
1487
  /* mrb_assert(nd->car->car == NODE_HEREDOC); */
1488
0
  return (parser_heredoc_info*)nd->car->cdr;
1489
0
}
1490
1491
static void
1492
heredoc_treat_nextline(parser_state *p)
1493
169k
{
1494
169k
  if (p->heredocs_from_nextline == NULL) return;
1495
0
  if (p->parsing_heredoc && p->lex_strterm) {
1496
0
    append(p->heredocs_from_nextline, p->parsing_heredoc);
1497
0
  }
1498
0
  p->parsing_heredoc = p->heredocs_from_nextline;
1499
0
  p->lex_strterm = new_strterm(p, parsing_heredoc_info(p)->type, 0, 0);
1500
0
  p->heredocs_from_nextline = NULL;
1501
0
}
1502
1503
static void
1504
heredoc_end(parser_state *p)
1505
0
{
1506
0
  p->parsing_heredoc = p->parsing_heredoc->cdr;
1507
0
  if (p->parsing_heredoc == NULL) {
1508
0
    p->lstate = EXPR_BEG;
1509
0
    end_strterm(p);
1510
0
  }
1511
0
  else {
1512
    /* next heredoc */
1513
0
    p->lex_strterm->type = parsing_heredoc_info(p)->type;
1514
0
  }
1515
0
}
1516
300k
#define is_strterm_type(p,str_func) ((p)->lex_strterm->type & (str_func))
1517
1518
/* xxx ----------------------------- */
1519
1520
1521
#line 1522 "mrbgems/mruby-compiler/core/y.tab.c"
1522
1523
# ifndef YY_CAST
1524
#  ifdef __cplusplus
1525
#   define YY_CAST(Type, Val) static_cast<Type> (Val)
1526
#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1527
#  else
1528
10.4M
#   define YY_CAST(Type, Val) ((Type) (Val))
1529
#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1530
#  endif
1531
# endif
1532
# ifndef YY_NULLPTR
1533
#  if defined __cplusplus
1534
#   if 201103L <= __cplusplus
1535
#    define YY_NULLPTR nullptr
1536
#   else
1537
#    define YY_NULLPTR 0
1538
#   endif
1539
#  else
1540
0
#   define YY_NULLPTR ((void*)0)
1541
#  endif
1542
# endif
1543
1544
/* Use api.header.include to #include this header
1545
   instead of duplicating it here.  */
1546
/* Debug traces.  */
1547
#ifndef YYDEBUG
1548
# define YYDEBUG 0
1549
#endif
1550
#if YYDEBUG && !defined(yydebug)
1551
extern int yydebug;
1552
#endif
1553
1554
1555
/* Token kinds.  */
1556
#ifndef YYTOKENTYPE
1557
# define YYTOKENTYPE
1558
  enum yytokentype
1559
  {
1560
    YYEMPTY = -2,
1561
    YYEOF = 0,                     /* "end of file"  */
1562
    YYerror = 256,                 /* error  */
1563
    YYUNDEF = 257,                 /* "invalid token"  */
1564
    keyword_class = 258,           /* "'class'"  */
1565
    keyword_module = 259,          /* "'module'"  */
1566
    keyword_def = 260,             /* "'def'"  */
1567
    keyword_begin = 261,           /* "'begin'"  */
1568
    keyword_if = 262,              /* "'if'"  */
1569
    keyword_unless = 263,          /* "'unless'"  */
1570
    keyword_while = 264,           /* "'while'"  */
1571
    keyword_until = 265,           /* "'until'"  */
1572
    keyword_for = 266,             /* "'for'"  */
1573
    keyword_undef = 267,           /* "'undef'"  */
1574
    keyword_rescue = 268,          /* "'rescue'"  */
1575
    keyword_ensure = 269,          /* "'ensure'"  */
1576
    keyword_end = 270,             /* "'end'"  */
1577
    keyword_then = 271,            /* "'then'"  */
1578
    keyword_elsif = 272,           /* "'elsif'"  */
1579
    keyword_else = 273,            /* "'else'"  */
1580
    keyword_case = 274,            /* "'case'"  */
1581
    keyword_when = 275,            /* "'when'"  */
1582
    keyword_break = 276,           /* "'break'"  */
1583
    keyword_next = 277,            /* "'next'"  */
1584
    keyword_redo = 278,            /* "'redo'"  */
1585
    keyword_retry = 279,           /* "'retry'"  */
1586
    keyword_in = 280,              /* "'in'"  */
1587
    keyword_do = 281,              /* "'do'"  */
1588
    keyword_do_cond = 282,         /* "'do' for condition"  */
1589
    keyword_do_block = 283,        /* "'do' for block"  */
1590
    keyword_do_LAMBDA = 284,       /* "'do' for lambda"  */
1591
    keyword_return = 285,          /* "'return'"  */
1592
    keyword_yield = 286,           /* "'yield'"  */
1593
    keyword_super = 287,           /* "'super'"  */
1594
    keyword_self = 288,            /* "'self'"  */
1595
    keyword_nil = 289,             /* "'nil'"  */
1596
    keyword_true = 290,            /* "'true'"  */
1597
    keyword_false = 291,           /* "'false'"  */
1598
    keyword_and = 292,             /* "'and'"  */
1599
    keyword_or = 293,              /* "'or'"  */
1600
    keyword_not = 294,             /* "'not'"  */
1601
    modifier_if = 295,             /* "'if' modifier"  */
1602
    modifier_unless = 296,         /* "'unless' modifier"  */
1603
    modifier_while = 297,          /* "'while' modifier"  */
1604
    modifier_until = 298,          /* "'until' modifier"  */
1605
    modifier_rescue = 299,         /* "'rescue' modifier"  */
1606
    keyword_alias = 300,           /* "'alis'"  */
1607
    keyword_BEGIN = 301,           /* "'BEGIN'"  */
1608
    keyword_END = 302,             /* "'END'"  */
1609
    keyword__LINE__ = 303,         /* "'__LINE__'"  */
1610
    keyword__FILE__ = 304,         /* "'__FILE__'"  */
1611
    keyword__ENCODING__ = 305,     /* "'__ENCODING__'"  */
1612
    tIDENTIFIER = 306,             /* "local variable or method"  */
1613
    tFID = 307,                    /* "method"  */
1614
    tGVAR = 308,                   /* "global variable"  */
1615
    tIVAR = 309,                   /* "instance variable"  */
1616
    tCONSTANT = 310,               /* "constant"  */
1617
    tCVAR = 311,                   /* "class variable"  */
1618
    tLABEL_TAG = 312,              /* "label"  */
1619
    tINTEGER = 313,                /* "integer literal"  */
1620
    tFLOAT = 314,                  /* "float literal"  */
1621
    tCHAR = 315,                   /* "character literal"  */
1622
    tXSTRING = 316,                /* tXSTRING  */
1623
    tREGEXP = 317,                 /* tREGEXP  */
1624
    tSTRING = 318,                 /* tSTRING  */
1625
    tSTRING_PART = 319,            /* tSTRING_PART  */
1626
    tSTRING_MID = 320,             /* tSTRING_MID  */
1627
    tNTH_REF = 321,                /* tNTH_REF  */
1628
    tBACK_REF = 322,               /* tBACK_REF  */
1629
    tREGEXP_END = 323,             /* tREGEXP_END  */
1630
    tNUMPARAM = 324,               /* "numbered parameter"  */
1631
    tUPLUS = 325,                  /* "unary plus"  */
1632
    tUMINUS = 326,                 /* "unary minus"  */
1633
    tCMP = 327,                    /* "<=>"  */
1634
    tEQ = 328,                     /* "=="  */
1635
    tEQQ = 329,                    /* "==="  */
1636
    tNEQ = 330,                    /* "!="  */
1637
    tGEQ = 331,                    /* ">="  */
1638
    tLEQ = 332,                    /* "<="  */
1639
    tANDOP = 333,                  /* "&&"  */
1640
    tOROP = 334,                   /* "||"  */
1641
    tMATCH = 335,                  /* "=~"  */
1642
    tNMATCH = 336,                 /* "!~"  */
1643
    tDOT2 = 337,                   /* ".."  */
1644
    tDOT3 = 338,                   /* "..."  */
1645
    tBDOT2 = 339,                  /* tBDOT2  */
1646
    tBDOT3 = 340,                  /* tBDOT3  */
1647
    tAREF = 341,                   /* tAREF  */
1648
    tASET = 342,                   /* tASET  */
1649
    tLSHFT = 343,                  /* "<<"  */
1650
    tRSHFT = 344,                  /* ">>"  */
1651
    tCOLON2 = 345,                 /* "::"  */
1652
    tCOLON3 = 346,                 /* tCOLON3  */
1653
    tOP_ASGN = 347,                /* tOP_ASGN  */
1654
    tASSOC = 348,                  /* "=>"  */
1655
    tLPAREN = 349,                 /* tLPAREN  */
1656
    tLPAREN_ARG = 350,             /* "("  */
1657
    tRPAREN = 351,                 /* ")"  */
1658
    tLBRACK = 352,                 /* "["  */
1659
    tLBRACE = 353,                 /* tLBRACE  */
1660
    tLBRACE_ARG = 354,             /* "{"  */
1661
    tSTAR = 355,                   /* "*"  */
1662
    tPOW = 356,                    /* tPOW  */
1663
    tDSTAR = 357,                  /* "**"  */
1664
    tAMPER = 358,                  /* "&"  */
1665
    tLAMBDA = 359,                 /* "->"  */
1666
    tANDDOT = 360,                 /* "&."  */
1667
    tSYMBEG = 361,                 /* "symbol"  */
1668
    tSTRING_BEG = 362,             /* "string literal"  */
1669
    tXSTRING_BEG = 363,            /* tXSTRING_BEG  */
1670
    tSTRING_DVAR = 364,            /* tSTRING_DVAR  */
1671
    tREGEXP_BEG = 365,             /* tREGEXP_BEG  */
1672
    tWORDS_BEG = 366,              /* tWORDS_BEG  */
1673
    tSYMBOLS_BEG = 367,            /* tSYMBOLS_BEG  */
1674
    tLAMBEG = 368,                 /* tLAMBEG  */
1675
    tHEREDOC_BEG = 369,            /* "here document"  */
1676
    tHEREDOC_END = 370,            /* tHEREDOC_END  */
1677
    tLITERAL_DELIM = 371,          /* tLITERAL_DELIM  */
1678
    tHD_LITERAL_DELIM = 372,       /* tHD_LITERAL_DELIM  */
1679
    tHD_STRING_PART = 373,         /* tHD_STRING_PART  */
1680
    tHD_STRING_MID = 374,          /* tHD_STRING_MID  */
1681
    tLOWEST = 375,                 /* tLOWEST  */
1682
    tUMINUS_NUM = 376,             /* tUMINUS_NUM  */
1683
    tLAST_TOKEN = 377              /* tLAST_TOKEN  */
1684
  };
1685
  typedef enum yytokentype yytoken_kind_t;
1686
#endif
1687
1688
/* Value type.  */
1689
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1690
union YYSTYPE
1691
{
1692
#line 1465 "mrbgems/mruby-compiler/core/parse.y"
1693
1694
    node *nd;
1695
    mrb_sym id;
1696
    int num;
1697
    stack_type stack;
1698
    const struct vtable *vars;
1699
1700
#line 1701 "mrbgems/mruby-compiler/core/y.tab.c"
1701
1702
};
1703
typedef union YYSTYPE YYSTYPE;
1704
# define YYSTYPE_IS_TRIVIAL 1
1705
# define YYSTYPE_IS_DECLARED 1
1706
#endif
1707
1708
/* Location type.  */
1709
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1710
typedef struct YYLTYPE YYLTYPE;
1711
struct YYLTYPE
1712
{
1713
  int first_line;
1714
  int first_column;
1715
  int last_line;
1716
  int last_column;
1717
};
1718
# define YYLTYPE_IS_DECLARED 1
1719
# define YYLTYPE_IS_TRIVIAL 1
1720
#endif
1721
1722
1723
1724
1725
int yyparse (parser_state *p);
1726
1727
1728
1729
1730
/* Symbol kind.  */
1731
enum yysymbol_kind_t
1732
{
1733
  YYSYMBOL_YYEMPTY = -2,
1734
  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
1735
  YYSYMBOL_YYerror = 1,                    /* error  */
1736
  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
1737
  YYSYMBOL_keyword_class = 3,              /* "'class'"  */
1738
  YYSYMBOL_keyword_module = 4,             /* "'module'"  */
1739
  YYSYMBOL_keyword_def = 5,                /* "'def'"  */
1740
  YYSYMBOL_keyword_begin = 6,              /* "'begin'"  */
1741
  YYSYMBOL_keyword_if = 7,                 /* "'if'"  */
1742
  YYSYMBOL_keyword_unless = 8,             /* "'unless'"  */
1743
  YYSYMBOL_keyword_while = 9,              /* "'while'"  */
1744
  YYSYMBOL_keyword_until = 10,             /* "'until'"  */
1745
  YYSYMBOL_keyword_for = 11,               /* "'for'"  */
1746
  YYSYMBOL_keyword_undef = 12,             /* "'undef'"  */
1747
  YYSYMBOL_keyword_rescue = 13,            /* "'rescue'"  */
1748
  YYSYMBOL_keyword_ensure = 14,            /* "'ensure'"  */
1749
  YYSYMBOL_keyword_end = 15,               /* "'end'"  */
1750
  YYSYMBOL_keyword_then = 16,              /* "'then'"  */
1751
  YYSYMBOL_keyword_elsif = 17,             /* "'elsif'"  */
1752
  YYSYMBOL_keyword_else = 18,              /* "'else'"  */
1753
  YYSYMBOL_keyword_case = 19,              /* "'case'"  */
1754
  YYSYMBOL_keyword_when = 20,              /* "'when'"  */
1755
  YYSYMBOL_keyword_break = 21,             /* "'break'"  */
1756
  YYSYMBOL_keyword_next = 22,              /* "'next'"  */
1757
  YYSYMBOL_keyword_redo = 23,              /* "'redo'"  */
1758
  YYSYMBOL_keyword_retry = 24,             /* "'retry'"  */
1759
  YYSYMBOL_keyword_in = 25,                /* "'in'"  */
1760
  YYSYMBOL_keyword_do = 26,                /* "'do'"  */
1761
  YYSYMBOL_keyword_do_cond = 27,           /* "'do' for condition"  */
1762
  YYSYMBOL_keyword_do_block = 28,          /* "'do' for block"  */
1763
  YYSYMBOL_keyword_do_LAMBDA = 29,         /* "'do' for lambda"  */
1764
  YYSYMBOL_keyword_return = 30,            /* "'return'"  */
1765
  YYSYMBOL_keyword_yield = 31,             /* "'yield'"  */
1766
  YYSYMBOL_keyword_super = 32,             /* "'super'"  */
1767
  YYSYMBOL_keyword_self = 33,              /* "'self'"  */
1768
  YYSYMBOL_keyword_nil = 34,               /* "'nil'"  */
1769
  YYSYMBOL_keyword_true = 35,              /* "'true'"  */
1770
  YYSYMBOL_keyword_false = 36,             /* "'false'"  */
1771
  YYSYMBOL_keyword_and = 37,               /* "'and'"  */
1772
  YYSYMBOL_keyword_or = 38,                /* "'or'"  */
1773
  YYSYMBOL_keyword_not = 39,               /* "'not'"  */
1774
  YYSYMBOL_modifier_if = 40,               /* "'if' modifier"  */
1775
  YYSYMBOL_modifier_unless = 41,           /* "'unless' modifier"  */
1776
  YYSYMBOL_modifier_while = 42,            /* "'while' modifier"  */
1777
  YYSYMBOL_modifier_until = 43,            /* "'until' modifier"  */
1778
  YYSYMBOL_modifier_rescue = 44,           /* "'rescue' modifier"  */
1779
  YYSYMBOL_keyword_alias = 45,             /* "'alis'"  */
1780
  YYSYMBOL_keyword_BEGIN = 46,             /* "'BEGIN'"  */
1781
  YYSYMBOL_keyword_END = 47,               /* "'END'"  */
1782
  YYSYMBOL_keyword__LINE__ = 48,           /* "'__LINE__'"  */
1783
  YYSYMBOL_keyword__FILE__ = 49,           /* "'__FILE__'"  */
1784
  YYSYMBOL_keyword__ENCODING__ = 50,       /* "'__ENCODING__'"  */
1785
  YYSYMBOL_tIDENTIFIER = 51,               /* "local variable or method"  */
1786
  YYSYMBOL_tFID = 52,                      /* "method"  */
1787
  YYSYMBOL_tGVAR = 53,                     /* "global variable"  */
1788
  YYSYMBOL_tIVAR = 54,                     /* "instance variable"  */
1789
  YYSYMBOL_tCONSTANT = 55,                 /* "constant"  */
1790
  YYSYMBOL_tCVAR = 56,                     /* "class variable"  */
1791
  YYSYMBOL_tLABEL_TAG = 57,                /* "label"  */
1792
  YYSYMBOL_tINTEGER = 58,                  /* "integer literal"  */
1793
  YYSYMBOL_tFLOAT = 59,                    /* "float literal"  */
1794
  YYSYMBOL_tCHAR = 60,                     /* "character literal"  */
1795
  YYSYMBOL_tXSTRING = 61,                  /* tXSTRING  */
1796
  YYSYMBOL_tREGEXP = 62,                   /* tREGEXP  */
1797
  YYSYMBOL_tSTRING = 63,                   /* tSTRING  */
1798
  YYSYMBOL_tSTRING_PART = 64,              /* tSTRING_PART  */
1799
  YYSYMBOL_tSTRING_MID = 65,               /* tSTRING_MID  */
1800
  YYSYMBOL_tNTH_REF = 66,                  /* tNTH_REF  */
1801
  YYSYMBOL_tBACK_REF = 67,                 /* tBACK_REF  */
1802
  YYSYMBOL_tREGEXP_END = 68,               /* tREGEXP_END  */
1803
  YYSYMBOL_tNUMPARAM = 69,                 /* "numbered parameter"  */
1804
  YYSYMBOL_tUPLUS = 70,                    /* "unary plus"  */
1805
  YYSYMBOL_tUMINUS = 71,                   /* "unary minus"  */
1806
  YYSYMBOL_tCMP = 72,                      /* "<=>"  */
1807
  YYSYMBOL_tEQ = 73,                       /* "=="  */
1808
  YYSYMBOL_tEQQ = 74,                      /* "==="  */
1809
  YYSYMBOL_tNEQ = 75,                      /* "!="  */
1810
  YYSYMBOL_tGEQ = 76,                      /* ">="  */
1811
  YYSYMBOL_tLEQ = 77,                      /* "<="  */
1812
  YYSYMBOL_tANDOP = 78,                    /* "&&"  */
1813
  YYSYMBOL_tOROP = 79,                     /* "||"  */
1814
  YYSYMBOL_tMATCH = 80,                    /* "=~"  */
1815
  YYSYMBOL_tNMATCH = 81,                   /* "!~"  */
1816
  YYSYMBOL_tDOT2 = 82,                     /* ".."  */
1817
  YYSYMBOL_tDOT3 = 83,                     /* "..."  */
1818
  YYSYMBOL_tBDOT2 = 84,                    /* tBDOT2  */
1819
  YYSYMBOL_tBDOT3 = 85,                    /* tBDOT3  */
1820
  YYSYMBOL_tAREF = 86,                     /* tAREF  */
1821
  YYSYMBOL_tASET = 87,                     /* tASET  */
1822
  YYSYMBOL_tLSHFT = 88,                    /* "<<"  */
1823
  YYSYMBOL_tRSHFT = 89,                    /* ">>"  */
1824
  YYSYMBOL_tCOLON2 = 90,                   /* "::"  */
1825
  YYSYMBOL_tCOLON3 = 91,                   /* tCOLON3  */
1826
  YYSYMBOL_tOP_ASGN = 92,                  /* tOP_ASGN  */
1827
  YYSYMBOL_tASSOC = 93,                    /* "=>"  */
1828
  YYSYMBOL_tLPAREN = 94,                   /* tLPAREN  */
1829
  YYSYMBOL_tLPAREN_ARG = 95,               /* "("  */
1830
  YYSYMBOL_tRPAREN = 96,                   /* ")"  */
1831
  YYSYMBOL_tLBRACK = 97,                   /* "["  */
1832
  YYSYMBOL_tLBRACE = 98,                   /* tLBRACE  */
1833
  YYSYMBOL_tLBRACE_ARG = 99,               /* "{"  */
1834
  YYSYMBOL_tSTAR = 100,                    /* "*"  */
1835
  YYSYMBOL_tPOW = 101,                     /* tPOW  */
1836
  YYSYMBOL_tDSTAR = 102,                   /* "**"  */
1837
  YYSYMBOL_tAMPER = 103,                   /* "&"  */
1838
  YYSYMBOL_tLAMBDA = 104,                  /* "->"  */
1839
  YYSYMBOL_tANDDOT = 105,                  /* "&."  */
1840
  YYSYMBOL_tSYMBEG = 106,                  /* "symbol"  */
1841
  YYSYMBOL_tSTRING_BEG = 107,              /* "string literal"  */
1842
  YYSYMBOL_tXSTRING_BEG = 108,             /* tXSTRING_BEG  */
1843
  YYSYMBOL_tSTRING_DVAR = 109,             /* tSTRING_DVAR  */
1844
  YYSYMBOL_tREGEXP_BEG = 110,              /* tREGEXP_BEG  */
1845
  YYSYMBOL_tWORDS_BEG = 111,               /* tWORDS_BEG  */
1846
  YYSYMBOL_tSYMBOLS_BEG = 112,             /* tSYMBOLS_BEG  */
1847
  YYSYMBOL_tLAMBEG = 113,                  /* tLAMBEG  */
1848
  YYSYMBOL_tHEREDOC_BEG = 114,             /* "here document"  */
1849
  YYSYMBOL_tHEREDOC_END = 115,             /* tHEREDOC_END  */
1850
  YYSYMBOL_tLITERAL_DELIM = 116,           /* tLITERAL_DELIM  */
1851
  YYSYMBOL_tHD_LITERAL_DELIM = 117,        /* tHD_LITERAL_DELIM  */
1852
  YYSYMBOL_tHD_STRING_PART = 118,          /* tHD_STRING_PART  */
1853
  YYSYMBOL_tHD_STRING_MID = 119,           /* tHD_STRING_MID  */
1854
  YYSYMBOL_tLOWEST = 120,                  /* tLOWEST  */
1855
  YYSYMBOL_121_ = 121,                     /* '='  */
1856
  YYSYMBOL_122_ = 122,                     /* '?'  */
1857
  YYSYMBOL_123_ = 123,                     /* ':'  */
1858
  YYSYMBOL_124_ = 124,                     /* '>'  */
1859
  YYSYMBOL_125_ = 125,                     /* '<'  */
1860
  YYSYMBOL_126_ = 126,                     /* '|'  */
1861
  YYSYMBOL_127_ = 127,                     /* '^'  */
1862
  YYSYMBOL_128_ = 128,                     /* '&'  */
1863
  YYSYMBOL_129_ = 129,                     /* '+'  */
1864
  YYSYMBOL_130_ = 130,                     /* '-'  */
1865
  YYSYMBOL_131_ = 131,                     /* '*'  */
1866
  YYSYMBOL_132_ = 132,                     /* '/'  */
1867
  YYSYMBOL_133_ = 133,                     /* '%'  */
1868
  YYSYMBOL_tUMINUS_NUM = 134,              /* tUMINUS_NUM  */
1869
  YYSYMBOL_135_ = 135,                     /* '!'  */
1870
  YYSYMBOL_136_ = 136,                     /* '~'  */
1871
  YYSYMBOL_tLAST_TOKEN = 137,              /* tLAST_TOKEN  */
1872
  YYSYMBOL_138_ = 138,                     /* '{'  */
1873
  YYSYMBOL_139_ = 139,                     /* '}'  */
1874
  YYSYMBOL_140_ = 140,                     /* '['  */
1875
  YYSYMBOL_141_ = 141,                     /* ']'  */
1876
  YYSYMBOL_142_ = 142,                     /* ','  */
1877
  YYSYMBOL_143_ = 143,                     /* '`'  */
1878
  YYSYMBOL_144_ = 144,                     /* '('  */
1879
  YYSYMBOL_145_ = 145,                     /* ')'  */
1880
  YYSYMBOL_146_ = 146,                     /* ';'  */
1881
  YYSYMBOL_147_ = 147,                     /* '.'  */
1882
  YYSYMBOL_148_n_ = 148,                   /* '\n'  */
1883
  YYSYMBOL_YYACCEPT = 149,                 /* $accept  */
1884
  YYSYMBOL_150_1 = 150,                    /* $@1  */
1885
  YYSYMBOL_program = 151,                  /* program  */
1886
  YYSYMBOL_top_compstmt = 152,             /* top_compstmt  */
1887
  YYSYMBOL_top_stmts = 153,                /* top_stmts  */
1888
  YYSYMBOL_top_stmt = 154,                 /* top_stmt  */
1889
  YYSYMBOL_155_2 = 155,                    /* @2  */
1890
  YYSYMBOL_bodystmt = 156,                 /* bodystmt  */
1891
  YYSYMBOL_compstmt = 157,                 /* compstmt  */
1892
  YYSYMBOL_stmts = 158,                    /* stmts  */
1893
  YYSYMBOL_159_3 = 159,                    /* $@3  */
1894
  YYSYMBOL_stmt = 160,                     /* stmt  */
1895
  YYSYMBOL_command_asgn = 161,             /* command_asgn  */
1896
  YYSYMBOL_command_rhs = 162,              /* command_rhs  */
1897
  YYSYMBOL_expr = 163,                     /* expr  */
1898
  YYSYMBOL_defn_head = 164,                /* defn_head  */
1899
  YYSYMBOL_165_4 = 165,                    /* $@4  */
1900
  YYSYMBOL_defs_head = 166,                /* defs_head  */
1901
  YYSYMBOL_expr_value = 167,               /* expr_value  */
1902
  YYSYMBOL_command_call = 168,             /* command_call  */
1903
  YYSYMBOL_block_command = 169,            /* block_command  */
1904
  YYSYMBOL_170_5 = 170,                    /* $@5  */
1905
  YYSYMBOL_cmd_brace_block = 171,          /* cmd_brace_block  */
1906
  YYSYMBOL_command = 172,                  /* command  */
1907
  YYSYMBOL_mlhs = 173,                     /* mlhs  */
1908
  YYSYMBOL_mlhs_inner = 174,               /* mlhs_inner  */
1909
  YYSYMBOL_mlhs_basic = 175,               /* mlhs_basic  */
1910
  YYSYMBOL_mlhs_item = 176,                /* mlhs_item  */
1911
  YYSYMBOL_mlhs_list = 177,                /* mlhs_list  */
1912
  YYSYMBOL_mlhs_post = 178,                /* mlhs_post  */
1913
  YYSYMBOL_mlhs_node = 179,                /* mlhs_node  */
1914
  YYSYMBOL_lhs = 180,                      /* lhs  */
1915
  YYSYMBOL_cname = 181,                    /* cname  */
1916
  YYSYMBOL_cpath = 182,                    /* cpath  */
1917
  YYSYMBOL_fname = 183,                    /* fname  */
1918
  YYSYMBOL_fsym = 184,                     /* fsym  */
1919
  YYSYMBOL_undef_list = 185,               /* undef_list  */
1920
  YYSYMBOL_186_6 = 186,                    /* $@6  */
1921
  YYSYMBOL_op = 187,                       /* op  */
1922
  YYSYMBOL_reswords = 188,                 /* reswords  */
1923
  YYSYMBOL_arg = 189,                      /* arg  */
1924
  YYSYMBOL_aref_args = 190,                /* aref_args  */
1925
  YYSYMBOL_arg_rhs = 191,                  /* arg_rhs  */
1926
  YYSYMBOL_paren_args = 192,               /* paren_args  */
1927
  YYSYMBOL_opt_paren_args = 193,           /* opt_paren_args  */
1928
  YYSYMBOL_opt_call_args = 194,            /* opt_call_args  */
1929
  YYSYMBOL_call_args = 195,                /* call_args  */
1930
  YYSYMBOL_196_7 = 196,                    /* @7  */
1931
  YYSYMBOL_command_args = 197,             /* command_args  */
1932
  YYSYMBOL_block_arg = 198,                /* block_arg  */
1933
  YYSYMBOL_opt_block_arg = 199,            /* opt_block_arg  */
1934
  YYSYMBOL_comma = 200,                    /* comma  */
1935
  YYSYMBOL_args = 201,                     /* args  */
1936
  YYSYMBOL_mrhs = 202,                     /* mrhs  */
1937
  YYSYMBOL_primary = 203,                  /* primary  */
1938
  YYSYMBOL_204_8 = 204,                    /* @8  */
1939
  YYSYMBOL_205_9 = 205,                    /* @9  */
1940
  YYSYMBOL_206_10 = 206,                   /* $@10  */
1941
  YYSYMBOL_207_11 = 207,                   /* $@11  */
1942
  YYSYMBOL_208_12 = 208,                   /* @12  */
1943
  YYSYMBOL_209_13 = 209,                   /* @13  */
1944
  YYSYMBOL_210_14 = 210,                   /* $@14  */
1945
  YYSYMBOL_211_15 = 211,                   /* $@15  */
1946
  YYSYMBOL_212_16 = 212,                   /* $@16  */
1947
  YYSYMBOL_213_17 = 213,                   /* $@17  */
1948
  YYSYMBOL_214_18 = 214,                   /* $@18  */
1949
  YYSYMBOL_215_19 = 215,                   /* $@19  */
1950
  YYSYMBOL_216_20 = 216,                   /* @20  */
1951
  YYSYMBOL_217_21 = 217,                   /* @21  */
1952
  YYSYMBOL_218_22 = 218,                   /* @22  */
1953
  YYSYMBOL_219_23 = 219,                   /* @23  */
1954
  YYSYMBOL_primary_value = 220,            /* primary_value  */
1955
  YYSYMBOL_then = 221,                     /* then  */
1956
  YYSYMBOL_do = 222,                       /* do  */
1957
  YYSYMBOL_if_tail = 223,                  /* if_tail  */
1958
  YYSYMBOL_opt_else = 224,                 /* opt_else  */
1959
  YYSYMBOL_for_var = 225,                  /* for_var  */
1960
  YYSYMBOL_f_margs = 226,                  /* f_margs  */
1961
  YYSYMBOL_227_24 = 227,                   /* $@24  */
1962
  YYSYMBOL_block_args_tail = 228,          /* block_args_tail  */
1963
  YYSYMBOL_opt_block_args_tail = 229,      /* opt_block_args_tail  */
1964
  YYSYMBOL_block_param = 230,              /* block_param  */
1965
  YYSYMBOL_opt_block_param = 231,          /* opt_block_param  */
1966
  YYSYMBOL_232_25 = 232,                   /* $@25  */
1967
  YYSYMBOL_block_param_def = 233,          /* block_param_def  */
1968
  YYSYMBOL_opt_bv_decl = 234,              /* opt_bv_decl  */
1969
  YYSYMBOL_bv_decls = 235,                 /* bv_decls  */
1970
  YYSYMBOL_bvar = 236,                     /* bvar  */
1971
  YYSYMBOL_f_larglist = 237,               /* f_larglist  */
1972
  YYSYMBOL_lambda_body = 238,              /* lambda_body  */
1973
  YYSYMBOL_239_26 = 239,                   /* @26  */
1974
  YYSYMBOL_do_block = 240,                 /* do_block  */
1975
  YYSYMBOL_block_call = 241,               /* block_call  */
1976
  YYSYMBOL_method_call = 242,              /* method_call  */
1977
  YYSYMBOL_243_27 = 243,                   /* @27  */
1978
  YYSYMBOL_brace_block = 244,              /* brace_block  */
1979
  YYSYMBOL_245_28 = 245,                   /* @28  */
1980
  YYSYMBOL_case_body = 246,                /* case_body  */
1981
  YYSYMBOL_cases = 247,                    /* cases  */
1982
  YYSYMBOL_opt_rescue = 248,               /* opt_rescue  */
1983
  YYSYMBOL_exc_list = 249,                 /* exc_list  */
1984
  YYSYMBOL_exc_var = 250,                  /* exc_var  */
1985
  YYSYMBOL_opt_ensure = 251,               /* opt_ensure  */
1986
  YYSYMBOL_literal = 252,                  /* literal  */
1987
  YYSYMBOL_string = 253,                   /* string  */
1988
  YYSYMBOL_string_fragment = 254,          /* string_fragment  */
1989
  YYSYMBOL_string_rep = 255,               /* string_rep  */
1990
  YYSYMBOL_string_interp = 256,            /* string_interp  */
1991
  YYSYMBOL_257_29 = 257,                   /* @29  */
1992
  YYSYMBOL_xstring = 258,                  /* xstring  */
1993
  YYSYMBOL_regexp = 259,                   /* regexp  */
1994
  YYSYMBOL_heredoc = 260,                  /* heredoc  */
1995
  YYSYMBOL_heredoc_bodies = 261,           /* heredoc_bodies  */
1996
  YYSYMBOL_heredoc_body = 262,             /* heredoc_body  */
1997
  YYSYMBOL_heredoc_string_rep = 263,       /* heredoc_string_rep  */
1998
  YYSYMBOL_heredoc_string_interp = 264,    /* heredoc_string_interp  */
1999
  YYSYMBOL_265_30 = 265,                   /* @30  */
2000
  YYSYMBOL_words = 266,                    /* words  */
2001
  YYSYMBOL_symbol = 267,                   /* symbol  */
2002
  YYSYMBOL_basic_symbol = 268,             /* basic_symbol  */
2003
  YYSYMBOL_sym = 269,                      /* sym  */
2004
  YYSYMBOL_symbols = 270,                  /* symbols  */
2005
  YYSYMBOL_numeric = 271,                  /* numeric  */
2006
  YYSYMBOL_variable = 272,                 /* variable  */
2007
  YYSYMBOL_var_lhs = 273,                  /* var_lhs  */
2008
  YYSYMBOL_var_ref = 274,                  /* var_ref  */
2009
  YYSYMBOL_backref = 275,                  /* backref  */
2010
  YYSYMBOL_superclass = 276,               /* superclass  */
2011
  YYSYMBOL_277_31 = 277,                   /* $@31  */
2012
  YYSYMBOL_f_opt_arglist_paren = 278,      /* f_opt_arglist_paren  */
2013
  YYSYMBOL_f_arglist_paren = 279,          /* f_arglist_paren  */
2014
  YYSYMBOL_f_arglist = 280,                /* f_arglist  */
2015
  YYSYMBOL_f_label = 281,                  /* f_label  */
2016
  YYSYMBOL_f_kw = 282,                     /* f_kw  */
2017
  YYSYMBOL_f_block_kw = 283,               /* f_block_kw  */
2018
  YYSYMBOL_f_block_kwarg = 284,            /* f_block_kwarg  */
2019
  YYSYMBOL_f_kwarg = 285,                  /* f_kwarg  */
2020
  YYSYMBOL_kwrest_mark = 286,              /* kwrest_mark  */
2021
  YYSYMBOL_f_kwrest = 287,                 /* f_kwrest  */
2022
  YYSYMBOL_args_tail = 288,                /* args_tail  */
2023
  YYSYMBOL_opt_args_tail = 289,            /* opt_args_tail  */
2024
  YYSYMBOL_f_args = 290,                   /* f_args  */
2025
  YYSYMBOL_f_bad_arg = 291,                /* f_bad_arg  */
2026
  YYSYMBOL_f_norm_arg = 292,               /* f_norm_arg  */
2027
  YYSYMBOL_f_arg_item = 293,               /* f_arg_item  */
2028
  YYSYMBOL_294_32 = 294,                   /* @32  */
2029
  YYSYMBOL_f_arg = 295,                    /* f_arg  */
2030
  YYSYMBOL_f_opt_asgn = 296,               /* f_opt_asgn  */
2031
  YYSYMBOL_f_opt = 297,                    /* f_opt  */
2032
  YYSYMBOL_f_block_opt = 298,              /* f_block_opt  */
2033
  YYSYMBOL_f_block_optarg = 299,           /* f_block_optarg  */
2034
  YYSYMBOL_f_optarg = 300,                 /* f_optarg  */
2035
  YYSYMBOL_restarg_mark = 301,             /* restarg_mark  */
2036
  YYSYMBOL_f_rest_arg = 302,               /* f_rest_arg  */
2037
  YYSYMBOL_blkarg_mark = 303,              /* blkarg_mark  */
2038
  YYSYMBOL_f_block_arg = 304,              /* f_block_arg  */
2039
  YYSYMBOL_opt_f_block_arg = 305,          /* opt_f_block_arg  */
2040
  YYSYMBOL_singleton = 306,                /* singleton  */
2041
  YYSYMBOL_307_33 = 307,                   /* $@33  */
2042
  YYSYMBOL_assoc_list = 308,               /* assoc_list  */
2043
  YYSYMBOL_assocs = 309,                   /* assocs  */
2044
  YYSYMBOL_assoc = 310,                    /* assoc  */
2045
  YYSYMBOL_operation = 311,                /* operation  */
2046
  YYSYMBOL_operation2 = 312,               /* operation2  */
2047
  YYSYMBOL_operation3 = 313,               /* operation3  */
2048
  YYSYMBOL_dot_or_colon = 314,             /* dot_or_colon  */
2049
  YYSYMBOL_call_op = 315,                  /* call_op  */
2050
  YYSYMBOL_call_op2 = 316,                 /* call_op2  */
2051
  YYSYMBOL_opt_terms = 317,                /* opt_terms  */
2052
  YYSYMBOL_opt_nl = 318,                   /* opt_nl  */
2053
  YYSYMBOL_rparen = 319,                   /* rparen  */
2054
  YYSYMBOL_trailer = 320,                  /* trailer  */
2055
  YYSYMBOL_term = 321,                     /* term  */
2056
  YYSYMBOL_nl = 322,                       /* nl  */
2057
  YYSYMBOL_terms = 323,                    /* terms  */
2058
  YYSYMBOL_none = 324                      /* none  */
2059
};
2060
typedef enum yysymbol_kind_t yysymbol_kind_t;
2061
2062
2063
2064
2065
#ifdef short
2066
# undef short
2067
#endif
2068
2069
/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
2070
   <limits.h> and (if available) <stdint.h> are included
2071
   so that the code can choose integer types of a good width.  */
2072
2073
#ifndef __PTRDIFF_MAX__
2074
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
2075
# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2076
#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
2077
#  define YY_STDINT_H
2078
# endif
2079
#endif
2080
2081
/* Narrow types that promote to a signed type and that can represent a
2082
   signed or unsigned integer of at least N bits.  In tables they can
2083
   save space and decrease cache pressure.  Promoting to a signed type
2084
   helps avoid bugs in integer arithmetic.  */
2085
2086
#ifdef __INT_LEAST8_MAX__
2087
typedef __INT_LEAST8_TYPE__ yytype_int8;
2088
#elif defined YY_STDINT_H
2089
typedef int_least8_t yytype_int8;
2090
#else
2091
typedef signed char yytype_int8;
2092
#endif
2093
2094
#ifdef __INT_LEAST16_MAX__
2095
typedef __INT_LEAST16_TYPE__ yytype_int16;
2096
#elif defined YY_STDINT_H
2097
typedef int_least16_t yytype_int16;
2098
#else
2099
typedef short yytype_int16;
2100
#endif
2101
2102
/* Work around bug in HP-UX 11.23, which defines these macros
2103
   incorrectly for preprocessor constants.  This workaround can likely
2104
   be removed in 2023, as HPE has promised support for HP-UX 11.23
2105
   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
2106
   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
2107
#ifdef __hpux
2108
# undef UINT_LEAST8_MAX
2109
# undef UINT_LEAST16_MAX
2110
# define UINT_LEAST8_MAX 255
2111
# define UINT_LEAST16_MAX 65535
2112
#endif
2113
2114
#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
2115
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
2116
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
2117
       && UINT_LEAST8_MAX <= INT_MAX)
2118
typedef uint_least8_t yytype_uint8;
2119
#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
2120
typedef unsigned char yytype_uint8;
2121
#else
2122
typedef short yytype_uint8;
2123
#endif
2124
2125
#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
2126
typedef __UINT_LEAST16_TYPE__ yytype_uint16;
2127
#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
2128
       && UINT_LEAST16_MAX <= INT_MAX)
2129
typedef uint_least16_t yytype_uint16;
2130
#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
2131
typedef unsigned short yytype_uint16;
2132
#else
2133
typedef int yytype_uint16;
2134
#endif
2135
2136
#ifndef YYPTRDIFF_T
2137
# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
2138
266
#  define YYPTRDIFF_T __PTRDIFF_TYPE__
2139
#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
2140
# elif defined PTRDIFF_MAX
2141
#  ifndef ptrdiff_t
2142
#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
2143
#  endif
2144
#  define YYPTRDIFF_T ptrdiff_t
2145
#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
2146
# else
2147
#  define YYPTRDIFF_T long
2148
#  define YYPTRDIFF_MAXIMUM LONG_MAX
2149
# endif
2150
#endif
2151
2152
#ifndef YYSIZE_T
2153
# ifdef __SIZE_TYPE__
2154
#  define YYSIZE_T __SIZE_TYPE__
2155
# elif defined size_t
2156
#  define YYSIZE_T size_t
2157
# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2158
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
2159
#  define YYSIZE_T size_t
2160
# else
2161
#  define YYSIZE_T unsigned
2162
# endif
2163
#endif
2164
2165
#define YYSIZE_MAXIMUM                                  \
2166
  YY_CAST (YYPTRDIFF_T,                                 \
2167
           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
2168
            ? YYPTRDIFF_MAXIMUM                         \
2169
            : YY_CAST (YYSIZE_T, -1)))
2170
2171
135
#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
2172
2173
2174
/* Stored state numbers (used for stacks). */
2175
typedef yytype_int16 yy_state_t;
2176
2177
/* State numbers in computations.  */
2178
typedef int yy_state_fast_t;
2179
2180
#ifndef YY_
2181
# if defined YYENABLE_NLS && YYENABLE_NLS
2182
#  if ENABLE_NLS
2183
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
2184
#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
2185
#  endif
2186
# endif
2187
# ifndef YY_
2188
0
#  define YY_(Msgid) Msgid
2189
# endif
2190
#endif
2191
2192
2193
#ifndef YY_ATTRIBUTE_PURE
2194
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
2195
#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
2196
# else
2197
#  define YY_ATTRIBUTE_PURE
2198
# endif
2199
#endif
2200
2201
#ifndef YY_ATTRIBUTE_UNUSED
2202
# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
2203
#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
2204
# else
2205
#  define YY_ATTRIBUTE_UNUSED
2206
# endif
2207
#endif
2208
2209
/* Suppress unused-variable warnings by "using" E.  */
2210
#if ! defined lint || defined __GNUC__
2211
721
# define YY_USE(E) ((void) (E))
2212
#else
2213
# define YY_USE(E) /* empty */
2214
#endif
2215
2216
/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
2217
#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
2218
# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
2219
#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
2220
    _Pragma ("GCC diagnostic push")                                     \
2221
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
2222
# else
2223
#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
2224
    _Pragma ("GCC diagnostic push")                                     \
2225
    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
2226
    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
2227
# endif
2228
# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
2229
    _Pragma ("GCC diagnostic pop")
2230
#else
2231
206
# define YY_INITIAL_VALUE(Value) Value
2232
#endif
2233
#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2234
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2235
# define YY_IGNORE_MAYBE_UNINITIALIZED_END
2236
#endif
2237
#ifndef YY_INITIAL_VALUE
2238
# define YY_INITIAL_VALUE(Value) /* Nothing. */
2239
#endif
2240
2241
#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
2242
# define YY_IGNORE_USELESS_CAST_BEGIN                          \
2243
    _Pragma ("GCC diagnostic push")                            \
2244
    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
2245
# define YY_IGNORE_USELESS_CAST_END            \
2246
    _Pragma ("GCC diagnostic pop")
2247
#endif
2248
#ifndef YY_IGNORE_USELESS_CAST_BEGIN
2249
# define YY_IGNORE_USELESS_CAST_BEGIN
2250
# define YY_IGNORE_USELESS_CAST_END
2251
#endif
2252
2253
2254
6.34M
#define YY_ASSERT(E) ((void) (0 && (E)))
2255
2256
#if 1
2257
2258
/* The parser invokes alloca or malloc; define the necessary symbols.  */
2259
2260
# ifdef YYSTACK_USE_ALLOCA
2261
#  if YYSTACK_USE_ALLOCA
2262
#   ifdef __GNUC__
2263
#    define YYSTACK_ALLOC __builtin_alloca
2264
#   elif defined __BUILTIN_VA_ARG_INCR
2265
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
2266
#   elif defined _AIX
2267
#    define YYSTACK_ALLOC __alloca
2268
#   elif defined _MSC_VER
2269
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
2270
#    define alloca _alloca
2271
#   else
2272
#    define YYSTACK_ALLOC alloca
2273
#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
2274
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
2275
      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
2276
#     ifndef EXIT_SUCCESS
2277
#      define EXIT_SUCCESS 0
2278
#     endif
2279
#    endif
2280
#   endif
2281
#  endif
2282
# endif
2283
2284
# ifdef YYSTACK_ALLOC
2285
   /* Pacify GCC's 'empty if-body' warning.  */
2286
15
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
2287
#  ifndef YYSTACK_ALLOC_MAXIMUM
2288
    /* The OS might guarantee only one guard page at the bottom of the stack,
2289
       and a page size can be as small as 4096 bytes.  So we cannot safely
2290
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
2291
       to allow for a few compiler-allocated temporary stack slots.  */
2292
0
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
2293
#  endif
2294
# else
2295
#  define YYSTACK_ALLOC YYMALLOC
2296
#  define YYSTACK_FREE YYFREE
2297
#  ifndef YYSTACK_ALLOC_MAXIMUM
2298
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2299
#  endif
2300
#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
2301
       && ! ((defined YYMALLOC || defined malloc) \
2302
             && (defined YYFREE || defined free)))
2303
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
2304
#   ifndef EXIT_SUCCESS
2305
#    define EXIT_SUCCESS 0
2306
#   endif
2307
#  endif
2308
#  ifndef YYMALLOC
2309
#   define YYMALLOC malloc
2310
#   if ! defined malloc && ! defined EXIT_SUCCESS
2311
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
2312
#   endif
2313
#  endif
2314
#  ifndef YYFREE
2315
#   define YYFREE free
2316
#   if ! defined free && ! defined EXIT_SUCCESS
2317
void free (void *); /* INFRINGES ON USER NAME SPACE */
2318
#   endif
2319
#  endif
2320
# endif
2321
#endif /* 1 */
2322
2323
#if (! defined yyoverflow \
2324
     && (! defined __cplusplus \
2325
         || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2326
             && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2327
2328
/* A type that is properly aligned for any stack member.  */
2329
union yyalloc
2330
{
2331
  yy_state_t yyss_alloc;
2332
  YYSTYPE yyvs_alloc;
2333
  YYLTYPE yyls_alloc;
2334
};
2335
2336
/* The size of the maximum gap between one aligned stack and the next.  */
2337
45
# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2338
2339
/* The size of an array large to enough to hold all stacks, each with
2340
   N elements.  */
2341
# define YYSTACK_BYTES(N) \
2342
     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2343
             + YYSIZEOF (YYLTYPE)) \
2344
      + 2 * YYSTACK_GAP_MAXIMUM)
2345
2346
# define YYCOPY_NEEDED 1
2347
2348
/* Relocate STACK from its old location to the new one.  The
2349
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
2350
   elements in the stack, and YYPTR gives the new location of the
2351
   stack.  Advance YYPTR to a properly aligned location for the next
2352
   stack.  */
2353
# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
2354
45
    do                                                                  \
2355
45
      {                                                                 \
2356
45
        YYPTRDIFF_T yynewbytes;                                         \
2357
45
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
2358
45
        Stack = &yyptr->Stack_alloc;                                    \
2359
45
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2360
45
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
2361
45
      }                                                                 \
2362
45
    while (0)
2363
2364
#endif
2365
2366
#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2367
/* Copy COUNT objects from SRC to DST.  The source and destination do
2368
   not overlap.  */
2369
# ifndef YYCOPY
2370
#  if defined __GNUC__ && 1 < __GNUC__
2371
#   define YYCOPY(Dst, Src, Count) \
2372
45
      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2373
#  else
2374
#   define YYCOPY(Dst, Src, Count)              \
2375
      do                                        \
2376
        {                                       \
2377
          YYPTRDIFF_T yyi;                      \
2378
          for (yyi = 0; yyi < (Count); yyi++)   \
2379
            (Dst)[yyi] = (Src)[yyi];            \
2380
        }                                       \
2381
      while (0)
2382
#  endif
2383
# endif
2384
#endif /* !YYCOPY_NEEDED */
2385
2386
/* YYFINAL -- State number of the termination state.  */
2387
6.34M
#define YYFINAL  106
2388
/* YYLAST -- Last index in YYTABLE.  */
2389
12.4M
#define YYLAST   13386
2390
2391
/* YYNTOKENS -- Number of terminals.  */
2392
4.64M
#define YYNTOKENS  149
2393
/* YYNNTS -- Number of nonterminals.  */
2394
#define YYNNTS  176
2395
/* YYNRULES -- Number of rules.  */
2396
#define YYNRULES  620
2397
/* YYNSTATES -- Number of states.  */
2398
#define YYNSTATES  1085
2399
2400
/* YYMAXUTOK -- Last valid token kind.  */
2401
4.14M
#define YYMAXUTOK   377
2402
2403
2404
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
2405
   as returned by yylex, with out-of-bounds checking.  */
2406
#define YYTRANSLATE(YYX)                                \
2407
4.14M
  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
2408
4.14M
   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
2409
4.14M
   : YYSYMBOL_YYUNDEF)
2410
2411
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
2412
   as returned by yylex.  */
2413
static const yytype_uint8 yytranslate[] =
2414
{
2415
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2416
     148,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2417
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2418
       2,     2,     2,   135,     2,     2,     2,   133,   128,     2,
2419
     144,   145,   131,   129,   142,   130,   147,   132,     2,     2,
2420
       2,     2,     2,     2,     2,     2,     2,     2,   123,   146,
2421
     125,   121,   124,   122,     2,     2,     2,     2,     2,     2,
2422
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2423
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2424
       2,   140,     2,   141,   127,     2,   143,     2,     2,     2,
2425
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2426
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2427
       2,     2,     2,   138,   126,   139,   136,     2,     2,     2,
2428
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2429
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2430
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2431
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2432
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2433
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2434
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2435
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2436
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2437
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2438
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2439
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
2440
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
2441
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
2442
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
2443
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
2444
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
2445
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
2446
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
2447
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
2448
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
2449
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
2450
      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
2451
     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
2452
     115,   116,   117,   118,   119,   120,   134,   137
2453
};
2454
2455
#if YYDEBUG
2456
/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
2457
static const yytype_int16 yyrline[] =
2458
{
2459
       0,  1636,  1636,  1636,  1647,  1653,  1657,  1662,  1666,  1672,
2460
    1674,  1673,  1687,  1714,  1720,  1724,  1729,  1733,  1739,  1739,
2461
    1743,  1747,  1751,  1755,  1759,  1763,  1767,  1772,  1773,  1777,
2462
    1781,  1785,  1789,  1795,  1798,  1802,  1806,  1810,  1814,  1818,
2463
    1823,  1827,  1836,  1845,  1854,  1863,  1870,  1871,  1875,  1879,
2464
    1880,  1884,  1888,  1892,  1896,  1900,  1910,  1909,  1924,  1933,
2465
    1934,  1937,  1938,  1945,  1944,  1959,  1963,  1968,  1972,  1977,
2466
    1981,  1986,  1990,  1994,  1998,  2002,  2008,  2012,  2018,  2019,
2467
    2025,  2029,  2033,  2037,  2041,  2045,  2049,  2053,  2057,  2061,
2468
    2067,  2068,  2074,  2078,  2084,  2088,  2094,  2098,  2102,  2106,
2469
    2110,  2114,  2120,  2126,  2133,  2137,  2141,  2145,  2149,  2153,
2470
    2159,  2165,  2170,  2176,  2180,  2183,  2187,  2191,  2198,  2199,
2471
    2200,  2201,  2206,  2213,  2214,  2217,  2221,  2221,  2227,  2228,
2472
    2229,  2230,  2231,  2232,  2233,  2234,  2235,  2236,  2237,  2238,
2473
    2239,  2240,  2241,  2242,  2243,  2244,  2245,  2246,  2247,  2248,
2474
    2249,  2250,  2251,  2252,  2253,  2254,  2255,  2256,  2259,  2259,
2475
    2259,  2260,  2260,  2261,  2261,  2261,  2262,  2262,  2262,  2262,
2476
    2263,  2263,  2263,  2264,  2264,  2264,  2265,  2265,  2265,  2265,
2477
    2266,  2266,  2266,  2266,  2267,  2267,  2267,  2267,  2268,  2268,
2478
    2268,  2268,  2269,  2269,  2269,  2269,  2270,  2270,  2273,  2277,
2479
    2281,  2285,  2289,  2293,  2297,  2302,  2307,  2312,  2316,  2320,
2480
    2324,  2328,  2332,  2336,  2340,  2344,  2348,  2352,  2356,  2360,
2481
    2364,  2368,  2372,  2376,  2380,  2384,  2388,  2392,  2396,  2400,
2482
    2404,  2408,  2412,  2416,  2420,  2424,  2428,  2432,  2436,  2440,
2483
    2444,  2448,  2452,  2456,  2460,  2469,  2478,  2487,  2496,  2502,
2484
    2503,  2508,  2512,  2519,  2523,  2530,  2534,  2543,  2560,  2561,
2485
    2564,  2565,  2566,  2571,  2576,  2583,  2589,  2594,  2599,  2604,
2486
    2611,  2611,  2622,  2626,  2632,  2636,  2642,  2645,  2651,  2655,
2487
    2660,  2665,  2669,  2675,  2680,  2684,  2690,  2691,  2692,  2693,
2488
    2694,  2695,  2696,  2697,  2702,  2701,  2713,  2717,  2712,  2722,
2489
    2722,  2726,  2730,  2734,  2738,  2743,  2748,  2752,  2756,  2760,
2490
    2764,  2768,  2769,  2775,  2782,  2774,  2795,  2803,  2811,  2811,
2491
    2811,  2818,  2818,  2818,  2825,  2831,  2836,  2838,  2835,  2847,
2492
    2845,  2863,  2868,  2861,  2885,  2883,  2899,  2909,  2920,  2924,
2493
    2928,  2932,  2938,  2945,  2946,  2947,  2950,  2951,  2954,  2955,
2494
    2963,  2964,  2970,  2974,  2977,  2981,  2985,  2989,  2994,  2998,
2495
    3002,  3006,  3012,  3011,  3021,  3025,  3029,  3033,  3039,  3044,
2496
    3049,  3053,  3057,  3061,  3065,  3069,  3073,  3077,  3081,  3085,
2497
    3089,  3093,  3097,  3101,  3105,  3111,  3116,  3123,  3123,  3127,
2498
    3132,  3139,  3143,  3149,  3150,  3153,  3158,  3161,  3165,  3171,
2499
    3175,  3182,  3181,  3198,  3208,  3212,  3217,  3224,  3228,  3232,
2500
    3236,  3240,  3244,  3248,  3252,  3256,  3263,  3262,  3277,  3276,
2501
    3292,  3300,  3309,  3312,  3319,  3322,  3326,  3327,  3330,  3334,
2502
    3337,  3341,  3344,  3345,  3346,  3347,  3350,  3351,  3357,  3358,
2503
    3359,  3363,  3376,  3377,  3383,  3388,  3387,  3397,  3401,  3407,
2504
    3411,  3424,  3428,  3434,  3437,  3438,  3441,  3447,  3453,  3454,
2505
    3457,  3464,  3463,  3476,  3480,  3494,  3498,  3510,  3517,  3524,
2506
    3525,  3526,  3527,  3528,  3532,  3538,  3542,  3552,  3553,  3554,
2507
    3558,  3564,  3568,  3572,  3576,  3580,  3586,  3590,  3596,  3600,
2508
    3604,  3608,  3612,  3616,  3620,  3628,  3635,  3641,  3642,  3646,
2509
    3650,  3649,  3666,  3667,  3670,  3676,  3680,  3686,  3687,  3691,
2510
    3695,  3701,  3705,  3711,  3717,  3724,  3730,  3737,  3741,  3747,
2511
    3751,  3757,  3758,  3761,  3765,  3771,  3775,  3779,  3783,  3789,
2512
    3794,  3799,  3803,  3807,  3811,  3815,  3819,  3823,  3827,  3831,
2513
    3835,  3839,  3843,  3847,  3851,  3856,  3862,  3867,  3872,  3877,
2514
    3882,  3889,  3893,  3900,  3905,  3904,  3916,  3920,  3926,  3934,
2515
    3942,  3950,  3954,  3960,  3964,  3970,  3971,  3974,  3979,  3986,
2516
    3987,  3990,  3994,  4000,  4004,  4010,  4015,  4015,  4040,  4041,
2517
    4047,  4052,  4058,  4064,  4069,  4073,  4078,  4083,  4093,  4098,
2518
    4104,  4105,  4106,  4109,  4110,  4111,  4112,  4115,  4116,  4117,
2519
    4120,  4121,  4124,  4128,  4134,  4135,  4141,  4142,  4145,  4146,
2520
    4149,  4152,  4153,  4154,  4157,  4158,  4161,  4166,  4169,  4170,
2521
    4174
2522
};
2523
#endif
2524
2525
/** Accessing symbol of state STATE.  */
2526
206
#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2527
2528
#if 1
2529
/* The user-facing name of the symbol whose (internal) number is
2530
   YYSYMBOL.  No bounds checking.  */
2531
static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2532
2533
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2534
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
2535
static const char *const yytname[] =
2536
{
2537
  "\"end of file\"", "error", "\"invalid token\"", "\"'class'\"",
2538
  "\"'module'\"", "\"'def'\"", "\"'begin'\"", "\"'if'\"", "\"'unless'\"",
2539
  "\"'while'\"", "\"'until'\"", "\"'for'\"", "\"'undef'\"", "\"'rescue'\"",
2540
  "\"'ensure'\"", "\"'end'\"", "\"'then'\"", "\"'elsif'\"", "\"'else'\"",
2541
  "\"'case'\"", "\"'when'\"", "\"'break'\"", "\"'next'\"", "\"'redo'\"",
2542
  "\"'retry'\"", "\"'in'\"", "\"'do'\"", "\"'do' for condition\"",
2543
  "\"'do' for block\"", "\"'do' for lambda\"", "\"'return'\"",
2544
  "\"'yield'\"", "\"'super'\"", "\"'self'\"", "\"'nil'\"", "\"'true'\"",
2545
  "\"'false'\"", "\"'and'\"", "\"'or'\"", "\"'not'\"", "\"'if' modifier\"",
2546
  "\"'unless' modifier\"", "\"'while' modifier\"", "\"'until' modifier\"",
2547
  "\"'rescue' modifier\"", "\"'alis'\"", "\"'BEGIN'\"", "\"'END'\"",
2548
  "\"'__LINE__'\"", "\"'__FILE__'\"", "\"'__ENCODING__'\"",
2549
  "\"local variable or method\"", "\"method\"", "\"global variable\"",
2550
  "\"instance variable\"", "\"constant\"", "\"class variable\"",
2551
  "\"label\"", "\"integer literal\"", "\"float literal\"",
2552
  "\"character literal\"", "tXSTRING", "tREGEXP", "tSTRING",
2553
  "tSTRING_PART", "tSTRING_MID", "tNTH_REF", "tBACK_REF", "tREGEXP_END",
2554
  "\"numbered parameter\"", "\"unary plus\"", "\"unary minus\"", "\"<=>\"",
2555
  "\"==\"", "\"===\"", "\"!=\"", "\">=\"", "\"<=\"", "\"&&\"", "\"||\"",
2556
  "\"=~\"", "\"!~\"", "\"..\"", "\"...\"", "tBDOT2", "tBDOT3", "tAREF",
2557
  "tASET", "\"<<\"", "\">>\"", "\"::\"", "tCOLON3", "tOP_ASGN", "\"=>\"",
2558
  "tLPAREN", "\"(\"", "\")\"", "\"[\"", "tLBRACE", "\"{\"", "\"*\"",
2559
  "tPOW", "\"**\"", "\"&\"", "\"->\"", "\"&.\"", "\"symbol\"",
2560
  "\"string literal\"", "tXSTRING_BEG", "tSTRING_DVAR", "tREGEXP_BEG",
2561
  "tWORDS_BEG", "tSYMBOLS_BEG", "tLAMBEG", "\"here document\"",
2562
  "tHEREDOC_END", "tLITERAL_DELIM", "tHD_LITERAL_DELIM", "tHD_STRING_PART",
2563
  "tHD_STRING_MID", "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'",
2564
  "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'",
2565
  "'~'", "tLAST_TOKEN", "'{'", "'}'", "'['", "']'", "','", "'`'", "'('",
2566
  "')'", "';'", "'.'", "'\\n'", "$accept", "$@1", "program",
2567
  "top_compstmt", "top_stmts", "top_stmt", "@2", "bodystmt", "compstmt",
2568
  "stmts", "$@3", "stmt", "command_asgn", "command_rhs", "expr",
2569
  "defn_head", "$@4", "defs_head", "expr_value", "command_call",
2570
  "block_command", "$@5", "cmd_brace_block", "command", "mlhs",
2571
  "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_list", "mlhs_post",
2572
  "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", "undef_list",
2573
  "$@6", "op", "reswords", "arg", "aref_args", "arg_rhs", "paren_args",
2574
  "opt_paren_args", "opt_call_args", "call_args", "@7", "command_args",
2575
  "block_arg", "opt_block_arg", "comma", "args", "mrhs", "primary", "@8",
2576
  "@9", "$@10", "$@11", "@12", "@13", "$@14", "$@15", "$@16", "$@17",
2577
  "$@18", "$@19", "@20", "@21", "@22", "@23", "primary_value", "then",
2578
  "do", "if_tail", "opt_else", "for_var", "f_margs", "$@24",
2579
  "block_args_tail", "opt_block_args_tail", "block_param",
2580
  "opt_block_param", "$@25", "block_param_def", "opt_bv_decl", "bv_decls",
2581
  "bvar", "f_larglist", "lambda_body", "@26", "do_block", "block_call",
2582
  "method_call", "@27", "brace_block", "@28", "case_body", "cases",
2583
  "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal", "string",
2584
  "string_fragment", "string_rep", "string_interp", "@29", "xstring",
2585
  "regexp", "heredoc", "heredoc_bodies", "heredoc_body",
2586
  "heredoc_string_rep", "heredoc_string_interp", "@30", "words", "symbol",
2587
  "basic_symbol", "sym", "symbols", "numeric", "variable", "var_lhs",
2588
  "var_ref", "backref", "superclass", "$@31", "f_opt_arglist_paren",
2589
  "f_arglist_paren", "f_arglist", "f_label", "f_kw", "f_block_kw",
2590
  "f_block_kwarg", "f_kwarg", "kwrest_mark", "f_kwrest", "args_tail",
2591
  "opt_args_tail", "f_args", "f_bad_arg", "f_norm_arg", "f_arg_item",
2592
  "@32", "f_arg", "f_opt_asgn", "f_opt", "f_block_opt", "f_block_optarg",
2593
  "f_optarg", "restarg_mark", "f_rest_arg", "blkarg_mark", "f_block_arg",
2594
  "opt_f_block_arg", "singleton", "$@33", "assoc_list", "assocs", "assoc",
2595
  "operation", "operation2", "operation3", "dot_or_colon", "call_op",
2596
  "call_op2", "opt_terms", "opt_nl", "rparen", "trailer", "term", "nl",
2597
  "terms", "none", YY_NULLPTR
2598
};
2599
2600
static const char *
2601
yysymbol_name (yysymbol_kind_t yysymbol)
2602
0
{
2603
0
  return yytname[yysymbol];
2604
0
}
2605
#endif
2606
2607
6.34M
#define YYPACT_NINF (-870)
2608
2609
#define yypact_value_is_default(Yyn) \
2610
6.34M
  ((Yyn) == YYPACT_NINF)
2611
2612
59.4k
#define YYTABLE_NINF (-621)
2613
2614
#define yytable_value_is_error(Yyn) \
2615
59.4k
  ((Yyn) == YYTABLE_NINF)
2616
2617
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2618
   STATE-NUM.  */
2619
static const yytype_int16 yypact[] =
2620
{
2621
    -870,  3957,   130,  8673, 10797, 11139,  6981,  -870, 10443, 10443,
2622
    -870,  -870, 10911,  8163,  6597,  8909,  8909,  -870,  -870,  8909,
2623
    4478,  1831,  -870,  -870,  -870,  -870,    19,  8163,  -870,    36,
2624
    -870,  -870,  -870,  7123,  4070,  -870,  -870,  7265,  -870,  -870,
2625
    -870,  -870,  -870,  -870,  -870,    89, 10561, 10561, 10561, 10561,
2626
     152,  5856,  1426,  9381,  9735,  8445,  -870,  7881,   422,   515,
2627
    1221,   920,  1245,  -870,    90, 10679, 10561,  -870,  1443,  -870,
2628
     988,  -870,   306,  1273,  1273,  -870,  -870,   138,    69,  -870,
2629
      74, 11025,  -870,   107,  2381,   735,   769,    47,    53,  -870,
2630
     399,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2631
     319,   119,  -870,   347,    98,  -870,  -870,  -870,  -870,  -870,
2632
    -870,   124,   124,    19,   743,   773,  -870, 10443,   120,  5975,
2633
     292,  1295,  1295,  -870,   147,  -870,   775,  -870,  -870,    98,
2634
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2635
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2636
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,    23,    51,
2637
      54,    87,  -870,  -870,  -870,  -870,  -870,  -870,    93,   102,
2638
     112,   145,  -870,   193,  -870,  -870,  -870,  -870,  -870,  -870,
2639
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2640
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2641
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,   200,
2642
    5034,   222,   306,  1273,  1273,   188,   134, 13191,   831,   218,
2643
     199,   224,   188, 10443, 10443,   852,   243,  -870,  -870,   960,
2644
     275,    79,   104,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2645
    -870,  -870,  8022,  -870,  -870,   167,  -870,  -870,  -870,  -870,
2646
    -870,  -870,  1443,  -870,   620,  -870,   310,  -870,  -870,  1443,
2647
    4206,   122, 10561, 10561, 10561, 10561,  -870, 13129,  -870,  -870,
2648
     195,   320,   195,  -870,  -870,  -870,  9027,  -870,  -870,  8909,
2649
    -870,  -870,  -870,  -870,  6597,  6835,  -870,   250,  6094,  -870,
2650
     987,   296, 13253, 13253,   425,  8791,  5856,   263,  1443,   988,
2651
    1443,   317,  -870,  8791,  1443,   281,  1129,  1129,  -870, 13129,
2652
     302,  1129,  -870,   389, 11253,   316,  1004,  1007,  1068,  1402,
2653
    -870,  -870,  -870,  -870,  -870,  1252,  -870,  -870,  -870,  -870,
2654
    -870,  -870,   666,  1255,  -870,  -870,  1021,  -870,  1242,  -870,
2655
    1317,  -870,  1320,   374,   378,  -870,  -870,  -870,  -870,  6359,
2656
   10443, 10443, 10443, 10443,  8791, 10443, 10443,    68,  -870,  -870,
2657
    -870,  -870,   424,  1443,  -870,  -870,  -870,  -870,  -870,  -870,
2658
    -870,  1589,   369,   381,  5034, 10561,  -870,   367,   465,   380,
2659
    -870,  1443,  -870,  -870,  -870,   392, 10561,  -870,   410,   509,
2660
     423,   518,  -870,  -870,   462,  5034,  -870,  -870,  9853,  -870,
2661
    5856,  8559,   444,  9853, 10561, 10561, 10561, 10561, 10561, 10561,
2662
   10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561,   539, 10561,
2663
   10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561, 10561,
2664
   10561,  3007,  -870,  8909,  -870,  3752,  -870,  -870, 12649,  -870,
2665
    -870,  -870,  -870, 10679, 10679,  -870,   503,  -870,   306,  -870,
2666
    1093,  -870,  -870,  -870,  -870,  -870,  -870, 11531,  8909, 11617,
2667
    5034, 10443,  -870,  -870,  -870,   595,   604,   225,   501,   505,
2668
    -870,  5180,   608, 10561, 11703,  8909, 11789, 10561, 10561,  5472,
2669
     308,   308,   106, 11875,  8909, 11961,  -870,   566,  -870,  6094,
2670
     310,  -870,  -870,  9971,   621,  -870, 10561, 10561, 13191, 13191,
2671
   13191, 10561,  -870,  -870,  9145,  -870, 10561,  -870,  9499,  6716,
2672
     493,  1443,   195,   195,  -870,  -870,   318,   499,  -870,  -870,
2673
    -870,  8163,  5591,   506, 11703, 11789, 10561,   988,  1443,  -870,
2674
    -870,  6478,   504,   988,  -870,  -870,  9617,  -870,  1443,  9735,
2675
    -870,  -870,  -870,  1093,    74, 11253,  -870, 11253, 12047,  8909,
2676
   12133,  2010,  -870,  -870,   507,  -870,  1345,  6094,   666,  -870,
2677
    -870,  -870,  -870,  -870,  -870,  -870, 10561, 10561,  -870,  -870,
2678
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2679
    1431,  1443,  1443,   513, 10679,   642, 13191,   605,  -870,  -870,
2680
    -870,    37,  -870,  -870,  1691,  -870, 13191,  2010,  -870,  -870,
2681
    1712,  -870,  -870, 10679,   644,    83, 10561,  -870, 12845,   195,
2682
    -870,  1443, 11253,   521,  -870,  -870,  -870,   616,   549,  3375,
2683
    -870,  -870,  1116,   307,  2135,  2135,  2135,  2135,  2029,  2029,
2684
    3438,  2505,  2135,  2135, 13253, 13253,  1521,  1521,  -870,   296,
2685
   13191,  2029,  2029,  1668,  1668,  1694,   237,   237,   296,   296,
2686
     296,  3634,  7621,  4750,  7739,  -870,   124,  -870,   530,   195,
2687
     432,  -870,   450,  -870,  -870,  4342,  -870,  -870,  2280,    83,
2688
      83,  -870,  2882,  -870,  -870,  -870,  -870,  -870,  1443, 10443,
2689
    5034,   874,   654,  -870,   124,   536,   124,   671,   318,  8304,
2690
    -870, 10089,   674,  -870, 10561, 10561,   278,  -870,  7383,  7502,
2691
     556,   309,   327,   674,  -870,  -870,  -870,  -870,    64,    73,
2692
     558,   111,   121, 10443,  8163,   572,   690, 13191,    81,  -870,
2693
   13191, 13191, 13191,   287, 10561, 13129,  -870,   195, 13191,  -870,
2694
    -870,  -870,  -870,  9263,  9499,  -870,  -870,  -870,   576,  -870,
2695
    -870,    22,   988,  1443,  1129,   444,  -870,   874,   654,   575,
2696
    1031,  1156,  -870,   113,  2010,  -870,   579,  -870,   296,   296,
2697
    -870,  -870,   912,  1443,   578,  -870,  -870,  1929,   681, 12721,
2698
    -870,   679,   424,  -870,   380,  -870,  1443,  -870,  -870,   586,
2699
     589,   606,  -870,   607,   679,   606,   710, 12783,  -870,  -870,
2700
    2010,  5034,  -870,  -870, 12916, 10207,  -870,  -870, 11253,  8791,
2701
   10679, 10561, 12219,  8909, 12305,   561, 10679, 10679,  -870,   503,
2702
     551,  9145, 10679, 10679,  -870,   503,    53,   138,  5034,  6094,
2703
      83,  -870,  1443,   740,  -870,  -870,  -870,  -870, 12845,  -870,
2704
     665,  -870,  5737,   746,  -870, 10443,   749,  -870, 10561, 10561,
2705
     379, 10561, 10561,   753,  6240,  6240,   128,   308,  -870,  -870,
2706
    -870, 10325,  5326, 13191,  -870,  6716,   195,  -870,  -870,  -870,
2707
     161,   625,  1449,  5034,  6094,  -870,  -870,  -870,   619,  -870,
2708
    1484,  1443, 10561, 10561,  -870,  -870,  2010,  -870,  1712,  -870,
2709
    1712,  -870,  1712,  -870,  -870, 10561, 10561,  -870,  -870,  -870,
2710
   11367,  -870,   632,   380,   637, 11367,  -870,   640,   645,  -870,
2711
     774, 10561, 12987,  -870,  -870, 13191,  4614,  4886,   647,   407,
2712
     463, 10561, 10561,  -870,  -870,  -870,  -870,  -870, 10679,  -870,
2713
    -870,  -870,  -870,  -870,  -870,  -870,   778,   656,  6094,  5034,
2714
    -870,  -870, 11481,   188,  -870,  -870,  6240,  -870,  -870,   188,
2715
    -870, 10561,  -870,   782,   790,  -870, 13191,   168,  -870,  9499,
2716
    -870,  1615,   791,   672,  1457,  1457,  1063,  -870, 13191, 13191,
2717
     606,   675,   606,   606, 13191, 13191,   687,   688,   763,  1119,
2718
     605,  -870,  -870,  1421,  -870,  1119,  2010,  -870,  1712,  -870,
2719
    -870, 13058,   478, 13191, 13191,  -870,  -870,  -870,  -870,   691,
2720
     805,   776,  -870,  1127,  1007,  1068,  5034,  -870,  5180,  -870,
2721
    -870,  6240,  -870,  -870,  -870,  -870,   693,  -870,  -870,  -870,
2722
    -870,   696,   696,  1457,   697,  -870,  1712,  -870,  -870,  -870,
2723
    -870,  -870,  -870, 12391,  -870,   380,   605,  -870,  -870,   701,
2724
     705,   708,  -870,   720,   708,  -870,  -870,  1093, 12477,  8909,
2725
   12563,   604,   278,   851,  1615,   287,  1457,   696,  1457,   606,
2726
     723,   733,  -870,  2010,  -870,  1712,  -870,  1712,  -870,  1712,
2727
    -870,  -870,   874,   654,   745,   299,   535,  -870,  -870,  -870,
2728
    -870,   696,  -870,   708,   751,   708,   708,   161,  -870,  1712,
2729
    -870,  -870,  -870,   708,  -870
2730
};
2731
2732
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
2733
   Performed when YYTABLE does not specify something else to do.  Zero
2734
   means the default is an error.  */
2735
static const yytype_int16 yydefact[] =
2736
{
2737
       2,     0,     0,     0,     0,     0,     0,   294,     0,     0,
2738
     318,   321,     0,     0,   606,   338,   339,   340,   341,   306,
2739
     270,   270,   491,   490,   492,   493,   608,     0,    10,     0,
2740
     495,   494,   496,   481,   592,   483,   482,   485,   484,   477,
2741
     478,   438,   439,   497,   498,   489,     0,     0,     0,     0,
2742
       0,     0,   296,   620,   620,    88,   313,     0,     0,     0,
2743
       0,     0,     0,   453,     0,     0,     0,     3,   606,     6,
2744
       9,    27,    33,   545,   545,    49,    60,    59,     0,    76,
2745
       0,    80,    90,     0,    54,   248,     0,    61,   311,   286,
2746
     287,   436,   288,   289,   290,   434,   433,   465,   435,   432,
2747
     488,     0,   291,   292,   270,     5,     1,     8,   338,   339,
2748
     306,   620,   414,     0,   113,   114,   489,     0,     0,     0,
2749
       0,   545,   545,   116,   499,   342,     0,   488,   292,     0,
2750
     334,   168,   178,   169,   165,   194,   195,   196,   197,   176,
2751
     191,   184,   174,   173,   189,   172,   171,   167,   192,   166,
2752
     179,   183,   185,   177,   170,   186,   193,   188,   187,   180,
2753
     190,   175,   164,   182,   181,   163,   161,   162,   158,   159,
2754
     160,   118,   120,   119,   153,   154,   131,   132,   133,   140,
2755
     137,   139,   134,   135,   155,   156,   141,   142,   146,   149,
2756
     150,   136,   138,   128,   129,   130,   143,   144,   145,   147,
2757
     148,   151,   152,   157,   576,    55,   121,   122,   575,     0,
2758
       0,     0,    58,   545,   545,     0,     0,    54,     0,   488,
2759
       0,   292,     0,     0,     0,   112,     0,   353,   352,     0,
2760
       0,   488,   292,   187,   180,   190,   175,   158,   159,   160,
2761
     118,   119,     0,   123,   125,    20,   124,   456,   461,   460,
2762
     614,   616,   606,   617,     0,   458,     0,   618,   615,   607,
2763
     590,   489,   278,   589,   273,     0,   265,   277,    74,   269,
2764
     620,   436,   620,   580,    75,    73,   620,   259,   307,     0,
2765
      72,   258,   413,    71,   606,     0,    18,     0,     0,   221,
2766
       0,   222,   209,   212,   303,     0,     0,     0,   606,    15,
2767
     606,    78,    14,     0,   606,     0,   611,   611,   249,     0,
2768
       0,   611,   578,     0,     0,    86,     0,    96,   103,   545,
2769
     471,   470,   472,   473,   467,     0,   469,   468,   440,   445,
2770
     444,   447,     0,     0,   442,   449,     0,   451,     0,   463,
2771
       0,   475,     0,   479,   480,    53,   236,   237,     4,   607,
2772
       0,     0,     0,     0,     0,     0,     0,   552,   548,   547,
2773
     546,   549,   550,     0,   554,   566,   521,   522,   570,   569,
2774
     565,   545,     0,   507,     0,   514,   519,   620,   524,   620,
2775
     544,     0,   551,   553,   556,   530,     0,   563,   530,   568,
2776
     530,   572,   528,   503,     0,     0,   401,   403,     0,    92,
2777
       0,    84,    81,     0,     0,     0,     0,     0,     0,     0,
2778
       0,     0,     0,     0,   208,   211,     0,     0,     0,     0,
2779
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2780
       0,     0,   603,   620,   602,     0,   605,   604,     0,   418,
2781
     416,   312,   437,     0,     0,   407,    65,   310,   331,   113,
2782
     114,   115,   479,   480,   507,   500,   329,     0,   620,     0,
2783
       0,     0,   601,   600,    56,     0,   620,   303,     0,     0,
2784
     344,     0,   343,     0,     0,   620,     0,     0,     0,     0,
2785
       0,     0,   303,     0,   620,     0,   326,     0,   126,     0,
2786
       0,   457,   459,     0,     0,   619,   584,   585,   279,   588,
2787
     272,     0,   608,   266,     0,   275,     0,   267,     0,   606,
2788
       0,   606,   620,   620,   260,   271,   606,     0,   309,    52,
2789
     609,     0,     0,     0,     0,     0,     0,    17,   606,   301,
2790
      13,   607,    77,   297,   300,   304,   613,   250,   612,   613,
2791
     252,   305,   579,   102,    94,     0,    89,     0,     0,   620,
2792
       0,   545,   314,   398,   530,   474,     0,     0,   448,   454,
2793
     441,   443,   450,   452,   464,   476,     0,     0,     7,    21,
2794
      22,    23,    24,    25,    50,    51,   511,   558,   512,   510,
2795
       0,   606,   606,   530,     0,     0,   513,     0,   526,   574,
2796
     523,     0,   527,   508,     0,   537,   559,     0,   540,   567,
2797
       0,   542,   571,     0,     0,   620,   278,    28,    30,     0,
2798
      31,   606,     0,    82,    93,    48,    34,    46,     0,   253,
2799
     198,    29,     0,   292,   226,   231,   232,   233,   228,   230,
2800
     240,   241,   234,   235,   207,   210,   238,   239,    32,   218,
2801
     608,   227,   229,   223,   224,   225,   213,   214,   215,   216,
2802
     217,   593,   598,   594,   599,   412,   270,   410,     0,   620,
2803
     593,   595,   594,   596,   411,   270,   593,   594,   270,   620,
2804
     620,    35,   253,   199,    45,   206,    63,    66,     0,     0,
2805
       0,   113,   114,   117,     0,     0,   620,     0,   606,     0,
2806
     295,   620,   620,   424,     0,     0,   620,   345,   597,   302,
2807
       0,   593,   594,   620,   347,   319,   346,   322,   597,   302,
2808
       0,   593,   594,     0,     0,     0,     0,   277,     0,   325,
2809
     583,   586,   582,   276,   281,   280,   274,   620,   587,   581,
2810
     257,   255,   261,   262,   264,   308,   610,    19,     0,    26,
2811
     205,    79,    16,   606,   611,    95,    87,    99,   101,     0,
2812
      98,   100,   608,     0,     0,   466,     0,   455,   219,   220,
2813
     552,   550,   361,   606,   354,   506,   504,     0,    41,   244,
2814
     336,     0,     0,   520,   620,   573,     0,   529,   557,   530,
2815
     530,   530,   564,   530,   552,   530,    43,   246,   337,   389,
2816
     387,     0,   386,   385,   285,     0,    91,    85,     0,     0,
2817
       0,     0,     0,   620,     0,     0,     0,     0,   409,    69,
2818
     415,   262,     0,     0,   408,    67,   404,    62,     0,     0,
2819
     620,   332,     0,     0,   415,   335,   577,    57,   425,   426,
2820
     620,   427,     0,   620,   350,     0,     0,   348,     0,     0,
2821
     415,     0,     0,     0,     0,     0,   415,     0,   127,   462,
2822
     324,     0,     0,   282,   268,   606,   620,    11,   298,   251,
2823
      97,     0,   391,     0,     0,   315,   446,   362,   359,   555,
2824
       0,   606,     0,     0,   525,   509,     0,   533,     0,   535,
2825
       0,   541,     0,   538,   543,     0,     0,   384,   608,   608,
2826
     516,   517,   620,   620,   369,     0,   561,   369,   369,   367,
2827
       0,   281,   283,    83,    47,   254,   593,   594,     0,   593,
2828
     594,     0,     0,    40,   203,    39,   204,    70,     0,    37,
2829
     201,    38,   202,    68,   405,   406,     0,     0,     0,     0,
2830
     501,   330,     0,     0,   429,   351,     0,    12,   431,     0,
2831
     316,     0,   317,     0,     0,   327,   280,   620,   256,   263,
2832
     397,     0,     0,     0,     0,     0,   357,   505,    42,   245,
2833
     530,   530,   530,   530,    44,   247,     0,     0,     0,   515,
2834
       0,   365,   366,   369,   377,   560,     0,   380,     0,   382,
2835
     402,   284,   415,   243,   242,    36,   200,   419,   417,     0,
2836
       0,     0,   428,     0,   104,   111,     0,   430,     0,   320,
2837
     323,     0,   421,   422,   420,   395,   608,   393,   396,   400,
2838
     399,   363,   360,     0,   355,   534,     0,   531,   536,   539,
2839
     390,   388,   303,     0,   518,   620,     0,   368,   375,   369,
2840
     369,   369,   562,   369,   369,    64,   333,   110,     0,   620,
2841
       0,   620,   620,     0,     0,   392,     0,   358,     0,   530,
2842
     597,   302,   364,     0,   372,     0,   374,     0,   381,     0,
2843
     378,   383,   107,   109,     0,   593,   594,   423,   349,   328,
2844
     394,   356,   532,   369,   369,   369,   369,   105,   373,     0,
2845
     370,   376,   379,   369,   371
2846
};
2847
2848
/* YYPGOTO[NTERM-NUM].  */
2849
static const yytype_int16 yypgoto[] =
2850
{
2851
    -870,  -870,  -870,   372,  -870,    43,  -870,  -299,   301,  -870,
2852
    -870,    46,  -165,  -305,    34,  1724,  -870,  1884,    21,   -50,
2853
    -870,  -870,  -483,   -12,   885,  -205,    15,   -27,  -285,  -477,
2854
     -47,  2818,   -59,   893,     5,   -18,  -870,  -870,    38,  -870,
2855
    1204,  -870,   184,    56,  -252,  -325,    96,  -870,    10,  -420,
2856
    -231,    14,    52,  -358,    28,  -870,  -870,  -870,  -870,  -870,
2857
    -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,  -870,
2858
    -870,     9,  -188,  -444,  -141,  -623,  -870,  -870,  -870,   115,
2859
     258,  -870,  -583,  -870,  -870,  -464,  -870,  -142,  -870,  -870,
2860
    -870,    91,  -870,  -870,  -870,   -87,  -870,  -470,  -870,  -131,
2861
    -870,  -870,  -870,  -870,  -870,   103,    41,  -160,  -870,  -870,
2862
    -870,  -870,  -870,  -277,  -870,   670,  -870,  -870,  -870,   -11,
2863
    -870,  -870,  -870,  2545,  2999,   913,  2385,  -870,  -870,    60,
2864
     512,    25,   135,   341,   -40,  -870,  -870,  -870,   117,   730,
2865
    -185,  -226,  -824,  -706,  -513,  -870,   186,  -751,  -547,  -869,
2866
     -42,  -536,  -870,   252,  -870,   -44,  -343,  -870,  -870,  -870,
2867
     101,  -445,   600,  -353,  -870,  -870,   -60,  -870,    24,   -20,
2868
     492,  -250,   508,  -280,   -46,    -1
2869
};
2870
2871
/* YYDEFGOTO[NTERM-NUM].  */
2872
static const yytype_int16 yydefgoto[] =
2873
{
2874
       0,     1,     2,    67,    68,    69,   287,   465,   466,   298,
2875
     521,   299,    71,   616,    72,   213,   689,   214,   215,    75,
2876
      76,   820,   677,    77,    78,   300,    79,    80,    81,   546,
2877
      82,   216,   123,   124,   243,   244,   245,   714,   654,   207,
2878
      84,   305,   620,   655,   278,   510,   511,   279,   280,   269,
2879
     503,   539,   659,   610,    85,   210,   303,   743,   304,   319,
2880
     753,   223,   844,   224,   845,   713,  1001,   680,   678,   929,
2881
     460,   290,   471,   705,   836,   837,   230,   763,   954,  1027,
2882
     974,   888,   791,   889,   792,   861,  1006,  1007,   552,   865,
2883
     605,   397,    87,    88,   670,   447,   669,   494,  1004,   692,
2884
     830,   933,   937,    89,    90,    91,   333,   334,   557,    92,
2885
      93,    94,   558,   253,   254,   255,   489,    95,    96,    97,
2886
     327,    98,    99,   219,   220,   102,   221,   456,   679,   372,
2887
     373,   374,   375,   376,   891,   892,   377,   378,   379,   777,
2888
     595,   381,   382,   383,   384,   580,   385,   386,   387,   896,
2889
     897,   388,   389,   390,   391,   392,   588,   209,   461,   310,
2890
     513,   273,   129,   684,   657,   464,   459,   438,   517,   862,
2891
     518,   537,   257,   258,   259,   302
2892
};
2893
2894
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
2895
   positive, shift that token.  If negative, reduce the rule whose
2896
   number is the opposite.  If YYTABLE_NINF, syntax error.  */
2897
static const yytype_int16 yytable[] =
2898
{
2899
     105,   441,   246,   266,   266,   520,   285,   266,   315,   286,
2900
      86,   205,    86,   126,   126,   345,   246,   218,   218,   281,
2901
     716,   229,   349,   218,   218,   218,   435,   437,   218,   545,
2902
     222,   283,   125,   125,   479,   252,   592,   707,   256,   895,
2903
     125,   507,   212,   212,   206,   621,   107,    70,   212,    70,
2904
     782,   206,   308,   312,   402,   559,   868,   540,   779,   451,
2905
      86,   542,   326,   729,   316,   206,   301,   270,   270,   833,
2906
     746,   270,   393,   393,   218,   585,   277,   282,   656,   439,
2907
     843,   778,   665,   125,   726,   668,   818,   819,   726,  -107,
2908
     316,   528,   348,   553,   729,   206,   604,   470,  -109,   395,
2909
     336,   338,   340,   342,  -104,   306,   686,  1032,   658,   125,
2910
     281,   268,   274,  -491,   446,   275,   272,   272,   271,   271,
2911
     272,   656,   271,   665,   439,   576,   218,  1008,    86,  -111,
2912
     106,  -110,   686,   685,   394,   797,  -106,   436,   671,   674,
2913
     368,  -490,   863,   -77,  -492,   582,  -108,   395,   343,   344,
2914
     700,   448,   432,  -105,   307,   311,   271,   271,   476,   710,
2915
     445,   687,   789,   284,   -91,   369,   396,   277,   282,   485,
2916
    -491,   449,   686,   561,   288,   450,   561,  -493,   561,   497,
2917
     561,  -487,   561,  -495,  1032,   445,   832,  -415,   493,   577,
2918
     398,   440,  -494,   442,   434,   611,   247,   686,  -490,   248,
2919
     249,  -492,  -496,   598,   470,   601,   -99,   294,  -593,   790,
2920
    -112,   443,   393,   393,  -487,  -101,   399,  -594,   779,    86,
2921
    1008,   -96,   895,   502,   749,   895,   864,   250,   403,   251,
2922
     525,   779,   218,   218,  -493,  -481,   440,   928,   615,   395,
2923
    -495,   778,   276,  -112,   480,   481,  -103,   326,  -102,  -494,
2924
    1014,  -415,   531,   -98,   778,   473,   550,   212,   212,  -496,
2925
     538,   538,   545,  -100,   266,   538,  -415,   266,   276,   505,
2926
     -97,   505,   455,   468,   469,   514,   490,   467,   615,   615,
2927
     206,   757,   507,  -485,   504,   218,   508,   544,   218,   729,
2928
     462,   477,  -481,   218,   218,   835,   832,    86,   482,  -415,
2929
     486,  -415,   895,   247,    86,    86,   248,   249,  -415,   488,
2930
    -486,   301,    86,   726,   726,  -106,   478,   526,   516,   519,
2931
     536,   903,   530,   316,  1002,   752,   917,   545,   512,   782,
2932
     493,   270,   923,   829,   250,   704,   251,   502,   419,  -104,
2933
    -485,   527,   125,   355,   356,  -111,  -110,   463,   607,   533,
2934
     452,   453,   297,   617,   613,   355,   356,   778,    86,   218,
2935
     218,   218,   218,    86,   218,   218,   556,   778,   428,   429,
2936
     430,   569,   570,   571,   572,   515,   589,   506,   589,   271,
2937
     272,   823,   271,    86,   212,   212,   212,   212,   522,   574,
2938
     575,   726,   568,   617,   617,    70,   561,   419,   683,   444,
2939
     573,   841,   247,   945,    86,   248,   249,   218,   529,    86,
2940
     316,  -486,   622,   814,  -106,   301,   816,  -106,  -106,   842,
2941
     297,   266,   535,   247,   966,   967,   248,   249,  -111,   125,
2942
    -106,   874,   514,   247,   814,   251,   248,   249,   -76,   444,
2943
    -104,   541,   218,   520,   543,  -106,   266,  -106,  -108,   656,
2944
     609,   665,   622,   622,   250,   609,   251,   514,   547,    41,
2945
     778,   -96,    42,   266,   250,   693,   251,   218,  -111,    86,
2946
     218,   941,   266,   663,   514,   566,   663,  1003,   908,   567,
2947
      86,   578,   723,   514,   218,   328,   329,   330,    86,  -103,
2948
     584,   664,   900,   218,   859,   688,   854,   663,    86,   812,
2949
    -105,   913,  -502,   737,   729,   554,    58,   919,   921,   587,
2950
     246,   505,   505,   545,   663,   664,   590,   526,   745,   926,
2951
     544,   105,   591,   663,   812,   520,   733,   734,  -106,   726,
2952
     852,    86,   664,   778,   594,   732,   271,   266,   331,   332,
2953
      86,   664,   813,   775,   778,   718,  -110,   775,   514,   971,
2954
     972,  -108,   597,  -106,   316,   813,   316,   583,   218,   206,
2955
     599,   271,   804,   663,   952,   600,    86,  -102,    70,   602,
2956
     918,  -108,   768,   125,   -98,   125,   335,   742,   271,   329,
2957
     330,   664,   520,   603,  -108,   544,   614,   271,   663,   523,
2958
     638,   786,  -100,   218,   877,   879,   881,   297,   883,  -105,
2959
     884,   104,   676,   104,   793,   727,   664,   271,   104,   104,
2960
     690,   271,   218,   985,   104,   104,   104,   691,   911,   104,
2961
     805,   316,   694,   795,   697,   854,   695,   673,   675,   555,
2962
     990,   331,   332,   454,   454,   615,   719,   744,   731,   271,
2963
     125,   615,   271,   918,   736,   739,   -91,   615,   615,   754,
2964
    -108,   104,   271,  -108,  -108,   767,   771,   770,   505,   788,
2965
     799,   673,   675,   798,   281,   104,   809,   281,   793,   793,
2966
     800,   810,  -105,   811,   772,   815,   247,   824,   817,   248,
2967
     249,  -108,  1052,  -108,   912,   281,   825,   686,   218,    86,
2968
     831,   834,   832,   -97,   827,   834,   848,   840,   538,   846,
2969
     822,   297,   834,   246,   774,   850,   366,   367,   368,   251,
2970
     740,   849,   808,   212,  1064,   857,   860,   104,   866,   104,
2971
     870,   277,   218,   472,   277,   872,   505,   206,   876,   924,
2972
     472,   878,   851,   369,   847,   491,   576,   554,   248,   249,
2973
     808,   508,   277,   609,  -302,   996,   899,   212,   880,   882,
2974
     617,   998,   206,   615,   885,   931,   617,   915,   932,  -302,
2975
     936,   955,   617,   617,   940,   520,   764,   495,   942,  -590,
2976
     950,   544,   696,   589,   970,  1015,  1017,  1018,  1019,   973,
2977
     703,   247,   976,   781,   248,   249,   785,   978,   982,   980,
2978
     715,   266,   532,   987,  -302,   988,   534,   999,  -594,  -591,
2979
      86,  -302,   514,   380,   380,  1000,  1009,   316,    86,   622,
2980
     104,  1010,   218,  1020,  1021,   622,   218,  1016,  1022,   793,
2981
    1036,   622,   622,   104,   104,  -342,   125,    86,    86,   934,
2982
    1035,  1037,   938,  -481,   856,  1044,   271,   271,  1046,  1048,
2983
    -342,    86,   663,  1053,   218,   904,   780,  1055,  -481,   783,
2984
    1057,   380,   380,    86,    86,   505,   939,   495,   756,   431,
2985
     664,    86,  1059,  -485,  1072,   457,  1069,  -593,   617,   212,
2986
     949,   579,    86,    86,   432,  -342,   104,  -594,  -485,   104,
2987
     432,  -590,  -342,  -481,   104,   104,  1077,  -590,   104,   593,
2988
    -481,   589,   589,  1079,   738,   104,   104,   227,   130,   969,
2989
    -597,  1068,  1070,   104,   975,   887,   271,   893,   925,   433,
2990
    1067,  -591,   856,  -485,   271,   458,   434,  -591,   125,   208,
2991
    -485,   474,   434,   125,   492,   890,   775,   622,   773,   899,
2992
    1024,  1029,   899,  1040,   899,     0,   432,    86,    86,     0,
2993
       0,   993,  -489,   380,   380,    86,   834,     0,     0,   104,
2994
     104,   104,   104,   104,   104,   104,   104,  -489,     0,     0,
2995
     125,     0,     0,   760,  -597,   358,   359,   360,   361,     0,
2996
       0,   475,     0,     0,   104,     0,   894,     0,   434,  -597,
2997
       0,   761,   899,   339,   329,   330,  1045,     0,   706,   706,
2998
     914,   916,  -489,     0,     0,   104,   920,   922,   104,  -489,
2999
     104,   730,     0,   104,     0,    86,   780,    86,   735,   899,
3000
      86,   899,  -597,   899,  -597,   899,     0,     0,  -593,   780,
3001
     741,  -597,   914,   916,   589,   920,   922,   266,   350,   351,
3002
     352,   353,   354,   104,     0,   899,   331,   332,   514,   495,
3003
     693,   834,   898,   104,   104,     0,   495,     0,   218,   380,
3004
     483,     0,   271,     0,   867,     0,     0,  -593,   104,     0,
3005
     104,   104,   960,     0,   962,   432,     0,     0,   963,     0,
3006
       0,   104,     0,   765,   766,   104,     0,   524,   663,   104,
3007
       0,     0,   562,     0,   104,   329,   330,  1025,     0,   104,
3008
     893,     0,   432,   893,   548,   893,   664,  -488,     0,     0,
3009
     484,   380,   986,   796,     0,   890,     0,   434,   890,   432,
3010
       0,   890,  -488,   890,   760,     0,   358,   359,   360,   361,
3011
     927,  -593,   104,     0,     0,   986,     0,   475,   961,     0,
3012
       0,   104,   761,   935,   434,     0,  -593,   331,   332,     0,
3013
    1011,  1012,   271,   893,   549,   943,   944,  -488,     0,   104,
3014
       0,   434,     0,   947,  -488,   977,   979,   104,  -292,     0,
3015
       0,   890,  1031,     0,  1034,   953,     0,     0,     0,  -593,
3016
     893,  -593,   893,  -292,   893,  -593,   893,     0,  -593,     0,
3017
     826,     0,  -594,  -303,   104,     0,   821,     0,   890,     0,
3018
     890,     0,   890,     0,   890,     0,   893,     0,  -303,  1047,
3019
       0,     0,  1049,   104,     0,  1013,   802,     0,  -292,  1023,
3020
       0,     0,   217,   217,   890,  -292,     0,  1038,   217,   267,
3021
     267,   432,     0,   267,   432,  1030,   472,     0,  1033,   989,
3022
       0,  1028,   432,  -303,  1071,   858,     0,   997,     0,  1073,
3023
    -303,  1075,     0,     0,   247,  1076,  -594,   248,   249,     0,
3024
     289,   291,   292,   293,     0,   869,   803,   267,   309,   458,
3025
       0,  -594,     0,   434,     0,  1083,   434,  1039,     0,   346,
3026
     347,   502,     0,     0,   434,   250,     0,   251,     0,   104,
3027
     104,   380,     0,   337,   875,   329,   330,  1054,  1056,  1058,
3028
       0,  1060,  1061,     0,  -594,     0,  -594,  1041,     0,  1042,
3029
    -594,     0,  1043,  -594,   563,  1074,   329,   330,   341,   329,
3030
     330,     0,     0,   104,     0,   555,   329,   330,   560,   329,
3031
     330,   217,     0,     0,   357,     0,   358,   359,   360,   361,
3032
     930,  1078,  1080,  1081,  1082,     0,     0,   331,   332,     0,
3033
       0,  1084,   362,     0,     0,     0,   357,   948,   358,   359,
3034
     360,   361,     0,     0,     0,   706,   363,     0,   331,   332,
3035
       0,   331,   332,   957,   362,     0,     0,   364,   331,   332,
3036
       0,   331,   332,   365,   366,   367,   368,     0,   363,     0,
3037
     564,   329,   330,   565,   329,   330,     0,     0,     0,   364,
3038
       0,   104,     0,     0,  -620,   365,   366,   367,   368,   104,
3039
     104,   369,     0,   104,   370,     0,   104,   104,   755,   329,
3040
     330,     0,   104,   104,     0,     0,     0,   371,   104,   104,
3041
       0,     0,     0,   369,     0,     0,   370,   217,   217,     0,
3042
       0,     0,   104,   331,   332,   104,   331,   332,     0,   371,
3043
       0,   472,     0,     0,   104,   104,     0,   472,     0,     0,
3044
       0,     0,   104,   357,     0,   358,   359,   360,   361,     0,
3045
       0,   331,   332,   104,   104,     0,   498,   499,   500,   346,
3046
       0,   362,   357,     0,   358,   359,   360,   361,     0,     0,
3047
     267,     0,   760,   267,   358,   359,   360,   361,   217,   217,
3048
     362,     0,     0,     0,     0,     0,   364,     0,     0,     0,
3049
     761,     0,   365,   366,   367,   368,     0,     0,   760,     0,
3050
     358,   359,   360,   361,     0,   364,     0,     0,   104,     0,
3051
       0,   365,   366,   367,   368,   364,   761,     0,   104,   104,
3052
     369,   762,     0,   370,     0,   760,   104,   358,   359,   360,
3053
     361,  -299,     0,     0,  -299,  -299,   551,     0,     0,   369,
3054
       0,   364,   370,   761,   217,   217,   217,   217,   247,   217,
3055
     217,   248,   249,  1026,   247,     0,     0,   248,   249,     0,
3056
       0,  -299,  -299,     0,  -299,     0,     0,     0,   364,   586,
3057
       0,     0,     0,     0,   956,     0,     0,     0,     0,   250,
3058
     596,   251,     0,     0,     0,   951,   104,   251,   104,     0,
3059
       0,   104,   608,     0,     0,     0,     0,   619,   624,   625,
3060
     626,   627,   628,   629,   630,   631,   632,   633,   634,   635,
3061
     636,   637,   419,   639,   640,   641,   642,   643,   644,   645,
3062
     646,   647,   648,   649,   650,     0,     0,   267,     0,   104,
3063
     357,     0,   358,   359,   360,   361,     0,   672,   672,     0,
3064
     426,   427,   428,   429,   430,     0,     0,     0,   362,     0,
3065
       0,     0,   267,     0,     0,   217,  1005,     0,   358,   359,
3066
     360,   361,     0,     0,   581,     0,     0,   672,     0,   267,
3067
       0,   672,   672,   364,   761,     0,     0,     0,   267,   365,
3068
     366,   367,   368,     0,     0,     0,     0,   717,     0,     0,
3069
     720,   721,     0,     0,     0,   722,     0,     0,   725,     0,
3070
     728,     0,   309,   293,     0,     0,     0,   369,     0,     0,
3071
     370,     0,     0,     0,     0,    73,     0,    73,   121,   121,
3072
     672,     0,     0,     0,     0,     0,   121,     0,     0,     0,
3073
     725,     0,   357,   309,   358,   359,   360,   361,     0,     0,
3074
       0,     0,     0,   267,     0,     0,   416,   417,     0,     0,
3075
     362,     0,     0,   784,     0,   358,   359,   360,   361,   419,
3076
     758,   759,     0,     0,     0,    73,   776,     0,     0,   121,
3077
       0,   362,   416,   417,     0,   364,     0,     0,   769,     0,
3078
       0,   365,   366,   367,   368,   419,   425,   426,   427,   428,
3079
     429,   430,     0,     0,     0,   121,   364,   787,     0,     0,
3080
     794,     0,     0,   366,   367,   368,     0,     0,     0,   369,
3081
       0,     0,   370,   426,   427,   428,   429,   430,     0,     0,
3082
       0,  -414,     0,     0,     0,     0,     0,     0,     0,     0,
3083
     369,     0,     0,    73,  -414,  -414,  -414,  -414,  -414,  -414,
3084
       0,  -414,     0,     0,     0,     0,     0,  -414,  -414,  -414,
3085
       0,     0,     0,     0,     0,     0,     0,     0,  -414,  -414,
3086
       0,  -414,  -414,  -414,  -414,  -414,     0,     0,     0,     0,
3087
       0,     0,     0,   217,     0,    74,     0,    74,   122,   122,
3088
       0,     0,     0,     0,     0,   828,   122,     0,   769,   787,
3089
       0,     0,     0,  -414,  -414,  -414,  -414,  -414,  -414,  -414,
3090
    -414,  -414,  -414,  -414,  -414,     0,     0,   217,     0,  -414,
3091
    -414,  -414,     0,     0,  -414,     0,     0,     0,   853,     0,
3092
    -414,     0,  -414,     0,    73,    74,  -414,   725,   309,   122,
3093
       0,     0,     0,     0,     0,     0,  -414,     0,     0,  -414,
3094
    -414,     0,     0,  -414,     0,  -414,  -414,  -414,  -414,  -414,
3095
    -414,  -414,  -414,  -414,  -414,   122,     0,     0,     0,  -414,
3096
    -414,  -414,  -414,  -414,     0,   276,  -414,  -414,  -414,  -414,
3097
     357,     0,   358,   359,   360,   361,     0,     0,     0,     0,
3098
       0,     0,     0,     0,     0,     0,     0,     0,   362,   902,
3099
       0,     0,     0,    74,   672,   905,     0,   267,     0,     0,
3100
     672,   672,    73,     0,   871,   725,   672,   672,     0,    73,
3101
      73,     0,     0,   364,     0,     0,     0,    73,     0,   365,
3102
     366,   367,   368,     0,     0,     0,     0,     0,   121,   217,
3103
       0,     0,   672,   672,     0,   672,   672,     0,     0,     0,
3104
       0,     0,     0,     0,     0,   946,     0,   369,     0,   293,
3105
     370,   357,     0,   358,   359,   360,   361,     0,     0,     0,
3106
       0,     0,     0,    73,     0,     0,   958,   959,    73,   362,
3107
       0,     0,     0,     0,     0,     0,     0,     0,     0,   964,
3108
     965,     0,     0,     0,    74,     0,     0,     0,    73,     0,
3109
       0,     0,     0,     0,   364,   981,     0,     0,     0,     0,
3110
     365,   366,   367,   368,     0,   983,   984,   416,   417,    73,
3111
       0,     0,   672,     0,    73,   121,     0,    73,     0,     0,
3112
     419,     0,     0,     0,     0,     0,     0,     0,   369,     0,
3113
       0,   370,     0,     0,     0,   672,     0,     0,     0,     0,
3114
       0,     0,     0,   309,     0,   423,   424,   425,   426,   427,
3115
     428,   429,   430,     0,     0,     0,     0,    73,    73,     0,
3116
       0,     0,    74,     0,     0,     0,     0,     0,     0,    74,
3117
      74,     0,     0,     0,    73,     0,     0,    74,     0,     0,
3118
       0,     0,     0,     0,     0,    73,     0,     0,   122,     0,
3119
       0,     0,     0,    73,     0,     0,     0,  -621,  -621,  -621,
3120
    -621,   408,   409,    73,     0,  -621,  -621,     0,     0,     0,
3121
       0,     0,     0,   416,   417,     0,     0,     0,     0,     0,
3122
       0,     0,     0,    74,     0,     0,   419,     0,    74,     0,
3123
       0,     0,     0,   267,     0,     0,    73,     0,     0,     0,
3124
       0,     0,     0,     0,     0,    73,     0,     0,    74,   421,
3125
     422,   423,   424,   425,   426,   427,   428,   429,   430,   121,
3126
       0,   121,     0,     0,     0,     0,     0,     0,     0,    74,
3127
    -620,    73,     0,     0,    74,   122,     0,    74,     0,     0,
3128
       0,     0,     0,  -620,  -620,  -620,  -620,  -620,  -620,     0,
3129
    -620,     0,     0,     0,     0,     0,  -620,  -620,     0,     0,
3130
       0,     0,     0,     0,     0,     0,     0,  -620,  -620,     0,
3131
    -620,  -620,  -620,  -620,  -620,     0,     0,    74,    74,     0,
3132
       0,     0,     0,     0,     0,     0,   121,     0,     0,     0,
3133
       0,     0,     0,     0,    74,     0,     0,     0,     0,     0,
3134
       0,     0,     0,     0,     0,    74,     0,     0,     0,     0,
3135
       0,     0,     0,    74,     0,     0,     0,     0,     0,     0,
3136
    -620,     0,     0,    74,     0,     0,     0,     0,     0,     0,
3137
       0,     0,     0,     0,     0,  -620,   103,     0,   103,   128,
3138
     128,     0,     0,     0,     0,  -620,     0,   232,  -620,  -620,
3139
       0,     0,     0,     0,    73,     0,    74,     0,     0,     0,
3140
       0,     0,     0,     0,     0,    74,     0,     0,  -620,  -620,
3141
       0,     0,     0,     0,   276,  -620,  -620,  -620,  -620,   122,
3142
       0,   122,     0,     0,     0,     0,   103,     0,     0,     0,
3143
     318,    74,     0,     0,     0,     0,     0,     0,     0,     0,
3144
       0,     0,     0,   404,   405,   406,   407,   408,   409,   410,
3145
     411,   412,   413,   414,   415,     0,   318,     0,     0,   416,
3146
     417,     0,     0,     0,   418,     0,     0,     0,     0,     0,
3147
       0,     0,   419,     0,     0,     0,     0,     0,     0,     0,
3148
       0,     0,     0,     0,     0,     0,   122,     0,     0,     0,
3149
       0,     0,     0,   420,   103,   421,   422,   423,   424,   425,
3150
     426,   427,   428,   429,   430,    73,     0,     0,     0,     0,
3151
       0,     0,   121,    73,    73,     0,     0,     0,     0,     0,
3152
      73,     0,     0,     0,     0,     0,    73,    73,     0,     0,
3153
       0,     0,    73,    73,     0,     0,   100,     0,   100,   127,
3154
     127,   127,     0,     0,     0,     0,    73,   231,     0,     0,
3155
       0,     0,     0,     0,    74,     0,     0,     0,    73,    73,
3156
       0,     0,     0,     0,     0,     0,    73,   404,   405,   406,
3157
     407,   408,   409,   410,     0,   412,   413,    73,    73,     0,
3158
       0,     0,     0,   416,   417,   103,   100,     0,     0,     0,
3159
     317,     0,     0,     0,     0,     0,   419,     0,     0,     0,
3160
       0,     0,     0,     0,   121,     0,     0,     0,     0,   121,
3161
       0,     0,     0,     0,     0,     0,   317,     0,     0,   421,
3162
     422,   423,   424,   425,   426,   427,   428,   429,   430,     0,
3163
       0,     0,    73,     0,     0,     0,     0,     0,     0,     0,
3164
       0,     0,    73,    73,     0,     0,   121,     0,     0,     0,
3165
      73,     0,     0,     0,   100,     0,     0,     0,     0,     0,
3166
       0,     0,     0,   103,     0,    74,     0,     0,     0,     0,
3167
     103,   103,   122,    74,    74,     0,     0,     0,   103,     0,
3168
      74,     0,     0,     0,     0,     0,    74,    74,     0,   318,
3169
       0,     0,    74,    74,     0,     0,     0,     0,     0,     0,
3170
       0,     0,     0,     0,     0,     0,    74,     0,     0,     0,
3171
      73,     0,    73,     0,     0,    73,     0,     0,    74,    74,
3172
       0,     0,     0,     0,   103,     0,    74,     0,     0,   103,
3173
       0,     0,     0,     0,     0,     0,     0,    74,    74,     0,
3174
       0,     0,     0,     0,     0,   100,     0,     0,     0,   103,
3175
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3176
       0,     0,     0,     0,   122,     0,     0,     0,     0,   122,
3177
     103,     0,     0,     0,     0,   103,   318,     0,   623,     0,
3178
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3179
       0,     0,    74,     0,     0,     0,     0,     0,     0,     0,
3180
       0,     0,    74,    74,     0,     0,   122,     0,     0,    83,
3181
      74,    83,     0,     0,     0,     0,     0,     0,   623,   623,
3182
     228,     0,     0,   100,     0,     0,     0,     0,     0,     0,
3183
     100,   100,     0,     0,     0,   103,     0,     0,   100,     0,
3184
       0,     0,     0,     0,     0,     0,   103,     0,     0,   317,
3185
       0,     0,     0,     0,   103,     0,     0,     0,     0,    83,
3186
       0,     0,     0,     0,   103,     0,     0,     0,     0,     0,
3187
      74,     0,    74,     0,     0,    74,     0,     0,     0,     0,
3188
       0,     0,     0,     0,   100,     0,     0,     0,     0,   100,
3189
       0,     0,     0,     0,     0,     0,     0,   103,     0,     0,
3190
       0,     0,     0,     0,     0,     0,   103,     0,     0,   100,
3191
       0,     0,     0,     0,     0,     0,   801,     0,     0,     0,
3192
     318,     0,   318,     0,     0,     0,     0,    83,     0,     0,
3193
     100,     0,   103,     0,     0,   100,   317,     0,     0,     0,
3194
       0,     0,     0,     0,   404,   405,   406,   407,   408,   409,
3195
     410,   411,   412,   413,   414,   415,     0,     0,     0,     0,
3196
     416,   417,     0,     0,     0,     0,     0,     0,     0,     0,
3197
       0,     0,     0,   419,     0,     0,     0,     0,     0,     0,
3198
       0,     0,     0,     0,     0,     0,     0,   318,     0,     0,
3199
     101,     0,   101,     0,   420,   100,   421,   422,   423,   424,
3200
     425,   426,   427,   428,   429,   430,   100,     0,     0,     0,
3201
       0,     0,     0,     0,   100,     0,     0,     0,    83,     0,
3202
       0,     0,     0,     0,   100,     0,     0,     0,     0,     0,
3203
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3204
     101,     0,     0,     0,     0,     0,     0,     0,   651,   652,
3205
       0,     0,   653,     0,     0,   103,     0,   100,     0,     0,
3206
       0,     0,     0,     0,     0,     0,   100,   174,   175,   176,
3207
     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
3208
     317,     0,   317,   184,   185,   186,   187,     0,     0,     0,
3209
       0,     0,   100,     0,     0,     0,    83,   188,   189,   190,
3210
       0,     0,     0,    83,    83,     0,     0,     0,   101,     0,
3211
       0,    83,     0,     0,     0,     0,     0,     0,     0,     0,
3212
       0,   191,   192,   193,   194,   195,   196,   197,   198,   199,
3213
     200,     0,   201,   202,     0,     0,     0,     0,     0,     0,
3214
     203,   276,     0,     0,     0,     0,     0,   317,     0,     0,
3215
       0,     0,     0,     0,     0,     0,     0,    83,     0,     0,
3216
       0,     0,    83,     0,     0,     0,   103,     0,     0,     0,
3217
       0,     0,     0,   318,   103,   623,     0,     0,     0,     0,
3218
       0,   623,    83,     0,     0,     0,     0,   623,   623,     0,
3219
       0,     0,     0,   103,   103,     0,     0,     0,     0,   101,
3220
       0,     0,     0,    83,     0,     0,     0,   103,    83,     0,
3221
       0,   618,     0,     0,     0,   100,     0,     0,     0,   103,
3222
     103,     0,     0,     0,     0,     0,     0,   103,     0,     0,
3223
       0,     0,     0,     0,     0,     0,     0,     0,   103,   103,
3224
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3225
       0,   618,   618,     0,     0,     0,     0,     0,     0,     0,
3226
       0,     0,     0,     0,     0,   128,     0,     0,    83,     0,
3227
     128,     0,     0,     0,     0,     0,     0,   101,     0,    83,
3228
       0,     0,     0,     0,   101,   101,     0,    83,     0,     0,
3229
       0,     0,   101,   623,     0,     0,     0,    83,     0,     0,
3230
       0,     0,     0,   103,   103,     0,     0,   995,     0,     0,
3231
       0,   103,     0,     0,     0,     0,     0,     0,     0,     0,
3232
       0,     0,     0,     0,     0,     0,   100,     0,     0,     0,
3233
      83,     0,     0,   317,   100,     0,     0,     0,   101,    83,
3234
       0,     0,     0,   101,     0,     0,     0,     0,     0,     0,
3235
       0,     0,     0,   100,   100,     0,     0,     0,     0,     0,
3236
       0,     0,     0,   101,     0,    83,     0,   100,     0,     0,
3237
       0,   103,     0,   103,     0,     0,   103,     0,     0,   100,
3238
     100,     0,     0,     0,   101,     0,     0,   100,     0,   101,
3239
       0,     0,   101,     0,     0,     0,     0,     0,   100,   100,
3240
       0,     0,     0,     0,     0,     0,     0,     0,     0,   801,
3241
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3242
       0,     0,     0,     0,     0,   127,     0,     0,     0,     0,
3243
     127,     0,   101,   101,     0,     0,     0,   404,   405,   406,
3244
     407,   408,   409,   410,   411,   412,   413,   414,   415,   101,
3245
       0,     0,     0,   416,   417,     0,     0,     0,     0,     0,
3246
     101,     0,     0,   100,   100,     0,   419,   994,   101,     0,
3247
       0,   100,     0,     0,     0,     0,     0,     0,   101,     0,
3248
       0,     0,     0,     0,     0,     0,     0,   420,    83,   421,
3249
     422,   423,   424,   425,   426,   427,   428,   429,   430,     0,
3250
     404,   405,   406,   407,   408,   409,     0,  -277,   412,   413,
3251
       0,   101,     0,     0,     0,     0,   416,   417,     0,     0,
3252
     101,     0,     0,     0,     0,     0,     0,     0,     0,   419,
3253
       0,   100,     0,   100,     0,     0,   100,     0,     0,     0,
3254
       0,     0,     0,     0,     0,     0,   101,     0,     0,     0,
3255
       0,     0,   421,   422,   423,   424,   425,   426,   427,   428,
3256
     429,   430,     0,     0,     0,     0,     0,     0,     0,     0,
3257
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3258
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3259
       0,     0,     0,     0,     0,     0,     0,     0,     0,    83,
3260
       0,     0,     0,     0,     0,     0,     0,    83,   618,     0,
3261
       0,     0,     0,     0,   618,     0,     0,     0,     0,     0,
3262
     618,   618,     0,     0,  -597,     0,    83,    83,     0,     0,
3263
       0,     0,     0,     0,     0,     0,     0,  -597,  -597,  -597,
3264
      83,  -597,  -597,     0,  -597,     0,     0,     0,     0,     0,
3265
    -597,     0,    83,    83,     0,     0,     0,     0,     0,     0,
3266
      83,  -597,  -597,     0,  -597,  -597,  -597,  -597,  -597,   101,
3267
       0,    83,    83,     0,     0,     0,     0,     0,     0,     0,
3268
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3269
       0,     0,     0,     0,     0,     0,  -597,  -597,  -597,  -597,
3270
    -597,  -597,  -597,  -597,  -597,  -597,  -597,  -597,     0,     0,
3271
       0,     0,  -597,  -597,  -597,     0,   806,  -597,     0,     0,
3272
       0,     0,     0,     0,     0,  -597,   618,     0,     0,  -597,
3273
       0,     0,     0,     0,     0,     0,    83,    83,     0,  -597,
3274
     992,     0,  -597,  -597,    83,  -107,  -597,     0,  -597,  -597,
3275
    -597,  -597,  -597,  -597,  -597,  -597,  -597,  -597,     0,     0,
3276
       0,     0,  -597,  -597,  -597,     0,   -99,     0,     0,  -597,
3277
    -597,  -597,  -597,     0,     0,     0,     0,     0,     0,     0,
3278
     101,     0,     0,     0,     0,     0,     0,     0,   101,   101,
3279
       0,     0,     0,   660,   661,   101,     0,   662,     0,     0,
3280
       0,   101,   101,     0,    83,     0,    83,   101,   101,    83,
3281
       0,     0,   174,   175,   176,   177,   178,   179,   180,   181,
3282
       0,   101,   182,   183,     0,     0,     0,     0,   184,   185,
3283
     186,   187,     0,   101,   101,     0,     0,     0,     0,     0,
3284
       0,   101,   188,   189,   190,     0,     0,     0,     0,     0,
3285
       0,     0,   101,   101,     0,     0,     0,     0,     0,     0,
3286
       0,     0,     0,     0,     0,     0,   191,   192,   193,   194,
3287
     195,   196,   197,   198,   199,   200,     0,   201,   202,     0,
3288
       0,     0,     0,     0,     0,   203,   276,     0,     0,     0,
3289
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3290
       0,     0,     0,     0,     0,     0,     0,   101,     0,     0,
3291
       0,     0,     0,     0,     0,     0,     0,   101,   101,     0,
3292
       0,     0,     0,     0,     0,   101,     0,     0,     0,     0,
3293
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3294
       0,     0,     0,     0,     0,     0,     0,  -620,     3,     0,
3295
       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
3296
       0,     0,     0,     0,     0,     0,    14,     0,    15,    16,
3297
      17,    18,     0,     0,     0,     0,     0,    19,    20,    21,
3298
      22,    23,    24,    25,     0,   101,    26,   101,     0,     0,
3299
     101,     0,    27,    28,    29,    30,    31,    32,    33,    34,
3300
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3301
      42,     0,     0,    43,    44,     0,    45,    46,    47,     0,
3302
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3303
       0,    48,    49,     0,     0,     0,     0,     0,    50,     0,
3304
       0,    51,    52,     0,    53,    54,     0,    55,     0,     0,
3305
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3306
    -293,    63,  -620,     0,     0,  -620,  -620,     0,     0,     0,
3307
       0,     0,     0,  -293,  -293,  -293,  -293,  -293,  -293,     0,
3308
    -293,    64,    65,    66,     0,     0,     0,  -293,  -293,  -293,
3309
       0,     0,     0,  -620,     0,  -620,     0,  -293,  -293,     0,
3310
    -293,  -293,  -293,  -293,  -293,     0,     0,     0,     0,     0,
3311
       0,     0,     0,     0,     0,     0,     0,  -293,     0,     0,
3312
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3313
       0,     0,  -293,  -293,  -293,  -293,  -293,  -293,  -293,  -293,
3314
    -293,  -293,  -293,  -293,     0,     0,     0,     0,  -293,  -293,
3315
    -293,     0,     0,  -293,     0,     0,     0,     0,     0,  -293,
3316
       0,  -293,     0,     0,     0,  -293,     0,     0,     0,     0,
3317
       0,     0,     0,  -293,     0,  -293,     0,     0,  -293,  -293,
3318
       0,     0,  -293,  -293,  -293,  -293,  -293,  -293,  -293,  -293,
3319
    -293,  -293,  -293,  -293,     0,     0,  -481,     0,     0,  -293,
3320
    -293,  -293,  -293,     0,     0,  -293,  -293,  -293,  -293,  -481,
3321
    -481,  -481,  -481,  -481,  -481,     0,  -481,     0,     0,     0,
3322
       0,     0,     0,  -481,  -481,     0,     0,     0,     0,     0,
3323
       0,     0,     0,  -481,  -481,     0,  -481,  -481,  -481,  -481,
3324
    -481,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3325
       0,     0,     0,   496,     0,     0,     0,     0,     0,     0,
3326
       0,     0,     0,     0,     0,     0,     0,     0,  -481,  -481,
3327
    -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,
3328
       0,     0,     0,     0,  -481,  -481,  -481,     0,  -481,  -481,
3329
       0,     0,     0,     0,     0,  -481,     0,  -481,     0,     0,
3330
       0,  -481,     0,     0,     0,     0,     0,     0,     0,     0,
3331
       0,  -481,     0,     0,  -481,  -481,     0,  -481,  -481,     0,
3332
    -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,
3333
       0,     0,  -620,     0,     0,  -481,  -481,  -481,  -481,     0,
3334
       0,  -481,  -481,  -481,  -481,  -620,  -620,  -620,  -620,  -620,
3335
    -620,     0,  -620,     0,     0,     0,     0,     0,  -620,  -620,
3336
    -620,     0,     0,     0,     0,     0,     0,     0,     0,  -620,
3337
    -620,     0,  -620,  -620,  -620,  -620,  -620,     0,     0,     0,
3338
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3339
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3340
       0,     0,     0,     0,  -620,  -620,  -620,  -620,  -620,  -620,
3341
    -620,  -620,  -620,  -620,  -620,  -620,     0,     0,     0,     0,
3342
    -620,  -620,  -620,     0,     0,  -620,     0,     0,     0,     0,
3343
       0,  -620,     0,  -620,     0,     0,     0,  -620,     0,     0,
3344
       0,     0,     0,     0,     0,     0,     0,  -620,     0,     0,
3345
    -620,  -620,     0,     0,  -620,     0,  -620,  -620,  -620,  -620,
3346
    -620,  -620,  -620,  -620,  -620,  -620,     0,     0,  -620,     0,
3347
    -620,  -620,  -620,  -620,  -620,     0,   276,  -620,  -620,  -620,
3348
    -620,  -620,  -620,  -620,  -620,  -620,  -620,     0,  -620,     0,
3349
       0,     0,     0,     0,     0,  -620,  -620,     0,     0,     0,
3350
       0,     0,     0,     0,     0,  -620,  -620,     0,  -620,  -620,
3351
    -620,  -620,  -620,     0,     0,     0,     0,     0,     0,     0,
3352
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3353
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3354
    -620,  -620,  -620,  -620,  -620,  -620,  -620,  -620,  -620,  -620,
3355
    -620,  -620,     0,     0,     0,     0,  -620,  -620,  -620,     0,
3356
       0,  -620,     0,     0,     0,     0,     0,  -620,     0,  -620,
3357
       0,     0,     0,  -620,     0,     0,     0,     0,     0,     0,
3358
       0,     0,     0,  -620,     0,     0,  -620,  -620,     0,     0,
3359
    -620,     0,  -620,  -620,  -620,  -620,  -620,  -620,  -620,  -620,
3360
    -620,  -620,     0,     0,  -597,     0,     0,  -620,  -620,  -620,
3361
    -620,     0,   276,  -620,  -620,  -620,  -620,  -597,  -597,  -597,
3362
       0,  -597,  -597,     0,  -597,     0,     0,     0,     0,     0,
3363
    -597,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3364
       0,  -597,  -597,     0,  -597,  -597,  -597,  -597,  -597,     0,
3365
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3366
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3367
       0,     0,     0,     0,     0,     0,  -597,  -597,  -597,  -597,
3368
    -597,  -597,  -597,  -597,  -597,  -597,  -597,  -597,     0,     0,
3369
       0,     0,  -597,  -597,  -597,     0,   806,  -597,     0,     0,
3370
       0,     0,     0,     0,     0,  -597,     0,     0,     0,  -597,
3371
       0,     0,     0,     0,     0,     0,     0,     0,     0,  -597,
3372
       0,     0,  -597,  -597,     0,  -107,  -597,     0,  -597,  -597,
3373
    -597,  -597,  -597,  -597,  -597,  -597,  -597,  -597,     0,     0,
3374
    -302,     0,  -597,  -597,  -597,     0,  -597,     0,     0,  -597,
3375
    -597,  -597,  -597,  -302,  -302,  -302,     0,  -302,  -302,     0,
3376
    -302,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3377
       0,     0,     0,     0,     0,     0,     0,  -302,  -302,     0,
3378
    -302,  -302,  -302,  -302,  -302,     0,     0,     0,     0,     0,
3379
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3380
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3381
       0,     0,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
3382
    -302,  -302,  -302,  -302,     0,     0,     0,     0,  -302,  -302,
3383
    -302,     0,   807,  -302,     0,     0,     0,     0,     0,     0,
3384
       0,  -302,     0,     0,     0,  -302,     0,     0,     0,     0,
3385
       0,     0,     0,     0,     0,  -302,     0,     0,  -302,  -302,
3386
       0,  -109,  -302,     0,  -302,  -302,  -302,  -302,  -302,  -302,
3387
    -302,  -302,  -302,  -302,     0,     0,  -302,     0,     0,  -302,
3388
    -302,     0,  -101,     0,     0,  -302,  -302,  -302,  -302,  -302,
3389
    -302,  -302,     0,  -302,  -302,     0,  -302,     0,     0,     0,
3390
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3391
       0,     0,     0,  -302,  -302,     0,  -302,  -302,  -302,  -302,
3392
    -302,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3393
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3394
       0,     0,     0,     0,     0,     0,     0,     0,  -302,  -302,
3395
    -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
3396
       0,     0,     0,     0,  -302,  -302,  -302,     0,   807,  -302,
3397
       0,     0,     0,     0,     0,     0,     0,  -302,     0,     0,
3398
       0,  -302,     0,     0,     0,     0,     0,     0,     0,     0,
3399
       0,  -302,     0,     0,  -302,  -302,     0,  -109,  -302,     0,
3400
    -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,  -302,
3401
       0,     0,     0,     0,     0,  -302,  -302,     0,  -302,     0,
3402
       0,  -302,  -302,  -302,  -302,   295,     0,     4,     5,     6,
3403
       7,     8,     9,    10,    11,    12,    13,  -620,  -620,  -620,
3404
       0,     0,  -620,    14,     0,    15,    16,    17,    18,     0,
3405
       0,     0,     0,     0,    19,    20,    21,    22,    23,    24,
3406
      25,     0,     0,    26,     0,     0,     0,     0,     0,    27,
3407
       0,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3408
      38,     0,    39,    40,    41,     0,     0,    42,     0,     0,
3409
      43,    44,     0,    45,    46,    47,     0,     0,     0,     0,
3410
       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
3411
       0,     0,     0,     0,     0,    50,     0,     0,    51,    52,
3412
       0,    53,    54,     0,    55,     0,     0,     0,    56,     0,
3413
      57,    58,    59,     0,    60,    61,    62,     0,    63,  -620,
3414
       0,     0,  -620,  -620,     0,     0,     0,     0,     0,     0,
3415
       0,     0,     0,     0,     0,     0,     0,     0,    64,    65,
3416
      66,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3417
    -620,   295,  -620,     4,     5,     6,     7,     8,     9,    10,
3418
      11,    12,    13,     0,     0,  -620,     0,  -620,  -620,    14,
3419
       0,    15,    16,    17,    18,     0,     0,     0,     0,     0,
3420
      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
3421
       0,     0,     0,     0,     0,    27,     0,    29,    30,    31,
3422
      32,    33,    34,    35,    36,    37,    38,     0,    39,    40,
3423
      41,     0,     0,    42,     0,     0,    43,    44,     0,    45,
3424
      46,    47,     0,     0,     0,     0,     0,     0,     0,     0,
3425
       0,     0,     0,     0,    48,    49,     0,     0,     0,     0,
3426
       0,    50,     0,     0,    51,    52,     0,    53,    54,     0,
3427
      55,     0,     0,     0,    56,     0,    57,    58,    59,     0,
3428
      60,    61,    62,     0,    63,  -620,     0,     0,  -620,  -620,
3429
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3430
       0,     0,     0,     0,    64,    65,    66,     0,     0,     0,
3431
       0,     0,     0,     0,     0,     0,  -620,   295,  -620,     4,
3432
       5,     6,     7,     8,     9,    10,    11,    12,    13,     0,
3433
       0,  -620,     0,     0,  -620,    14,  -620,    15,    16,    17,
3434
      18,     0,     0,     0,     0,     0,    19,    20,    21,    22,
3435
      23,    24,    25,     0,     0,    26,     0,     0,     0,     0,
3436
       0,    27,     0,    29,    30,    31,    32,    33,    34,    35,
3437
      36,    37,    38,     0,    39,    40,    41,     0,     0,    42,
3438
       0,     0,    43,    44,     0,    45,    46,    47,     0,     0,
3439
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3440
      48,    49,     0,     0,     0,     0,     0,    50,     0,     0,
3441
      51,    52,     0,    53,    54,     0,    55,     0,     0,     0,
3442
      56,     0,    57,    58,    59,     0,    60,    61,    62,     0,
3443
      63,  -620,     0,     0,  -620,  -620,     0,     0,     0,     0,
3444
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3445
      64,    65,    66,     0,     0,     0,     0,     0,     0,     0,
3446
       0,     0,  -620,   295,  -620,     4,     5,     6,     7,     8,
3447
       9,    10,    11,    12,    13,     0,     0,  -620,     0,     0,
3448
    -620,    14,     0,    15,    16,    17,    18,     0,     0,     0,
3449
       0,     0,    19,    20,    21,    22,    23,    24,    25,     0,
3450
       0,    26,     0,     0,     0,     0,     0,    27,     0,    29,
3451
      30,    31,    32,    33,    34,    35,    36,    37,    38,     0,
3452
      39,    40,    41,     0,     0,    42,     0,     0,    43,    44,
3453
       0,    45,    46,    47,     0,     0,     0,     0,     0,     0,
3454
       0,     0,     0,     0,     0,     0,    48,    49,     0,     0,
3455
       0,     0,     0,    50,     0,     0,    51,    52,     0,    53,
3456
      54,     0,    55,     0,     0,     0,    56,     0,    57,    58,
3457
      59,     0,    60,    61,    62,     0,    63,  -620,     0,     0,
3458
    -620,  -620,     3,     0,     4,     5,     6,     7,     8,     9,
3459
      10,    11,    12,    13,     0,     0,    64,    65,    66,     0,
3460
      14,     0,    15,    16,    17,    18,     0,     0,  -620,     0,
3461
    -620,    19,    20,    21,    22,    23,    24,    25,     0,     0,
3462
      26,     0,     0,     0,     0,     0,    27,    28,    29,    30,
3463
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3464
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3465
      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3466
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3467
       0,     0,    50,     0,     0,    51,    52,     0,    53,    54,
3468
       0,    55,     0,     0,     0,    56,     0,    57,    58,    59,
3469
       0,    60,    61,    62,     0,    63,  -620,     0,     0,  -620,
3470
    -620,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3471
       0,     0,     0,     0,     0,    64,    65,    66,     0,     0,
3472
    -620,     0,     0,     0,     0,     0,     0,  -620,   295,  -620,
3473
       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
3474
       0,  -620,  -620,     0,     0,     0,    14,     0,    15,    16,
3475
      17,    18,     0,     0,     0,     0,     0,    19,    20,    21,
3476
      22,    23,    24,    25,     0,     0,    26,     0,     0,     0,
3477
       0,     0,    27,     0,    29,    30,    31,    32,    33,    34,
3478
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3479
      42,     0,     0,    43,    44,     0,    45,    46,    47,     0,
3480
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3481
       0,    48,    49,     0,     0,     0,     0,     0,    50,     0,
3482
       0,    51,    52,     0,    53,    54,     0,    55,     0,     0,
3483
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3484
       0,    63,  -620,     0,     0,  -620,  -620,   295,     0,     4,
3485
       5,     6,     7,     8,     9,    10,    11,    12,    13,     0,
3486
       0,    64,    65,    66,     0,    14,     0,    15,    16,    17,
3487
      18,     0,     0,  -620,     0,  -620,    19,    20,    21,    22,
3488
      23,    24,    25,     0,     0,    26,     0,     0,     0,     0,
3489
       0,    27,     0,    29,    30,    31,    32,    33,    34,    35,
3490
      36,    37,    38,     0,    39,    40,    41,     0,     0,    42,
3491
       0,     0,    43,    44,     0,    45,    46,    47,     0,     0,
3492
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3493
      48,    49,     0,     0,     0,     0,     0,    50,     0,     0,
3494
     296,    52,     0,    53,    54,     0,    55,     0,     0,     0,
3495
      56,     0,    57,    58,    59,     0,    60,    61,    62,     0,
3496
      63,  -620,     0,     0,  -620,  -620,   295,     0,     4,     5,
3497
       6,     7,     8,     9,    10,    11,    12,    13,     0,     0,
3498
      64,    65,    66,     0,    14,     0,    15,    16,    17,    18,
3499
       0,  -620,  -620,     0,  -620,    19,    20,    21,    22,    23,
3500
      24,    25,     0,     0,    26,     0,     0,     0,     0,     0,
3501
      27,     0,    29,    30,    31,    32,    33,    34,    35,    36,
3502
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3503
       0,    43,    44,     0,    45,    46,    47,     0,     0,     0,
3504
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3505
      49,     0,     0,     0,     0,     0,    50,     0,     0,    51,
3506
      52,     0,    53,    54,     0,    55,     0,     0,     0,    56,
3507
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3508
    -620,     0,     0,  -620,  -620,   295,     0,     4,     5,     6,
3509
       7,     8,     9,    10,    11,    12,    13,     0,     0,    64,
3510
      65,    66,     0,    14,     0,    15,    16,    17,    18,     0,
3511
    -620,  -620,     0,  -620,    19,    20,    21,    22,    23,    24,
3512
      25,     0,     0,    26,     0,     0,     0,     0,     0,    27,
3513
       0,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3514
      38,     0,    39,    40,    41,     0,     0,    42,     0,     0,
3515
      43,    44,     0,    45,    46,    47,     0,     0,     0,     0,
3516
       0,     0,     0,     0,     0,     0,     0,     0,    48,    49,
3517
       0,     0,     0,     0,     0,    50,     0,     0,    51,    52,
3518
       0,    53,    54,     0,    55,     0,     0,     0,    56,     0,
3519
      57,    58,    59,     0,    60,    61,    62,     0,    63,  -620,
3520
       0,     0,  -620,  -620,     0,     0,     0,     0,     0,     0,
3521
       0,     0,     0,     0,     0,     0,     0,     0,    64,    65,
3522
      66,     0,     0,  -620,     0,     0,     0,     0,     0,     0,
3523
    -620,   295,  -620,     4,     5,     6,     7,     8,     9,    10,
3524
      11,    12,    13,     0,     0,  -620,     0,     0,     0,    14,
3525
       0,    15,    16,    17,    18,     0,     0,     0,     0,     0,
3526
      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
3527
       0,     0,     0,     0,     0,    27,     0,    29,    30,    31,
3528
      32,    33,    34,    35,    36,    37,    38,     0,    39,    40,
3529
      41,     0,     0,    42,     0,     0,    43,    44,     0,    45,
3530
      46,    47,     0,     0,     0,     0,     0,     0,     0,     0,
3531
       0,     0,     0,     0,    48,    49,     0,     0,     0,     0,
3532
       0,    50,     0,     0,    51,    52,     0,    53,    54,     0,
3533
      55,     0,     0,     0,    56,     0,    57,    58,    59,     0,
3534
      60,    61,    62,     0,    63,  -620,     0,     0,  -620,  -620,
3535
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3536
      12,    13,     0,     0,    64,    65,    66,     0,    14,     0,
3537
      15,    16,    17,    18,     0,     0,  -620,     0,  -620,    19,
3538
      20,    21,    22,    23,    24,    25,     0,     0,    26,     0,
3539
       0,     0,     0,     0,    27,    28,    29,    30,    31,    32,
3540
      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3541
       0,     0,    42,     0,     0,    43,    44,     0,    45,    46,
3542
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3543
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3544
      50,     0,     0,    51,    52,     0,    53,    54,     0,    55,
3545
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
3546
      61,    62,     0,    63,   247,     0,     0,   248,   249,     0,
3547
       0,     4,     5,     6,     7,     8,     9,    10,    11,    12,
3548
      13,     0,     0,    64,    65,    66,     0,    14,     0,    15,
3549
      16,    17,    18,     0,     0,   250,     0,   251,    19,    20,
3550
      21,    22,    23,    24,    25,     0,     0,    26,     0,     0,
3551
       0,     0,     0,    27,     0,    29,    30,    31,    32,    33,
3552
      34,    35,    36,    37,    38,     0,    39,    40,    41,     0,
3553
       0,    42,     0,     0,    43,    44,     0,    45,    46,    47,
3554
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3555
       0,     0,    48,    49,     0,     0,     0,     0,     0,    50,
3556
       0,     0,    51,    52,     0,    53,    54,     0,    55,     0,
3557
       0,     0,    56,     0,    57,    58,    59,     0,    60,    61,
3558
      62,     0,    63,   247,     0,     0,   248,   249,     0,     0,
3559
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3560
       0,     0,    64,    65,    66,     0,    14,     0,    15,    16,
3561
      17,    18,     0,     0,   250,     0,   251,    19,    20,    21,
3562
      22,    23,    24,    25,     0,     0,    26,     0,     0,     0,
3563
       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
3564
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3565
      42,     0,     0,    43,    44,     0,    45,    46,    47,     0,
3566
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3567
       0,    48,    49,     0,     0,     0,     0,     0,   211,     0,
3568
       0,   119,    52,     0,    53,    54,     0,     0,     0,     0,
3569
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3570
       0,    63,   247,     0,     0,   248,   249,     0,     0,     4,
3571
       5,     6,     7,     8,     9,    10,    11,    12,     0,     0,
3572
       0,    64,    65,    66,     0,    14,     0,   108,   109,    17,
3573
      18,     0,     0,   250,     0,   251,   110,   111,   112,    22,
3574
      23,    24,    25,     0,     0,   113,     0,     0,     0,     0,
3575
       0,     0,     0,     0,    30,    31,    32,    33,    34,    35,
3576
      36,    37,    38,     0,    39,    40,    41,     0,     0,    42,
3577
       0,     0,    43,    44,     0,    45,    46,    47,     0,     0,
3578
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3579
      48,    49,     0,     0,     0,     0,     0,   211,     0,     0,
3580
     119,    52,     0,    53,    54,     0,     0,     0,     0,     0,
3581
      56,     0,    57,    58,    59,     0,    60,    61,    62,     0,
3582
      63,   247,     0,     0,   248,   249,     0,     0,     4,     5,
3583
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3584
      64,   265,    66,     0,    14,     0,    15,    16,    17,    18,
3585
       0,     0,   250,     0,   251,    19,    20,    21,    22,    23,
3586
      24,    25,     0,     0,    26,     0,     0,     0,     0,     0,
3587
       0,     0,     0,    30,    31,    32,    33,    34,    35,    36,
3588
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3589
       0,    43,    44,     0,    45,    46,    47,     0,     0,     0,
3590
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3591
      49,     0,     0,     0,     0,     0,   211,     0,     0,   119,
3592
      52,     0,    53,    54,     0,     0,     0,     0,     0,    56,
3593
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3594
     247,     0,     0,   248,   249,     0,     0,     0,     0,     0,
3595
       0,     0,     0,     0,     0,     0,     0,     0,     0,    64,
3596
      65,    66,     0,     0,     0,     0,     0,     0,     0,     0,
3597
       0,     0,     0,   251,   131,   132,   133,   134,   135,   136,
3598
     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
3599
     147,   148,   149,   150,   151,   152,   153,   154,     0,     0,
3600
       0,   155,   156,   157,   158,   159,   160,   161,   162,   163,
3601
     164,     0,     0,     0,     0,     0,   165,   166,   167,   168,
3602
     169,   170,   171,   172,    35,    36,   173,    38,     0,     0,
3603
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3604
     116,   174,   175,   176,   177,   178,   179,   180,   181,     0,
3605
       0,   182,   183,     0,     0,     0,     0,   184,   185,   186,
3606
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3607
       0,   188,   189,   190,     0,     0,     0,     0,     0,     0,
3608
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3609
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
3610
     196,   197,   198,   199,   200,     0,   201,   202,     0,     0,
3611
       0,     0,     0,     0,   203,   204,  -590,  -590,  -590,  -590,
3612
    -590,  -590,  -590,  -590,  -590,     0,     0,     0,     0,     0,
3613
       0,     0,  -590,     0,  -590,  -590,  -590,  -590,     0,  -590,
3614
       0,     0,     0,  -590,  -590,  -590,  -590,  -590,  -590,  -590,
3615
       0,     0,  -590,     0,     0,     0,     0,     0,     0,     0,
3616
       0,  -590,  -590,  -590,  -590,  -590,  -590,  -590,  -590,  -590,
3617
       0,  -590,  -590,  -590,     0,     0,  -590,     0,     0,  -590,
3618
    -590,     0,  -590,  -590,  -590,     0,     0,     0,     0,     0,
3619
       0,     0,     0,     0,     0,     0,     0,  -590,  -590,     0,
3620
       0,     0,     0,     0,  -590,     0,     0,  -590,  -590,     0,
3621
    -590,  -590,     0,  -590,     0,  -590,  -590,  -590,     0,  -590,
3622
    -590,  -590,     0,  -590,  -590,  -590,     0,  -590,     0,     0,
3623
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3624
       0,     0,     0,     0,     0,     0,     0,  -590,  -590,  -590,
3625
       0,  -590,     0,     0,     0,     0,     0,  -590,  -591,  -591,
3626
    -591,  -591,  -591,  -591,  -591,  -591,  -591,     0,     0,     0,
3627
       0,     0,     0,     0,  -591,     0,  -591,  -591,  -591,  -591,
3628
       0,  -591,     0,     0,     0,  -591,  -591,  -591,  -591,  -591,
3629
    -591,  -591,     0,     0,  -591,     0,     0,     0,     0,     0,
3630
       0,     0,     0,  -591,  -591,  -591,  -591,  -591,  -591,  -591,
3631
    -591,  -591,     0,  -591,  -591,  -591,     0,     0,  -591,     0,
3632
       0,  -591,  -591,     0,  -591,  -591,  -591,     0,     0,     0,
3633
       0,     0,     0,     0,     0,     0,     0,     0,     0,  -591,
3634
    -591,     0,     0,     0,     0,     0,  -591,     0,     0,  -591,
3635
    -591,     0,  -591,  -591,     0,  -591,     0,  -591,  -591,  -591,
3636
       0,  -591,  -591,  -591,     0,  -591,  -591,  -591,     0,  -591,
3637
       0,     0,     0,     0,     0,     0,  -593,  -593,  -593,  -593,
3638
    -593,  -593,  -593,  -593,  -593,     0,     0,     0,     0,  -591,
3639
    -591,  -591,  -593,  -591,  -593,  -593,  -593,  -593,     0,  -591,
3640
       0,     0,     0,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
3641
       0,     0,  -593,     0,     0,     0,     0,     0,     0,     0,
3642
       0,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,  -593,
3643
       0,  -593,  -593,  -593,     0,     0,  -593,     0,     0,  -593,
3644
    -593,     0,  -593,  -593,  -593,     0,     0,     0,     0,     0,
3645
       0,     0,     0,     0,     0,     0,     0,  -593,  -593,     0,
3646
       0,     0,     0,     0,  -593,   838,     0,  -593,  -593,     0,
3647
    -593,  -593,     0,  -593,     0,  -593,  -593,  -593,     0,  -593,
3648
    -593,  -593,     0,  -593,  -593,  -593,     0,  -593,     0,     0,
3649
       0,     0,     0,     0,  -107,  -594,  -594,  -594,  -594,  -594,
3650
    -594,  -594,  -594,  -594,     0,     0,     0,  -593,  -593,  -593,
3651
       0,  -594,     0,  -594,  -594,  -594,  -594,  -593,     0,     0,
3652
       0,     0,  -594,  -594,  -594,  -594,  -594,  -594,  -594,     0,
3653
       0,  -594,     0,     0,     0,     0,     0,     0,     0,     0,
3654
    -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,  -594,     0,
3655
    -594,  -594,  -594,     0,     0,  -594,     0,     0,  -594,  -594,
3656
       0,  -594,  -594,  -594,     0,     0,     0,     0,     0,     0,
3657
       0,     0,     0,     0,     0,     0,  -594,  -594,     0,     0,
3658
       0,     0,     0,  -594,   839,     0,  -594,  -594,     0,  -594,
3659
    -594,     0,  -594,     0,  -594,  -594,  -594,     0,  -594,  -594,
3660
    -594,     0,  -594,  -594,  -594,     0,  -594,     0,     0,     0,
3661
       0,     0,     0,  -109,  -595,  -595,  -595,  -595,  -595,  -595,
3662
    -595,  -595,  -595,     0,     0,     0,  -594,  -594,  -594,     0,
3663
    -595,     0,  -595,  -595,  -595,  -595,  -594,     0,     0,     0,
3664
       0,  -595,  -595,  -595,  -595,  -595,  -595,  -595,     0,     0,
3665
    -595,     0,     0,     0,     0,     0,     0,     0,     0,  -595,
3666
    -595,  -595,  -595,  -595,  -595,  -595,  -595,  -595,     0,  -595,
3667
    -595,  -595,     0,     0,  -595,     0,     0,  -595,  -595,     0,
3668
    -595,  -595,  -595,     0,     0,     0,     0,     0,     0,     0,
3669
       0,     0,     0,     0,     0,  -595,  -595,     0,     0,     0,
3670
       0,     0,  -595,     0,     0,  -595,  -595,     0,  -595,  -595,
3671
       0,  -595,     0,  -595,  -595,  -595,     0,  -595,  -595,  -595,
3672
       0,  -595,  -595,  -595,     0,  -595,     0,     0,     0,     0,
3673
       0,     0,  -596,  -596,  -596,  -596,  -596,  -596,  -596,  -596,
3674
    -596,     0,     0,     0,     0,  -595,  -595,  -595,  -596,     0,
3675
    -596,  -596,  -596,  -596,     0,  -595,     0,     0,     0,  -596,
3676
    -596,  -596,  -596,  -596,  -596,  -596,     0,     0,  -596,     0,
3677
       0,     0,     0,     0,     0,     0,     0,  -596,  -596,  -596,
3678
    -596,  -596,  -596,  -596,  -596,  -596,     0,  -596,  -596,  -596,
3679
       0,     0,  -596,     0,     0,  -596,  -596,     0,  -596,  -596,
3680
    -596,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3681
       0,     0,     0,  -596,  -596,     0,     0,     0,     0,     0,
3682
    -596,     0,     0,  -596,  -596,     0,  -596,  -596,     0,  -596,
3683
       0,  -596,  -596,  -596,     0,  -596,  -596,  -596,     0,  -596,
3684
    -596,  -596,     0,  -596,     0,     0,     0,     0,     0,     0,
3685
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3686
       0,     0,     0,  -596,  -596,  -596,     0,     0,     0,     0,
3687
       0,     0,     0,  -596,   131,   132,   133,   134,   135,   136,
3688
     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
3689
     147,   148,   149,   150,   151,   152,   153,   154,     0,     0,
3690
       0,   155,   156,   157,   233,   234,   235,   236,   162,   163,
3691
     164,     0,     0,     0,     0,     0,   165,   166,   167,   237,
3692
     238,   239,   240,   172,   320,   321,   241,   322,     0,     0,
3693
       0,     0,     0,     0,   323,     0,     0,     0,     0,     0,
3694
     324,   174,   175,   176,   177,   178,   179,   180,   181,     0,
3695
       0,   182,   183,     0,     0,     0,     0,   184,   185,   186,
3696
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3697
       0,   188,   189,   190,     0,     0,     0,     0,   325,     0,
3698
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3699
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
3700
     196,   197,   198,   199,   200,     0,   201,   202,     0,     0,
3701
       0,     0,     0,     0,   203,   131,   132,   133,   134,   135,
3702
     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
3703
     146,   147,   148,   149,   150,   151,   152,   153,   154,     0,
3704
       0,     0,   155,   156,   157,   233,   234,   235,   236,   162,
3705
     163,   164,     0,     0,     0,     0,     0,   165,   166,   167,
3706
     237,   238,   239,   240,   172,   320,   321,   241,   322,     0,
3707
       0,     0,     0,     0,     0,   323,     0,     0,     0,     0,
3708
       0,     0,   174,   175,   176,   177,   178,   179,   180,   181,
3709
       0,     0,   182,   183,     0,     0,     0,     0,   184,   185,
3710
     186,   187,     0,     0,     0,     0,     0,     0,     0,     0,
3711
       0,     0,   188,   189,   190,     0,     0,     0,     0,   487,
3712
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3713
       0,     0,     0,     0,     0,     0,   191,   192,   193,   194,
3714
     195,   196,   197,   198,   199,   200,     0,   201,   202,     0,
3715
       0,     0,     0,     0,     0,   203,   131,   132,   133,   134,
3716
     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
3717
     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
3718
       0,     0,     0,   155,   156,   157,   233,   234,   235,   236,
3719
     162,   163,   164,     0,     0,     0,     0,     0,   165,   166,
3720
     167,   237,   238,   239,   240,   172,     0,     0,   241,     0,
3721
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3722
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
3723
     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
3724
     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
3725
       0,     0,     0,   188,   189,   190,     0,     0,     0,   242,
3726
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3727
       0,     0,     0,     0,     0,     0,     0,   191,   192,   193,
3728
     194,   195,   196,   197,   198,   199,   200,     0,   201,   202,
3729
       0,     0,     0,     0,     0,     0,   203,   131,   132,   133,
3730
     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
3731
     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
3732
     154,     0,     0,     0,   155,   156,   157,   233,   234,   235,
3733
     236,   162,   163,   164,     0,     0,     0,     0,     0,   165,
3734
     166,   167,   237,   238,   239,   240,   172,     0,     0,   241,
3735
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3736
       0,     0,     0,     0,   174,   175,   176,   177,   178,   179,
3737
     180,   181,     0,     0,   182,   183,     0,     0,     0,     0,
3738
     184,   185,   186,   187,     0,     0,     0,     0,     0,     0,
3739
       0,     0,     0,     0,   188,   189,   190,     0,     0,     0,
3740
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3741
       0,     0,     0,     0,     0,     0,     0,     0,   191,   192,
3742
     193,   194,   195,   196,   197,   198,   199,   200,     0,   201,
3743
     202,     0,     0,     0,     0,     0,     0,   203,     4,     5,
3744
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3745
       0,     0,     0,     0,    14,     0,   108,   109,    17,    18,
3746
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
3747
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
3748
       0,     0,     0,    30,    31,    32,    33,    34,    35,    36,
3749
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3750
       0,    43,    44,     0,   116,     0,     0,     0,     0,     0,
3751
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3752
       0,     0,     0,     0,     0,     0,   313,     0,     0,   119,
3753
      52,     0,    53,    54,     0,     0,     0,     0,     0,    56,
3754
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3755
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3756
      12,     0,     0,     0,     0,     0,     0,     0,    14,   120,
3757
     108,   109,    17,    18,     0,     0,     0,   314,     0,   110,
3758
     111,   112,    22,    23,    24,    25,     0,     0,   113,     0,
3759
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3760
      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3761
       0,     0,    42,     0,     0,    43,    44,     0,   116,     0,
3762
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3763
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3764
     313,     0,     0,   119,    52,     0,    53,    54,     0,     0,
3765
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
3766
      61,    62,     0,    63,     0,     0,     4,     5,     6,     7,
3767
       8,     9,    10,    11,    12,    13,     0,     0,     0,     0,
3768
       0,     0,    14,   120,    15,    16,    17,    18,     0,     0,
3769
       0,   612,     0,    19,    20,    21,    22,    23,    24,    25,
3770
       0,     0,    26,     0,     0,     0,     0,     0,    27,    28,
3771
      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
3772
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
3773
      44,     0,    45,    46,    47,     0,     0,     0,     0,     0,
3774
       0,     0,     0,     0,     0,     0,     0,    48,    49,     0,
3775
       0,     0,     0,     0,    50,     0,     0,    51,    52,     0,
3776
      53,    54,     0,    55,     0,     0,     0,    56,     0,    57,
3777
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
3778
       0,     0,     0,     0,     4,     5,     6,     7,     8,     9,
3779
      10,    11,    12,    13,     0,     0,     0,    64,    65,    66,
3780
      14,     0,    15,    16,    17,    18,     0,     0,     0,     0,
3781
       0,    19,    20,    21,    22,    23,    24,    25,     0,     0,
3782
      26,     0,     0,     0,     0,     0,    27,     0,    29,    30,
3783
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3784
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3785
      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3786
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3787
       0,     0,    50,     0,     0,    51,    52,     0,    53,    54,
3788
       0,    55,     0,     0,     0,    56,     0,    57,    58,    59,
3789
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
3790
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3791
      12,     0,     0,     0,     0,    64,    65,    66,    14,     0,
3792
      15,    16,    17,    18,     0,     0,     0,     0,     0,    19,
3793
      20,    21,    22,    23,    24,    25,     0,     0,   113,     0,
3794
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3795
     260,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3796
       0,     0,    42,     0,     0,    43,    44,     0,   261,    46,
3797
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3798
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3799
     211,     0,     0,   119,    52,     0,    53,    54,     0,   262,
3800
       0,   263,   264,    56,     0,    57,    58,    59,     0,    60,
3801
      61,    62,     0,    63,     0,     0,     0,     0,     0,     0,
3802
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3803
       0,     0,     0,    64,   265,    66,    14,     0,    15,    16,
3804
      17,    18,     0,     0,     0,     0,     0,    19,    20,    21,
3805
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
3806
       0,     0,     0,     0,     0,    30,    31,    32,   260,    34,
3807
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3808
      42,     0,     0,    43,    44,     0,   261,    46,    47,     0,
3809
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3810
       0,    48,   509,     0,     0,     0,     0,     0,   211,     0,
3811
       0,   119,    52,     0,    53,    54,     0,   262,     0,   263,
3812
     264,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3813
       0,    63,     0,     0,     0,     0,     0,     0,     4,     5,
3814
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3815
       0,    64,   265,    66,    14,     0,   108,   109,    17,    18,
3816
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
3817
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
3818
       0,     0,     0,    30,    31,    32,   260,    34,    35,    36,
3819
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3820
       0,    43,    44,     0,   261,    46,    47,     0,     0,     0,
3821
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3822
      49,     0,     0,     0,     0,     0,   211,     0,     0,   119,
3823
      52,     0,    53,    54,     0,   724,     0,   263,   264,    56,
3824
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3825
       0,     0,     0,     0,     0,     0,     4,     5,     6,     7,
3826
       8,     9,    10,    11,    12,     0,     0,     0,     0,    64,
3827
     265,    66,    14,     0,   108,   109,    17,    18,     0,     0,
3828
       0,     0,     0,   110,   111,   112,    22,    23,    24,    25,
3829
       0,     0,   113,     0,     0,     0,     0,     0,     0,     0,
3830
       0,    30,    31,    32,   260,    34,    35,    36,    37,    38,
3831
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
3832
      44,     0,   261,    46,    47,     0,     0,     0,     0,     0,
3833
       0,     0,     0,     0,     0,     0,     0,    48,   855,     0,
3834
       0,     0,     0,     0,   211,     0,     0,   119,    52,     0,
3835
      53,    54,     0,   724,     0,   263,   264,    56,     0,    57,
3836
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
3837
       0,     0,     0,     0,     4,     5,     6,     7,     8,     9,
3838
      10,    11,    12,     0,     0,     0,     0,    64,   265,    66,
3839
      14,     0,   108,   109,    17,    18,     0,     0,     0,     0,
3840
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
3841
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
3842
      31,    32,   260,    34,    35,    36,    37,    38,     0,    39,
3843
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3844
     261,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3845
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3846
       0,     0,   211,     0,     0,   119,    52,     0,    53,    54,
3847
       0,   262,     0,   263,     0,    56,     0,    57,    58,    59,
3848
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
3849
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3850
      12,     0,     0,     0,     0,    64,   265,    66,    14,     0,
3851
     108,   109,    17,    18,     0,     0,     0,     0,     0,   110,
3852
     111,   112,    22,    23,    24,    25,     0,     0,   113,     0,
3853
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3854
     260,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3855
       0,     0,    42,     0,     0,    43,    44,     0,   261,    46,
3856
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3857
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3858
     211,     0,     0,   119,    52,     0,    53,    54,     0,     0,
3859
       0,   263,   264,    56,     0,    57,    58,    59,     0,    60,
3860
      61,    62,     0,    63,     0,     0,     0,     0,     0,     0,
3861
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3862
       0,     0,     0,    64,   265,    66,    14,     0,   108,   109,
3863
      17,    18,     0,     0,     0,     0,     0,   110,   111,   112,
3864
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
3865
       0,     0,     0,     0,     0,    30,    31,    32,   260,    34,
3866
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3867
      42,     0,     0,    43,    44,     0,   261,    46,    47,     0,
3868
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3869
       0,    48,    49,     0,     0,     0,     0,     0,   211,     0,
3870
       0,   119,    52,     0,    53,    54,     0,   724,     0,   263,
3871
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3872
       0,    63,     0,     0,     0,     0,     0,     0,     4,     5,
3873
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3874
       0,    64,   265,    66,    14,     0,   108,   109,    17,    18,
3875
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
3876
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
3877
       0,     0,     0,    30,    31,    32,   260,    34,    35,    36,
3878
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3879
       0,    43,    44,     0,   261,    46,    47,     0,     0,     0,
3880
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3881
      49,     0,     0,     0,     0,     0,   211,     0,     0,   119,
3882
      52,     0,    53,    54,     0,     0,     0,   263,     0,    56,
3883
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3884
       0,     0,     0,     0,     0,     0,     4,     5,     6,     7,
3885
       8,     9,    10,    11,    12,     0,     0,     0,     0,    64,
3886
     265,    66,    14,     0,    15,    16,    17,    18,     0,     0,
3887
       0,     0,     0,    19,    20,    21,    22,    23,    24,    25,
3888
       0,     0,   113,     0,     0,     0,     0,     0,     0,     0,
3889
       0,    30,    31,    32,    33,    34,    35,    36,    37,    38,
3890
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
3891
      44,     0,    45,    46,    47,     0,     0,     0,     0,     0,
3892
       0,     0,     0,     0,     0,     0,     0,    48,    49,     0,
3893
       0,     0,     0,     0,   211,     0,     0,   119,    52,     0,
3894
      53,    54,     0,   606,     0,     0,     0,    56,     0,    57,
3895
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
3896
       0,     0,     0,     0,     4,     5,     6,     7,     8,     9,
3897
      10,    11,    12,     0,     0,     0,     0,    64,   265,    66,
3898
      14,     0,   108,   109,    17,    18,     0,     0,     0,     0,
3899
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
3900
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
3901
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3902
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3903
      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3904
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3905
       0,     0,   211,     0,     0,   119,    52,     0,    53,    54,
3906
       0,   262,     0,     0,     0,    56,     0,    57,    58,    59,
3907
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
3908
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3909
      12,     0,     0,     0,     0,    64,   265,    66,    14,     0,
3910
     108,   109,    17,    18,     0,     0,     0,     0,     0,   110,
3911
     111,   112,    22,    23,    24,    25,     0,     0,   113,     0,
3912
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3913
      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3914
       0,     0,    42,     0,     0,    43,    44,     0,    45,    46,
3915
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3916
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3917
     211,     0,     0,   119,    52,     0,    53,    54,     0,   606,
3918
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
3919
      61,    62,     0,    63,     0,     0,     0,     0,     0,     0,
3920
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3921
       0,     0,     0,    64,   265,    66,    14,     0,   108,   109,
3922
      17,    18,     0,     0,     0,     0,     0,   110,   111,   112,
3923
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
3924
       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
3925
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
3926
      42,     0,     0,    43,    44,     0,    45,    46,    47,     0,
3927
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3928
       0,    48,    49,     0,     0,     0,     0,     0,   211,     0,
3929
       0,   119,    52,     0,    53,    54,     0,   901,     0,     0,
3930
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3931
       0,    63,     0,     0,     0,     0,     0,     0,     4,     5,
3932
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
3933
       0,    64,   265,    66,    14,     0,   108,   109,    17,    18,
3934
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
3935
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
3936
       0,     0,     0,    30,    31,    32,    33,    34,    35,    36,
3937
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
3938
       0,    43,    44,     0,    45,    46,    47,     0,     0,     0,
3939
       0,     0,     0,     0,     0,     0,     0,     0,     0,    48,
3940
      49,     0,     0,     0,     0,     0,   211,     0,     0,   119,
3941
      52,     0,    53,    54,     0,   724,     0,     0,     0,    56,
3942
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
3943
       0,     0,     0,     0,     0,     0,     4,     5,     6,     7,
3944
       8,     9,    10,    11,    12,     0,     0,     0,     0,    64,
3945
     265,    66,    14,     0,    15,    16,    17,    18,     0,     0,
3946
       0,     0,     0,    19,    20,    21,    22,    23,    24,    25,
3947
       0,     0,    26,     0,     0,     0,     0,     0,     0,     0,
3948
       0,    30,    31,    32,    33,    34,    35,    36,    37,    38,
3949
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
3950
      44,     0,    45,    46,    47,     0,     0,     0,     0,     0,
3951
       0,     0,     0,     0,     0,     0,     0,    48,    49,     0,
3952
       0,     0,     0,     0,   211,     0,     0,   119,    52,     0,
3953
      53,    54,     0,     0,     0,     0,     0,    56,     0,    57,
3954
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
3955
       0,     0,     0,     0,     4,     5,     6,     7,     8,     9,
3956
      10,    11,    12,     0,     0,     0,     0,    64,    65,    66,
3957
      14,     0,   108,   109,    17,    18,     0,     0,     0,     0,
3958
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
3959
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
3960
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3961
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3962
      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
3963
       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
3964
       0,     0,   211,     0,     0,   119,    52,     0,    53,    54,
3965
       0,     0,     0,     0,     0,    56,     0,    57,    58,    59,
3966
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
3967
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
3968
      12,     0,     0,     0,     0,    64,   265,    66,    14,     0,
3969
      15,    16,    17,    18,     0,     0,     0,     0,     0,    19,
3970
      20,    21,    22,    23,    24,    25,     0,     0,   113,     0,
3971
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
3972
      33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
3973
       0,     0,    42,     0,     0,    43,    44,     0,    45,    46,
3974
      47,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3975
       0,     0,     0,    48,    49,     0,     0,     0,     0,     0,
3976
     211,     0,     0,   119,    52,     0,    53,    54,     0,     0,
3977
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
3978
      61,    62,     0,    63,     0,     0,     0,     0,     0,     0,
3979
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
3980
       0,     0,     0,    64,   265,    66,    14,     0,   108,   109,
3981
      17,    18,     0,     0,     0,     0,     0,   110,   111,   112,
3982
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
3983
       0,     0,     0,     0,     0,    30,    31,    32,   114,    34,
3984
      35,    36,   115,    38,     0,    39,    40,    41,     0,     0,
3985
      42,     0,     0,    43,    44,     0,   116,     0,     0,     0,
3986
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3987
       0,     0,     0,     0,     0,   117,     0,     0,   118,     0,
3988
       0,   119,    52,     0,    53,    54,     0,     0,     0,     0,
3989
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
3990
       0,    63,     0,     0,     4,     5,     6,     7,     8,     9,
3991
      10,    11,    12,     0,     0,     0,     0,     0,     0,     0,
3992
      14,   120,   108,   109,    17,    18,     0,     0,     0,     0,
3993
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
3994
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
3995
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
3996
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
3997
     225,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3998
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3999
       0,     0,   226,     0,     0,    51,    52,     0,    53,    54,
4000
       0,    55,     0,     0,     0,    56,     0,    57,    58,    59,
4001
       0,    60,    61,    62,     0,    63,     0,     0,     4,     5,
4002
       6,     7,     8,     9,    10,    11,    12,     0,     0,     0,
4003
       0,     0,     0,     0,    14,   120,   108,   109,    17,    18,
4004
       0,     0,     0,     0,     0,   110,   111,   112,    22,    23,
4005
      24,    25,     0,     0,   113,     0,     0,     0,     0,     0,
4006
       0,     0,     0,    30,    31,    32,    33,    34,    35,    36,
4007
      37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
4008
       0,    43,    44,     0,   116,     0,     0,     0,     0,     0,
4009
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4010
       0,     0,     0,     0,     0,     0,   313,     0,     0,   400,
4011
      52,     0,    53,    54,     0,   401,     0,     0,     0,    56,
4012
       0,    57,    58,    59,     0,    60,    61,    62,     0,    63,
4013
       0,     0,     4,     5,     6,     7,     8,     9,    10,    11,
4014
      12,     0,     0,     0,     0,     0,     0,     0,    14,   120,
4015
     108,   109,    17,    18,     0,     0,     0,     0,     0,   110,
4016
     111,   112,    22,    23,    24,    25,     0,     0,   113,     0,
4017
       0,     0,     0,     0,     0,     0,     0,    30,    31,    32,
4018
     114,    34,    35,    36,   115,    38,     0,    39,    40,    41,
4019
       0,     0,    42,     0,     0,    43,    44,     0,   116,     0,
4020
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4021
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4022
     118,     0,     0,   119,    52,     0,    53,    54,     0,     0,
4023
       0,     0,     0,    56,     0,    57,    58,    59,     0,    60,
4024
      61,    62,     0,    63,     0,     0,     4,     5,     6,     7,
4025
       8,     9,    10,    11,    12,     0,     0,     0,     0,     0,
4026
       0,     0,    14,   120,   108,   109,    17,    18,     0,     0,
4027
       0,     0,     0,   110,   111,   112,    22,    23,    24,    25,
4028
       0,     0,   113,     0,     0,     0,     0,     0,     0,     0,
4029
       0,    30,    31,    32,    33,    34,    35,    36,    37,    38,
4030
       0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
4031
      44,     0,   116,     0,     0,     0,     0,     0,     0,     0,
4032
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4033
       0,     0,     0,     0,   313,     0,     0,   400,    52,     0,
4034
      53,    54,     0,     0,     0,     0,     0,    56,     0,    57,
4035
      58,    59,     0,    60,    61,    62,     0,    63,     0,     0,
4036
       4,     5,     6,     7,     8,     9,    10,    11,    12,     0,
4037
       0,     0,     0,     0,     0,     0,    14,   120,   108,   109,
4038
      17,    18,     0,     0,     0,     0,     0,   110,   111,   112,
4039
      22,    23,    24,    25,     0,     0,   113,     0,     0,     0,
4040
       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
4041
      35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
4042
      42,     0,     0,    43,    44,     0,   116,     0,     0,     0,
4043
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4044
       0,     0,     0,     0,     0,     0,     0,     0,   968,     0,
4045
       0,   119,    52,     0,    53,    54,     0,     0,     0,     0,
4046
       0,    56,     0,    57,    58,    59,     0,    60,    61,    62,
4047
       0,    63,     0,     0,     4,     5,     6,     7,     8,     9,
4048
      10,    11,    12,     0,     0,     0,     0,     0,     0,     0,
4049
      14,   120,   108,   109,    17,    18,     0,     0,     0,     0,
4050
       0,   110,   111,   112,    22,    23,    24,    25,     0,     0,
4051
     113,     0,     0,     0,     0,     0,     0,     0,     0,    30,
4052
      31,    32,    33,    34,    35,    36,    37,    38,     0,    39,
4053
      40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
4054
     225,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4055
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4056
       0,     0,   991,     0,     0,   119,    52,     0,    53,    54,
4057
       0,     0,   681,   652,     0,    56,   682,    57,    58,    59,
4058
       0,    60,    61,    62,     0,    63,     0,     0,     0,     0,
4059
       0,   174,   175,   176,   177,   178,   179,   180,   181,     0,
4060
       0,   182,   183,     0,     0,   120,     0,   184,   185,   186,
4061
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4062
       0,   188,   189,   190,     0,     0,     0,     0,     0,     0,
4063
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4064
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
4065
     196,   197,   198,   199,   200,     0,   201,   202,   666,   661,
4066
       0,     0,   667,     0,   203,   276,     0,     0,     0,     0,
4067
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
4068
     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
4069
       0,     0,     0,   184,   185,   186,   187,     0,     0,     0,
4070
       0,     0,     0,     0,     0,     0,     0,   188,   189,   190,
4071
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4072
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4073
       0,   191,   192,   193,   194,   195,   196,   197,   198,   199,
4074
     200,     0,   201,   202,   698,   652,     0,     0,   699,     0,
4075
     203,   276,     0,     0,     0,     0,     0,     0,     0,     0,
4076
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
4077
     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
4078
     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
4079
       0,     0,     0,   188,   189,   190,     0,     0,     0,     0,
4080
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4081
       0,     0,     0,     0,     0,     0,     0,   191,   192,   193,
4082
     194,   195,   196,   197,   198,   199,   200,     0,   201,   202,
4083
     701,   661,     0,     0,   702,     0,   203,   276,     0,     0,
4084
       0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
4085
     175,   176,   177,   178,   179,   180,   181,     0,     0,   182,
4086
     183,     0,     0,     0,     0,   184,   185,   186,   187,     0,
4087
       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
4088
     189,   190,     0,     0,     0,     0,     0,     0,     0,     0,
4089
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4090
       0,     0,     0,   191,   192,   193,   194,   195,   196,   197,
4091
     198,   199,   200,     0,   201,   202,   708,   652,     0,     0,
4092
     709,     0,   203,   276,     0,     0,     0,     0,     0,     0,
4093
       0,     0,     0,     0,     0,   174,   175,   176,   177,   178,
4094
     179,   180,   181,     0,     0,   182,   183,     0,     0,     0,
4095
       0,   184,   185,   186,   187,     0,     0,     0,     0,     0,
4096
       0,     0,     0,     0,     0,   188,   189,   190,     0,     0,
4097
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4098
       0,     0,     0,     0,     0,     0,     0,     0,     0,   191,
4099
     192,   193,   194,   195,   196,   197,   198,   199,   200,     0,
4100
     201,   202,   711,   661,     0,     0,   712,     0,   203,   276,
4101
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4102
       0,   174,   175,   176,   177,   178,   179,   180,   181,     0,
4103
       0,   182,   183,     0,     0,     0,     0,   184,   185,   186,
4104
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4105
       0,   188,   189,   190,     0,     0,     0,     0,     0,     0,
4106
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4107
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
4108
     196,   197,   198,   199,   200,     0,   201,   202,   747,   652,
4109
       0,     0,   748,     0,   203,   276,     0,     0,     0,     0,
4110
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
4111
     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
4112
       0,     0,     0,   184,   185,   186,   187,     0,     0,     0,
4113
       0,     0,     0,     0,     0,     0,     0,   188,   189,   190,
4114
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4115
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4116
       0,   191,   192,   193,   194,   195,   196,   197,   198,   199,
4117
     200,     0,   201,   202,   750,   661,     0,     0,   751,     0,
4118
     203,   276,     0,     0,     0,     0,     0,     0,     0,     0,
4119
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
4120
     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
4121
     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
4122
       0,     0,     0,   188,   189,   190,     0,     0,     0,     0,
4123
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4124
       0,     0,     0,     0,     0,     0,     0,   191,   192,   193,
4125
     194,   195,   196,   197,   198,   199,   200,     0,   201,   202,
4126
     906,   652,     0,     0,   907,     0,   203,   276,     0,     0,
4127
       0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
4128
     175,   176,   177,   178,   179,   180,   181,     0,     0,   182,
4129
     183,     0,     0,     0,     0,   184,   185,   186,   187,     0,
4130
       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
4131
     189,   190,     0,     0,     0,     0,     0,     0,     0,     0,
4132
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4133
       0,     0,     0,   191,   192,   193,   194,   195,   196,   197,
4134
     198,   199,   200,     0,   201,   202,   909,   661,     0,     0,
4135
     910,     0,   203,   276,     0,     0,     0,     0,     0,     0,
4136
       0,     0,     0,     0,     0,   174,   175,   176,   177,   178,
4137
     179,   180,   181,     0,     0,   182,   183,     0,     0,     0,
4138
       0,   184,   185,   186,   187,     0,     0,     0,     0,     0,
4139
       0,     0,     0,     0,     0,   188,   189,   190,     0,     0,
4140
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4141
       0,     0,     0,     0,     0,     0,     0,     0,     0,   191,
4142
     192,   193,   194,   195,   196,   197,   198,   199,   200,     0,
4143
     201,   202,  1050,   652,     0,     0,  1051,     0,   203,   276,
4144
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4145
       0,   174,   175,   176,   177,   178,   179,   180,   181,     0,
4146
       0,   182,   183,     0,     0,     0,     0,   184,   185,   186,
4147
     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4148
       0,   188,   189,   190,     0,     0,     0,     0,     0,     0,
4149
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4150
       0,     0,     0,     0,     0,   191,   192,   193,   194,   195,
4151
     196,   197,   198,   199,   200,     0,   201,   202,  1062,   652,
4152
       0,     0,  1063,     0,   203,   276,     0,     0,     0,     0,
4153
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
4154
     177,   178,   179,   180,   181,     0,     0,   182,   183,     0,
4155
       0,     0,     0,   184,   185,   186,   187,     0,     0,     0,
4156
       0,     0,     0,     0,     0,     0,     0,   188,   189,   190,
4157
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4158
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4159
       0,   191,   192,   193,   194,   195,   196,   197,   198,   199,
4160
     200,     0,   201,   202,  1065,   661,     0,     0,  1066,     0,
4161
     203,   276,     0,     0,     0,     0,     0,     0,     0,     0,
4162
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
4163
     181,     0,     0,   182,   183,     0,     0,     0,     0,   184,
4164
     185,   186,   187,     0,     0,     0,     0,     0,     0,     0,
4165
       0,     0,     0,   188,   189,   190,     0,     0,     0,     0,
4166
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4167
       0,     0,     0,     0,     0,     0,     0,   191,   192,   193,
4168
     194,   195,   196,   197,   198,   199,   200,     0,   201,   202,
4169
     666,   661,     0,     0,   667,     0,   203,   276,     0,     0,
4170
       0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
4171
     175,   176,   177,   178,   179,   180,   181,     0,     0,   182,
4172
     183,     0,     0,     0,     0,   184,   185,   186,   187,     0,
4173
       0,     0,     0,     0,     0,     0,     0,     0,     0,   188,
4174
     189,   190,     0,     0,     0,     0,     0,     0,     0,     0,
4175
       0,     0,     0,     0,     0,   873,     0,     0,     0,     0,
4176
       0,     0,     0,   191,   192,   193,   194,   195,   196,   197,
4177
     198,   199,   200,     0,   201,   202,     0,     0,     0,     0,
4178
       0,     0,   203,   404,   405,   406,   407,   408,   409,   410,
4179
     411,   412,   413,   414,   415,     0,     0,     0,     0,   416,
4180
     417,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4181
       0,     0,   419,     0,     0,     0,     0,   886,     0,     0,
4182
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4183
       0,     0,     0,   420,     0,   421,   422,   423,   424,   425,
4184
     426,   427,   428,   429,   430,   404,   405,   406,   407,   408,
4185
     409,   410,   411,   412,   413,   414,   415,     0,     0,     0,
4186
       0,   416,   417,     0,     0,     0,     0,     0,     0,     0,
4187
       0,     0,     0,     0,   419,     0,     0,     0,     0,     0,
4188
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4189
       0,     0,     0,     0,     0,   420,     0,   421,   422,   423,
4190
     424,   425,   426,   427,   428,   429,   430,   404,   405,   406,
4191
     407,   408,   409,   410,   411,   412,   413,   414,   415,     0,
4192
       0,     0,     0,   416,   417,     0,     0,     0,     0,     0,
4193
       0,     0,     0,     0,     0,     0,   419,     0,     0,     0,
4194
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4195
       0,     0,     0,     0,     0,     0,     0,   420,     0,   421,
4196
     422,   423,   424,   425,   426,   427,   428,   429,   430,     0,
4197
       0,     0,     0,     0,     0,     0,     0,  -277,   404,   405,
4198
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
4199
       0,     0,     0,     0,   416,   417,     0,     0,     0,     0,
4200
       0,     0,     0,     0,     0,     0,     0,   419,     0,     0,
4201
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4202
       0,     0,     0,     0,     0,     0,     0,     0,   420,     0,
4203
     421,   422,   423,   424,   425,   426,   427,   428,   429,   430,
4204
       0,     0,     0,     0,     0,     0,     0,     0,  -279,   404,
4205
     405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
4206
     415,     0,     0,     0,     0,   416,   417,     0,     0,     0,
4207
       0,     0,     0,     0,     0,     0,     0,     0,   419,     0,
4208
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4209
       0,     0,     0,     0,     0,     0,     0,     0,     0,   420,
4210
       0,   421,   422,   423,   424,   425,   426,   427,   428,   429,
4211
     430,     0,     0,     0,     0,     0,     0,     0,     0,  -280,
4212
     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
4213
     414,   415,     0,     0,     0,     0,   416,   417,     0,     0,
4214
       0,     0,     0,     0,     0,     0,     0,     0,     0,   419,
4215
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4216
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4217
     420,     0,   421,   422,   423,   424,   425,   426,   427,   428,
4218
     429,   430,     0,     0,     0,     0,     0,     0,     0,     0,
4219
    -282,   404,   405,   406,   407,   408,   409,   410,   411,   412,
4220
     413,   414,   415,     0,     0,     0,     0,   416,   417,     0,
4221
       0,     0,   501,     0,     0,     0,     0,     0,     0,     0,
4222
     419,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4223
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4224
       0,   420,     0,   421,   422,   423,   424,   425,   426,   427,
4225
     428,   429,   430,   404,   405,   406,   407,   408,   409,   410,
4226
     411,   412,   413,   414,   415,     0,     0,     0,     0,   416,
4227
     417,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4228
       0,     0,   419,     0,     0,     0,     0,     0,     0,     0,
4229
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4230
       0,     0,     0,   420,     0,   421,   422,   423,   424,   425,
4231
     426,   427,   428,   429,   430,   404,   405,   406,   407,   408,
4232
     409,   410,   411,   412,   413,  -621,  -621,     0,     0,     0,
4233
       0,   416,   417,     0,     0,     0,     0,     0,     0,     0,
4234
       0,     0,     0,     0,   419,     0,     0,     0,     0,     0,
4235
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
4236
       0,     0,     0,     0,     0,     0,     0,   421,   422,   423,
4237
     424,   425,   426,   427,   428,   429,   430
4238
};
4239
4240
static const yytype_int16 yycheck[] =
4241
{
4242
       1,    88,    13,    15,    16,   285,    26,    19,    55,    27,
4243
       1,     6,     3,     4,     5,    65,    27,     8,     9,    20,
4244
     490,    12,    68,    14,    15,    16,    86,    87,    19,   314,
4245
       9,    21,     4,     5,   222,    14,   379,   481,    14,   790,
4246
      12,   272,     8,     9,     6,   403,     3,     1,    14,     3,
4247
     597,    13,    53,    54,    81,   332,   762,   307,   594,   118,
4248
      51,   311,    57,   508,    55,    27,    51,    15,    16,   692,
4249
     547,    19,    73,    74,    65,   374,    20,    21,   431,    26,
4250
     703,   594,   435,    55,   504,   438,   669,   670,   508,    25,
4251
      81,   296,    68,   319,   539,    57,   395,    16,    25,    74,
4252
      59,    60,    61,    62,    25,    53,   459,   976,   433,    81,
4253
     111,    15,    16,    90,   104,    19,    15,    16,    15,    16,
4254
      19,   474,    19,   476,    26,    57,   117,   951,   119,    25,
4255
       0,    25,   485,   458,    74,   612,    25,    90,   443,   444,
4256
     103,    90,    29,   121,    90,   371,    25,   122,    58,    59,
4257
     475,   117,   105,    25,    53,    54,    53,    54,   218,   484,
4258
     104,   460,    79,   144,   142,   128,    28,   111,   112,   229,
4259
     147,    51,   525,   333,   138,    55,   336,    90,   338,    57,
4260
     340,    92,   342,    90,  1053,   129,    18,    26,    20,   121,
4261
     121,   138,    90,    90,   147,   400,   115,   550,   147,   118,
4262
     119,   147,    90,   388,    16,   390,   142,    55,   144,   126,
4263
     121,    92,   213,   214,    92,   142,   142,   144,   754,   210,
4264
    1044,   142,   973,   142,   549,   976,   113,   146,   121,   148,
4265
     290,   767,   223,   224,   147,    90,   138,   820,   403,   214,
4266
     147,   754,   144,   121,   223,   224,   142,   242,   142,   147,
4267
     956,    90,   298,   142,   767,   121,   316,   223,   224,   147,
4268
     306,   307,   547,   142,   276,   311,   105,   279,   144,   270,
4269
     142,   272,   125,   213,   214,   276,   252,    55,   443,   444,
4270
     242,   558,   513,    90,   270,   276,   272,   314,   279,   734,
4271
      90,    92,   147,   284,   285,    17,    18,   288,    55,   138,
4272
      25,   140,  1053,   115,   295,   296,   118,   119,   147,   142,
4273
      92,   296,   303,   733,   734,    16,    92,    92,   284,   285,
4274
     306,   798,   298,   314,   947,   551,   809,   612,   276,   876,
4275
      20,   279,   815,   691,   146,    27,   148,   142,   101,   121,
4276
     147,   295,   314,    37,    38,   121,   121,   147,   398,   303,
4277
      58,    59,    51,   403,   401,    37,    38,   870,   349,   350,
4278
     351,   352,   353,   354,   355,   356,   325,   880,   131,   132,
4279
     133,   350,   351,   352,   353,   279,   377,    57,   379,   276,
4280
     279,   680,   279,   374,   350,   351,   352,   353,   138,   355,
4281
     356,   811,   349,   443,   444,   349,   556,   101,   457,    92,
4282
     354,    92,   115,   847,   395,   118,   119,   398,   145,   400,
4283
     401,    92,   403,   665,   115,   400,   668,   118,   119,    92,
4284
     119,   433,   141,   115,   888,   889,   118,   119,   121,   401,
4285
     121,   774,   433,   115,   686,   148,   118,   119,   121,    92,
4286
     121,   139,   433,   723,    55,   146,   458,   148,   121,   802,
4287
     398,   804,   443,   444,   146,   403,   148,   458,   142,    60,
4288
     973,   142,    63,   475,   146,   466,   148,   458,   121,   460,
4289
     461,    92,   484,   435,   475,   101,   438,   947,   803,   101,
4290
     471,    57,   502,   484,   475,    63,    64,    65,   479,   142,
4291
     121,   435,   791,   484,   744,   461,   727,   459,   489,    92,
4292
     121,   806,   121,   521,   949,   319,   107,   812,   813,   142,
4293
     521,   512,   513,   798,   476,   459,    51,    92,   545,   818,
4294
     547,   522,   142,   485,    92,   805,   512,   513,   121,   949,
4295
     718,   522,   476,  1046,   142,   511,   433,   549,   116,   117,
4296
     531,   485,    92,   587,  1057,   493,   121,   591,   549,   892,
4297
     893,    16,   142,   121,   545,    92,   547,   371,   549,   521,
4298
      51,   458,   622,   525,   863,   142,   557,   142,   522,    51,
4299
      92,   121,   584,   545,   142,   547,    61,   531,   475,    64,
4300
      65,   525,   862,   121,   121,   612,   142,   484,   550,   288,
4301
      51,   603,   142,   584,   779,   780,   781,   296,   783,   121,
4302
     785,     1,    99,     3,   605,   504,   550,   504,     8,     9,
4303
      15,   508,   603,   918,    14,    15,    16,    13,    57,    19,
4304
     640,   612,   121,   609,    16,   856,   121,   443,   444,    63,
4305
     929,   116,   117,   121,   122,   800,    15,   536,   145,   536,
4306
     612,   806,   539,    92,   145,   139,   142,   812,   813,   142,
4307
     115,    51,   549,   118,   119,   142,    51,    15,   659,    15,
4308
      44,   477,   478,   142,   665,    65,   656,   668,   669,   670,
4309
     121,   141,   121,   659,    69,   665,   115,   141,   668,   118,
4310
     119,   146,  1025,   148,   123,   686,    15,  1040,   679,   680,
4311
     691,   692,    18,   142,   689,   696,   714,   141,   744,   141,
4312
     679,   400,   703,   714,   587,    15,   101,   102,   103,   148,
4313
     526,   139,   656,   679,  1039,   139,   141,   117,   139,   119,
4314
     142,   665,   713,   215,   668,    44,   727,   689,   142,   816,
4315
     222,   142,   718,   128,   713,   115,    57,   551,   118,   119,
4316
     684,   727,   686,   691,    90,   933,   790,   713,   142,   142,
4317
     800,   939,   714,   918,    44,    15,   806,   807,    93,   105,
4318
      14,   142,   812,   813,    15,  1045,   580,   259,    15,    26,
4319
     145,   798,   471,   774,   142,   960,   961,   962,   963,   142,
4320
     479,   115,   142,   597,   118,   119,   600,   142,   141,    15,
4321
     489,   803,   300,    15,   140,   139,   304,    15,   144,    26,
4322
     791,   147,   803,    73,    74,    15,    15,   798,   799,   800,
4323
     210,   139,   803,   126,   126,   806,   807,   142,    55,   820,
4324
      15,   812,   813,   223,   224,    90,   798,   818,   819,   830,
4325
     139,    55,   833,    90,   733,   142,   733,   734,   142,   142,
4326
     105,   832,   804,   142,   835,   799,   594,   142,   105,   597,
4327
     142,   121,   122,   844,   845,   856,   835,   349,   557,    90,
4328
     804,   852,   142,    90,  1049,    90,    15,   144,   918,   835,
4329
     856,   363,   863,   864,   105,   140,   276,   144,   105,   279,
4330
     105,   138,   147,   140,   284,   285,   141,   144,   288,   381,
4331
     147,   892,   893,   142,   522,   295,   296,    12,     5,   890,
4332
      26,  1042,  1044,   303,   895,   790,   803,   790,   817,   140,
4333
    1041,   138,   811,   140,   811,   140,   147,   144,   890,     6,
4334
     147,    90,   147,   895,   254,   790,   970,   918,   587,   973,
4335
     970,   973,   976,   993,   978,    -1,   105,   928,   929,    -1,
4336
      -1,   932,    90,   213,   214,   936,   947,    -1,    -1,   349,
4337
     350,   351,   352,   353,   354,   355,   356,   105,    -1,    -1,
4338
     932,    -1,    -1,    51,    90,    53,    54,    55,    56,    -1,
4339
      -1,   140,    -1,    -1,   374,    -1,   790,    -1,   147,   105,
4340
      -1,    69,  1026,    63,    64,    65,  1006,    -1,   480,   481,
4341
     806,   807,   140,    -1,    -1,   395,   812,   813,   398,   147,
4342
     400,   509,    -1,   403,    -1,   996,   754,   998,   516,  1053,
4343
    1001,  1055,   138,  1057,   140,  1059,    -1,    -1,   144,   767,
4344
     528,   147,   838,   839,  1025,   841,   842,  1039,    40,    41,
4345
      42,    43,    44,   433,    -1,  1079,   116,   117,  1039,   531,
4346
    1041,  1042,   790,   443,   444,    -1,   538,    -1,  1039,   319,
4347
      90,    -1,   949,    -1,   142,    -1,    -1,    26,   458,    -1,
4348
     460,   461,   876,    -1,   878,   105,    -1,    -1,   882,    -1,
4349
      -1,   471,    -1,   581,   582,   475,    -1,    90,  1040,   479,
4350
      -1,    -1,    61,    -1,   484,    64,    65,   970,    -1,   489,
4351
     973,    -1,   105,   976,    90,   978,  1040,    90,    -1,    -1,
4352
     140,   371,   918,   611,    -1,   970,    -1,   147,   973,   105,
4353
      -1,   976,   105,   978,    51,    -1,    53,    54,    55,    56,
4354
     819,    90,   522,    -1,    -1,   941,    -1,   140,   876,    -1,
4355
      -1,   531,    69,   832,   147,    -1,   105,   116,   117,    -1,
4356
     954,   955,  1039,  1026,   140,   844,   845,   140,    -1,   549,
4357
      -1,   147,    -1,   852,   147,   897,   898,   557,    90,    -1,
4358
      -1,  1026,   976,    -1,   978,   864,    -1,    -1,    -1,   138,
4359
    1053,   140,  1055,   105,  1057,   144,  1059,    -1,   147,    -1,
4360
     688,    -1,    26,    90,   584,    -1,   678,    -1,  1053,    -1,
4361
    1055,    -1,  1057,    -1,  1059,    -1,  1079,    -1,   105,  1013,
4362
      -1,    -1,  1016,   603,    -1,   142,    90,    -1,   140,    90,
4363
      -1,    -1,     8,     9,  1079,   147,    -1,    90,    14,    15,
4364
      16,   105,    -1,    19,   105,   973,   718,    -1,   976,   928,
4365
      -1,   973,   105,   140,  1048,   743,    -1,   936,    -1,  1053,
4366
     147,  1055,    -1,    -1,   115,  1059,    90,   118,   119,    -1,
4367
      46,    47,    48,    49,    -1,   763,   140,    53,    54,   140,
4368
      -1,   105,    -1,   147,    -1,  1079,   147,   140,    -1,    65,
4369
      66,   142,    -1,    -1,   147,   146,    -1,   148,    -1,   679,
4370
     680,   551,    -1,    62,   776,    64,    65,  1029,  1030,  1031,
4371
      -1,  1033,  1034,    -1,   138,    -1,   140,   996,    -1,   998,
4372
     144,    -1,  1001,   147,    62,  1053,    64,    65,    63,    64,
4373
      65,    -1,    -1,   713,    -1,    63,    64,    65,    63,    64,
4374
      65,   117,    -1,    -1,    51,    -1,    53,    54,    55,    56,
4375
     822,  1073,  1074,  1075,  1076,    -1,    -1,   116,   117,    -1,
4376
      -1,  1083,    69,    -1,    -1,    -1,    51,   855,    53,    54,
4377
      55,    56,    -1,    -1,    -1,   847,    83,    -1,   116,   117,
4378
      -1,   116,   117,   871,    69,    -1,    -1,    94,   116,   117,
4379
      -1,   116,   117,   100,   101,   102,   103,    -1,    83,    -1,
4380
      63,    64,    65,    63,    64,    65,    -1,    -1,    -1,    94,
4381
      -1,   791,    -1,    -1,   121,   100,   101,   102,   103,   799,
4382
     800,   128,    -1,   803,   131,    -1,   806,   807,    63,    64,
4383
      65,    -1,   812,   813,    -1,    -1,    -1,   144,   818,   819,
4384
      -1,    -1,    -1,   128,    -1,    -1,   131,   223,   224,    -1,
4385
      -1,    -1,   832,   116,   117,   835,   116,   117,    -1,   144,
4386
      -1,   933,    -1,    -1,   844,   845,    -1,   939,    -1,    -1,
4387
      -1,    -1,   852,    51,    -1,    53,    54,    55,    56,    -1,
4388
      -1,   116,   117,   863,   864,    -1,   262,   263,   264,   265,
4389
      -1,    69,    51,    -1,    53,    54,    55,    56,    -1,    -1,
4390
     276,    -1,    51,   279,    53,    54,    55,    56,   284,   285,
4391
      69,    -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
4392
      69,    -1,   100,   101,   102,   103,    -1,    -1,    51,    -1,
4393
      53,    54,    55,    56,    -1,    94,    -1,    -1,   918,    -1,
4394
      -1,   100,   101,   102,   103,    94,    69,    -1,   928,   929,
4395
     128,   100,    -1,   131,    -1,    51,   936,    53,    54,    55,
4396
      56,   115,    -1,    -1,   118,   119,   144,    -1,    -1,   128,
4397
      -1,    94,   131,    69,   350,   351,   352,   353,   115,   355,
4398
     356,   118,   119,   142,   115,    -1,    -1,   118,   119,    -1,
4399
      -1,   145,   146,    -1,   148,    -1,    -1,    -1,    94,   375,
4400
      -1,    -1,    -1,    -1,   100,    -1,    -1,    -1,    -1,   146,
4401
     386,   148,    -1,    -1,    -1,   146,   996,   148,   998,    -1,
4402
      -1,  1001,   398,    -1,    -1,    -1,    -1,   403,   404,   405,
4403
     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
4404
     416,   417,   101,   419,   420,   421,   422,   423,   424,   425,
4405
     426,   427,   428,   429,   430,    -1,    -1,   433,    -1,  1039,
4406
      51,    -1,    53,    54,    55,    56,    -1,   443,   444,    -1,
4407
     129,   130,   131,   132,   133,    -1,    -1,    -1,    69,    -1,
4408
      -1,    -1,   458,    -1,    -1,   461,    51,    -1,    53,    54,
4409
      55,    56,    -1,    -1,    85,    -1,    -1,   473,    -1,   475,
4410
      -1,   477,   478,    94,    69,    -1,    -1,    -1,   484,   100,
4411
     101,   102,   103,    -1,    -1,    -1,    -1,   493,    -1,    -1,
4412
     496,   497,    -1,    -1,    -1,   501,    -1,    -1,   504,    -1,
4413
     506,    -1,   508,   509,    -1,    -1,    -1,   128,    -1,    -1,
4414
     131,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,
4415
     526,    -1,    -1,    -1,    -1,    -1,    12,    -1,    -1,    -1,
4416
     536,    -1,    51,   539,    53,    54,    55,    56,    -1,    -1,
4417
      -1,    -1,    -1,   549,    -1,    -1,    88,    89,    -1,    -1,
4418
      69,    -1,    -1,    51,    -1,    53,    54,    55,    56,   101,
4419
     566,   567,    -1,    -1,    -1,    51,    85,    -1,    -1,    55,
4420
      -1,    69,    88,    89,    -1,    94,    -1,    -1,   584,    -1,
4421
      -1,   100,   101,   102,   103,   101,   128,   129,   130,   131,
4422
     132,   133,    -1,    -1,    -1,    81,    94,   603,    -1,    -1,
4423
     606,    -1,    -1,   101,   102,   103,    -1,    -1,    -1,   128,
4424
      -1,    -1,   131,   129,   130,   131,   132,   133,    -1,    -1,
4425
      -1,     0,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4426
     128,    -1,    -1,   119,    13,    14,    15,    16,    17,    18,
4427
      -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    27,    28,
4428
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
4429
      -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,
4430
      -1,    -1,    -1,   679,    -1,     1,    -1,     3,     4,     5,
4431
      -1,    -1,    -1,    -1,    -1,   691,    12,    -1,   694,   695,
4432
      -1,    -1,    -1,    72,    73,    74,    75,    76,    77,    78,
4433
      79,    80,    81,    82,    83,    -1,    -1,   713,    -1,    88,
4434
      89,    90,    -1,    -1,    93,    -1,    -1,    -1,   724,    -1,
4435
      99,    -1,   101,    -1,   210,    51,   105,   733,   734,    55,
4436
      -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,    -1,   118,
4437
     119,    -1,    -1,   122,    -1,   124,   125,   126,   127,   128,
4438
     129,   130,   131,   132,   133,    81,    -1,    -1,    -1,   138,
4439
     139,   140,   141,   142,    -1,   144,   145,   146,   147,   148,
4440
      51,    -1,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
4441
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    69,   795,
4442
      -1,    -1,    -1,   119,   800,   801,    -1,   803,    -1,    -1,
4443
     806,   807,   288,    -1,    85,   811,   812,   813,    -1,   295,
4444
     296,    -1,    -1,    94,    -1,    -1,    -1,   303,    -1,   100,
4445
     101,   102,   103,    -1,    -1,    -1,    -1,    -1,   314,   835,
4446
      -1,    -1,   838,   839,    -1,   841,   842,    -1,    -1,    -1,
4447
      -1,    -1,    -1,    -1,    -1,   851,    -1,   128,    -1,   855,
4448
     131,    51,    -1,    53,    54,    55,    56,    -1,    -1,    -1,
4449
      -1,    -1,    -1,   349,    -1,    -1,   872,   873,   354,    69,
4450
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   885,
4451
     886,    -1,    -1,    -1,   210,    -1,    -1,    -1,   374,    -1,
4452
      -1,    -1,    -1,    -1,    94,   901,    -1,    -1,    -1,    -1,
4453
     100,   101,   102,   103,    -1,   911,   912,    88,    89,   395,
4454
      -1,    -1,   918,    -1,   400,   401,    -1,   403,    -1,    -1,
4455
     101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   128,    -1,
4456
      -1,   131,    -1,    -1,    -1,   941,    -1,    -1,    -1,    -1,
4457
      -1,    -1,    -1,   949,    -1,   126,   127,   128,   129,   130,
4458
     131,   132,   133,    -1,    -1,    -1,    -1,   443,   444,    -1,
4459
      -1,    -1,   288,    -1,    -1,    -1,    -1,    -1,    -1,   295,
4460
     296,    -1,    -1,    -1,   460,    -1,    -1,   303,    -1,    -1,
4461
      -1,    -1,    -1,    -1,    -1,   471,    -1,    -1,   314,    -1,
4462
      -1,    -1,    -1,   479,    -1,    -1,    -1,    72,    73,    74,
4463
      75,    76,    77,   489,    -1,    80,    81,    -1,    -1,    -1,
4464
      -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
4465
      -1,    -1,    -1,   349,    -1,    -1,   101,    -1,   354,    -1,
4466
      -1,    -1,    -1,  1039,    -1,    -1,   522,    -1,    -1,    -1,
4467
      -1,    -1,    -1,    -1,    -1,   531,    -1,    -1,   374,   124,
4468
     125,   126,   127,   128,   129,   130,   131,   132,   133,   545,
4469
      -1,   547,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   395,
4470
       0,   557,    -1,    -1,   400,   401,    -1,   403,    -1,    -1,
4471
      -1,    -1,    -1,    13,    14,    15,    16,    17,    18,    -1,
4472
      20,    -1,    -1,    -1,    -1,    -1,    26,    27,    -1,    -1,
4473
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
4474
      40,    41,    42,    43,    44,    -1,    -1,   443,   444,    -1,
4475
      -1,    -1,    -1,    -1,    -1,    -1,   612,    -1,    -1,    -1,
4476
      -1,    -1,    -1,    -1,   460,    -1,    -1,    -1,    -1,    -1,
4477
      -1,    -1,    -1,    -1,    -1,   471,    -1,    -1,    -1,    -1,
4478
      -1,    -1,    -1,   479,    -1,    -1,    -1,    -1,    -1,    -1,
4479
      90,    -1,    -1,   489,    -1,    -1,    -1,    -1,    -1,    -1,
4480
      -1,    -1,    -1,    -1,    -1,   105,     1,    -1,     3,     4,
4481
       5,    -1,    -1,    -1,    -1,   115,    -1,    12,   118,   119,
4482
      -1,    -1,    -1,    -1,   680,    -1,   522,    -1,    -1,    -1,
4483
      -1,    -1,    -1,    -1,    -1,   531,    -1,    -1,   138,   139,
4484
      -1,    -1,    -1,    -1,   144,   145,   146,   147,   148,   545,
4485
      -1,   547,    -1,    -1,    -1,    -1,    51,    -1,    -1,    -1,
4486
      55,   557,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4487
      -1,    -1,    -1,    72,    73,    74,    75,    76,    77,    78,
4488
      79,    80,    81,    82,    83,    -1,    81,    -1,    -1,    88,
4489
      89,    -1,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,
4490
      -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4491
      -1,    -1,    -1,    -1,    -1,    -1,   612,    -1,    -1,    -1,
4492
      -1,    -1,    -1,   122,   119,   124,   125,   126,   127,   128,
4493
     129,   130,   131,   132,   133,   791,    -1,    -1,    -1,    -1,
4494
      -1,    -1,   798,   799,   800,    -1,    -1,    -1,    -1,    -1,
4495
     806,    -1,    -1,    -1,    -1,    -1,   812,   813,    -1,    -1,
4496
      -1,    -1,   818,   819,    -1,    -1,     1,    -1,     3,     4,
4497
       5,     6,    -1,    -1,    -1,    -1,   832,    12,    -1,    -1,
4498
      -1,    -1,    -1,    -1,   680,    -1,    -1,    -1,   844,   845,
4499
      -1,    -1,    -1,    -1,    -1,    -1,   852,    72,    73,    74,
4500
      75,    76,    77,    78,    -1,    80,    81,   863,   864,    -1,
4501
      -1,    -1,    -1,    88,    89,   210,    51,    -1,    -1,    -1,
4502
      55,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
4503
      -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,   895,
4504
      -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,   124,
4505
     125,   126,   127,   128,   129,   130,   131,   132,   133,    -1,
4506
      -1,    -1,   918,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4507
      -1,    -1,   928,   929,    -1,    -1,   932,    -1,    -1,    -1,
4508
     936,    -1,    -1,    -1,   119,    -1,    -1,    -1,    -1,    -1,
4509
      -1,    -1,    -1,   288,    -1,   791,    -1,    -1,    -1,    -1,
4510
     295,   296,   798,   799,   800,    -1,    -1,    -1,   303,    -1,
4511
     806,    -1,    -1,    -1,    -1,    -1,   812,   813,    -1,   314,
4512
      -1,    -1,   818,   819,    -1,    -1,    -1,    -1,    -1,    -1,
4513
      -1,    -1,    -1,    -1,    -1,    -1,   832,    -1,    -1,    -1,
4514
     996,    -1,   998,    -1,    -1,  1001,    -1,    -1,   844,   845,
4515
      -1,    -1,    -1,    -1,   349,    -1,   852,    -1,    -1,   354,
4516
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   863,   864,    -1,
4517
      -1,    -1,    -1,    -1,    -1,   210,    -1,    -1,    -1,   374,
4518
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4519
      -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,   895,
4520
     395,    -1,    -1,    -1,    -1,   400,   401,    -1,   403,    -1,
4521
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4522
      -1,    -1,   918,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4523
      -1,    -1,   928,   929,    -1,    -1,   932,    -1,    -1,     1,
4524
     936,     3,    -1,    -1,    -1,    -1,    -1,    -1,   443,   444,
4525
      12,    -1,    -1,   288,    -1,    -1,    -1,    -1,    -1,    -1,
4526
     295,   296,    -1,    -1,    -1,   460,    -1,    -1,   303,    -1,
4527
      -1,    -1,    -1,    -1,    -1,    -1,   471,    -1,    -1,   314,
4528
      -1,    -1,    -1,    -1,   479,    -1,    -1,    -1,    -1,    51,
4529
      -1,    -1,    -1,    -1,   489,    -1,    -1,    -1,    -1,    -1,
4530
     996,    -1,   998,    -1,    -1,  1001,    -1,    -1,    -1,    -1,
4531
      -1,    -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,   354,
4532
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   522,    -1,    -1,
4533
      -1,    -1,    -1,    -1,    -1,    -1,   531,    -1,    -1,   374,
4534
      -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,
4535
     545,    -1,   547,    -1,    -1,    -1,    -1,   119,    -1,    -1,
4536
     395,    -1,   557,    -1,    -1,   400,   401,    -1,    -1,    -1,
4537
      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    77,
4538
      78,    79,    80,    81,    82,    83,    -1,    -1,    -1,    -1,
4539
      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4540
      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
4541
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   612,    -1,    -1,
4542
       1,    -1,     3,    -1,   122,   460,   124,   125,   126,   127,
4543
     128,   129,   130,   131,   132,   133,   471,    -1,    -1,    -1,
4544
      -1,    -1,    -1,    -1,   479,    -1,    -1,    -1,   210,    -1,
4545
      -1,    -1,    -1,    -1,   489,    -1,    -1,    -1,    -1,    -1,
4546
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4547
      51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    51,    52,
4548
      -1,    -1,    55,    -1,    -1,   680,    -1,   522,    -1,    -1,
4549
      -1,    -1,    -1,    -1,    -1,    -1,   531,    70,    71,    72,
4550
      73,    74,    75,    76,    77,    -1,    -1,    80,    81,    -1,
4551
     545,    -1,   547,    86,    87,    88,    89,    -1,    -1,    -1,
4552
      -1,    -1,   557,    -1,    -1,    -1,   288,   100,   101,   102,
4553
      -1,    -1,    -1,   295,   296,    -1,    -1,    -1,   119,    -1,
4554
      -1,   303,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4555
      -1,   124,   125,   126,   127,   128,   129,   130,   131,   132,
4556
     133,    -1,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,
4557
     143,   144,    -1,    -1,    -1,    -1,    -1,   612,    -1,    -1,
4558
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,    -1,    -1,
4559
      -1,    -1,   354,    -1,    -1,    -1,   791,    -1,    -1,    -1,
4560
      -1,    -1,    -1,   798,   799,   800,    -1,    -1,    -1,    -1,
4561
      -1,   806,   374,    -1,    -1,    -1,    -1,   812,   813,    -1,
4562
      -1,    -1,    -1,   818,   819,    -1,    -1,    -1,    -1,   210,
4563
      -1,    -1,    -1,   395,    -1,    -1,    -1,   832,   400,    -1,
4564
      -1,   403,    -1,    -1,    -1,   680,    -1,    -1,    -1,   844,
4565
     845,    -1,    -1,    -1,    -1,    -1,    -1,   852,    -1,    -1,
4566
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   863,   864,
4567
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4568
      -1,   443,   444,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4569
      -1,    -1,    -1,    -1,    -1,   890,    -1,    -1,   460,    -1,
4570
     895,    -1,    -1,    -1,    -1,    -1,    -1,   288,    -1,   471,
4571
      -1,    -1,    -1,    -1,   295,   296,    -1,   479,    -1,    -1,
4572
      -1,    -1,   303,   918,    -1,    -1,    -1,   489,    -1,    -1,
4573
      -1,    -1,    -1,   928,   929,    -1,    -1,   932,    -1,    -1,
4574
      -1,   936,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4575
      -1,    -1,    -1,    -1,    -1,    -1,   791,    -1,    -1,    -1,
4576
     522,    -1,    -1,   798,   799,    -1,    -1,    -1,   349,   531,
4577
      -1,    -1,    -1,   354,    -1,    -1,    -1,    -1,    -1,    -1,
4578
      -1,    -1,    -1,   818,   819,    -1,    -1,    -1,    -1,    -1,
4579
      -1,    -1,    -1,   374,    -1,   557,    -1,   832,    -1,    -1,
4580
      -1,   996,    -1,   998,    -1,    -1,  1001,    -1,    -1,   844,
4581
     845,    -1,    -1,    -1,   395,    -1,    -1,   852,    -1,   400,
4582
      -1,    -1,   403,    -1,    -1,    -1,    -1,    -1,   863,   864,
4583
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
4584
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4585
      -1,    -1,    -1,    -1,    -1,   890,    -1,    -1,    -1,    -1,
4586
     895,    -1,   443,   444,    -1,    -1,    -1,    72,    73,    74,
4587
      75,    76,    77,    78,    79,    80,    81,    82,    83,   460,
4588
      -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
4589
     471,    -1,    -1,   928,   929,    -1,   101,   932,   479,    -1,
4590
      -1,   936,    -1,    -1,    -1,    -1,    -1,    -1,   489,    -1,
4591
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   122,   680,   124,
4592
     125,   126,   127,   128,   129,   130,   131,   132,   133,    -1,
4593
      72,    73,    74,    75,    76,    77,    -1,   142,    80,    81,
4594
      -1,   522,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,
4595
     531,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
4596
      -1,   996,    -1,   998,    -1,    -1,  1001,    -1,    -1,    -1,
4597
      -1,    -1,    -1,    -1,    -1,    -1,   557,    -1,    -1,    -1,
4598
      -1,    -1,   124,   125,   126,   127,   128,   129,   130,   131,
4599
     132,   133,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4600
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4601
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4602
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   791,
4603
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   799,   800,    -1,
4604
      -1,    -1,    -1,    -1,   806,    -1,    -1,    -1,    -1,    -1,
4605
     812,   813,    -1,    -1,     0,    -1,   818,   819,    -1,    -1,
4606
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    13,    14,    15,
4607
     832,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,
4608
      26,    -1,   844,   845,    -1,    -1,    -1,    -1,    -1,    -1,
4609
     852,    37,    38,    -1,    40,    41,    42,    43,    44,   680,
4610
      -1,   863,   864,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4611
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4612
      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,
4613
      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
4614
      -1,    -1,    88,    89,    90,    -1,    92,    93,    -1,    -1,
4615
      -1,    -1,    -1,    -1,    -1,   101,   918,    -1,    -1,   105,
4616
      -1,    -1,    -1,    -1,    -1,    -1,   928,   929,    -1,   115,
4617
     932,    -1,   118,   119,   936,   121,   122,    -1,   124,   125,
4618
     126,   127,   128,   129,   130,   131,   132,   133,    -1,    -1,
4619
      -1,    -1,   138,   139,   140,    -1,   142,    -1,    -1,   145,
4620
     146,   147,   148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4621
     791,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   799,   800,
4622
      -1,    -1,    -1,    51,    52,   806,    -1,    55,    -1,    -1,
4623
      -1,   812,   813,    -1,   996,    -1,   998,   818,   819,  1001,
4624
      -1,    -1,    70,    71,    72,    73,    74,    75,    76,    77,
4625
      -1,   832,    80,    81,    -1,    -1,    -1,    -1,    86,    87,
4626
      88,    89,    -1,   844,   845,    -1,    -1,    -1,    -1,    -1,
4627
      -1,   852,   100,   101,   102,    -1,    -1,    -1,    -1,    -1,
4628
      -1,    -1,   863,   864,    -1,    -1,    -1,    -1,    -1,    -1,
4629
      -1,    -1,    -1,    -1,    -1,    -1,   124,   125,   126,   127,
4630
     128,   129,   130,   131,   132,   133,    -1,   135,   136,    -1,
4631
      -1,    -1,    -1,    -1,    -1,   143,   144,    -1,    -1,    -1,
4632
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4633
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   918,    -1,    -1,
4634
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   928,   929,    -1,
4635
      -1,    -1,    -1,    -1,    -1,   936,    -1,    -1,    -1,    -1,
4636
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4637
      -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,     1,    -1,
4638
       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
4639
      -1,    -1,    -1,    -1,    -1,    -1,    19,    -1,    21,    22,
4640
      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
4641
      33,    34,    35,    36,    -1,   996,    39,   998,    -1,    -1,
4642
    1001,    -1,    45,    46,    47,    48,    49,    50,    51,    52,
4643
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
4644
      63,    -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,
4645
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4646
      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,
4647
      -1,    94,    95,    -1,    97,    98,    -1,   100,    -1,    -1,
4648
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
4649
       0,   114,   115,    -1,    -1,   118,   119,    -1,    -1,    -1,
4650
      -1,    -1,    -1,    13,    14,    15,    16,    17,    18,    -1,
4651
      20,   134,   135,   136,    -1,    -1,    -1,    27,    28,    29,
4652
      -1,    -1,    -1,   146,    -1,   148,    -1,    37,    38,    -1,
4653
      40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,
4654
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
4655
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4656
      -1,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
4657
      80,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    89,
4658
      90,    -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    99,
4659
      -1,   101,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,
4660
      -1,    -1,    -1,   113,    -1,   115,    -1,    -1,   118,   119,
4661
      -1,    -1,   122,   123,   124,   125,   126,   127,   128,   129,
4662
     130,   131,   132,   133,    -1,    -1,     0,    -1,    -1,   139,
4663
     140,   141,   142,    -1,    -1,   145,   146,   147,   148,    13,
4664
      14,    15,    16,    17,    18,    -1,    20,    -1,    -1,    -1,
4665
      -1,    -1,    -1,    27,    28,    -1,    -1,    -1,    -1,    -1,
4666
      -1,    -1,    -1,    37,    38,    -1,    40,    41,    42,    43,
4667
      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4668
      -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,
4669
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
4670
      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
4671
      -1,    -1,    -1,    -1,    88,    89,    90,    -1,    92,    93,
4672
      -1,    -1,    -1,    -1,    -1,    99,    -1,   101,    -1,    -1,
4673
      -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4674
      -1,   115,    -1,    -1,   118,   119,    -1,   121,   122,    -1,
4675
     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
4676
      -1,    -1,     0,    -1,    -1,   139,   140,   141,   142,    -1,
4677
      -1,   145,   146,   147,   148,    13,    14,    15,    16,    17,
4678
      18,    -1,    20,    -1,    -1,    -1,    -1,    -1,    26,    27,
4679
      28,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
4680
      38,    -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,
4681
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4682
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4683
      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    77,
4684
      78,    79,    80,    81,    82,    83,    -1,    -1,    -1,    -1,
4685
      88,    89,    90,    -1,    -1,    93,    -1,    -1,    -1,    -1,
4686
      -1,    99,    -1,   101,    -1,    -1,    -1,   105,    -1,    -1,
4687
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,    -1,    -1,
4688
     118,   119,    -1,    -1,   122,    -1,   124,   125,   126,   127,
4689
     128,   129,   130,   131,   132,   133,    -1,    -1,     0,    -1,
4690
     138,   139,   140,   141,   142,    -1,   144,   145,   146,   147,
4691
     148,    13,    14,    15,    16,    17,    18,    -1,    20,    -1,
4692
      -1,    -1,    -1,    -1,    -1,    27,    28,    -1,    -1,    -1,
4693
      -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    41,
4694
      42,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4695
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4696
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4697
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
4698
      82,    83,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,
4699
      -1,    93,    -1,    -1,    -1,    -1,    -1,    99,    -1,   101,
4700
      -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,
4701
      -1,    -1,    -1,   115,    -1,    -1,   118,   119,    -1,    -1,
4702
     122,    -1,   124,   125,   126,   127,   128,   129,   130,   131,
4703
     132,   133,    -1,    -1,     0,    -1,    -1,   139,   140,   141,
4704
     142,    -1,   144,   145,   146,   147,   148,    13,    14,    15,
4705
      -1,    17,    18,    -1,    20,    -1,    -1,    -1,    -1,    -1,
4706
      26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4707
      -1,    37,    38,    -1,    40,    41,    42,    43,    44,    -1,
4708
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4709
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4710
      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,
4711
      76,    77,    78,    79,    80,    81,    82,    83,    -1,    -1,
4712
      -1,    -1,    88,    89,    90,    -1,    92,    93,    -1,    -1,
4713
      -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,   105,
4714
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   115,
4715
      -1,    -1,   118,   119,    -1,   121,   122,    -1,   124,   125,
4716
     126,   127,   128,   129,   130,   131,   132,   133,    -1,    -1,
4717
       0,    -1,   138,   139,   140,    -1,   142,    -1,    -1,   145,
4718
     146,   147,   148,    13,    14,    15,    -1,    17,    18,    -1,
4719
      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4720
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
4721
      40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,
4722
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4723
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4724
      -1,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
4725
      80,    81,    82,    83,    -1,    -1,    -1,    -1,    88,    89,
4726
      90,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
4727
      -1,   101,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,
4728
      -1,    -1,    -1,    -1,    -1,   115,    -1,    -1,   118,   119,
4729
      -1,   121,   122,    -1,   124,   125,   126,   127,   128,   129,
4730
     130,   131,   132,   133,    -1,    -1,     0,    -1,    -1,   139,
4731
     140,    -1,   142,    -1,    -1,   145,   146,   147,   148,    13,
4732
      14,    15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,
4733
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4734
      -1,    -1,    -1,    37,    38,    -1,    40,    41,    42,    43,
4735
      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4736
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4737
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
4738
      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
4739
      -1,    -1,    -1,    -1,    88,    89,    90,    -1,    92,    93,
4740
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
4741
      -1,   105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4742
      -1,   115,    -1,    -1,   118,   119,    -1,   121,   122,    -1,
4743
     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
4744
      -1,    -1,    -1,    -1,    -1,   139,   140,    -1,   142,    -1,
4745
      -1,   145,   146,   147,   148,     1,    -1,     3,     4,     5,
4746
       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
4747
      -1,    -1,    18,    19,    -1,    21,    22,    23,    24,    -1,
4748
      -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
4749
      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,
4750
      -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
4751
      56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,
4752
      66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
4753
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
4754
      -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,
4755
      -1,    97,    98,    -1,   100,    -1,    -1,    -1,   104,    -1,
4756
     106,   107,   108,    -1,   110,   111,   112,    -1,   114,   115,
4757
      -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,
4758
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
4759
     136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4760
     146,     1,   148,     3,     4,     5,     6,     7,     8,     9,
4761
      10,    11,    12,    -1,    -1,    15,    -1,    17,    18,    19,
4762
      -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
4763
      30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
4764
      -1,    -1,    -1,    -1,    -1,    45,    -1,    47,    48,    49,
4765
      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
4766
      60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,
4767
      70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4768
      -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,
4769
      -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,
4770
     100,    -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,
4771
     110,   111,   112,    -1,   114,   115,    -1,    -1,   118,   119,
4772
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4773
      -1,    -1,    -1,    -1,   134,   135,   136,    -1,    -1,    -1,
4774
      -1,    -1,    -1,    -1,    -1,    -1,   146,     1,   148,     3,
4775
       4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
4776
      -1,    15,    -1,    -1,    18,    19,    20,    21,    22,    23,
4777
      24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,
4778
      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
4779
      -1,    45,    -1,    47,    48,    49,    50,    51,    52,    53,
4780
      54,    55,    56,    -1,    58,    59,    60,    -1,    -1,    63,
4781
      -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,
4782
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4783
      84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
4784
      94,    95,    -1,    97,    98,    -1,   100,    -1,    -1,    -1,
4785
     104,    -1,   106,   107,   108,    -1,   110,   111,   112,    -1,
4786
     114,   115,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,
4787
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4788
     134,   135,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4789
      -1,    -1,   146,     1,   148,     3,     4,     5,     6,     7,
4790
       8,     9,    10,    11,    12,    -1,    -1,    15,    -1,    -1,
4791
      18,    19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,
4792
      -1,    -1,    30,    31,    32,    33,    34,    35,    36,    -1,
4793
      -1,    39,    -1,    -1,    -1,    -1,    -1,    45,    -1,    47,
4794
      48,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
4795
      58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,
4796
      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
4797
      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,
4798
      -1,    -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,
4799
      98,    -1,   100,    -1,    -1,    -1,   104,    -1,   106,   107,
4800
     108,    -1,   110,   111,   112,    -1,   114,   115,    -1,    -1,
4801
     118,   119,     1,    -1,     3,     4,     5,     6,     7,     8,
4802
       9,    10,    11,    12,    -1,    -1,   134,   135,   136,    -1,
4803
      19,    -1,    21,    22,    23,    24,    -1,    -1,   146,    -1,
4804
     148,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
4805
      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
4806
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
4807
      59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
4808
      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4809
      -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,
4810
      -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,
4811
      -1,   100,    -1,    -1,    -1,   104,    -1,   106,   107,   108,
4812
      -1,   110,   111,   112,    -1,   114,   115,    -1,    -1,   118,
4813
     119,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4814
      -1,    -1,    -1,    -1,    -1,   134,   135,   136,    -1,    -1,
4815
     139,    -1,    -1,    -1,    -1,    -1,    -1,   146,     1,   148,
4816
       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
4817
      -1,    14,    15,    -1,    -1,    -1,    19,    -1,    21,    22,
4818
      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
4819
      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
4820
      -1,    -1,    45,    -1,    47,    48,    49,    50,    51,    52,
4821
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
4822
      63,    -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,
4823
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4824
      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,
4825
      -1,    94,    95,    -1,    97,    98,    -1,   100,    -1,    -1,
4826
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
4827
      -1,   114,   115,    -1,    -1,   118,   119,     1,    -1,     3,
4828
       4,     5,     6,     7,     8,     9,    10,    11,    12,    -1,
4829
      -1,   134,   135,   136,    -1,    19,    -1,    21,    22,    23,
4830
      24,    -1,    -1,   146,    -1,   148,    30,    31,    32,    33,
4831
      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
4832
      -1,    45,    -1,    47,    48,    49,    50,    51,    52,    53,
4833
      54,    55,    56,    -1,    58,    59,    60,    -1,    -1,    63,
4834
      -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,
4835
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4836
      84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
4837
      94,    95,    -1,    97,    98,    -1,   100,    -1,    -1,    -1,
4838
     104,    -1,   106,   107,   108,    -1,   110,   111,   112,    -1,
4839
     114,   115,    -1,    -1,   118,   119,     1,    -1,     3,     4,
4840
       5,     6,     7,     8,     9,    10,    11,    12,    -1,    -1,
4841
     134,   135,   136,    -1,    19,    -1,    21,    22,    23,    24,
4842
      -1,   145,   146,    -1,   148,    30,    31,    32,    33,    34,
4843
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
4844
      45,    -1,    47,    48,    49,    50,    51,    52,    53,    54,
4845
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
4846
      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
4847
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
4848
      85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
4849
      95,    -1,    97,    98,    -1,   100,    -1,    -1,    -1,   104,
4850
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
4851
     115,    -1,    -1,   118,   119,     1,    -1,     3,     4,     5,
4852
       6,     7,     8,     9,    10,    11,    12,    -1,    -1,   134,
4853
     135,   136,    -1,    19,    -1,    21,    22,    23,    24,    -1,
4854
     145,   146,    -1,   148,    30,    31,    32,    33,    34,    35,
4855
      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,
4856
      -1,    47,    48,    49,    50,    51,    52,    53,    54,    55,
4857
      56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,
4858
      66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
4859
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
4860
      -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,
4861
      -1,    97,    98,    -1,   100,    -1,    -1,    -1,   104,    -1,
4862
     106,   107,   108,    -1,   110,   111,   112,    -1,   114,   115,
4863
      -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,    -1,
4864
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
4865
     136,    -1,    -1,   139,    -1,    -1,    -1,    -1,    -1,    -1,
4866
     146,     1,   148,     3,     4,     5,     6,     7,     8,     9,
4867
      10,    11,    12,    -1,    -1,    15,    -1,    -1,    -1,    19,
4868
      -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
4869
      30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
4870
      -1,    -1,    -1,    -1,    -1,    45,    -1,    47,    48,    49,
4871
      50,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
4872
      60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,
4873
      70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4874
      -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,
4875
      -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,
4876
     100,    -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,
4877
     110,   111,   112,    -1,   114,   115,    -1,    -1,   118,   119,
4878
      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
4879
      11,    12,    -1,    -1,   134,   135,   136,    -1,    19,    -1,
4880
      21,    22,    23,    24,    -1,    -1,   146,    -1,   148,    30,
4881
      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
4882
      -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,    50,
4883
      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
4884
      -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,
4885
      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4886
      -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
4887
      91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,   100,
4888
      -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,   110,
4889
     111,   112,    -1,   114,   115,    -1,    -1,   118,   119,    -1,
4890
      -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
4891
      12,    -1,    -1,   134,   135,   136,    -1,    19,    -1,    21,
4892
      22,    23,    24,    -1,    -1,   146,    -1,   148,    30,    31,
4893
      32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
4894
      -1,    -1,    -1,    45,    -1,    47,    48,    49,    50,    51,
4895
      52,    53,    54,    55,    56,    -1,    58,    59,    60,    -1,
4896
      -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,    71,
4897
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4898
      -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,
4899
      -1,    -1,    94,    95,    -1,    97,    98,    -1,   100,    -1,
4900
      -1,    -1,   104,    -1,   106,   107,   108,    -1,   110,   111,
4901
     112,    -1,   114,   115,    -1,    -1,   118,   119,    -1,    -1,
4902
       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
4903
      -1,    -1,   134,   135,   136,    -1,    19,    -1,    21,    22,
4904
      23,    24,    -1,    -1,   146,    -1,   148,    30,    31,    32,
4905
      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
4906
      -1,    -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,
4907
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
4908
      63,    -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,
4909
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4910
      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,
4911
      -1,    94,    95,    -1,    97,    98,    -1,    -1,    -1,    -1,
4912
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
4913
      -1,   114,   115,    -1,    -1,   118,   119,    -1,    -1,     3,
4914
       4,     5,     6,     7,     8,     9,    10,    11,    -1,    -1,
4915
      -1,   134,   135,   136,    -1,    19,    -1,    21,    22,    23,
4916
      24,    -1,    -1,   146,    -1,   148,    30,    31,    32,    33,
4917
      34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
4918
      -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,    53,
4919
      54,    55,    56,    -1,    58,    59,    60,    -1,    -1,    63,
4920
      -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,
4921
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4922
      84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
4923
      94,    95,    -1,    97,    98,    -1,    -1,    -1,    -1,    -1,
4924
     104,    -1,   106,   107,   108,    -1,   110,   111,   112,    -1,
4925
     114,   115,    -1,    -1,   118,   119,    -1,    -1,     3,     4,
4926
       5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
4927
     134,   135,   136,    -1,    19,    -1,    21,    22,    23,    24,
4928
      -1,    -1,   146,    -1,   148,    30,    31,    32,    33,    34,
4929
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
4930
      -1,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
4931
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
4932
      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
4933
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
4934
      85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
4935
      95,    -1,    97,    98,    -1,    -1,    -1,    -1,    -1,   104,
4936
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
4937
     115,    -1,    -1,   118,   119,    -1,    -1,    -1,    -1,    -1,
4938
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,
4939
     135,   136,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4940
      -1,    -1,    -1,   148,     3,     4,     5,     6,     7,     8,
4941
       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
4942
      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
4943
      -1,    30,    31,    32,    33,    34,    35,    36,    37,    38,
4944
      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
4945
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
4946
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4947
      69,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
4948
      -1,    80,    81,    -1,    -1,    -1,    -1,    86,    87,    88,
4949
      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4950
      -1,   100,   101,   102,    -1,    -1,    -1,    -1,    -1,    -1,
4951
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4952
      -1,    -1,    -1,    -1,    -1,   124,   125,   126,   127,   128,
4953
     129,   130,   131,   132,   133,    -1,   135,   136,    -1,    -1,
4954
      -1,    -1,    -1,    -1,   143,   144,     3,     4,     5,     6,
4955
       7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,
4956
      -1,    -1,    19,    -1,    21,    22,    23,    24,    -1,    26,
4957
      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
4958
      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4959
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
4960
      -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
4961
      67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
4962
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,
4963
      -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,    -1,
4964
      97,    98,    -1,   100,    -1,   102,   103,   104,    -1,   106,
4965
     107,   108,    -1,   110,   111,   112,    -1,   114,    -1,    -1,
4966
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4967
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,   136,
4968
      -1,   138,    -1,    -1,    -1,    -1,    -1,   144,     3,     4,
4969
       5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
4970
      -1,    -1,    -1,    -1,    19,    -1,    21,    22,    23,    24,
4971
      -1,    26,    -1,    -1,    -1,    30,    31,    32,    33,    34,
4972
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
4973
      -1,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
4974
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
4975
      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
4976
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
4977
      85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
4978
      95,    -1,    97,    98,    -1,   100,    -1,   102,   103,   104,
4979
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
4980
      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
4981
       7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,   134,
4982
     135,   136,    19,   138,    21,    22,    23,    24,    -1,   144,
4983
      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
4984
      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4985
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
4986
      -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
4987
      67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
4988
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,
4989
      -1,    -1,    -1,    -1,    91,    92,    -1,    94,    95,    -1,
4990
      97,    98,    -1,   100,    -1,   102,   103,   104,    -1,   106,
4991
     107,   108,    -1,   110,   111,   112,    -1,   114,    -1,    -1,
4992
      -1,    -1,    -1,    -1,   121,     3,     4,     5,     6,     7,
4993
       8,     9,    10,    11,    -1,    -1,    -1,   134,   135,   136,
4994
      -1,    19,    -1,    21,    22,    23,    24,   144,    -1,    -1,
4995
      -1,    -1,    30,    31,    32,    33,    34,    35,    36,    -1,
4996
      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
4997
      48,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
4998
      58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,
4999
      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,
5000
      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,
5001
      -1,    -1,    -1,    91,    92,    -1,    94,    95,    -1,    97,
5002
      98,    -1,   100,    -1,   102,   103,   104,    -1,   106,   107,
5003
     108,    -1,   110,   111,   112,    -1,   114,    -1,    -1,    -1,
5004
      -1,    -1,    -1,   121,     3,     4,     5,     6,     7,     8,
5005
       9,    10,    11,    -1,    -1,    -1,   134,   135,   136,    -1,
5006
      19,    -1,    21,    22,    23,    24,   144,    -1,    -1,    -1,
5007
      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
5008
      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
5009
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
5010
      59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
5011
      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5012
      -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,
5013
      -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,
5014
      -1,   100,    -1,   102,   103,   104,    -1,   106,   107,   108,
5015
      -1,   110,   111,   112,    -1,   114,    -1,    -1,    -1,    -1,
5016
      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
5017
      11,    -1,    -1,    -1,    -1,   134,   135,   136,    19,    -1,
5018
      21,    22,    23,    24,    -1,   144,    -1,    -1,    -1,    30,
5019
      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
5020
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,
5021
      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
5022
      -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,
5023
      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5024
      -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
5025
      91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,   100,
5026
      -1,   102,   103,   104,    -1,   106,   107,   108,    -1,   110,
5027
     111,   112,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
5028
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5029
      -1,    -1,    -1,   134,   135,   136,    -1,    -1,    -1,    -1,
5030
      -1,    -1,    -1,   144,     3,     4,     5,     6,     7,     8,
5031
       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
5032
      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
5033
      -1,    30,    31,    32,    33,    34,    35,    36,    37,    38,
5034
      39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
5035
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
5036
      -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,
5037
      69,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
5038
      -1,    80,    81,    -1,    -1,    -1,    -1,    86,    87,    88,
5039
      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5040
      -1,   100,   101,   102,    -1,    -1,    -1,    -1,   107,    -1,
5041
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5042
      -1,    -1,    -1,    -1,    -1,   124,   125,   126,   127,   128,
5043
     129,   130,   131,   132,   133,    -1,   135,   136,    -1,    -1,
5044
      -1,    -1,    -1,    -1,   143,     3,     4,     5,     6,     7,
5045
       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
5046
      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
5047
      -1,    -1,    30,    31,    32,    33,    34,    35,    36,    37,
5048
      38,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,
5049
      48,    49,    50,    51,    52,    53,    54,    55,    56,    -1,
5050
      -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,
5051
      -1,    -1,    70,    71,    72,    73,    74,    75,    76,    77,
5052
      -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    86,    87,
5053
      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5054
      -1,    -1,   100,   101,   102,    -1,    -1,    -1,    -1,   107,
5055
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5056
      -1,    -1,    -1,    -1,    -1,    -1,   124,   125,   126,   127,
5057
     128,   129,   130,   131,   132,   133,    -1,   135,   136,    -1,
5058
      -1,    -1,    -1,    -1,    -1,   143,     3,     4,     5,     6,
5059
       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
5060
      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
5061
      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
5062
      37,    38,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,
5063
      47,    48,    49,    50,    51,    52,    -1,    -1,    55,    -1,
5064
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5065
      -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
5066
      77,    -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    86,
5067
      87,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5068
      -1,    -1,    -1,   100,   101,   102,    -1,    -1,    -1,   106,
5069
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5070
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,   125,   126,
5071
     127,   128,   129,   130,   131,   132,   133,    -1,   135,   136,
5072
      -1,    -1,    -1,    -1,    -1,    -1,   143,     3,     4,     5,
5073
       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
5074
      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
5075
      26,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
5076
      36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,    45,
5077
      46,    47,    48,    49,    50,    51,    52,    -1,    -1,    55,
5078
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5079
      -1,    -1,    -1,    -1,    70,    71,    72,    73,    74,    75,
5080
      76,    77,    -1,    -1,    80,    81,    -1,    -1,    -1,    -1,
5081
      86,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,
5082
      -1,    -1,    -1,    -1,   100,   101,   102,    -1,    -1,    -1,
5083
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5084
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,   125,
5085
     126,   127,   128,   129,   130,   131,   132,   133,    -1,   135,
5086
     136,    -1,    -1,    -1,    -1,    -1,    -1,   143,     3,     4,
5087
       5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
5088
      -1,    -1,    -1,    -1,    19,    -1,    21,    22,    23,    24,
5089
      -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
5090
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
5091
      -1,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
5092
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
5093
      -1,    66,    67,    -1,    69,    -1,    -1,    -1,    -1,    -1,
5094
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5095
      -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
5096
      95,    -1,    97,    98,    -1,    -1,    -1,    -1,    -1,   104,
5097
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
5098
      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
5099
      11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    19,   134,
5100
      21,    22,    23,    24,    -1,    -1,    -1,   142,    -1,    30,
5101
      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
5102
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,
5103
      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
5104
      -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    -1,
5105
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5106
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5107
      91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,    -1,
5108
      -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,   110,
5109
     111,   112,    -1,   114,    -1,    -1,     3,     4,     5,     6,
5110
       7,     8,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
5111
      -1,    -1,    19,   134,    21,    22,    23,    24,    -1,    -1,
5112
      -1,   142,    -1,    30,    31,    32,    33,    34,    35,    36,
5113
      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,    46,
5114
      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
5115
      -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
5116
      67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
5117
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,
5118
      -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,    -1,
5119
      97,    98,    -1,   100,    -1,    -1,    -1,   104,    -1,   106,
5120
     107,   108,    -1,   110,   111,   112,    -1,   114,    -1,    -1,
5121
      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
5122
       9,    10,    11,    12,    -1,    -1,    -1,   134,   135,   136,
5123
      19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
5124
      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
5125
      39,    -1,    -1,    -1,    -1,    -1,    45,    -1,    47,    48,
5126
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
5127
      59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
5128
      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5129
      -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,
5130
      -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,
5131
      -1,   100,    -1,    -1,    -1,   104,    -1,   106,   107,   108,
5132
      -1,   110,   111,   112,    -1,   114,    -1,    -1,    -1,    -1,
5133
      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
5134
      11,    -1,    -1,    -1,    -1,   134,   135,   136,    19,    -1,
5135
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
5136
      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
5137
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,
5138
      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
5139
      -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,
5140
      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5141
      -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
5142
      91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,   100,
5143
      -1,   102,   103,   104,    -1,   106,   107,   108,    -1,   110,
5144
     111,   112,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
5145
       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
5146
      -1,    -1,    -1,   134,   135,   136,    19,    -1,    21,    22,
5147
      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
5148
      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
5149
      -1,    -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,
5150
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
5151
      63,    -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,
5152
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5153
      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,
5154
      -1,    94,    95,    -1,    97,    98,    -1,   100,    -1,   102,
5155
     103,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
5156
      -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
5157
       5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
5158
      -1,   134,   135,   136,    19,    -1,    21,    22,    23,    24,
5159
      -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
5160
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
5161
      -1,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
5162
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
5163
      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
5164
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
5165
      85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
5166
      95,    -1,    97,    98,    -1,   100,    -1,   102,   103,   104,
5167
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
5168
      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
5169
       7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,   134,
5170
     135,   136,    19,    -1,    21,    22,    23,    24,    -1,    -1,
5171
      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
5172
      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5173
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
5174
      -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
5175
      67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
5176
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,
5177
      -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,    -1,
5178
      97,    98,    -1,   100,    -1,   102,   103,   104,    -1,   106,
5179
     107,   108,    -1,   110,   111,   112,    -1,   114,    -1,    -1,
5180
      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
5181
       9,    10,    11,    -1,    -1,    -1,    -1,   134,   135,   136,
5182
      19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
5183
      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
5184
      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
5185
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
5186
      59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
5187
      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5188
      -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,
5189
      -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,
5190
      -1,   100,    -1,   102,    -1,   104,    -1,   106,   107,   108,
5191
      -1,   110,   111,   112,    -1,   114,    -1,    -1,    -1,    -1,
5192
      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
5193
      11,    -1,    -1,    -1,    -1,   134,   135,   136,    19,    -1,
5194
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
5195
      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
5196
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,
5197
      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
5198
      -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,
5199
      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5200
      -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
5201
      91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,    -1,
5202
      -1,   102,   103,   104,    -1,   106,   107,   108,    -1,   110,
5203
     111,   112,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
5204
       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
5205
      -1,    -1,    -1,   134,   135,   136,    19,    -1,    21,    22,
5206
      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
5207
      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
5208
      -1,    -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,
5209
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
5210
      63,    -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,
5211
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5212
      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,
5213
      -1,    94,    95,    -1,    97,    98,    -1,   100,    -1,   102,
5214
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
5215
      -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
5216
       5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
5217
      -1,   134,   135,   136,    19,    -1,    21,    22,    23,    24,
5218
      -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
5219
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
5220
      -1,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
5221
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
5222
      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
5223
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
5224
      85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
5225
      95,    -1,    97,    98,    -1,    -1,    -1,   102,    -1,   104,
5226
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
5227
      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
5228
       7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,   134,
5229
     135,   136,    19,    -1,    21,    22,    23,    24,    -1,    -1,
5230
      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
5231
      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5232
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
5233
      -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
5234
      67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
5235
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,
5236
      -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,    -1,
5237
      97,    98,    -1,   100,    -1,    -1,    -1,   104,    -1,   106,
5238
     107,   108,    -1,   110,   111,   112,    -1,   114,    -1,    -1,
5239
      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
5240
       9,    10,    11,    -1,    -1,    -1,    -1,   134,   135,   136,
5241
      19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
5242
      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
5243
      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
5244
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
5245
      59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
5246
      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5247
      -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,
5248
      -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,
5249
      -1,   100,    -1,    -1,    -1,   104,    -1,   106,   107,   108,
5250
      -1,   110,   111,   112,    -1,   114,    -1,    -1,    -1,    -1,
5251
      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
5252
      11,    -1,    -1,    -1,    -1,   134,   135,   136,    19,    -1,
5253
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
5254
      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
5255
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,
5256
      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
5257
      -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,
5258
      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5259
      -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
5260
      91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,   100,
5261
      -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,   110,
5262
     111,   112,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
5263
       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
5264
      -1,    -1,    -1,   134,   135,   136,    19,    -1,    21,    22,
5265
      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
5266
      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
5267
      -1,    -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,
5268
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
5269
      63,    -1,    -1,    66,    67,    -1,    69,    70,    71,    -1,
5270
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5271
      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    91,    -1,
5272
      -1,    94,    95,    -1,    97,    98,    -1,   100,    -1,    -1,
5273
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
5274
      -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
5275
       5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
5276
      -1,   134,   135,   136,    19,    -1,    21,    22,    23,    24,
5277
      -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
5278
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
5279
      -1,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
5280
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
5281
      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
5282
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
5283
      85,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
5284
      95,    -1,    97,    98,    -1,   100,    -1,    -1,    -1,   104,
5285
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
5286
      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
5287
       7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,   134,
5288
     135,   136,    19,    -1,    21,    22,    23,    24,    -1,    -1,
5289
      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
5290
      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5291
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
5292
      -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
5293
      67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,
5294
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,
5295
      -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,    -1,
5296
      97,    98,    -1,    -1,    -1,    -1,    -1,   104,    -1,   106,
5297
     107,   108,    -1,   110,   111,   112,    -1,   114,    -1,    -1,
5298
      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
5299
       9,    10,    11,    -1,    -1,    -1,    -1,   134,   135,   136,
5300
      19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
5301
      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
5302
      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
5303
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
5304
      59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
5305
      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5306
      -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,
5307
      -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,
5308
      -1,    -1,    -1,    -1,    -1,   104,    -1,   106,   107,   108,
5309
      -1,   110,   111,   112,    -1,   114,    -1,    -1,    -1,    -1,
5310
      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
5311
      11,    -1,    -1,    -1,    -1,   134,   135,   136,    19,    -1,
5312
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
5313
      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
5314
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,
5315
      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
5316
      -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,
5317
      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5318
      -1,    -1,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
5319
      91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,    -1,
5320
      -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,   110,
5321
     111,   112,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
5322
       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
5323
      -1,    -1,    -1,   134,   135,   136,    19,    -1,    21,    22,
5324
      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
5325
      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
5326
      -1,    -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,
5327
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
5328
      63,    -1,    -1,    66,    67,    -1,    69,    -1,    -1,    -1,
5329
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5330
      -1,    -1,    -1,    -1,    -1,    88,    -1,    -1,    91,    -1,
5331
      -1,    94,    95,    -1,    97,    98,    -1,    -1,    -1,    -1,
5332
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
5333
      -1,   114,    -1,    -1,     3,     4,     5,     6,     7,     8,
5334
       9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5335
      19,   134,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
5336
      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
5337
      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
5338
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
5339
      59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
5340
      69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5341
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5342
      -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,
5343
      -1,   100,    -1,    -1,    -1,   104,    -1,   106,   107,   108,
5344
      -1,   110,   111,   112,    -1,   114,    -1,    -1,     3,     4,
5345
       5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
5346
      -1,    -1,    -1,    -1,    19,   134,    21,    22,    23,    24,
5347
      -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
5348
      35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
5349
      -1,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
5350
      55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
5351
      -1,    66,    67,    -1,    69,    -1,    -1,    -1,    -1,    -1,
5352
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5353
      -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    94,
5354
      95,    -1,    97,    98,    -1,   100,    -1,    -1,    -1,   104,
5355
      -1,   106,   107,   108,    -1,   110,   111,   112,    -1,   114,
5356
      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
5357
      11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    19,   134,
5358
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
5359
      31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
5360
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    50,
5361
      51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
5362
      -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    -1,
5363
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5364
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5365
      91,    -1,    -1,    94,    95,    -1,    97,    98,    -1,    -1,
5366
      -1,    -1,    -1,   104,    -1,   106,   107,   108,    -1,   110,
5367
     111,   112,    -1,   114,    -1,    -1,     3,     4,     5,     6,
5368
       7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,
5369
      -1,    -1,    19,   134,    21,    22,    23,    24,    -1,    -1,
5370
      -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
5371
      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5372
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
5373
      -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
5374
      67,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5375
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5376
      -1,    -1,    -1,    -1,    91,    -1,    -1,    94,    95,    -1,
5377
      97,    98,    -1,    -1,    -1,    -1,    -1,   104,    -1,   106,
5378
     107,   108,    -1,   110,   111,   112,    -1,   114,    -1,    -1,
5379
       3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
5380
      -1,    -1,    -1,    -1,    -1,    -1,    19,   134,    21,    22,
5381
      23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
5382
      33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
5383
      -1,    -1,    -1,    -1,    -1,    48,    49,    50,    51,    52,
5384
      53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
5385
      63,    -1,    -1,    66,    67,    -1,    69,    -1,    -1,    -1,
5386
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5387
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
5388
      -1,    94,    95,    -1,    97,    98,    -1,    -1,    -1,    -1,
5389
      -1,   104,    -1,   106,   107,   108,    -1,   110,   111,   112,
5390
      -1,   114,    -1,    -1,     3,     4,     5,     6,     7,     8,
5391
       9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5392
      19,   134,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
5393
      -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
5394
      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
5395
      49,    50,    51,    52,    53,    54,    55,    56,    -1,    58,
5396
      59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
5397
      69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5398
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5399
      -1,    -1,    91,    -1,    -1,    94,    95,    -1,    97,    98,
5400
      -1,    -1,    51,    52,    -1,   104,    55,   106,   107,   108,
5401
      -1,   110,   111,   112,    -1,   114,    -1,    -1,    -1,    -1,
5402
      -1,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
5403
      -1,    80,    81,    -1,    -1,   134,    -1,    86,    87,    88,
5404
      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5405
      -1,   100,   101,   102,    -1,    -1,    -1,    -1,    -1,    -1,
5406
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5407
      -1,    -1,    -1,    -1,    -1,   124,   125,   126,   127,   128,
5408
     129,   130,   131,   132,   133,    -1,   135,   136,    51,    52,
5409
      -1,    -1,    55,    -1,   143,   144,    -1,    -1,    -1,    -1,
5410
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    71,    72,
5411
      73,    74,    75,    76,    77,    -1,    -1,    80,    81,    -1,
5412
      -1,    -1,    -1,    86,    87,    88,    89,    -1,    -1,    -1,
5413
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,   101,   102,
5414
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5415
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5416
      -1,   124,   125,   126,   127,   128,   129,   130,   131,   132,
5417
     133,    -1,   135,   136,    51,    52,    -1,    -1,    55,    -1,
5418
     143,   144,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5419
      -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
5420
      77,    -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    86,
5421
      87,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5422
      -1,    -1,    -1,   100,   101,   102,    -1,    -1,    -1,    -1,
5423
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5424
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,   125,   126,
5425
     127,   128,   129,   130,   131,   132,   133,    -1,   135,   136,
5426
      51,    52,    -1,    -1,    55,    -1,   143,   144,    -1,    -1,
5427
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
5428
      71,    72,    73,    74,    75,    76,    77,    -1,    -1,    80,
5429
      81,    -1,    -1,    -1,    -1,    86,    87,    88,    89,    -1,
5430
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,
5431
     101,   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5432
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5433
      -1,    -1,    -1,   124,   125,   126,   127,   128,   129,   130,
5434
     131,   132,   133,    -1,   135,   136,    51,    52,    -1,    -1,
5435
      55,    -1,   143,   144,    -1,    -1,    -1,    -1,    -1,    -1,
5436
      -1,    -1,    -1,    -1,    -1,    70,    71,    72,    73,    74,
5437
      75,    76,    77,    -1,    -1,    80,    81,    -1,    -1,    -1,
5438
      -1,    86,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,
5439
      -1,    -1,    -1,    -1,    -1,   100,   101,   102,    -1,    -1,
5440
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5441
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,
5442
     125,   126,   127,   128,   129,   130,   131,   132,   133,    -1,
5443
     135,   136,    51,    52,    -1,    -1,    55,    -1,   143,   144,
5444
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5445
      -1,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
5446
      -1,    80,    81,    -1,    -1,    -1,    -1,    86,    87,    88,
5447
      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5448
      -1,   100,   101,   102,    -1,    -1,    -1,    -1,    -1,    -1,
5449
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5450
      -1,    -1,    -1,    -1,    -1,   124,   125,   126,   127,   128,
5451
     129,   130,   131,   132,   133,    -1,   135,   136,    51,    52,
5452
      -1,    -1,    55,    -1,   143,   144,    -1,    -1,    -1,    -1,
5453
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    71,    72,
5454
      73,    74,    75,    76,    77,    -1,    -1,    80,    81,    -1,
5455
      -1,    -1,    -1,    86,    87,    88,    89,    -1,    -1,    -1,
5456
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,   101,   102,
5457
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5458
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5459
      -1,   124,   125,   126,   127,   128,   129,   130,   131,   132,
5460
     133,    -1,   135,   136,    51,    52,    -1,    -1,    55,    -1,
5461
     143,   144,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5462
      -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
5463
      77,    -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    86,
5464
      87,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5465
      -1,    -1,    -1,   100,   101,   102,    -1,    -1,    -1,    -1,
5466
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5467
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,   125,   126,
5468
     127,   128,   129,   130,   131,   132,   133,    -1,   135,   136,
5469
      51,    52,    -1,    -1,    55,    -1,   143,   144,    -1,    -1,
5470
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
5471
      71,    72,    73,    74,    75,    76,    77,    -1,    -1,    80,
5472
      81,    -1,    -1,    -1,    -1,    86,    87,    88,    89,    -1,
5473
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,
5474
     101,   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5475
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5476
      -1,    -1,    -1,   124,   125,   126,   127,   128,   129,   130,
5477
     131,   132,   133,    -1,   135,   136,    51,    52,    -1,    -1,
5478
      55,    -1,   143,   144,    -1,    -1,    -1,    -1,    -1,    -1,
5479
      -1,    -1,    -1,    -1,    -1,    70,    71,    72,    73,    74,
5480
      75,    76,    77,    -1,    -1,    80,    81,    -1,    -1,    -1,
5481
      -1,    86,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,
5482
      -1,    -1,    -1,    -1,    -1,   100,   101,   102,    -1,    -1,
5483
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5484
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,
5485
     125,   126,   127,   128,   129,   130,   131,   132,   133,    -1,
5486
     135,   136,    51,    52,    -1,    -1,    55,    -1,   143,   144,
5487
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5488
      -1,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
5489
      -1,    80,    81,    -1,    -1,    -1,    -1,    86,    87,    88,
5490
      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5491
      -1,   100,   101,   102,    -1,    -1,    -1,    -1,    -1,    -1,
5492
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5493
      -1,    -1,    -1,    -1,    -1,   124,   125,   126,   127,   128,
5494
     129,   130,   131,   132,   133,    -1,   135,   136,    51,    52,
5495
      -1,    -1,    55,    -1,   143,   144,    -1,    -1,    -1,    -1,
5496
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,    71,    72,
5497
      73,    74,    75,    76,    77,    -1,    -1,    80,    81,    -1,
5498
      -1,    -1,    -1,    86,    87,    88,    89,    -1,    -1,    -1,
5499
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,   101,   102,
5500
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5501
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5502
      -1,   124,   125,   126,   127,   128,   129,   130,   131,   132,
5503
     133,    -1,   135,   136,    51,    52,    -1,    -1,    55,    -1,
5504
     143,   144,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5505
      -1,    -1,    -1,    70,    71,    72,    73,    74,    75,    76,
5506
      77,    -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    86,
5507
      87,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5508
      -1,    -1,    -1,   100,   101,   102,    -1,    -1,    -1,    -1,
5509
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5510
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,   125,   126,
5511
     127,   128,   129,   130,   131,   132,   133,    -1,   135,   136,
5512
      51,    52,    -1,    -1,    55,    -1,   143,   144,    -1,    -1,
5513
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
5514
      71,    72,    73,    74,    75,    76,    77,    -1,    -1,    80,
5515
      81,    -1,    -1,    -1,    -1,    86,    87,    88,    89,    -1,
5516
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   100,
5517
     101,   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5518
      -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,
5519
      -1,    -1,    -1,   124,   125,   126,   127,   128,   129,   130,
5520
     131,   132,   133,    -1,   135,   136,    -1,    -1,    -1,    -1,
5521
      -1,    -1,   143,    72,    73,    74,    75,    76,    77,    78,
5522
      79,    80,    81,    82,    83,    -1,    -1,    -1,    -1,    88,
5523
      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5524
      -1,    -1,   101,    -1,    -1,    -1,    -1,    44,    -1,    -1,
5525
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5526
      -1,    -1,    -1,   122,    -1,   124,   125,   126,   127,   128,
5527
     129,   130,   131,   132,   133,    72,    73,    74,    75,    76,
5528
      77,    78,    79,    80,    81,    82,    83,    -1,    -1,    -1,
5529
      -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5530
      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
5531
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5532
      -1,    -1,    -1,    -1,    -1,   122,    -1,   124,   125,   126,
5533
     127,   128,   129,   130,   131,   132,   133,    72,    73,    74,
5534
      75,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
5535
      -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    -1,
5536
      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
5537
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5538
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   122,    -1,   124,
5539
     125,   126,   127,   128,   129,   130,   131,   132,   133,    -1,
5540
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,    72,    73,
5541
      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
5542
      -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,
5543
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
5544
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5545
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   122,    -1,
5546
     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
5547
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,    72,
5548
      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
5549
      83,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
5550
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
5551
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5552
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   122,
5553
      -1,   124,   125,   126,   127,   128,   129,   130,   131,   132,
5554
     133,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   142,
5555
      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
5556
      82,    83,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,
5557
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
5558
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5559
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5560
     122,    -1,   124,   125,   126,   127,   128,   129,   130,   131,
5561
     132,   133,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5562
     142,    72,    73,    74,    75,    76,    77,    78,    79,    80,
5563
      81,    82,    83,    -1,    -1,    -1,    -1,    88,    89,    -1,
5564
      -1,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5565
     101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5566
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5567
      -1,   122,    -1,   124,   125,   126,   127,   128,   129,   130,
5568
     131,   132,   133,    72,    73,    74,    75,    76,    77,    78,
5569
      79,    80,    81,    82,    83,    -1,    -1,    -1,    -1,    88,
5570
      89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5571
      -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5572
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5573
      -1,    -1,    -1,   122,    -1,   124,   125,   126,   127,   128,
5574
     129,   130,   131,   132,   133,    72,    73,    74,    75,    76,
5575
      77,    78,    79,    80,    81,    82,    83,    -1,    -1,    -1,
5576
      -1,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5577
      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
5578
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
5579
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,   125,   126,
5580
     127,   128,   129,   130,   131,   132,   133
5581
};
5582
5583
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
5584
   state STATE-NUM.  */
5585
static const yytype_int16 yystos[] =
5586
{
5587
       0,   150,   151,     1,     3,     4,     5,     6,     7,     8,
5588
       9,    10,    11,    12,    19,    21,    22,    23,    24,    30,
5589
      31,    32,    33,    34,    35,    36,    39,    45,    46,    47,
5590
      48,    49,    50,    51,    52,    53,    54,    55,    56,    58,
5591
      59,    60,    63,    66,    67,    69,    70,    71,    84,    85,
5592
      91,    94,    95,    97,    98,   100,   104,   106,   107,   108,
5593
     110,   111,   112,   114,   134,   135,   136,   152,   153,   154,
5594
     160,   161,   163,   164,   166,   168,   169,   172,   173,   175,
5595
     176,   177,   179,   180,   189,   203,   220,   241,   242,   252,
5596
     253,   254,   258,   259,   260,   266,   267,   268,   270,   271,
5597
     272,   273,   274,   275,   311,   324,     0,   154,    21,    22,
5598
      30,    31,    32,    39,    51,    55,    69,    88,    91,    94,
5599
     134,   164,   166,   181,   182,   203,   220,   272,   275,   311,
5600
     182,     3,     4,     5,     6,     7,     8,     9,    10,    11,
5601
      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
5602
      22,    23,    24,    25,    26,    30,    31,    32,    33,    34,
5603
      35,    36,    37,    38,    39,    45,    46,    47,    48,    49,
5604
      50,    51,    52,    55,    70,    71,    72,    73,    74,    75,
5605
      76,    77,    80,    81,    86,    87,    88,    89,   100,   101,
5606
     102,   124,   125,   126,   127,   128,   129,   130,   131,   132,
5607
     133,   135,   136,   143,   144,   183,   187,   188,   274,   306,
5608
     204,    91,   163,   164,   166,   167,   180,   189,   220,   272,
5609
     273,   275,   167,   210,   212,    69,    91,   173,   180,   220,
5610
     225,   272,   275,    33,    34,    35,    36,    48,    49,    50,
5611
      51,    55,   106,   183,   184,   185,   268,   115,   118,   119,
5612
     146,   148,   167,   262,   263,   264,   317,   321,   322,   323,
5613
      51,    69,   100,   102,   103,   135,   172,   189,   195,   198,
5614
     201,   254,   309,   310,   195,   195,   144,   192,   193,   196,
5615
     197,   324,   192,   197,   144,   318,   184,   155,   138,   189,
5616
     220,   189,   189,   189,    55,     1,    94,   157,   158,   160,
5617
     174,   175,   324,   205,   207,   190,   201,   309,   324,   189,
5618
     308,   309,   324,    91,   142,   179,   220,   272,   275,   208,
5619
      53,    54,    56,    63,    69,   107,   183,   269,    63,    64,
5620
      65,   116,   117,   255,   256,    61,   255,    62,   255,    63,
5621
     255,    63,   255,    58,    59,   168,   189,   189,   317,   323,
5622
      40,    41,    42,    43,    44,    37,    38,    51,    53,    54,
5623
      55,    56,    69,    83,    94,   100,   101,   102,   103,   128,
5624
     131,   144,   278,   279,   280,   281,   282,   285,   286,   287,
5625
     288,   290,   291,   292,   293,   295,   296,   297,   300,   301,
5626
     302,   303,   304,   324,   278,   280,    28,   240,   121,   142,
5627
      94,   100,   176,   121,    72,    73,    74,    75,    76,    77,
5628
      78,    79,    80,    81,    82,    83,    88,    89,    93,   101,
5629
     122,   124,   125,   126,   127,   128,   129,   130,   131,   132,
5630
     133,    90,   105,   140,   147,   315,    90,   315,   316,    26,
5631
     138,   244,   254,    92,    92,   192,   197,   244,   163,    51,
5632
      55,   181,    58,    59,   279,   125,   276,    90,   140,   315,
5633
     219,   307,    90,   147,   314,   156,   157,    55,   278,   278,
5634
      16,   221,   321,   121,    90,   140,   315,    92,    92,   221,
5635
     167,   167,    55,    90,   140,   315,    25,   107,   142,   265,
5636
     317,   115,   264,    20,   246,   321,    57,    57,   189,   189,
5637
     189,    93,   142,   199,   200,   324,    57,   199,   200,    85,
5638
     194,   195,   201,   309,   324,   195,   163,   317,   319,   163,
5639
     322,   159,   138,   157,    90,   315,    92,   160,   174,   145,
5640
     317,   323,   319,   160,   319,   141,   200,   320,   323,   200,
5641
     320,   139,   320,    55,   176,   177,   178,   142,    90,   140,
5642
     315,   144,   237,   290,   295,    63,   255,   257,   261,   262,
5643
      63,   256,    61,    62,    63,    63,   101,   101,   154,   167,
5644
     167,   167,   167,   160,   163,   163,    57,   121,    57,   321,
5645
     294,    85,   290,   295,   121,   156,   189,   142,   305,   324,
5646
      51,   142,   305,   321,   142,   289,   189,   142,   289,    51,
5647
     142,   289,    51,   121,   156,   239,   100,   168,   189,   201,
5648
     202,   174,   142,   179,   142,   161,   162,   168,   180,   189,
5649
     191,   202,   220,   275,   189,   189,   189,   189,   189,   189,
5650
     189,   189,   189,   189,   189,   189,   189,   189,    51,   189,
5651
     189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
5652
     189,    51,    52,    55,   187,   192,   312,   313,   194,   201,
5653
      51,    52,    55,   187,   192,   312,    51,    55,   312,   245,
5654
     243,   162,   189,   191,   162,   191,    99,   171,   217,   277,
5655
     216,    51,    55,   181,   312,   194,   312,   156,   163,   165,
5656
      15,    13,   248,   324,   121,   121,   157,    16,    51,    55,
5657
     194,    51,    55,   157,    27,   222,   321,   222,    51,    55,
5658
     194,    51,    55,   214,   186,   157,   246,   189,   201,    15,
5659
     189,   189,   189,   318,   100,   189,   198,   309,   189,   310,
5660
     319,   145,   317,   200,   200,   319,   145,   184,   152,   139,
5661
     191,   319,   160,   206,   309,   176,   178,    51,    55,   194,
5662
      51,    55,   290,   209,   142,    63,   157,   262,   189,   189,
5663
      51,    69,   100,   226,   295,   319,   319,   142,   172,   189,
5664
      15,    51,    69,   282,   287,   304,    85,   288,   293,   300,
5665
     302,   295,   297,   302,    51,   295,   172,   189,    15,    79,
5666
     126,   231,   233,   324,   189,   200,   319,   178,   142,    44,
5667
     121,    44,    90,   140,   315,   318,    92,    92,   192,   197,
5668
     141,   200,    92,    92,   193,   197,   193,   197,   231,   231,
5669
     170,   321,   167,   156,   141,    15,   319,   183,   189,   202,
5670
     249,   324,    18,   224,   324,    17,   223,   224,    92,    92,
5671
     141,    92,    92,   224,   211,   213,   141,   167,   184,   139,
5672
      15,   200,   221,   189,   199,    85,   309,   139,   319,   320,
5673
     141,   234,   318,    29,   113,   238,   139,   142,   292,   319,
5674
     142,    85,    44,    44,   305,   321,   142,   289,   142,   289,
5675
     142,   289,   142,   289,   289,    44,    44,   228,   230,   232,
5676
     281,   283,   284,   287,   295,   296,   298,   299,   302,   304,
5677
     156,   100,   189,   178,   160,   189,    51,    55,   194,    51,
5678
      55,    57,   123,   162,   191,   168,   191,   171,    92,   162,
5679
     191,   162,   191,   171,   244,   240,   156,   157,   231,   218,
5680
     321,    15,    93,   250,   324,   157,    14,   251,   324,   167,
5681
      15,    92,    15,   157,   157,   222,   189,   157,   319,   200,
5682
     145,   146,   156,   157,   227,   142,   100,   319,   189,   189,
5683
     295,   302,   295,   295,   189,   189,   234,   234,    91,   220,
5684
     142,   305,   305,   142,   229,   220,   142,   229,   142,   229,
5685
      15,   189,   141,   189,   189,   162,   191,    15,   139,   157,
5686
     156,    91,   180,   220,   272,   275,   221,   157,   221,    15,
5687
      15,   215,   224,   246,   247,    51,   235,   236,   291,    15,
5688
     139,   295,   295,   142,   292,   289,   142,   289,   289,   289,
5689
     126,   126,    55,    90,   283,   287,   142,   228,   229,   299,
5690
     302,   295,   298,   302,   295,   139,    15,    55,    90,   140,
5691
     315,   157,   157,   157,   142,   318,   142,   295,   142,   295,
5692
      51,    55,   305,   142,   229,   142,   229,   142,   229,   142,
5693
     229,   229,    51,    55,   194,    51,    55,   248,   223,    15,
5694
     236,   295,   289,   295,   302,   295,   295,   141,   229,   142,
5695
     229,   229,   229,   295,   229
5696
};
5697
5698
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
5699
static const yytype_int16 yyr1[] =
5700
{
5701
       0,   149,   150,   151,   152,   153,   153,   153,   153,   154,
5702
     155,   154,   156,   157,   158,   158,   158,   158,   159,   160,
5703
     160,   160,   160,   160,   160,   160,   160,   160,   160,   160,
5704
     160,   160,   160,   160,   161,   161,   161,   161,   161,   161,
5705
     161,   161,   161,   161,   161,   161,   162,   162,   162,   163,
5706
     163,   163,   163,   163,   163,   164,   165,   166,   167,   168,
5707
     168,   169,   169,   170,   171,   172,   172,   172,   172,   172,
5708
     172,   172,   172,   172,   172,   172,   173,   173,   174,   174,
5709
     175,   175,   175,   175,   175,   175,   175,   175,   175,   175,
5710
     176,   176,   177,   177,   178,   178,   179,   179,   179,   179,
5711
     179,   179,   179,   179,   180,   180,   180,   180,   180,   180,
5712
     180,   180,   180,   181,   181,   182,   182,   182,   183,   183,
5713
     183,   183,   183,   184,   184,   185,   186,   185,   187,   187,
5714
     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
5715
     187,   187,   187,   187,   187,   187,   187,   187,   187,   187,
5716
     187,   187,   187,   187,   187,   187,   187,   187,   188,   188,
5717
     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
5718
     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
5719
     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
5720
     188,   188,   188,   188,   188,   188,   188,   188,   189,   189,
5721
     189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
5722
     189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
5723
     189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
5724
     189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
5725
     189,   189,   189,   189,   189,   189,   189,   189,   189,   190,
5726
     190,   190,   190,   191,   191,   192,   192,   192,   193,   193,
5727
     194,   194,   194,   194,   194,   195,   195,   195,   195,   195,
5728
     196,   197,   198,   198,   199,   199,   200,   201,   201,   201,
5729
     201,   201,   201,   202,   202,   202,   203,   203,   203,   203,
5730
     203,   203,   203,   203,   204,   203,   205,   206,   203,   207,
5731
     203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
5732
     203,   203,   203,   208,   209,   203,   203,   203,   210,   211,
5733
     203,   212,   213,   203,   203,   203,   214,   215,   203,   216,
5734
     203,   217,   218,   203,   219,   203,   203,   203,   203,   203,
5735
     203,   203,   220,   221,   221,   221,   222,   222,   223,   223,
5736
     224,   224,   225,   225,   226,   226,   226,   226,   226,   226,
5737
     226,   226,   227,   226,   228,   228,   228,   228,   229,   229,
5738
     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
5739
     230,   230,   230,   230,   230,   231,   231,   232,   233,   233,
5740
     233,   234,   234,   235,   235,   236,   236,   237,   237,   238,
5741
     238,   239,   240,   241,   241,   241,   241,   242,   242,   242,
5742
     242,   242,   242,   242,   242,   242,   243,   244,   245,   244,
5743
     246,   247,   247,   248,   248,   249,   249,   249,   250,   250,
5744
     251,   251,   252,   252,   252,   252,   253,   253,   254,   254,
5745
     254,   254,   255,   255,   256,   257,   256,   256,   256,   258,
5746
     258,   259,   259,   260,   261,   261,   262,   262,   263,   263,
5747
     264,   265,   264,   266,   266,   267,   267,   267,   268,   269,
5748
     269,   269,   269,   269,   269,   270,   270,   271,   271,   271,
5749
     271,   272,   272,   272,   272,   272,   273,   273,   274,   274,
5750
     274,   274,   274,   274,   274,   274,   274,   275,   275,   276,
5751
     277,   276,   278,   278,   279,   279,   279,   280,   280,   280,
5752
     280,   281,   281,   282,   282,   283,   283,   284,   284,   285,
5753
     285,   286,   286,   287,   287,   288,   288,   288,   288,   289,
5754
     289,   290,   290,   290,   290,   290,   290,   290,   290,   290,
5755
     290,   290,   290,   290,   290,   290,   291,   291,   291,   291,
5756
     291,   292,   292,   293,   294,   293,   295,   295,   296,   297,
5757
     298,   299,   299,   300,   300,   301,   301,   302,   302,   303,
5758
     303,   304,   304,   305,   305,   306,   307,   306,   308,   308,
5759
     309,   309,   310,   310,   310,   310,   310,   310,   310,   310,
5760
     311,   311,   311,   312,   312,   312,   312,   313,   313,   313,
5761
     314,   314,   315,   315,   316,   316,   317,   317,   318,   318,
5762
     319,   320,   320,   320,   321,   321,   322,   322,   323,   323,
5763
     324
5764
};
5765
5766
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
5767
static const yytype_int8 yyr2[] =
5768
{
5769
       0,     2,     0,     2,     2,     1,     1,     3,     2,     1,
5770
       0,     5,     4,     2,     1,     1,     3,     2,     0,     4,
5771
       2,     3,     3,     3,     3,     3,     4,     1,     3,     3,
5772
       3,     3,     3,     1,     3,     3,     6,     5,     5,     5,
5773
       5,     4,     6,     4,     6,     3,     1,     3,     1,     1,
5774
       3,     3,     3,     2,     1,     2,     0,     5,     1,     1,
5775
       1,     1,     4,     0,     5,     2,     3,     4,     5,     4,
5776
       5,     2,     2,     2,     2,     2,     1,     3,     1,     3,
5777
       1,     2,     3,     5,     2,     4,     2,     4,     1,     3,
5778
       1,     3,     2,     3,     1,     2,     1,     4,     3,     3,
5779
       3,     3,     2,     1,     1,     4,     3,     3,     3,     3,
5780
       2,     1,     1,     1,     1,     2,     1,     3,     1,     1,
5781
       1,     1,     1,     1,     1,     1,     0,     4,     1,     1,
5782
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
5783
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
5784
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
5785
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
5786
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
5787
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
5788
       1,     1,     1,     1,     1,     1,     1,     1,     3,     3,
5789
       6,     5,     5,     5,     5,     4,     3,     3,     2,     2,
5790
       3,     2,     2,     3,     3,     3,     3,     3,     3,     4,
5791
       4,     2,     2,     3,     3,     3,     3,     3,     3,     3,
5792
       3,     3,     3,     3,     3,     3,     2,     2,     3,     3,
5793
       3,     3,     6,     6,     4,     6,     4,     6,     1,     1,
5794
       2,     4,     2,     1,     3,     3,     5,     3,     1,     1,
5795
       1,     2,     2,     4,     2,     1,     2,     2,     4,     1,
5796
       0,     2,     2,     1,     2,     1,     2,     1,     1,     2,
5797
       3,     3,     4,     3,     4,     2,     1,     1,     1,     1,
5798
       1,     1,     1,     1,     0,     4,     0,     0,     5,     0,
5799
       3,     3,     3,     2,     3,     3,     1,     2,     4,     3,
5800
       2,     1,     2,     0,     0,     5,     6,     6,     0,     0,
5801
       7,     0,     0,     7,     5,     4,     0,     0,     9,     0,
5802
       6,     0,     0,     8,     0,     5,     4,     4,     1,     1,
5803
       1,     1,     1,     1,     1,     2,     1,     1,     1,     5,
5804
       1,     2,     1,     1,     1,     4,     6,     3,     5,     2,
5805
       4,     1,     0,     4,     4,     2,     2,     1,     2,     0,
5806
       6,     8,     4,     6,     4,     3,     6,     2,     4,     6,
5807
       2,     4,     2,     4,     1,     1,     1,     0,     4,     1,
5808
       4,     1,     4,     1,     3,     1,     1,     4,     1,     3,
5809
       3,     0,     5,     2,     4,     5,     5,     2,     4,     4,
5810
       3,     3,     3,     2,     1,     4,     0,     5,     0,     5,
5811
       5,     1,     1,     6,     1,     1,     1,     1,     2,     1,
5812
       2,     1,     1,     1,     1,     1,     1,     2,     1,     1,
5813
       2,     3,     1,     2,     1,     0,     4,     1,     2,     2,
5814
       3,     2,     3,     1,     1,     2,     1,     2,     1,     2,
5815
       1,     0,     4,     2,     3,     1,     4,     2,     2,     1,
5816
       1,     1,     1,     1,     2,     2,     3,     1,     1,     2,
5817
       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
5818
       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
5819
       0,     4,     1,     1,     3,     5,     3,     1,     2,     4,
5820
       2,     2,     2,     2,     1,     2,     1,     1,     3,     1,
5821
       3,     1,     1,     2,     1,     4,     2,     2,     1,     2,
5822
       0,     6,     8,     4,     6,     4,     6,     2,     4,     6,
5823
       2,     4,     2,     4,     1,     0,     1,     1,     1,     1,
5824
       1,     1,     1,     1,     0,     4,     1,     3,     2,     2,
5825
       2,     1,     3,     1,     3,     1,     1,     2,     1,     1,
5826
       1,     2,     1,     2,     1,     1,     0,     4,     1,     2,
5827
       1,     3,     3,     3,     2,     2,     3,     3,     2,     1,
5828
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
5829
       1,     1,     1,     1,     1,     1,     0,     1,     0,     2,
5830
       2,     0,     1,     1,     1,     1,     1,     1,     1,     2,
5831
       0
5832
};
5833
5834
5835
enum { YYENOMEM = -2 };
5836
5837
0
#define yyerrok         (yyerrstatus = 0)
5838
#define yyclearin       (yychar = YYEMPTY)
5839
5840
103
#define YYACCEPT        goto yyacceptlab
5841
0
#define YYABORT         goto yyabortlab
5842
0
#define YYERROR         goto yyerrorlab
5843
0
#define YYNOMEM         goto yyexhaustedlab
5844
5845
5846
#define YYRECOVERING()  (!!yyerrstatus)
5847
5848
#define YYBACKUP(Token, Value)                                    \
5849
  do                                                              \
5850
    if (yychar == YYEMPTY)                                        \
5851
      {                                                           \
5852
        yychar = (Token);                                         \
5853
        yylval = (Value);                                         \
5854
        YYPOPSTACK (yylen);                                       \
5855
        yystate = *yyssp;                                         \
5856
        goto yybackup;                                            \
5857
      }                                                           \
5858
    else                                                          \
5859
      {                                                           \
5860
        yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5861
        YYERROR;                                                  \
5862
      }                                                           \
5863
  while (0)
5864
5865
/* Backward compatibility with an undocumented macro.
5866
   Use YYerror or YYUNDEF. */
5867
#define YYERRCODE YYUNDEF
5868
5869
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
5870
   If N is 0, then set CURRENT to the empty location which ends
5871
   the previous symbol: RHS[0] (always defined).  */
5872
5873
#ifndef YYLLOC_DEFAULT
5874
# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
5875
4.64M
    do                                                                  \
5876
4.64M
      if (N)                                                            \
5877
4.64M
        {                                                               \
5878
4.19M
          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
5879
4.19M
          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
5880
4.19M
          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
5881
4.19M
          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
5882
4.19M
        }                                                               \
5883
4.64M
      else                                                              \
5884
4.64M
        {                                                               \
5885
442k
          (Current).first_line   = (Current).last_line   =              \
5886
442k
            YYRHSLOC (Rhs, 0).last_line;                                \
5887
442k
          (Current).first_column = (Current).last_column =              \
5888
442k
            YYRHSLOC (Rhs, 0).last_column;                              \
5889
442k
        }                                                               \
5890
4.64M
    while (0)
5891
#endif
5892
5893
17.6M
#define YYRHSLOC(Rhs, K) ((Rhs)[K])
5894
5895
5896
/* Enable debugging if requested.  */
5897
#if YYDEBUG
5898
5899
# ifndef YYFPRINTF
5900
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
5901
#  define YYFPRINTF fprintf
5902
# endif
5903
5904
# define YYDPRINTF(Args)                        \
5905
do {                                            \
5906
  if (yydebug)                                  \
5907
    YYFPRINTF Args;                             \
5908
} while (0)
5909
5910
5911
/* YYLOCATION_PRINT -- Print the location on the stream.
5912
   This macro was not mandated originally: define only if we know
5913
   we won't break user code: when these are the locations we know.  */
5914
5915
# ifndef YYLOCATION_PRINT
5916
5917
#  if defined YY_LOCATION_PRINT
5918
5919
   /* Temporary convenience wrapper in case some people defined the
5920
      undocumented and private YY_LOCATION_PRINT macros.  */
5921
#   define YYLOCATION_PRINT(File, Loc, p)  YY_LOCATION_PRINT(File, *(Loc), p)
5922
5923
#  elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5924
5925
/* Print *YYLOCP on YYO.  Private, do not rely on its existence. */
5926
5927
YY_ATTRIBUTE_UNUSED
5928
static int
5929
yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
5930
{
5931
  int res = 0;
5932
  int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
5933
  if (0 <= yylocp->first_line)
5934
    {
5935
      res += YYFPRINTF (yyo, "%d", yylocp->first_line);
5936
      if (0 <= yylocp->first_column)
5937
        res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
5938
    }
5939
  if (0 <= yylocp->last_line)
5940
    {
5941
      if (yylocp->first_line < yylocp->last_line)
5942
        {
5943
          res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
5944
          if (0 <= end_col)
5945
            res += YYFPRINTF (yyo, ".%d", end_col);
5946
        }
5947
      else if (0 <= end_col && yylocp->first_column < end_col)
5948
        res += YYFPRINTF (yyo, "-%d", end_col);
5949
    }
5950
  return res;
5951
}
5952
5953
#   define YYLOCATION_PRINT  yy_location_print_
5954
5955
    /* Temporary convenience wrapper in case some people defined the
5956
       undocumented and private YY_LOCATION_PRINT macros.  */
5957
#   define YY_LOCATION_PRINT(File, Loc, p)  YYLOCATION_PRINT(File, &(Loc), p)
5958
5959
#  else
5960
5961
#   define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
5962
    /* Temporary convenience wrapper in case some people defined the
5963
       undocumented and private YY_LOCATION_PRINT macros.  */
5964
#   define YY_LOCATION_PRINT  YYLOCATION_PRINT
5965
5966
#  endif
5967
# endif /* !defined YYLOCATION_PRINT */
5968
5969
5970
# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
5971
do {                                                                      \
5972
  if (yydebug)                                                            \
5973
    {                                                                     \
5974
      YYFPRINTF (stderr, "%s ", Title);                                   \
5975
      yy_symbol_print (stderr,                                            \
5976
                  Kind, Value, Location, p);          \
5977
      YYFPRINTF (stderr, "\n");                                           \
5978
    }                                                                     \
5979
} while (0)
5980
5981
5982
/*-----------------------------------.
5983
| Print this symbol's value on YYO.  |
5984
`-----------------------------------*/
5985
5986
static void
5987
yy_symbol_value_print (FILE *yyo,
5988
                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, parser_state *p)
5989
{
5990
  FILE *yyoutput = yyo;
5991
  YY_USE (yyoutput);
5992
  YY_USE (yylocationp);
5993
  YY_USE (p);
5994
  if (!yyvaluep)
5995
    return;
5996
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
5997
switch (yykind)
5998
    {
5999
      default:
6000
        break;
6001
    }
6002
  YY_IGNORE_MAYBE_UNINITIALIZED_END
6003
}
6004
6005
6006
/*---------------------------.
6007
| Print this symbol on YYO.  |
6008
`---------------------------*/
6009
6010
static void
6011
yy_symbol_print (FILE *yyo,
6012
                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, parser_state *p)
6013
{
6014
  YYFPRINTF (yyo, "%s %s (",
6015
             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
6016
6017
  YYLOCATION_PRINT (yyo, yylocationp, p);
6018
  YYFPRINTF (yyo, ": ");
6019
  yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
6020
  YYFPRINTF (yyo, ")");
6021
}
6022
6023
/*------------------------------------------------------------------.
6024
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
6025
| TOP (included).                                                   |
6026
`------------------------------------------------------------------*/
6027
6028
static void
6029
yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop, parser_state *p)
6030
{
6031
  YYFPRINTF (stderr, "Stack now");
6032
  for (; yybottom <= yytop; yybottom++)
6033
    {
6034
      int yybot = *yybottom;
6035
      YYFPRINTF (stderr, " %d", yybot);
6036
    }
6037
  YYFPRINTF (stderr, "\n");
6038
}
6039
6040
# define YY_STACK_PRINT(Bottom, Top, p)     \
6041
do {                                                            \
6042
  if (yydebug)                                                  \
6043
    yy_stack_print ((Bottom), (Top), p);    \
6044
} while (0)
6045
6046
6047
/*------------------------------------------------.
6048
| Report that the YYRULE is going to be reduced.  |
6049
`------------------------------------------------*/
6050
6051
static void
6052
yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,
6053
                 int yyrule, parser_state *p)
6054
{
6055
  int yylno = yyrline[yyrule];
6056
  int yynrhs = yyr2[yyrule];
6057
  int yyi;
6058
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
6059
             yyrule - 1, yylno);
6060
  /* The symbols being reduced.  */
6061
  for (yyi = 0; yyi < yynrhs; yyi++)
6062
    {
6063
      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
6064
      yy_symbol_print (stderr,
6065
                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
6066
                       &yyvsp[(yyi + 1) - (yynrhs)],
6067
                       &(yylsp[(yyi + 1) - (yynrhs)]), p);
6068
      YYFPRINTF (stderr, "\n");
6069
    }
6070
}
6071
6072
# define YY_REDUCE_PRINT(Rule, p) \
6073
do {                                    \
6074
  if (yydebug)                          \
6075
    yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
6076
} while (0)
6077
6078
/* Nonzero means print parse trace.  It is left uninitialized so that
6079
   multiple parsers can coexist.  */
6080
#ifndef yydebug
6081
int yydebug;
6082
#endif
6083
#else /* !YYDEBUG */
6084
8.05M
# define YYDPRINTF(Args) ((void) 0)
6085
# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
6086
# define YY_STACK_PRINT(Bottom, Top, p)
6087
# define YY_REDUCE_PRINT(Rule, p)
6088
#endif /* !YYDEBUG */
6089
6090
6091
/* YYINITDEPTH -- initial size of the parser's stacks.  */
6092
#ifndef YYINITDEPTH
6093
103
# define YYINITDEPTH 200
6094
#endif
6095
6096
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
6097
   if the built-in stack extension method is used).
6098
6099
   Do not make this value too large; the results are undefined if
6100
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
6101
   evaluated with infinite-precision integer arithmetic.  */
6102
6103
#ifndef YYMAXDEPTH
6104
30
# define YYMAXDEPTH 10000
6105
#endif
6106
6107
6108
/* Context of a parse error.  */
6109
typedef struct
6110
{
6111
  yy_state_t *yyssp;
6112
  yysymbol_kind_t yytoken;
6113
  YYLTYPE *yylloc;
6114
} yypcontext_t;
6115
6116
/* Put in YYARG at most YYARGN of the expected tokens given the
6117
   current YYCTX, and return the number of tokens stored in YYARG.  If
6118
   YYARG is null, return the number of expected tokens (guaranteed to
6119
   be less than YYNTOKENS).  Return YYENOMEM on memory exhaustion.
6120
   Return 0 if there are more than YYARGN expected tokens, yet fill
6121
   YYARG up to YYARGN. */
6122
static int
6123
yypcontext_expected_tokens (const yypcontext_t *yyctx,
6124
                            yysymbol_kind_t yyarg[], int yyargn)
6125
0
{
6126
  /* Actual size of YYARG. */
6127
0
  int yycount = 0;
6128
0
  int yyn = yypact[+*yyctx->yyssp];
6129
0
  if (!yypact_value_is_default (yyn))
6130
0
    {
6131
      /* Start YYX at -YYN if negative to avoid negative indexes in
6132
         YYCHECK.  In other words, skip the first -YYN actions for
6133
         this state because they are default actions.  */
6134
0
      int yyxbegin = yyn < 0 ? -yyn : 0;
6135
      /* Stay within bounds of both yycheck and yytname.  */
6136
0
      int yychecklim = YYLAST - yyn + 1;
6137
0
      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
6138
0
      int yyx;
6139
0
      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6140
0
        if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
6141
0
            && !yytable_value_is_error (yytable[yyx + yyn]))
6142
0
          {
6143
0
            if (!yyarg)
6144
0
              ++yycount;
6145
0
            else if (yycount == yyargn)
6146
0
              return 0;
6147
0
            else
6148
0
              yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
6149
0
          }
6150
0
    }
6151
0
  if (yyarg && yycount == 0 && 0 < yyargn)
6152
0
    yyarg[0] = YYSYMBOL_YYEMPTY;
6153
0
  return yycount;
6154
0
}
6155
6156
6157
6158
6159
#ifndef yystrlen
6160
# if defined __GLIBC__ && defined _STRING_H
6161
0
#  define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
6162
# else
6163
/* Return the length of YYSTR.  */
6164
static YYPTRDIFF_T
6165
yystrlen (const char *yystr)
6166
{
6167
  YYPTRDIFF_T yylen;
6168
  for (yylen = 0; yystr[yylen]; yylen++)
6169
    continue;
6170
  return yylen;
6171
}
6172
# endif
6173
#endif
6174
6175
#ifndef yystpcpy
6176
# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
6177
#  define yystpcpy stpcpy
6178
# else
6179
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
6180
   YYDEST.  */
6181
static char *
6182
yystpcpy (char *yydest, const char *yysrc)
6183
0
{
6184
0
  char *yyd = yydest;
6185
0
  const char *yys = yysrc;
6186
6187
0
  while ((*yyd++ = *yys++) != '\0')
6188
0
    continue;
6189
6190
0
  return yyd - 1;
6191
0
}
6192
# endif
6193
#endif
6194
6195
#ifndef yytnamerr
6196
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
6197
   quotes and backslashes, so that it's suitable for yyerror.  The
6198
   heuristic is that double-quoting is unnecessary unless the string
6199
   contains an apostrophe, a comma, or backslash (other than
6200
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
6201
   null, do not copy; instead, return the length of what the result
6202
   would have been.  */
6203
static YYPTRDIFF_T
6204
yytnamerr (char *yyres, const char *yystr)
6205
0
{
6206
0
  if (*yystr == '"')
6207
0
    {
6208
0
      YYPTRDIFF_T yyn = 0;
6209
0
      char const *yyp = yystr;
6210
0
      for (;;)
6211
0
        switch (*++yyp)
6212
0
          {
6213
0
          case '\'':
6214
0
          case ',':
6215
0
            goto do_not_strip_quotes;
6216
6217
0
          case '\\':
6218
0
            if (*++yyp != '\\')
6219
0
              goto do_not_strip_quotes;
6220
0
            else
6221
0
              goto append;
6222
6223
0
          append:
6224
0
          default:
6225
0
            if (yyres)
6226
0
              yyres[yyn] = *yyp;
6227
0
            yyn++;
6228
0
            break;
6229
6230
0
          case '"':
6231
0
            if (yyres)
6232
0
              yyres[yyn] = '\0';
6233
0
            return yyn;
6234
0
          }
6235
0
    do_not_strip_quotes: ;
6236
0
    }
6237
6238
0
  if (yyres)
6239
0
    return yystpcpy (yyres, yystr) - yyres;
6240
0
  else
6241
0
    return yystrlen (yystr);
6242
0
}
6243
#endif
6244
6245
6246
static int
6247
yy_syntax_error_arguments (const yypcontext_t *yyctx,
6248
                           yysymbol_kind_t yyarg[], int yyargn)
6249
0
{
6250
  /* Actual size of YYARG. */
6251
0
  int yycount = 0;
6252
  /* There are many possibilities here to consider:
6253
     - If this state is a consistent state with a default action, then
6254
       the only way this function was invoked is if the default action
6255
       is an error action.  In that case, don't check for expected
6256
       tokens because there are none.
6257
     - The only way there can be no lookahead present (in yychar) is if
6258
       this state is a consistent state with a default action.  Thus,
6259
       detecting the absence of a lookahead is sufficient to determine
6260
       that there is no unexpected or expected token to report.  In that
6261
       case, just report a simple "syntax error".
6262
     - Don't assume there isn't a lookahead just because this state is a
6263
       consistent state with a default action.  There might have been a
6264
       previous inconsistent state, consistent state with a non-default
6265
       action, or user semantic action that manipulated yychar.
6266
     - Of course, the expected token list depends on states to have
6267
       correct lookahead information, and it depends on the parser not
6268
       to perform extra reductions after fetching a lookahead from the
6269
       scanner and before detecting a syntax error.  Thus, state merging
6270
       (from LALR or IELR) and default reductions corrupt the expected
6271
       token list.  However, the list is correct for canonical LR with
6272
       one exception: it will still contain any token that will not be
6273
       accepted due to an error action in a later state.
6274
  */
6275
0
  if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
6276
0
    {
6277
0
      int yyn;
6278
0
      if (yyarg)
6279
0
        yyarg[yycount] = yyctx->yytoken;
6280
0
      ++yycount;
6281
0
      yyn = yypcontext_expected_tokens (yyctx,
6282
0
                                        yyarg ? yyarg + 1 : yyarg, yyargn - 1);
6283
0
      if (yyn == YYENOMEM)
6284
0
        return YYENOMEM;
6285
0
      else
6286
0
        yycount += yyn;
6287
0
    }
6288
0
  return yycount;
6289
0
}
6290
6291
/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
6292
   about the unexpected token YYTOKEN for the state stack whose top is
6293
   YYSSP.
6294
6295
   Return 0 if *YYMSG was successfully written.  Return -1 if *YYMSG is
6296
   not large enough to hold the message.  In that case, also set
6297
   *YYMSG_ALLOC to the required number of bytes.  Return YYENOMEM if the
6298
   required number of bytes is too large to store.  */
6299
static int
6300
yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
6301
                const yypcontext_t *yyctx, parser_state *p)
6302
0
{
6303
0
  enum { YYARGS_MAX = 5 };
6304
  /* Internationalized format string. */
6305
0
  const char *yyformat = YY_NULLPTR;
6306
  /* Arguments of yyformat: reported tokens (one for the "unexpected",
6307
     one per "expected"). */
6308
0
  yysymbol_kind_t yyarg[YYARGS_MAX];
6309
  /* Cumulated lengths of YYARG.  */
6310
0
  YYPTRDIFF_T yysize = 0;
6311
6312
  /* Actual size of YYARG. */
6313
0
  int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
6314
0
  if (yycount == YYENOMEM)
6315
0
    return YYENOMEM;
6316
6317
0
  switch (yycount)
6318
0
    {
6319
0
#define YYCASE_(N, S)                       \
6320
0
      case N:                               \
6321
0
        yyformat = S;                       \
6322
0
        break
6323
0
    default: /* Avoid compiler warnings. */
6324
0
      YYCASE_(0, YY_("syntax error"));
6325
0
      YYCASE_(1, YY_("syntax error, unexpected %s"));
6326
0
      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
6327
0
      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
6328
0
      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
6329
0
      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
6330
0
#undef YYCASE_
6331
0
    }
6332
6333
  /* Compute error message size.  Don't count the "%s"s, but reserve
6334
     room for the terminator.  */
6335
0
  yysize = yystrlen (yyformat) - 2 * yycount + 1;
6336
0
  {
6337
0
    int yyi;
6338
0
    for (yyi = 0; yyi < yycount; ++yyi)
6339
0
      {
6340
0
        YYPTRDIFF_T yysize1
6341
0
          = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
6342
0
        if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
6343
0
          yysize = yysize1;
6344
0
        else
6345
0
          return YYENOMEM;
6346
0
      }
6347
0
  }
6348
6349
0
  if (*yymsg_alloc < yysize)
6350
0
    {
6351
0
      *yymsg_alloc = 2 * yysize;
6352
0
      if (! (yysize <= *yymsg_alloc
6353
0
             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
6354
0
        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
6355
0
      return -1;
6356
0
    }
6357
6358
  /* Avoid sprintf, as that infringes on the user's name space.
6359
     Don't have undefined behavior even if the translation
6360
     produced a string with the wrong number of "%s"s.  */
6361
0
  {
6362
0
    char *yyp = *yymsg;
6363
0
    int yyi = 0;
6364
0
    while ((*yyp = *yyformat) != '\0')
6365
0
      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
6366
0
        {
6367
0
          yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
6368
0
          yyformat += 2;
6369
0
        }
6370
0
      else
6371
0
        {
6372
0
          ++yyp;
6373
0
          ++yyformat;
6374
0
        }
6375
0
  }
6376
0
  return 0;
6377
0
}
6378
6379
6380
/*-----------------------------------------------.
6381
| Release the memory associated to this symbol.  |
6382
`-----------------------------------------------*/
6383
6384
static void
6385
yydestruct (const char *yymsg,
6386
            yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, parser_state *p)
6387
206
{
6388
206
  YY_USE (yyvaluep);
6389
206
  YY_USE (yylocationp);
6390
206
  YY_USE (p);
6391
206
  if (!yymsg)
6392
0
    yymsg = "Deleting";
6393
206
  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
6394
6395
206
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6396
206
  switch (yykind)
6397
206
    {
6398
206
      default:
6399
206
        break;
6400
206
    }
6401
206
  YY_IGNORE_MAYBE_UNINITIALIZED_END
6402
206
}
6403
6404
6405
6406
6407
6408
6409
/*----------.
6410
| yyparse.  |
6411
`----------*/
6412
6413
int
6414
yyparse (parser_state *p)
6415
103
{
6416
/* Lookahead token kind.  */
6417
103
int yychar;
6418
6419
6420
/* The semantic value of the lookahead symbol.  */
6421
/* Default value used for initialization, for pacifying older GCCs
6422
   or non-GCC compilers.  */
6423
103
YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
6424
103
YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
6425
6426
/* Location data for the lookahead symbol.  */
6427
103
static const YYLTYPE yyloc_default
6428
103
# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6429
103
  = { 1, 1, 1, 1 }
6430
103
# endif
6431
103
;
6432
103
YYLTYPE yylloc = yyloc_default;
6433
6434
    /* Number of syntax errors so far.  */
6435
103
    int yynerrs = 0;
6436
103
    YY_USE (yynerrs); /* Silence compiler warning.  */
6437
6438
103
    yy_state_fast_t yystate = 0;
6439
    /* Number of tokens to shift before error messages enabled.  */
6440
103
    int yyerrstatus = 0;
6441
6442
    /* Refer to the stacks through separate pointers, to allow yyoverflow
6443
       to reallocate them elsewhere.  */
6444
6445
    /* Their size.  */
6446
103
    YYPTRDIFF_T yystacksize = YYINITDEPTH;
6447
6448
    /* The state stack: array, bottom, top.  */
6449
103
    yy_state_t yyssa[YYINITDEPTH];
6450
103
    yy_state_t *yyss = yyssa;
6451
103
    yy_state_t *yyssp = yyss;
6452
6453
    /* The semantic value stack: array, bottom, top.  */
6454
103
    YYSTYPE yyvsa[YYINITDEPTH];
6455
103
    YYSTYPE *yyvs = yyvsa;
6456
103
    YYSTYPE *yyvsp = yyvs;
6457
6458
    /* The location stack: array, bottom, top.  */
6459
103
    YYLTYPE yylsa[YYINITDEPTH];
6460
103
    YYLTYPE *yyls = yylsa;
6461
103
    YYLTYPE *yylsp = yyls;
6462
6463
103
  int yyn;
6464
  /* The return value of yyparse.  */
6465
103
  int yyresult;
6466
  /* Lookahead symbol kind.  */
6467
103
  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
6468
  /* The variables used to return semantic value and location from the
6469
     action routines.  */
6470
103
  YYSTYPE yyval;
6471
103
  YYLTYPE yyloc;
6472
6473
  /* The locations where the error started and ended.  */
6474
103
  YYLTYPE yyerror_range[3];
6475
6476
  /* Buffer for error messages, and its allocated size.  */
6477
103
  char yymsgbuf[128];
6478
103
  char *yymsg = yymsgbuf;
6479
103
  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
6480
6481
4.64M
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
6482
6483
  /* The number of symbols on the RHS of the reduced rule.
6484
     Keep to zero when no symbol should be popped.  */
6485
103
  int yylen = 0;
6486
6487
103
  YYDPRINTF ((stderr, "Starting parse\n"));
6488
6489
103
  yychar = YYEMPTY; /* Cause a token to be read.  */
6490
6491
6492
6493
103
#line 6494 "mrbgems/mruby-compiler/core/y.tab.c"
6494
6495
103
  yylsp[0] = yylloc;
6496
103
  goto yysetstate;
6497
6498
6499
/*------------------------------------------------------------.
6500
| yynewstate -- push a new state, which is found in yystate.  |
6501
`------------------------------------------------------------*/
6502
6.34M
yynewstate:
6503
  /* In all cases, when you get here, the value and location stacks
6504
     have just been pushed.  So pushing a state here evens the stacks.  */
6505
6.34M
  yyssp++;
6506
6507
6508
/*--------------------------------------------------------------------.
6509
| yysetstate -- set current state (the top of the stack) to yystate.  |
6510
`--------------------------------------------------------------------*/
6511
6.34M
yysetstate:
6512
6.34M
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
6513
6.34M
  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
6514
6.34M
  YY_IGNORE_USELESS_CAST_BEGIN
6515
6.34M
  *yyssp = YY_CAST (yy_state_t, yystate);
6516
6.34M
  YY_IGNORE_USELESS_CAST_END
6517
6.34M
  YY_STACK_PRINT (yyss, yyssp, p);
6518
6519
6.34M
  if (yyss + yystacksize - 1 <= yyssp)
6520
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
6521
    YYNOMEM;
6522
#else
6523
15
    {
6524
      /* Get the current used size of the three stacks, in elements.  */
6525
15
      YYPTRDIFF_T yysize = yyssp - yyss + 1;
6526
6527
# if defined yyoverflow
6528
      {
6529
        /* Give user a chance to reallocate the stack.  Use copies of
6530
           these so that the &'s don't force the real ones into
6531
           memory.  */
6532
        yy_state_t *yyss1 = yyss;
6533
        YYSTYPE *yyvs1 = yyvs;
6534
        YYLTYPE *yyls1 = yyls;
6535
6536
        /* Each stack pointer address is followed by the size of the
6537
           data in use in that stack, in bytes.  This used to be a
6538
           conditional around just the two extra args, but that might
6539
           be undefined if yyoverflow is a macro.  */
6540
        yyoverflow (YY_("memory exhausted"),
6541
                    &yyss1, yysize * YYSIZEOF (*yyssp),
6542
                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
6543
                    &yyls1, yysize * YYSIZEOF (*yylsp),
6544
                    &yystacksize);
6545
        yyss = yyss1;
6546
        yyvs = yyvs1;
6547
        yyls = yyls1;
6548
      }
6549
# else /* defined YYSTACK_RELOCATE */
6550
      /* Extend the stack our own way.  */
6551
15
      if (YYMAXDEPTH <= yystacksize)
6552
0
        YYNOMEM;
6553
15
      yystacksize *= 2;
6554
15
      if (YYMAXDEPTH < yystacksize)
6555
0
        yystacksize = YYMAXDEPTH;
6556
6557
15
      {
6558
15
        yy_state_t *yyss1 = yyss;
6559
15
        union yyalloc *yyptr =
6560
15
          YY_CAST (union yyalloc *,
6561
15
                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
6562
15
        if (! yyptr)
6563
0
          YYNOMEM;
6564
15
        YYSTACK_RELOCATE (yyss_alloc, yyss);
6565
15
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
6566
15
        YYSTACK_RELOCATE (yyls_alloc, yyls);
6567
15
#  undef YYSTACK_RELOCATE
6568
15
        if (yyss1 != yyssa)
6569
0
          YYSTACK_FREE (yyss1);
6570
15
      }
6571
0
# endif
6572
6573
0
      yyssp = yyss + yysize - 1;
6574
15
      yyvsp = yyvs + yysize - 1;
6575
15
      yylsp = yyls + yysize - 1;
6576
6577
15
      YY_IGNORE_USELESS_CAST_BEGIN
6578
15
      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
6579
15
                  YY_CAST (long, yystacksize)));
6580
15
      YY_IGNORE_USELESS_CAST_END
6581
6582
15
      if (yyss + yystacksize - 1 <= yyssp)
6583
0
        YYABORT;
6584
15
    }
6585
6.34M
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
6586
6587
6588
6.34M
  if (yystate == YYFINAL)
6589
103
    YYACCEPT;
6590
6591
6.34M
  goto yybackup;
6592
6593
6594
/*-----------.
6595
| yybackup.  |
6596
`-----------*/
6597
6.34M
yybackup:
6598
  /* Do appropriate processing given the current state.  Read a
6599
     lookahead token if we need one and don't already have one.  */
6600
6601
  /* First try to decide what to do without reference to lookahead token.  */
6602
6.34M
  yyn = yypact[yystate];
6603
6.34M
  if (yypact_value_is_default (yyn))
6604
2.20M
    goto yydefault;
6605
6606
  /* Not known => get a lookahead token if don't already have one.  */
6607
6608
  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
6609
4.14M
  if (yychar == YYEMPTY)
6610
1.70M
    {
6611
1.70M
      YYDPRINTF ((stderr, "Reading a token\n"));
6612
1.70M
      yychar = yylex (&yylval, &yylloc, p);
6613
1.70M
    }
6614
6615
4.14M
  if (yychar <= YYEOF)
6616
206
    {
6617
206
      yychar = YYEOF;
6618
206
      yytoken = YYSYMBOL_YYEOF;
6619
206
      YYDPRINTF ((stderr, "Now at end of input.\n"));
6620
206
    }
6621
4.14M
  else if (yychar == YYerror)
6622
0
    {
6623
      /* The scanner already issued an error message, process directly
6624
         to error recovery.  But do not keep the error token as
6625
         lookahead, it is too special and may lead us to an endless
6626
         loop in error recovery. */
6627
0
      yychar = YYUNDEF;
6628
0
      yytoken = YYSYMBOL_YYerror;
6629
0
      yyerror_range[1] = yylloc;
6630
0
      goto yyerrlab1;
6631
0
    }
6632
4.14M
  else
6633
4.14M
    {
6634
4.14M
      yytoken = YYTRANSLATE (yychar);
6635
4.14M
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc, p);
6636
4.14M
    }
6637
6638
  /* If the proper action on seeing token YYTOKEN is to reduce or to
6639
     detect an error, take that action.  */
6640
4.14M
  yyn += yytoken;
6641
4.14M
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
6642
2.37M
    goto yydefault;
6643
1.76M
  yyn = yytable[yyn];
6644
1.76M
  if (yyn <= 0)
6645
59.4k
    {
6646
59.4k
      if (yytable_value_is_error (yyn))
6647
0
        goto yyerrlab;
6648
59.4k
      yyn = -yyn;
6649
59.4k
      goto yyreduce;
6650
59.4k
    }
6651
6652
  /* Count tokens shifted since error; after three, turn off error
6653
     status.  */
6654
1.70M
  if (yyerrstatus)
6655
0
    yyerrstatus--;
6656
6657
  /* Shift the lookahead token.  */
6658
1.70M
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc, p);
6659
1.70M
  yystate = yyn;
6660
1.70M
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6661
1.70M
  *++yyvsp = yylval;
6662
1.70M
  YY_IGNORE_MAYBE_UNINITIALIZED_END
6663
1.70M
  *++yylsp = yylloc;
6664
6665
6666
  /* Discard the shifted token.  */
6667
1.70M
  yychar = YYEMPTY;
6668
1.70M
  goto yynewstate;
6669
6670
6671
/*-----------------------------------------------------------.
6672
| yydefault -- do the default action for the current state.  |
6673
`-----------------------------------------------------------*/
6674
4.58M
yydefault:
6675
4.58M
  yyn = yydefact[yystate];
6676
4.58M
  if (yyn == 0)
6677
0
    goto yyerrlab;
6678
4.58M
  goto yyreduce;
6679
6680
6681
/*-----------------------------.
6682
| yyreduce -- do a reduction.  |
6683
`-----------------------------*/
6684
4.64M
yyreduce:
6685
  /* yyn is the number of a rule to reduce with.  */
6686
4.64M
  yylen = yyr2[yyn];
6687
6688
  /* If YYLEN is nonzero, implement the default value of the action:
6689
     '$$ = $1'.
6690
6691
     Otherwise, the following line sets YYVAL to garbage.
6692
     This behavior is undocumented and Bison
6693
     users should not rely upon it.  Assigning to YYVAL
6694
     unconditionally makes the parser a bit smaller, and it avoids a
6695
     GCC warning that YYVAL may be used uninitialized.  */
6696
4.64M
  yyval = yyvsp[1-yylen];
6697
6698
6699
  /* Default location. */
6700
4.64M
  YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
6701
4.64M
  yyerror_range[1] = yyloc;
6702
4.64M
  YY_REDUCE_PRINT (yyn, p);
6703
4.64M
  switch (yyn)
6704
4.64M
    {
6705
103
  case 2: /* $@1: %empty  */
6706
103
#line 1636 "mrbgems/mruby-compiler/core/parse.y"
6707
103
                    {
6708
103
                      p->lstate = EXPR_BEG;
6709
103
                      if (!p->locals) p->locals = cons(0,0);
6710
103
                    }
6711
103
#line 6712 "mrbgems/mruby-compiler/core/y.tab.c"
6712
103
    break;
6713
6714
103
  case 3: /* program: $@1 top_compstmt  */
6715
103
#line 1641 "mrbgems/mruby-compiler/core/parse.y"
6716
103
                    {
6717
103
                      p->tree = new_scope(p, (yyvsp[0].nd));
6718
103
                      NODE_LINENO(p->tree, (yyvsp[0].nd));
6719
103
                    }
6720
103
#line 6721 "mrbgems/mruby-compiler/core/y.tab.c"
6721
103
    break;
6722
6723
103
  case 4: /* top_compstmt: top_stmts opt_terms  */
6724
103
#line 1648 "mrbgems/mruby-compiler/core/parse.y"
6725
103
                    {
6726
103
                      (yyval.nd) = (yyvsp[-1].nd);
6727
103
                    }
6728
103
#line 6729 "mrbgems/mruby-compiler/core/y.tab.c"
6729
103
    break;
6730
6731
0
  case 5: /* top_stmts: none  */
6732
0
#line 1654 "mrbgems/mruby-compiler/core/parse.y"
6733
0
                    {
6734
0
                      (yyval.nd) = new_begin(p, 0);
6735
0
                    }
6736
0
#line 6737 "mrbgems/mruby-compiler/core/y.tab.c"
6737
0
    break;
6738
6739
103
  case 6: /* top_stmts: top_stmt  */
6740
103
#line 1658 "mrbgems/mruby-compiler/core/parse.y"
6741
103
                    {
6742
103
                      (yyval.nd) = new_begin(p, (yyvsp[0].nd));
6743
103
                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
6744
103
                    }
6745
103
#line 6746 "mrbgems/mruby-compiler/core/y.tab.c"
6746
103
    break;
6747
6748
103
  case 7: /* top_stmts: top_stmts terms top_stmt  */
6749
103
#line 1663 "mrbgems/mruby-compiler/core/parse.y"
6750
103
                    {
6751
103
                      (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd)));
6752
103
                    }
6753
103
#line 6754 "mrbgems/mruby-compiler/core/y.tab.c"
6754
103
    break;
6755
6756
0
  case 8: /* top_stmts: error top_stmt  */
6757
0
#line 1667 "mrbgems/mruby-compiler/core/parse.y"
6758
0
                    {
6759
0
                      (yyval.nd) = new_begin(p, 0);
6760
0
                    }
6761
0
#line 6762 "mrbgems/mruby-compiler/core/y.tab.c"
6762
0
    break;
6763
6764
0
  case 10: /* @2: %empty  */
6765
0
#line 1674 "mrbgems/mruby-compiler/core/parse.y"
6766
0
                    {
6767
0
                      (yyval.nd) = local_switch(p);
6768
0
                      nvars_block(p);
6769
0
                    }
6770
0
#line 6771 "mrbgems/mruby-compiler/core/y.tab.c"
6771
0
    break;
6772
6773
0
  case 11: /* top_stmt: "'BEGIN'" @2 '{' top_compstmt '}'  */
6774
0
#line 1679 "mrbgems/mruby-compiler/core/parse.y"
6775
0
                    {
6776
0
                      yyerror(&(yylsp[-4]), p, "BEGIN not supported");
6777
0
                      local_resume(p, (yyvsp[-3].nd));
6778
0
                      nvars_unnest(p);
6779
0
                      (yyval.nd) = 0;
6780
0
                    }
6781
0
#line 6782 "mrbgems/mruby-compiler/core/y.tab.c"
6782
0
    break;
6783
6784
6.52k
  case 12: /* bodystmt: compstmt opt_rescue opt_else opt_ensure  */
6785
6.52k
#line 1691 "mrbgems/mruby-compiler/core/parse.y"
6786
6.52k
                    {
6787
6.52k
                      if ((yyvsp[-2].nd)) {
6788
0
                        (yyval.nd) = new_rescue(p, (yyvsp[-3].nd), (yyvsp[-2].nd), (yyvsp[-1].nd));
6789
0
                        NODE_LINENO((yyval.nd), (yyvsp[-3].nd));
6790
0
                      }
6791
6.52k
                      else if ((yyvsp[-1].nd)) {
6792
0
                        yywarning(p, "else without rescue is useless");
6793
0
                        (yyval.nd) = push((yyvsp[-3].nd), (yyvsp[-1].nd));
6794
0
                      }
6795
6.52k
                      else {
6796
6.52k
                        (yyval.nd) = (yyvsp[-3].nd);
6797
6.52k
                      }
6798
6.52k
                      if ((yyvsp[0].nd)) {
6799
0
                        if ((yyval.nd)) {
6800
0
                          (yyval.nd) = new_ensure(p, (yyval.nd), (yyvsp[0].nd));
6801
0
                        }
6802
0
                        else {
6803
0
                          (yyval.nd) = push((yyvsp[0].nd), new_nil(p));
6804
0
                        }
6805
0
                      }
6806
6.52k
                    }
6807
6.52k
#line 6808 "mrbgems/mruby-compiler/core/y.tab.c"
6808
6.52k
    break;
6809
6810
62.6k
  case 13: /* compstmt: stmts opt_terms  */
6811
62.6k
#line 1715 "mrbgems/mruby-compiler/core/parse.y"
6812
62.6k
                    {
6813
62.6k
                      (yyval.nd) = (yyvsp[-1].nd);
6814
62.6k
                    }
6815
62.6k
#line 6816 "mrbgems/mruby-compiler/core/y.tab.c"
6816
62.6k
    break;
6817
6818
6.77k
  case 14: /* stmts: none  */
6819
6.77k
#line 1721 "mrbgems/mruby-compiler/core/parse.y"
6820
6.77k
                    {
6821
6.77k
                      (yyval.nd) = new_begin(p, 0);
6822
6.77k
                    }
6823
6.77k
#line 6824 "mrbgems/mruby-compiler/core/y.tab.c"
6824
6.77k
    break;
6825
6826
55.9k
  case 15: /* stmts: stmt  */
6827
55.9k
#line 1725 "mrbgems/mruby-compiler/core/parse.y"
6828
55.9k
                    {
6829
55.9k
                      (yyval.nd) = new_begin(p, (yyvsp[0].nd));
6830
55.9k
                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
6831
55.9k
                    }
6832
55.9k
#line 6833 "mrbgems/mruby-compiler/core/y.tab.c"
6833
55.9k
    break;
6834
6835
52.6k
  case 16: /* stmts: stmts terms stmt  */
6836
52.6k
#line 1730 "mrbgems/mruby-compiler/core/parse.y"
6837
52.6k
                    {
6838
52.6k
                      (yyval.nd) = push((yyvsp[-2].nd), newline_node((yyvsp[0].nd)));
6839
52.6k
                    }
6840
52.6k
#line 6841 "mrbgems/mruby-compiler/core/y.tab.c"
6841
52.6k
    break;
6842
6843
0
  case 17: /* stmts: error stmt  */
6844
0
#line 1734 "mrbgems/mruby-compiler/core/parse.y"
6845
0
                    {
6846
0
                      (yyval.nd) = new_begin(p, (yyvsp[0].nd));
6847
0
                    }
6848
0
#line 6849 "mrbgems/mruby-compiler/core/y.tab.c"
6849
0
    break;
6850
6851
0
  case 18: /* $@3: %empty  */
6852
0
#line 1739 "mrbgems/mruby-compiler/core/parse.y"
6853
0
                                     {p->lstate = EXPR_FNAME;}
6854
0
#line 6855 "mrbgems/mruby-compiler/core/y.tab.c"
6855
0
    break;
6856
6857
0
  case 19: /* stmt: "'alis'" fsym $@3 fsym  */
6858
0
#line 1740 "mrbgems/mruby-compiler/core/parse.y"
6859
0
                    {
6860
0
                      (yyval.nd) = new_alias(p, (yyvsp[-2].id), (yyvsp[0].id));
6861
0
                    }
6862
0
#line 6863 "mrbgems/mruby-compiler/core/y.tab.c"
6863
0
    break;
6864
6865
0
  case 20: /* stmt: "'undef'" undef_list  */
6866
0
#line 1744 "mrbgems/mruby-compiler/core/parse.y"
6867
0
                    {
6868
0
                      (yyval.nd) = (yyvsp[0].nd);
6869
0
                    }
6870
0
#line 6871 "mrbgems/mruby-compiler/core/y.tab.c"
6871
0
    break;
6872
6873
0
  case 21: /* stmt: stmt "'if' modifier" expr_value  */
6874
0
#line 1748 "mrbgems/mruby-compiler/core/parse.y"
6875
0
                    {
6876
0
                      (yyval.nd) = new_if(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0);
6877
0
                    }
6878
0
#line 6879 "mrbgems/mruby-compiler/core/y.tab.c"
6879
0
    break;
6880
6881
0
  case 22: /* stmt: stmt "'unless' modifier" expr_value  */
6882
0
#line 1752 "mrbgems/mruby-compiler/core/parse.y"
6883
0
                    {
6884
0
                      (yyval.nd) = new_unless(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd), 0);
6885
0
                    }
6886
0
#line 6887 "mrbgems/mruby-compiler/core/y.tab.c"
6887
0
    break;
6888
6889
0
  case 23: /* stmt: stmt "'while' modifier" expr_value  */
6890
0
#line 1756 "mrbgems/mruby-compiler/core/parse.y"
6891
0
                    {
6892
0
                      (yyval.nd) = new_while(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd));
6893
0
                    }
6894
0
#line 6895 "mrbgems/mruby-compiler/core/y.tab.c"
6895
0
    break;
6896
6897
0
  case 24: /* stmt: stmt "'until' modifier" expr_value  */
6898
0
#line 1760 "mrbgems/mruby-compiler/core/parse.y"
6899
0
                    {
6900
0
                      (yyval.nd) = new_until(p, cond((yyvsp[0].nd)), (yyvsp[-2].nd));
6901
0
                    }
6902
0
#line 6903 "mrbgems/mruby-compiler/core/y.tab.c"
6903
0
    break;
6904
6905
0
  case 25: /* stmt: stmt "'rescue' modifier" stmt  */
6906
0
#line 1764 "mrbgems/mruby-compiler/core/parse.y"
6907
0
                    {
6908
0
                      (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd));
6909
0
                    }
6910
0
#line 6911 "mrbgems/mruby-compiler/core/y.tab.c"
6911
0
    break;
6912
6913
0
  case 26: /* stmt: "'END'" '{' compstmt '}'  */
6914
0
#line 1768 "mrbgems/mruby-compiler/core/parse.y"
6915
0
                    {
6916
0
                      yyerror(&(yylsp[-3]), p, "END not supported");
6917
0
                      (yyval.nd) = new_postexe(p, (yyvsp[-1].nd));
6918
0
                    }
6919
0
#line 6920 "mrbgems/mruby-compiler/core/y.tab.c"
6920
0
    break;
6921
6922
0
  case 28: /* stmt: mlhs '=' command_call  */
6923
0
#line 1774 "mrbgems/mruby-compiler/core/parse.y"
6924
0
                    {
6925
0
                      (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd));
6926
0
                    }
6927
0
#line 6928 "mrbgems/mruby-compiler/core/y.tab.c"
6928
0
    break;
6929
6930
0
  case 29: /* stmt: lhs '=' mrhs  */
6931
0
#line 1778 "mrbgems/mruby-compiler/core/parse.y"
6932
0
                    {
6933
0
                      (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd)));
6934
0
                    }
6935
0
#line 6936 "mrbgems/mruby-compiler/core/y.tab.c"
6936
0
    break;
6937
6938
0
  case 30: /* stmt: mlhs '=' arg  */
6939
0
#line 1782 "mrbgems/mruby-compiler/core/parse.y"
6940
0
                    {
6941
0
                      (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), (yyvsp[0].nd));
6942
0
                    }
6943
0
#line 6944 "mrbgems/mruby-compiler/core/y.tab.c"
6944
0
    break;
6945
6946
0
  case 31: /* stmt: mlhs '=' mrhs  */
6947
0
#line 1786 "mrbgems/mruby-compiler/core/parse.y"
6948
0
                    {
6949
0
                      (yyval.nd) = new_masgn(p, (yyvsp[-2].nd), new_array(p, (yyvsp[0].nd)));
6950
0
                    }
6951
0
#line 6952 "mrbgems/mruby-compiler/core/y.tab.c"
6952
0
    break;
6953
6954
0
  case 32: /* stmt: arg "=>" "local variable or method"  */
6955
0
#line 1790 "mrbgems/mruby-compiler/core/parse.y"
6956
0
                    {
6957
0
                      node *lhs = new_lvar(p, (yyvsp[0].id));
6958
0
                      assignable(p, lhs);
6959
0
                      (yyval.nd) = new_asgn(p, lhs, (yyvsp[-2].nd));
6960
0
                    }
6961
0
#line 6962 "mrbgems/mruby-compiler/core/y.tab.c"
6962
0
    break;
6963
6964
0
  case 34: /* command_asgn: lhs '=' command_rhs  */
6965
0
#line 1799 "mrbgems/mruby-compiler/core/parse.y"
6966
0
                    {
6967
0
                      (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd));
6968
0
                    }
6969
0
#line 6970 "mrbgems/mruby-compiler/core/y.tab.c"
6970
0
    break;
6971
6972
0
  case 35: /* command_asgn: var_lhs tOP_ASGN command_rhs  */
6973
0
#line 1803 "mrbgems/mruby-compiler/core/parse.y"
6974
0
                    {
6975
0
                      (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd));
6976
0
                    }
6977
0
#line 6978 "mrbgems/mruby-compiler/core/y.tab.c"
6978
0
    break;
6979
6980
0
  case 36: /* command_asgn: primary_value '[' opt_call_args ']' tOP_ASGN command_rhs  */
6981
0
#line 1807 "mrbgems/mruby-compiler/core/parse.y"
6982
0
                    {
6983
0
                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd));
6984
0
                    }
6985
0
#line 6986 "mrbgems/mruby-compiler/core/y.tab.c"
6986
0
    break;
6987
6988
0
  case 37: /* command_asgn: primary_value call_op "local variable or method" tOP_ASGN command_rhs  */
6989
0
#line 1811 "mrbgems/mruby-compiler/core/parse.y"
6990
0
                    {
6991
0
                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd));
6992
0
                    }
6993
0
#line 6994 "mrbgems/mruby-compiler/core/y.tab.c"
6994
0
    break;
6995
6996
0
  case 38: /* command_asgn: primary_value call_op "constant" tOP_ASGN command_rhs  */
6997
0
#line 1815 "mrbgems/mruby-compiler/core/parse.y"
6998
0
                    {
6999
0
                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd));
7000
0
                    }
7001
0
#line 7002 "mrbgems/mruby-compiler/core/y.tab.c"
7002
0
    break;
7003
7004
0
  case 39: /* command_asgn: primary_value "::" "constant" tOP_ASGN command_call  */
7005
0
#line 1819 "mrbgems/mruby-compiler/core/parse.y"
7006
0
                    {
7007
0
                      yyerror(&(yylsp[-4]), p, "constant re-assignment");
7008
0
                      (yyval.nd) = 0;
7009
0
                    }
7010
0
#line 7011 "mrbgems/mruby-compiler/core/y.tab.c"
7011
0
    break;
7012
7013
0
  case 40: /* command_asgn: primary_value "::" "local variable or method" tOP_ASGN command_rhs  */
7014
0
#line 1824 "mrbgems/mruby-compiler/core/parse.y"
7015
0
                    {
7016
0
                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd));
7017
0
                    }
7018
0
#line 7019 "mrbgems/mruby-compiler/core/y.tab.c"
7019
0
    break;
7020
7021
0
  case 41: /* command_asgn: defn_head f_opt_arglist_paren '=' command  */
7022
0
#line 1828 "mrbgems/mruby-compiler/core/parse.y"
7023
0
                    {
7024
0
                      (yyval.nd) = (yyvsp[-3].nd);
7025
0
                      endless_method_name(p, (yyvsp[-3].nd));
7026
0
                      void_expr_error(p, (yyvsp[0].nd));
7027
0
                      defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd));
7028
0
                      nvars_unnest(p);
7029
0
                      p->in_def--;
7030
0
                    }
7031
0
#line 7032 "mrbgems/mruby-compiler/core/y.tab.c"
7032
0
    break;
7033
7034
0
  case 42: /* command_asgn: defn_head f_opt_arglist_paren '=' command "'rescue' modifier" arg  */
7035
0
#line 1837 "mrbgems/mruby-compiler/core/parse.y"
7036
0
                    {
7037
0
                      (yyval.nd) = (yyvsp[-5].nd);
7038
0
                      endless_method_name(p, (yyvsp[-5].nd));
7039
0
                      void_expr_error(p, (yyvsp[-2].nd));
7040
0
                      defn_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)));
7041
0
                      nvars_unnest(p);
7042
0
                      p->in_def--;
7043
0
                    }
7044
0
#line 7045 "mrbgems/mruby-compiler/core/y.tab.c"
7045
0
    break;
7046
7047
0
  case 43: /* command_asgn: defs_head f_opt_arglist_paren '=' command  */
7048
0
#line 1846 "mrbgems/mruby-compiler/core/parse.y"
7049
0
                    {
7050
0
                      (yyval.nd) = (yyvsp[-3].nd);
7051
0
                      void_expr_error(p, (yyvsp[0].nd));
7052
0
                      defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd));
7053
0
                      nvars_unnest(p);
7054
0
                      p->in_def--;
7055
0
                      p->in_single--;
7056
0
                    }
7057
0
#line 7058 "mrbgems/mruby-compiler/core/y.tab.c"
7058
0
    break;
7059
7060
0
  case 44: /* command_asgn: defs_head f_opt_arglist_paren '=' command "'rescue' modifier" arg  */
7061
0
#line 1855 "mrbgems/mruby-compiler/core/parse.y"
7062
0
                    {
7063
0
                      (yyval.nd) = (yyvsp[-5].nd);
7064
0
                      void_expr_error(p, (yyvsp[-2].nd));
7065
0
                      defs_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)));
7066
0
                      nvars_unnest(p);
7067
0
                      p->in_def--;
7068
0
                      p->in_single--;
7069
0
                    }
7070
0
#line 7071 "mrbgems/mruby-compiler/core/y.tab.c"
7071
0
    break;
7072
7073
0
  case 45: /* command_asgn: backref tOP_ASGN command_rhs  */
7074
0
#line 1864 "mrbgems/mruby-compiler/core/parse.y"
7075
0
                    {
7076
0
                      backref_error(p, (yyvsp[-2].nd));
7077
0
                      (yyval.nd) = new_begin(p, 0);
7078
0
                    }
7079
0
#line 7080 "mrbgems/mruby-compiler/core/y.tab.c"
7080
0
    break;
7081
7082
0
  case 47: /* command_rhs: command_call "'rescue' modifier" stmt  */
7083
0
#line 1872 "mrbgems/mruby-compiler/core/parse.y"
7084
0
                    {
7085
0
                      (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd));
7086
0
                    }
7087
0
#line 7088 "mrbgems/mruby-compiler/core/y.tab.c"
7088
0
    break;
7089
7090
1.45k
  case 50: /* expr: expr "'and'" expr  */
7091
1.45k
#line 1881 "mrbgems/mruby-compiler/core/parse.y"
7092
1.45k
                    {
7093
1.45k
                      (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd));
7094
1.45k
                    }
7095
1.45k
#line 7096 "mrbgems/mruby-compiler/core/y.tab.c"
7096
1.45k
    break;
7097
7098
2.05k
  case 51: /* expr: expr "'or'" expr  */
7099
2.05k
#line 1885 "mrbgems/mruby-compiler/core/parse.y"
7100
2.05k
                    {
7101
2.05k
                      (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd));
7102
2.05k
                    }
7103
2.05k
#line 7104 "mrbgems/mruby-compiler/core/y.tab.c"
7104
2.05k
    break;
7105
7106
0
  case 52: /* expr: "'not'" opt_nl expr  */
7107
0
#line 1889 "mrbgems/mruby-compiler/core/parse.y"
7108
0
                    {
7109
0
                      (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!");
7110
0
                    }
7111
0
#line 7112 "mrbgems/mruby-compiler/core/y.tab.c"
7112
0
    break;
7113
7114
0
  case 53: /* expr: '!' command_call  */
7115
0
#line 1893 "mrbgems/mruby-compiler/core/parse.y"
7116
0
                    {
7117
0
                      (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!");
7118
0
                    }
7119
0
#line 7120 "mrbgems/mruby-compiler/core/y.tab.c"
7120
0
    break;
7121
7122
103
  case 55: /* defn_head: "'def'" fname  */
7123
103
#line 1901 "mrbgems/mruby-compiler/core/parse.y"
7124
103
                    {
7125
103
                      (yyval.nd) = new_def(p, (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p));
7126
103
                      p->cmdarg_stack = 0;
7127
103
                      p->in_def++;
7128
103
                      nvars_block(p);
7129
103
                    }
7130
103
#line 7131 "mrbgems/mruby-compiler/core/y.tab.c"
7131
103
    break;
7132
7133
0
  case 56: /* $@4: %empty  */
7134
0
#line 1910 "mrbgems/mruby-compiler/core/parse.y"
7135
0
                    {
7136
0
                      p->lstate = EXPR_FNAME;
7137
0
                    }
7138
0
#line 7139 "mrbgems/mruby-compiler/core/y.tab.c"
7139
0
    break;
7140
7141
0
  case 57: /* defs_head: "'def'" singleton dot_or_colon $@4 fname  */
7142
0
#line 1914 "mrbgems/mruby-compiler/core/parse.y"
7143
0
                    {
7144
0
                      (yyval.nd) = new_sdef(p, (yyvsp[-3].nd), (yyvsp[0].id), nint(p->cmdarg_stack), local_switch(p));
7145
0
                      p->cmdarg_stack = 0;
7146
0
                      p->in_def++;
7147
0
                      p->in_single++;
7148
0
                      nvars_block(p);
7149
0
                      p->lstate = EXPR_ENDFN; /* force for args */
7150
0
                    }
7151
0
#line 7152 "mrbgems/mruby-compiler/core/y.tab.c"
7152
0
    break;
7153
7154
4.33k
  case 58: /* expr_value: expr  */
7155
4.33k
#line 1925 "mrbgems/mruby-compiler/core/parse.y"
7156
4.33k
                    {
7157
4.33k
                      if (!(yyvsp[0].nd)) (yyval.nd) = new_nil(p);
7158
4.33k
                      else {
7159
4.33k
                        (yyval.nd) = (yyvsp[0].nd);
7160
4.33k
                      }
7161
4.33k
                    }
7162
4.33k
#line 7163 "mrbgems/mruby-compiler/core/y.tab.c"
7163
4.33k
    break;
7164
7165
0
  case 62: /* block_command: block_call call_op2 operation2 command_args  */
7166
0
#line 1939 "mrbgems/mruby-compiler/core/parse.y"
7167
0
                    {
7168
0
                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num));
7169
0
                    }
7170
0
#line 7171 "mrbgems/mruby-compiler/core/y.tab.c"
7171
0
    break;
7172
7173
0
  case 63: /* $@5: %empty  */
7174
0
#line 1945 "mrbgems/mruby-compiler/core/parse.y"
7175
0
                    {
7176
0
                      local_nest(p);
7177
0
                      nvars_nest(p);
7178
0
                    }
7179
0
#line 7180 "mrbgems/mruby-compiler/core/y.tab.c"
7180
0
    break;
7181
7182
0
  case 64: /* cmd_brace_block: "{" $@5 opt_block_param compstmt '}'  */
7183
0
#line 1952 "mrbgems/mruby-compiler/core/parse.y"
7184
0
                    {
7185
0
                      (yyval.nd) = new_block(p, (yyvsp[-2].nd), (yyvsp[-1].nd));
7186
0
                      local_unnest(p);
7187
0
                      nvars_unnest(p);
7188
0
                    }
7189
0
#line 7190 "mrbgems/mruby-compiler/core/y.tab.c"
7190
0
    break;
7191
7192
0
  case 65: /* command: operation command_args  */
7193
0
#line 1960 "mrbgems/mruby-compiler/core/parse.y"
7194
0
                    {
7195
0
                      (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd));
7196
0
                    }
7197
0
#line 7198 "mrbgems/mruby-compiler/core/y.tab.c"
7198
0
    break;
7199
7200
0
  case 66: /* command: operation command_args cmd_brace_block  */
7201
0
#line 1964 "mrbgems/mruby-compiler/core/parse.y"
7202
0
                    {
7203
0
                      args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
7204
0
                      (yyval.nd) = new_fcall(p, (yyvsp[-2].id), (yyvsp[-1].nd));
7205
0
                    }
7206
0
#line 7207 "mrbgems/mruby-compiler/core/y.tab.c"
7207
0
    break;
7208
7209
0
  case 67: /* command: primary_value call_op operation2 command_args  */
7210
0
#line 1969 "mrbgems/mruby-compiler/core/parse.y"
7211
0
                    {
7212
0
                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num));
7213
0
                    }
7214
0
#line 7215 "mrbgems/mruby-compiler/core/y.tab.c"
7215
0
    break;
7216
7217
0
  case 68: /* command: primary_value call_op operation2 command_args cmd_brace_block  */
7218
0
#line 1973 "mrbgems/mruby-compiler/core/parse.y"
7219
0
                    {
7220
0
                      args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
7221
0
                      (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num));
7222
0
                   }
7223
0
#line 7224 "mrbgems/mruby-compiler/core/y.tab.c"
7224
0
    break;
7225
7226
0
  case 69: /* command: primary_value "::" operation2 command_args  */
7227
0
#line 1978 "mrbgems/mruby-compiler/core/parse.y"
7228
0
                    {
7229
0
                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2);
7230
0
                    }
7231
0
#line 7232 "mrbgems/mruby-compiler/core/y.tab.c"
7232
0
    break;
7233
7234
0
  case 70: /* command: primary_value "::" operation2 command_args cmd_brace_block  */
7235
0
#line 1982 "mrbgems/mruby-compiler/core/parse.y"
7236
0
                    {
7237
0
                      args_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
7238
0
                      (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), tCOLON2);
7239
0
                    }
7240
0
#line 7241 "mrbgems/mruby-compiler/core/y.tab.c"
7241
0
    break;
7242
7243
0
  case 71: /* command: "'super'" command_args  */
7244
0
#line 1987 "mrbgems/mruby-compiler/core/parse.y"
7245
0
                    {
7246
0
                      (yyval.nd) = new_super(p, (yyvsp[0].nd));
7247
0
                    }
7248
0
#line 7249 "mrbgems/mruby-compiler/core/y.tab.c"
7249
0
    break;
7250
7251
0
  case 72: /* command: "'yield'" command_args  */
7252
0
#line 1991 "mrbgems/mruby-compiler/core/parse.y"
7253
0
                    {
7254
0
                      (yyval.nd) = new_yield(p, (yyvsp[0].nd));
7255
0
                    }
7256
0
#line 7257 "mrbgems/mruby-compiler/core/y.tab.c"
7257
0
    break;
7258
7259
0
  case 73: /* command: "'return'" call_args  */
7260
0
#line 1995 "mrbgems/mruby-compiler/core/parse.y"
7261
0
                    {
7262
0
                      (yyval.nd) = new_return(p, ret_args(p, (yyvsp[0].nd)));
7263
0
                    }
7264
0
#line 7265 "mrbgems/mruby-compiler/core/y.tab.c"
7265
0
    break;
7266
7267
0
  case 74: /* command: "'break'" call_args  */
7268
0
#line 1999 "mrbgems/mruby-compiler/core/parse.y"
7269
0
                    {
7270
0
                      (yyval.nd) = new_break(p, ret_args(p, (yyvsp[0].nd)));
7271
0
                    }
7272
0
#line 7273 "mrbgems/mruby-compiler/core/y.tab.c"
7273
0
    break;
7274
7275
0
  case 75: /* command: "'next'" call_args  */
7276
0
#line 2003 "mrbgems/mruby-compiler/core/parse.y"
7277
0
                    {
7278
0
                      (yyval.nd) = new_next(p, ret_args(p, (yyvsp[0].nd)));
7279
0
                    }
7280
0
#line 7281 "mrbgems/mruby-compiler/core/y.tab.c"
7281
0
    break;
7282
7283
0
  case 76: /* mlhs: mlhs_basic  */
7284
0
#line 2009 "mrbgems/mruby-compiler/core/parse.y"
7285
0
                    {
7286
0
                      (yyval.nd) = (yyvsp[0].nd);
7287
0
                    }
7288
0
#line 7289 "mrbgems/mruby-compiler/core/y.tab.c"
7289
0
    break;
7290
7291
0
  case 77: /* mlhs: tLPAREN mlhs_inner rparen  */
7292
0
#line 2013 "mrbgems/mruby-compiler/core/parse.y"
7293
0
                    {
7294
0
                      (yyval.nd) = (yyvsp[-1].nd);
7295
0
                    }
7296
0
#line 7297 "mrbgems/mruby-compiler/core/y.tab.c"
7297
0
    break;
7298
7299
0
  case 79: /* mlhs_inner: tLPAREN mlhs_inner rparen  */
7300
0
#line 2020 "mrbgems/mruby-compiler/core/parse.y"
7301
0
                    {
7302
0
                      (yyval.nd) = (yyvsp[-1].nd);
7303
0
                    }
7304
0
#line 7305 "mrbgems/mruby-compiler/core/y.tab.c"
7305
0
    break;
7306
7307
0
  case 80: /* mlhs_basic: mlhs_list  */
7308
0
#line 2026 "mrbgems/mruby-compiler/core/parse.y"
7309
0
                    {
7310
0
                      (yyval.nd) = list1((yyvsp[0].nd));
7311
0
                    }
7312
0
#line 7313 "mrbgems/mruby-compiler/core/y.tab.c"
7313
0
    break;
7314
7315
0
  case 81: /* mlhs_basic: mlhs_list mlhs_item  */
7316
0
#line 2030 "mrbgems/mruby-compiler/core/parse.y"
7317
0
                    {
7318
0
                      (yyval.nd) = list1(push((yyvsp[-1].nd),(yyvsp[0].nd)));
7319
0
                    }
7320
0
#line 7321 "mrbgems/mruby-compiler/core/y.tab.c"
7321
0
    break;
7322
7323
0
  case 82: /* mlhs_basic: mlhs_list "*" mlhs_node  */
7324
0
#line 2034 "mrbgems/mruby-compiler/core/parse.y"
7325
0
                    {
7326
0
                      (yyval.nd) = list2((yyvsp[-2].nd), (yyvsp[0].nd));
7327
0
                    }
7328
0
#line 7329 "mrbgems/mruby-compiler/core/y.tab.c"
7329
0
    break;
7330
7331
0
  case 83: /* mlhs_basic: mlhs_list "*" mlhs_node ',' mlhs_post  */
7332
0
#line 2038 "mrbgems/mruby-compiler/core/parse.y"
7333
0
                    {
7334
0
                      (yyval.nd) = list3((yyvsp[-4].nd), (yyvsp[-2].nd), (yyvsp[0].nd));
7335
0
                    }
7336
0
#line 7337 "mrbgems/mruby-compiler/core/y.tab.c"
7337
0
    break;
7338
7339
0
  case 84: /* mlhs_basic: mlhs_list "*"  */
7340
0
#line 2042 "mrbgems/mruby-compiler/core/parse.y"
7341
0
                    {
7342
0
                      (yyval.nd) = list2((yyvsp[-1].nd), new_nil(p));
7343
0
                    }
7344
0
#line 7345 "mrbgems/mruby-compiler/core/y.tab.c"
7345
0
    break;
7346
7347
0
  case 85: /* mlhs_basic: mlhs_list "*" ',' mlhs_post  */
7348
0
#line 2046 "mrbgems/mruby-compiler/core/parse.y"
7349
0
                    {
7350
0
                      (yyval.nd) = list3((yyvsp[-3].nd), new_nil(p), (yyvsp[0].nd));
7351
0
                    }
7352
0
#line 7353 "mrbgems/mruby-compiler/core/y.tab.c"
7353
0
    break;
7354
7355
0
  case 86: /* mlhs_basic: "*" mlhs_node  */
7356
0
#line 2050 "mrbgems/mruby-compiler/core/parse.y"
7357
0
                    {
7358
0
                      (yyval.nd) = list2(0, (yyvsp[0].nd));
7359
0
                    }
7360
0
#line 7361 "mrbgems/mruby-compiler/core/y.tab.c"
7361
0
    break;
7362
7363
0
  case 87: /* mlhs_basic: "*" mlhs_node ',' mlhs_post  */
7364
0
#line 2054 "mrbgems/mruby-compiler/core/parse.y"
7365
0
                    {
7366
0
                      (yyval.nd) = list3(0, (yyvsp[-2].nd), (yyvsp[0].nd));
7367
0
                    }
7368
0
#line 7369 "mrbgems/mruby-compiler/core/y.tab.c"
7369
0
    break;
7370
7371
0
  case 88: /* mlhs_basic: "*"  */
7372
0
#line 2058 "mrbgems/mruby-compiler/core/parse.y"
7373
0
                    {
7374
0
                      (yyval.nd) = list2(0, new_nil(p));
7375
0
                    }
7376
0
#line 7377 "mrbgems/mruby-compiler/core/y.tab.c"
7377
0
    break;
7378
7379
0
  case 89: /* mlhs_basic: "*" ',' mlhs_post  */
7380
0
#line 2062 "mrbgems/mruby-compiler/core/parse.y"
7381
0
                    {
7382
0
                      (yyval.nd) = list3(0, new_nil(p), (yyvsp[0].nd));
7383
0
                    }
7384
0
#line 7385 "mrbgems/mruby-compiler/core/y.tab.c"
7385
0
    break;
7386
7387
0
  case 91: /* mlhs_item: tLPAREN mlhs_inner rparen  */
7388
0
#line 2069 "mrbgems/mruby-compiler/core/parse.y"
7389
0
                    {
7390
0
                      (yyval.nd) = new_masgn(p, (yyvsp[-1].nd), NULL);
7391
0
                    }
7392
0
#line 7393 "mrbgems/mruby-compiler/core/y.tab.c"
7393
0
    break;
7394
7395
0
  case 92: /* mlhs_list: mlhs_item ','  */
7396
0
#line 2075 "mrbgems/mruby-compiler/core/parse.y"
7397
0
                    {
7398
0
                      (yyval.nd) = list1((yyvsp[-1].nd));
7399
0
                    }
7400
0
#line 7401 "mrbgems/mruby-compiler/core/y.tab.c"
7401
0
    break;
7402
7403
0
  case 93: /* mlhs_list: mlhs_list mlhs_item ','  */
7404
0
#line 2079 "mrbgems/mruby-compiler/core/parse.y"
7405
0
                    {
7406
0
                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[-1].nd));
7407
0
                    }
7408
0
#line 7409 "mrbgems/mruby-compiler/core/y.tab.c"
7409
0
    break;
7410
7411
0
  case 94: /* mlhs_post: mlhs_item  */
7412
0
#line 2085 "mrbgems/mruby-compiler/core/parse.y"
7413
0
                    {
7414
0
                      (yyval.nd) = list1((yyvsp[0].nd));
7415
0
                    }
7416
0
#line 7417 "mrbgems/mruby-compiler/core/y.tab.c"
7417
0
    break;
7418
7419
0
  case 95: /* mlhs_post: mlhs_list mlhs_item  */
7420
0
#line 2089 "mrbgems/mruby-compiler/core/parse.y"
7421
0
                    {
7422
0
                      (yyval.nd) = push((yyvsp[-1].nd), (yyvsp[0].nd));
7423
0
                    }
7424
0
#line 7425 "mrbgems/mruby-compiler/core/y.tab.c"
7425
0
    break;
7426
7427
0
  case 96: /* mlhs_node: variable  */
7428
0
#line 2095 "mrbgems/mruby-compiler/core/parse.y"
7429
0
                    {
7430
0
                      assignable(p, (yyvsp[0].nd));
7431
0
                    }
7432
0
#line 7433 "mrbgems/mruby-compiler/core/y.tab.c"
7433
0
    break;
7434
7435
0
  case 97: /* mlhs_node: primary_value '[' opt_call_args ']'  */
7436
0
#line 2099 "mrbgems/mruby-compiler/core/parse.y"
7437
0
                    {
7438
0
                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.');
7439
0
                    }
7440
0
#line 7441 "mrbgems/mruby-compiler/core/y.tab.c"
7441
0
    break;
7442
7443
0
  case 98: /* mlhs_node: primary_value call_op "local variable or method"  */
7444
0
#line 2103 "mrbgems/mruby-compiler/core/parse.y"
7445
0
                    {
7446
0
                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num));
7447
0
                    }
7448
0
#line 7449 "mrbgems/mruby-compiler/core/y.tab.c"
7449
0
    break;
7450
7451
0
  case 99: /* mlhs_node: primary_value "::" "local variable or method"  */
7452
0
#line 2107 "mrbgems/mruby-compiler/core/parse.y"
7453
0
                    {
7454
0
                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2);
7455
0
                    }
7456
0
#line 7457 "mrbgems/mruby-compiler/core/y.tab.c"
7457
0
    break;
7458
7459
0
  case 100: /* mlhs_node: primary_value call_op "constant"  */
7460
0
#line 2111 "mrbgems/mruby-compiler/core/parse.y"
7461
0
                    {
7462
0
                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num));
7463
0
                    }
7464
0
#line 7465 "mrbgems/mruby-compiler/core/y.tab.c"
7465
0
    break;
7466
7467
0
  case 101: /* mlhs_node: primary_value "::" "constant"  */
7468
0
#line 2115 "mrbgems/mruby-compiler/core/parse.y"
7469
0
                    {
7470
0
                      if (p->in_def || p->in_single)
7471
0
                        yyerror(&(yylsp[-2]), p, "dynamic constant assignment");
7472
0
                      (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id));
7473
0
                    }
7474
0
#line 7475 "mrbgems/mruby-compiler/core/y.tab.c"
7475
0
    break;
7476
7477
0
  case 102: /* mlhs_node: tCOLON3 "constant"  */
7478
0
#line 2121 "mrbgems/mruby-compiler/core/parse.y"
7479
0
                    {
7480
0
                      if (p->in_def || p->in_single)
7481
0
                        yyerror(&(yylsp[-1]), p, "dynamic constant assignment");
7482
0
                      (yyval.nd) = new_colon3(p, (yyvsp[0].id));
7483
0
                    }
7484
0
#line 7485 "mrbgems/mruby-compiler/core/y.tab.c"
7485
0
    break;
7486
7487
0
  case 103: /* mlhs_node: backref  */
7488
0
#line 2127 "mrbgems/mruby-compiler/core/parse.y"
7489
0
                    {
7490
0
                      backref_error(p, (yyvsp[0].nd));
7491
0
                      (yyval.nd) = 0;
7492
0
                    }
7493
0
#line 7494 "mrbgems/mruby-compiler/core/y.tab.c"
7494
0
    break;
7495
7496
34.6k
  case 104: /* lhs: variable  */
7497
34.6k
#line 2134 "mrbgems/mruby-compiler/core/parse.y"
7498
34.6k
                    {
7499
34.6k
                      assignable(p, (yyvsp[0].nd));
7500
34.6k
                    }
7501
34.6k
#line 7502 "mrbgems/mruby-compiler/core/y.tab.c"
7502
34.6k
    break;
7503
7504
0
  case 105: /* lhs: primary_value '[' opt_call_args ']'  */
7505
0
#line 2138 "mrbgems/mruby-compiler/core/parse.y"
7506
0
                    {
7507
0
                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.');
7508
0
                    }
7509
0
#line 7510 "mrbgems/mruby-compiler/core/y.tab.c"
7510
0
    break;
7511
7512
0
  case 106: /* lhs: primary_value call_op "local variable or method"  */
7513
0
#line 2142 "mrbgems/mruby-compiler/core/parse.y"
7514
0
                    {
7515
0
                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num));
7516
0
                    }
7517
0
#line 7518 "mrbgems/mruby-compiler/core/y.tab.c"
7518
0
    break;
7519
7520
0
  case 107: /* lhs: primary_value "::" "local variable or method"  */
7521
0
#line 2146 "mrbgems/mruby-compiler/core/parse.y"
7522
0
                    {
7523
0
                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2);
7524
0
                    }
7525
0
#line 7526 "mrbgems/mruby-compiler/core/y.tab.c"
7526
0
    break;
7527
7528
0
  case 108: /* lhs: primary_value call_op "constant"  */
7529
0
#line 2150 "mrbgems/mruby-compiler/core/parse.y"
7530
0
                    {
7531
0
                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, (yyvsp[-1].num));
7532
0
                    }
7533
0
#line 7534 "mrbgems/mruby-compiler/core/y.tab.c"
7534
0
    break;
7535
7536
0
  case 109: /* lhs: primary_value "::" "constant"  */
7537
0
#line 2154 "mrbgems/mruby-compiler/core/parse.y"
7538
0
                    {
7539
0
                      if (p->in_def || p->in_single)
7540
0
                        yyerror(&(yylsp[-2]), p, "dynamic constant assignment");
7541
0
                      (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id));
7542
0
                    }
7543
0
#line 7544 "mrbgems/mruby-compiler/core/y.tab.c"
7544
0
    break;
7545
7546
0
  case 110: /* lhs: tCOLON3 "constant"  */
7547
0
#line 2160 "mrbgems/mruby-compiler/core/parse.y"
7548
0
                    {
7549
0
                      if (p->in_def || p->in_single)
7550
0
                        yyerror(&(yylsp[-1]), p, "dynamic constant assignment");
7551
0
                      (yyval.nd) = new_colon3(p, (yyvsp[0].id));
7552
0
                    }
7553
0
#line 7554 "mrbgems/mruby-compiler/core/y.tab.c"
7554
0
    break;
7555
7556
0
  case 111: /* lhs: backref  */
7557
0
#line 2166 "mrbgems/mruby-compiler/core/parse.y"
7558
0
                    {
7559
0
                      backref_error(p, (yyvsp[0].nd));
7560
0
                      (yyval.nd) = 0;
7561
0
                    }
7562
0
#line 7563 "mrbgems/mruby-compiler/core/y.tab.c"
7563
0
    break;
7564
7565
0
  case 112: /* lhs: "numbered parameter"  */
7566
0
#line 2171 "mrbgems/mruby-compiler/core/parse.y"
7567
0
                    {
7568
0
                      yyerror(&(yylsp[0]), p, "can't assign to numbered parameter");
7569
0
                    }
7570
0
#line 7571 "mrbgems/mruby-compiler/core/y.tab.c"
7571
0
    break;
7572
7573
0
  case 113: /* cname: "local variable or method"  */
7574
0
#line 2177 "mrbgems/mruby-compiler/core/parse.y"
7575
0
                    {
7576
0
                      yyerror(&(yylsp[0]), p, "class/module name must be CONSTANT");
7577
0
                    }
7578
0
#line 7579 "mrbgems/mruby-compiler/core/y.tab.c"
7579
0
    break;
7580
7581
0
  case 115: /* cpath: tCOLON3 cname  */
7582
0
#line 2184 "mrbgems/mruby-compiler/core/parse.y"
7583
0
                    {
7584
0
                      (yyval.nd) = cons(nint(1), nsym((yyvsp[0].id)));
7585
0
                    }
7586
0
#line 7587 "mrbgems/mruby-compiler/core/y.tab.c"
7587
0
    break;
7588
7589
0
  case 116: /* cpath: cname  */
7590
0
#line 2188 "mrbgems/mruby-compiler/core/parse.y"
7591
0
                    {
7592
0
                      (yyval.nd) = cons(nint(0), nsym((yyvsp[0].id)));
7593
0
                    }
7594
0
#line 7595 "mrbgems/mruby-compiler/core/y.tab.c"
7595
0
    break;
7596
7597
0
  case 117: /* cpath: primary_value "::" cname  */
7598
0
#line 2192 "mrbgems/mruby-compiler/core/parse.y"
7599
0
                    {
7600
0
                      void_expr_error(p, (yyvsp[-2].nd));
7601
0
                      (yyval.nd) = cons((yyvsp[-2].nd), nsym((yyvsp[0].id)));
7602
0
                    }
7603
0
#line 7604 "mrbgems/mruby-compiler/core/y.tab.c"
7604
0
    break;
7605
7606
0
  case 121: /* fname: op  */
7607
0
#line 2202 "mrbgems/mruby-compiler/core/parse.y"
7608
0
                    {
7609
0
                      p->lstate = EXPR_ENDFN;
7610
0
                      (yyval.id) = (yyvsp[0].id);
7611
0
                    }
7612
0
#line 7613 "mrbgems/mruby-compiler/core/y.tab.c"
7613
0
    break;
7614
7615
0
  case 122: /* fname: reswords  */
7616
0
#line 2207 "mrbgems/mruby-compiler/core/parse.y"
7617
0
                    {
7618
0
                      p->lstate = EXPR_ENDFN;
7619
0
                      (yyval.id) = (yyvsp[0].id);
7620
0
                    }
7621
0
#line 7622 "mrbgems/mruby-compiler/core/y.tab.c"
7622
0
    break;
7623
7624
0
  case 125: /* undef_list: fsym  */
7625
0
#line 2218 "mrbgems/mruby-compiler/core/parse.y"
7626
0
                    {
7627
0
                      (yyval.nd) = new_undef(p, (yyvsp[0].id));
7628
0
                    }
7629
0
#line 7630 "mrbgems/mruby-compiler/core/y.tab.c"
7630
0
    break;
7631
7632
0
  case 126: /* $@6: %empty  */
7633
0
#line 2221 "mrbgems/mruby-compiler/core/parse.y"
7634
0
                                 {p->lstate = EXPR_FNAME;}
7635
0
#line 7636 "mrbgems/mruby-compiler/core/y.tab.c"
7636
0
    break;
7637
7638
0
  case 127: /* undef_list: undef_list ',' $@6 fsym  */
7639
0
#line 2222 "mrbgems/mruby-compiler/core/parse.y"
7640
0
                    {
7641
0
                      (yyval.nd) = push((yyvsp[-3].nd), nsym((yyvsp[0].id)));
7642
0
                    }
7643
0
#line 7644 "mrbgems/mruby-compiler/core/y.tab.c"
7644
0
    break;
7645
7646
0
  case 128: /* op: '|'  */
7647
0
#line 2227 "mrbgems/mruby-compiler/core/parse.y"
7648
0
                                { (yyval.id) = intern_op(or);     }
7649
0
#line 7650 "mrbgems/mruby-compiler/core/y.tab.c"
7650
0
    break;
7651
7652
0
  case 129: /* op: '^'  */
7653
0
#line 2228 "mrbgems/mruby-compiler/core/parse.y"
7654
0
                                { (yyval.id) = intern_op(xor);    }
7655
0
#line 7656 "mrbgems/mruby-compiler/core/y.tab.c"
7656
0
    break;
7657
7658
0
  case 130: /* op: '&'  */
7659
0
#line 2229 "mrbgems/mruby-compiler/core/parse.y"
7660
0
                                { (yyval.id) = intern_op(and);    }
7661
0
#line 7662 "mrbgems/mruby-compiler/core/y.tab.c"
7662
0
    break;
7663
7664
0
  case 131: /* op: "<=>"  */
7665
0
#line 2230 "mrbgems/mruby-compiler/core/parse.y"
7666
0
                                { (yyval.id) = intern_op(cmp);    }
7667
0
#line 7668 "mrbgems/mruby-compiler/core/y.tab.c"
7668
0
    break;
7669
7670
0
  case 132: /* op: "=="  */
7671
0
#line 2231 "mrbgems/mruby-compiler/core/parse.y"
7672
0
                                { (yyval.id) = intern_op(eq);     }
7673
0
#line 7674 "mrbgems/mruby-compiler/core/y.tab.c"
7674
0
    break;
7675
7676
0
  case 133: /* op: "==="  */
7677
0
#line 2232 "mrbgems/mruby-compiler/core/parse.y"
7678
0
                                { (yyval.id) = intern_op(eqq);    }
7679
0
#line 7680 "mrbgems/mruby-compiler/core/y.tab.c"
7680
0
    break;
7681
7682
0
  case 134: /* op: "=~"  */
7683
0
#line 2233 "mrbgems/mruby-compiler/core/parse.y"
7684
0
                                { (yyval.id) = intern_op(match);  }
7685
0
#line 7686 "mrbgems/mruby-compiler/core/y.tab.c"
7686
0
    break;
7687
7688
0
  case 135: /* op: "!~"  */
7689
0
#line 2234 "mrbgems/mruby-compiler/core/parse.y"
7690
0
                                { (yyval.id) = intern_op(nmatch); }
7691
0
#line 7692 "mrbgems/mruby-compiler/core/y.tab.c"
7692
0
    break;
7693
7694
0
  case 136: /* op: '>'  */
7695
0
#line 2235 "mrbgems/mruby-compiler/core/parse.y"
7696
0
                                { (yyval.id) = intern_op(gt);     }
7697
0
#line 7698 "mrbgems/mruby-compiler/core/y.tab.c"
7698
0
    break;
7699
7700
0
  case 137: /* op: ">="  */
7701
0
#line 2236 "mrbgems/mruby-compiler/core/parse.y"
7702
0
                                { (yyval.id) = intern_op(ge);     }
7703
0
#line 7704 "mrbgems/mruby-compiler/core/y.tab.c"
7704
0
    break;
7705
7706
0
  case 138: /* op: '<'  */
7707
0
#line 2237 "mrbgems/mruby-compiler/core/parse.y"
7708
0
                                { (yyval.id) = intern_op(lt);     }
7709
0
#line 7710 "mrbgems/mruby-compiler/core/y.tab.c"
7710
0
    break;
7711
7712
0
  case 139: /* op: "<="  */
7713
0
#line 2238 "mrbgems/mruby-compiler/core/parse.y"
7714
0
                                { (yyval.id) = intern_op(le);     }
7715
0
#line 7716 "mrbgems/mruby-compiler/core/y.tab.c"
7716
0
    break;
7717
7718
0
  case 140: /* op: "!="  */
7719
0
#line 2239 "mrbgems/mruby-compiler/core/parse.y"
7720
0
                                { (yyval.id) = intern_op(neq);    }
7721
0
#line 7722 "mrbgems/mruby-compiler/core/y.tab.c"
7722
0
    break;
7723
7724
0
  case 141: /* op: "<<"  */
7725
0
#line 2240 "mrbgems/mruby-compiler/core/parse.y"
7726
0
                                { (yyval.id) = intern_op(lshift); }
7727
0
#line 7728 "mrbgems/mruby-compiler/core/y.tab.c"
7728
0
    break;
7729
7730
0
  case 142: /* op: ">>"  */
7731
0
#line 2241 "mrbgems/mruby-compiler/core/parse.y"
7732
0
                                { (yyval.id) = intern_op(rshift); }
7733
0
#line 7734 "mrbgems/mruby-compiler/core/y.tab.c"
7734
0
    break;
7735
7736
0
  case 143: /* op: '+'  */
7737
0
#line 2242 "mrbgems/mruby-compiler/core/parse.y"
7738
0
                                { (yyval.id) = intern_op(add);    }
7739
0
#line 7740 "mrbgems/mruby-compiler/core/y.tab.c"
7740
0
    break;
7741
7742
0
  case 144: /* op: '-'  */
7743
0
#line 2243 "mrbgems/mruby-compiler/core/parse.y"
7744
0
                                { (yyval.id) = intern_op(sub);    }
7745
0
#line 7746 "mrbgems/mruby-compiler/core/y.tab.c"
7746
0
    break;
7747
7748
0
  case 145: /* op: '*'  */
7749
0
#line 2244 "mrbgems/mruby-compiler/core/parse.y"
7750
0
                                { (yyval.id) = intern_op(mul);    }
7751
0
#line 7752 "mrbgems/mruby-compiler/core/y.tab.c"
7752
0
    break;
7753
7754
0
  case 146: /* op: "*"  */
7755
0
#line 2245 "mrbgems/mruby-compiler/core/parse.y"
7756
0
                                { (yyval.id) = intern_op(mul);    }
7757
0
#line 7758 "mrbgems/mruby-compiler/core/y.tab.c"
7758
0
    break;
7759
7760
0
  case 147: /* op: '/'  */
7761
0
#line 2246 "mrbgems/mruby-compiler/core/parse.y"
7762
0
                                { (yyval.id) = intern_op(div);    }
7763
0
#line 7764 "mrbgems/mruby-compiler/core/y.tab.c"
7764
0
    break;
7765
7766
0
  case 148: /* op: '%'  */
7767
0
#line 2247 "mrbgems/mruby-compiler/core/parse.y"
7768
0
                                { (yyval.id) = intern_op(mod);    }
7769
0
#line 7770 "mrbgems/mruby-compiler/core/y.tab.c"
7770
0
    break;
7771
7772
0
  case 149: /* op: tPOW  */
7773
0
#line 2248 "mrbgems/mruby-compiler/core/parse.y"
7774
0
                                { (yyval.id) = intern_op(pow);    }
7775
0
#line 7776 "mrbgems/mruby-compiler/core/y.tab.c"
7776
0
    break;
7777
7778
0
  case 150: /* op: "**"  */
7779
0
#line 2249 "mrbgems/mruby-compiler/core/parse.y"
7780
0
                                { (yyval.id) = intern_op(pow);    }
7781
0
#line 7782 "mrbgems/mruby-compiler/core/y.tab.c"
7782
0
    break;
7783
7784
0
  case 151: /* op: '!'  */
7785
0
#line 2250 "mrbgems/mruby-compiler/core/parse.y"
7786
0
                                { (yyval.id) = intern_op(not);    }
7787
0
#line 7788 "mrbgems/mruby-compiler/core/y.tab.c"
7788
0
    break;
7789
7790
0
  case 152: /* op: '~'  */
7791
0
#line 2251 "mrbgems/mruby-compiler/core/parse.y"
7792
0
                                { (yyval.id) = intern_op(neg);    }
7793
0
#line 7794 "mrbgems/mruby-compiler/core/y.tab.c"
7794
0
    break;
7795
7796
0
  case 153: /* op: "unary plus"  */
7797
0
#line 2252 "mrbgems/mruby-compiler/core/parse.y"
7798
0
                                { (yyval.id) = intern_op(plus);   }
7799
0
#line 7800 "mrbgems/mruby-compiler/core/y.tab.c"
7800
0
    break;
7801
7802
0
  case 154: /* op: "unary minus"  */
7803
0
#line 2253 "mrbgems/mruby-compiler/core/parse.y"
7804
0
                                { (yyval.id) = intern_op(minus);  }
7805
0
#line 7806 "mrbgems/mruby-compiler/core/y.tab.c"
7806
0
    break;
7807
7808
0
  case 155: /* op: tAREF  */
7809
0
#line 2254 "mrbgems/mruby-compiler/core/parse.y"
7810
0
                                { (yyval.id) = intern_op(aref);   }
7811
0
#line 7812 "mrbgems/mruby-compiler/core/y.tab.c"
7812
0
    break;
7813
7814
0
  case 156: /* op: tASET  */
7815
0
#line 2255 "mrbgems/mruby-compiler/core/parse.y"
7816
0
                                { (yyval.id) = intern_op(aset);   }
7817
0
#line 7818 "mrbgems/mruby-compiler/core/y.tab.c"
7818
0
    break;
7819
7820
0
  case 157: /* op: '`'  */
7821
0
#line 2256 "mrbgems/mruby-compiler/core/parse.y"
7822
0
                                { (yyval.id) = intern_op(tick);   }
7823
0
#line 7824 "mrbgems/mruby-compiler/core/y.tab.c"
7824
0
    break;
7825
7826
34.6k
  case 198: /* arg: lhs '=' arg_rhs  */
7827
34.6k
#line 2274 "mrbgems/mruby-compiler/core/parse.y"
7828
34.6k
                    {
7829
34.6k
                      (yyval.nd) = new_asgn(p, (yyvsp[-2].nd), (yyvsp[0].nd));
7830
34.6k
                    }
7831
34.6k
#line 7832 "mrbgems/mruby-compiler/core/y.tab.c"
7832
34.6k
    break;
7833
7834
6.41k
  case 199: /* arg: var_lhs tOP_ASGN arg_rhs  */
7835
6.41k
#line 2278 "mrbgems/mruby-compiler/core/parse.y"
7836
6.41k
                    {
7837
6.41k
                      (yyval.nd) = new_op_asgn(p, (yyvsp[-2].nd), (yyvsp[-1].id), (yyvsp[0].nd));
7838
6.41k
                    }
7839
6.41k
#line 7840 "mrbgems/mruby-compiler/core/y.tab.c"
7840
6.41k
    break;
7841
7842
0
  case 200: /* arg: primary_value '[' opt_call_args ']' tOP_ASGN arg_rhs  */
7843
0
#line 2282 "mrbgems/mruby-compiler/core/parse.y"
7844
0
                    {
7845
0
                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd));
7846
0
                    }
7847
0
#line 7848 "mrbgems/mruby-compiler/core/y.tab.c"
7848
0
    break;
7849
7850
0
  case 201: /* arg: primary_value call_op "local variable or method" tOP_ASGN arg_rhs  */
7851
0
#line 2286 "mrbgems/mruby-compiler/core/parse.y"
7852
0
                    {
7853
0
                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd));
7854
0
                    }
7855
0
#line 7856 "mrbgems/mruby-compiler/core/y.tab.c"
7856
0
    break;
7857
7858
0
  case 202: /* arg: primary_value call_op "constant" tOP_ASGN arg_rhs  */
7859
0
#line 2290 "mrbgems/mruby-compiler/core/parse.y"
7860
0
                    {
7861
0
                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, (yyvsp[-3].num)), (yyvsp[-1].id), (yyvsp[0].nd));
7862
0
                    }
7863
0
#line 7864 "mrbgems/mruby-compiler/core/y.tab.c"
7864
0
    break;
7865
7866
0
  case 203: /* arg: primary_value "::" "local variable or method" tOP_ASGN arg_rhs  */
7867
0
#line 2294 "mrbgems/mruby-compiler/core/parse.y"
7868
0
                    {
7869
0
                      (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), 0, tCOLON2), (yyvsp[-1].id), (yyvsp[0].nd));
7870
0
                    }
7871
0
#line 7872 "mrbgems/mruby-compiler/core/y.tab.c"
7872
0
    break;
7873
7874
0
  case 204: /* arg: primary_value "::" "constant" tOP_ASGN arg_rhs  */
7875
0
#line 2298 "mrbgems/mruby-compiler/core/parse.y"
7876
0
                    {
7877
0
                      yyerror(&(yylsp[-4]), p, "constant re-assignment");
7878
0
                      (yyval.nd) = new_begin(p, 0);
7879
0
                    }
7880
0
#line 7881 "mrbgems/mruby-compiler/core/y.tab.c"
7881
0
    break;
7882
7883
0
  case 205: /* arg: tCOLON3 "constant" tOP_ASGN arg_rhs  */
7884
0
#line 2303 "mrbgems/mruby-compiler/core/parse.y"
7885
0
                    {
7886
0
                      yyerror(&(yylsp[-3]), p, "constant re-assignment");
7887
0
                      (yyval.nd) = new_begin(p, 0);
7888
0
                    }
7889
0
#line 7890 "mrbgems/mruby-compiler/core/y.tab.c"
7890
0
    break;
7891
7892
0
  case 206: /* arg: backref tOP_ASGN arg_rhs  */
7893
0
#line 2308 "mrbgems/mruby-compiler/core/parse.y"
7894
0
                    {
7895
0
                      backref_error(p, (yyvsp[-2].nd));
7896
0
                      (yyval.nd) = new_begin(p, 0);
7897
0
                    }
7898
0
#line 7899 "mrbgems/mruby-compiler/core/y.tab.c"
7899
0
    break;
7900
7901
0
  case 207: /* arg: arg ".." arg  */
7902
0
#line 2313 "mrbgems/mruby-compiler/core/parse.y"
7903
0
                    {
7904
0
                      (yyval.nd) = new_dot2(p, (yyvsp[-2].nd), (yyvsp[0].nd));
7905
0
                    }
7906
0
#line 7907 "mrbgems/mruby-compiler/core/y.tab.c"
7907
0
    break;
7908
7909
0
  case 208: /* arg: arg ".."  */
7910
0
#line 2317 "mrbgems/mruby-compiler/core/parse.y"
7911
0
                    {
7912
0
                      (yyval.nd) = new_dot2(p, (yyvsp[-1].nd), new_nil(p));
7913
0
                    }
7914
0
#line 7915 "mrbgems/mruby-compiler/core/y.tab.c"
7915
0
    break;
7916
7917
0
  case 209: /* arg: tBDOT2 arg  */
7918
0
#line 2321 "mrbgems/mruby-compiler/core/parse.y"
7919
0
                    {
7920
0
                      (yyval.nd) = new_dot2(p, new_nil(p), (yyvsp[0].nd));
7921
0
                    }
7922
0
#line 7923 "mrbgems/mruby-compiler/core/y.tab.c"
7923
0
    break;
7924
7925
0
  case 210: /* arg: arg "..." arg  */
7926
0
#line 2325 "mrbgems/mruby-compiler/core/parse.y"
7927
0
                    {
7928
0
                      (yyval.nd) = new_dot3(p, (yyvsp[-2].nd), (yyvsp[0].nd));
7929
0
                    }
7930
0
#line 7931 "mrbgems/mruby-compiler/core/y.tab.c"
7931
0
    break;
7932
7933
0
  case 211: /* arg: arg "..."  */
7934
0
#line 2329 "mrbgems/mruby-compiler/core/parse.y"
7935
0
                    {
7936
0
                      (yyval.nd) = new_dot3(p, (yyvsp[-1].nd), new_nil(p));
7937
0
                    }
7938
0
#line 7939 "mrbgems/mruby-compiler/core/y.tab.c"
7939
0
    break;
7940
7941
0
  case 212: /* arg: tBDOT3 arg  */
7942
0
#line 2333 "mrbgems/mruby-compiler/core/parse.y"
7943
0
                    {
7944
0
                      (yyval.nd) = new_dot3(p, new_nil(p), (yyvsp[0].nd));
7945
0
                    }
7946
0
#line 7947 "mrbgems/mruby-compiler/core/y.tab.c"
7947
0
    break;
7948
7949
3.49k
  case 213: /* arg: arg '+' arg  */
7950
3.49k
#line 2337 "mrbgems/mruby-compiler/core/parse.y"
7951
3.49k
                    {
7952
3.49k
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "+", (yyvsp[0].nd));
7953
3.49k
                    }
7954
3.49k
#line 7955 "mrbgems/mruby-compiler/core/y.tab.c"
7955
3.49k
    break;
7956
7957
4.32k
  case 214: /* arg: arg '-' arg  */
7958
4.32k
#line 2341 "mrbgems/mruby-compiler/core/parse.y"
7959
4.32k
                    {
7960
4.32k
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "-", (yyvsp[0].nd));
7961
4.32k
                    }
7962
4.32k
#line 7963 "mrbgems/mruby-compiler/core/y.tab.c"
7963
4.32k
    break;
7964
7965
4.66k
  case 215: /* arg: arg '*' arg  */
7966
4.66k
#line 2345 "mrbgems/mruby-compiler/core/parse.y"
7967
4.66k
                    {
7968
4.66k
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "*", (yyvsp[0].nd));
7969
4.66k
                    }
7970
4.66k
#line 7971 "mrbgems/mruby-compiler/core/y.tab.c"
7971
4.66k
    break;
7972
7973
2.92k
  case 216: /* arg: arg '/' arg  */
7974
2.92k
#line 2349 "mrbgems/mruby-compiler/core/parse.y"
7975
2.92k
                    {
7976
2.92k
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "/", (yyvsp[0].nd));
7977
2.92k
                    }
7978
2.92k
#line 7979 "mrbgems/mruby-compiler/core/y.tab.c"
7979
2.92k
    break;
7980
7981
1.15k
  case 217: /* arg: arg '%' arg  */
7982
1.15k
#line 2353 "mrbgems/mruby-compiler/core/parse.y"
7983
1.15k
                    {
7984
1.15k
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "%", (yyvsp[0].nd));
7985
1.15k
                    }
7986
1.15k
#line 7987 "mrbgems/mruby-compiler/core/y.tab.c"
7987
1.15k
    break;
7988
7989
0
  case 218: /* arg: arg tPOW arg  */
7990
0
#line 2357 "mrbgems/mruby-compiler/core/parse.y"
7991
0
                    {
7992
0
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd));
7993
0
                    }
7994
0
#line 7995 "mrbgems/mruby-compiler/core/y.tab.c"
7995
0
    break;
7996
7997
0
  case 219: /* arg: tUMINUS_NUM "integer literal" tPOW arg  */
7998
0
#line 2361 "mrbgems/mruby-compiler/core/parse.y"
7999
0
                    {
8000
0
                      (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)));
8001
0
                    }
8002
0
#line 8003 "mrbgems/mruby-compiler/core/y.tab.c"
8003
0
    break;
8004
8005
0
  case 220: /* arg: tUMINUS_NUM "float literal" tPOW arg  */
8006
0
#line 2365 "mrbgems/mruby-compiler/core/parse.y"
8007
0
                    {
8008
0
                      (yyval.nd) = new_negate(p, call_bin_op(p, (yyvsp[-2].nd), "**", (yyvsp[0].nd)));
8009
0
                    }
8010
0
#line 8011 "mrbgems/mruby-compiler/core/y.tab.c"
8011
0
    break;
8012
8013
0
  case 221: /* arg: "unary plus" arg  */
8014
0
#line 2369 "mrbgems/mruby-compiler/core/parse.y"
8015
0
                    {
8016
0
                      (yyval.nd) = call_uni_op(p, (yyvsp[0].nd), "+@");
8017
0
                    }
8018
0
#line 8019 "mrbgems/mruby-compiler/core/y.tab.c"
8019
0
    break;
8020
8021
0
  case 222: /* arg: "unary minus" arg  */
8022
0
#line 2373 "mrbgems/mruby-compiler/core/parse.y"
8023
0
                    {
8024
0
                      (yyval.nd) = new_negate(p, (yyvsp[0].nd));
8025
0
                    }
8026
0
#line 8027 "mrbgems/mruby-compiler/core/y.tab.c"
8027
0
    break;
8028
8029
0
  case 223: /* arg: arg '|' arg  */
8030
0
#line 2377 "mrbgems/mruby-compiler/core/parse.y"
8031
0
                    {
8032
0
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "|", (yyvsp[0].nd));
8033
0
                    }
8034
0
#line 8035 "mrbgems/mruby-compiler/core/y.tab.c"
8035
0
    break;
8036
8037
1.47k
  case 224: /* arg: arg '^' arg  */
8038
1.47k
#line 2381 "mrbgems/mruby-compiler/core/parse.y"
8039
1.47k
                    {
8040
1.47k
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "^", (yyvsp[0].nd));
8041
1.47k
                    }
8042
1.47k
#line 8043 "mrbgems/mruby-compiler/core/y.tab.c"
8043
1.47k
    break;
8044
8045
0
  case 225: /* arg: arg '&' arg  */
8046
0
#line 2385 "mrbgems/mruby-compiler/core/parse.y"
8047
0
                    {
8048
0
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "&", (yyvsp[0].nd));
8049
0
                    }
8050
0
#line 8051 "mrbgems/mruby-compiler/core/y.tab.c"
8051
0
    break;
8052
8053
0
  case 226: /* arg: arg "<=>" arg  */
8054
0
#line 2389 "mrbgems/mruby-compiler/core/parse.y"
8055
0
                    {
8056
0
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=>", (yyvsp[0].nd));
8057
0
                    }
8058
0
#line 8059 "mrbgems/mruby-compiler/core/y.tab.c"
8059
0
    break;
8060
8061
545
  case 227: /* arg: arg '>' arg  */
8062
545
#line 2393 "mrbgems/mruby-compiler/core/parse.y"
8063
545
                    {
8064
545
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">", (yyvsp[0].nd));
8065
545
                    }
8066
545
#line 8067 "mrbgems/mruby-compiler/core/y.tab.c"
8067
545
    break;
8068
8069
84
  case 228: /* arg: arg ">=" arg  */
8070
84
#line 2397 "mrbgems/mruby-compiler/core/parse.y"
8071
84
                    {
8072
84
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">=", (yyvsp[0].nd));
8073
84
                    }
8074
84
#line 8075 "mrbgems/mruby-compiler/core/y.tab.c"
8075
84
    break;
8076
8077
201
  case 229: /* arg: arg '<' arg  */
8078
201
#line 2401 "mrbgems/mruby-compiler/core/parse.y"
8079
201
                    {
8080
201
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<", (yyvsp[0].nd));
8081
201
                    }
8082
201
#line 8083 "mrbgems/mruby-compiler/core/y.tab.c"
8083
201
    break;
8084
8085
84
  case 230: /* arg: arg "<=" arg  */
8086
84
#line 2405 "mrbgems/mruby-compiler/core/parse.y"
8087
84
                    {
8088
84
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<=", (yyvsp[0].nd));
8089
84
                    }
8090
84
#line 8091 "mrbgems/mruby-compiler/core/y.tab.c"
8091
84
    break;
8092
8093
111
  case 231: /* arg: arg "==" arg  */
8094
111
#line 2409 "mrbgems/mruby-compiler/core/parse.y"
8095
111
                    {
8096
111
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "==", (yyvsp[0].nd));
8097
111
                    }
8098
111
#line 8099 "mrbgems/mruby-compiler/core/y.tab.c"
8099
111
    break;
8100
8101
0
  case 232: /* arg: arg "===" arg  */
8102
0
#line 2413 "mrbgems/mruby-compiler/core/parse.y"
8103
0
                    {
8104
0
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "===", (yyvsp[0].nd));
8105
0
                    }
8106
0
#line 8107 "mrbgems/mruby-compiler/core/y.tab.c"
8107
0
    break;
8108
8109
2.04k
  case 233: /* arg: arg "!=" arg  */
8110
2.04k
#line 2417 "mrbgems/mruby-compiler/core/parse.y"
8111
2.04k
                    {
8112
2.04k
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!=", (yyvsp[0].nd));
8113
2.04k
                    }
8114
2.04k
#line 8115 "mrbgems/mruby-compiler/core/y.tab.c"
8115
2.04k
    break;
8116
8117
0
  case 234: /* arg: arg "=~" arg  */
8118
0
#line 2421 "mrbgems/mruby-compiler/core/parse.y"
8119
0
                    {
8120
0
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "=~", (yyvsp[0].nd));
8121
0
                    }
8122
0
#line 8123 "mrbgems/mruby-compiler/core/y.tab.c"
8123
0
    break;
8124
8125
0
  case 235: /* arg: arg "!~" arg  */
8126
0
#line 2425 "mrbgems/mruby-compiler/core/parse.y"
8127
0
                    {
8128
0
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "!~", (yyvsp[0].nd));
8129
0
                    }
8130
0
#line 8131 "mrbgems/mruby-compiler/core/y.tab.c"
8131
0
    break;
8132
8133
0
  case 236: /* arg: '!' arg  */
8134
0
#line 2429 "mrbgems/mruby-compiler/core/parse.y"
8135
0
                    {
8136
0
                      (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "!");
8137
0
                    }
8138
0
#line 8139 "mrbgems/mruby-compiler/core/y.tab.c"
8139
0
    break;
8140
8141
0
  case 237: /* arg: '~' arg  */
8142
0
#line 2433 "mrbgems/mruby-compiler/core/parse.y"
8143
0
                    {
8144
0
                      (yyval.nd) = call_uni_op(p, cond((yyvsp[0].nd)), "~");
8145
0
                    }
8146
0
#line 8147 "mrbgems/mruby-compiler/core/y.tab.c"
8147
0
    break;
8148
8149
0
  case 238: /* arg: arg "<<" arg  */
8150
0
#line 2437 "mrbgems/mruby-compiler/core/parse.y"
8151
0
                    {
8152
0
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), "<<", (yyvsp[0].nd));
8153
0
                    }
8154
0
#line 8155 "mrbgems/mruby-compiler/core/y.tab.c"
8155
0
    break;
8156
8157
3.75k
  case 239: /* arg: arg ">>" arg  */
8158
3.75k
#line 2441 "mrbgems/mruby-compiler/core/parse.y"
8159
3.75k
                    {
8160
3.75k
                      (yyval.nd) = call_bin_op(p, (yyvsp[-2].nd), ">>", (yyvsp[0].nd));
8161
3.75k
                    }
8162
3.75k
#line 8163 "mrbgems/mruby-compiler/core/y.tab.c"
8163
3.75k
    break;
8164
8165
0
  case 240: /* arg: arg "&&" arg  */
8166
0
#line 2445 "mrbgems/mruby-compiler/core/parse.y"
8167
0
                    {
8168
0
                      (yyval.nd) = new_and(p, (yyvsp[-2].nd), (yyvsp[0].nd));
8169
0
                    }
8170
0
#line 8171 "mrbgems/mruby-compiler/core/y.tab.c"
8171
0
    break;
8172
8173
0
  case 241: /* arg: arg "||" arg  */
8174
0
#line 2449 "mrbgems/mruby-compiler/core/parse.y"
8175
0
                    {
8176
0
                      (yyval.nd) = new_or(p, (yyvsp[-2].nd), (yyvsp[0].nd));
8177
0
                    }
8178
0
#line 8179 "mrbgems/mruby-compiler/core/y.tab.c"
8179
0
    break;
8180
8181
2.28k
  case 242: /* arg: arg '?' arg opt_nl ':' arg  */
8182
2.28k
#line 2453 "mrbgems/mruby-compiler/core/parse.y"
8183
2.28k
                    {
8184
2.28k
                      (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd));
8185
2.28k
                    }
8186
2.28k
#line 8187 "mrbgems/mruby-compiler/core/y.tab.c"
8187
2.28k
    break;
8188
8189
0
  case 243: /* arg: arg '?' arg opt_nl "label" arg  */
8190
0
#line 2457 "mrbgems/mruby-compiler/core/parse.y"
8191
0
                    {
8192
0
                      (yyval.nd) = new_if(p, cond((yyvsp[-5].nd)), (yyvsp[-3].nd), (yyvsp[0].nd));
8193
0
                    }
8194
0
#line 8195 "mrbgems/mruby-compiler/core/y.tab.c"
8195
0
    break;
8196
8197
0
  case 244: /* arg: defn_head f_opt_arglist_paren '=' arg  */
8198
0
#line 2461 "mrbgems/mruby-compiler/core/parse.y"
8199
0
                    {
8200
0
                      (yyval.nd) = (yyvsp[-3].nd);
8201
0
                      endless_method_name(p, (yyvsp[-3].nd));
8202
0
                      void_expr_error(p, (yyvsp[0].nd));
8203
0
                      defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd));
8204
0
                      nvars_unnest(p);
8205
0
                      p->in_def--;
8206
0
                    }
8207
0
#line 8208 "mrbgems/mruby-compiler/core/y.tab.c"
8208
0
    break;
8209
8210
0
  case 245: /* arg: defn_head f_opt_arglist_paren '=' arg "'rescue' modifier" arg  */
8211
0
#line 2470 "mrbgems/mruby-compiler/core/parse.y"
8212
0
                    {
8213
0
                      (yyval.nd) = (yyvsp[-5].nd);
8214
0
                      endless_method_name(p, (yyvsp[-5].nd));
8215
0
                      void_expr_error(p, (yyvsp[-2].nd));
8216
0
                      defn_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)));
8217
0
                      nvars_unnest(p);
8218
0
                      p->in_def--;
8219
0
                    }
8220
0
#line 8221 "mrbgems/mruby-compiler/core/y.tab.c"
8221
0
    break;
8222
8223
0
  case 246: /* arg: defs_head f_opt_arglist_paren '=' arg  */
8224
0
#line 2479 "mrbgems/mruby-compiler/core/parse.y"
8225
0
                    {
8226
0
                      (yyval.nd) = (yyvsp[-3].nd);
8227
0
                      void_expr_error(p, (yyvsp[0].nd));
8228
0
                      defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[0].nd));
8229
0
                      nvars_unnest(p);
8230
0
                      p->in_def--;
8231
0
                      p->in_single--;
8232
0
                    }
8233
0
#line 8234 "mrbgems/mruby-compiler/core/y.tab.c"
8234
0
    break;
8235
8236
0
  case 247: /* arg: defs_head f_opt_arglist_paren '=' arg "'rescue' modifier" arg  */
8237
0
#line 2488 "mrbgems/mruby-compiler/core/parse.y"
8238
0
                    {
8239
0
                      (yyval.nd) = (yyvsp[-5].nd);
8240
0
                      void_expr_error(p, (yyvsp[-2].nd));
8241
0
                      defs_setup(p, (yyval.nd), (yyvsp[-4].nd), new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd)));
8242
0
                      nvars_unnest(p);
8243
0
                      p->in_def--;
8244
0
                      p->in_single--;
8245
0
                    }
8246
0
#line 8247 "mrbgems/mruby-compiler/core/y.tab.c"
8247
0
    break;
8248
8249
638k
  case 248: /* arg: primary  */
8250
638k
#line 2497 "mrbgems/mruby-compiler/core/parse.y"
8251
638k
                    {
8252
638k
                      (yyval.nd) = (yyvsp[0].nd);
8253
638k
                    }
8254
638k
#line 8255 "mrbgems/mruby-compiler/core/y.tab.c"
8255
638k
    break;
8256
8257
7.92k
  case 250: /* aref_args: args trailer  */
8258
7.92k
#line 2504 "mrbgems/mruby-compiler/core/parse.y"
8259
7.92k
                    {
8260
7.92k
                      (yyval.nd) = (yyvsp[-1].nd);
8261
7.92k
                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
8262
7.92k
                    }
8263
7.92k
#line 8264 "mrbgems/mruby-compiler/core/y.tab.c"
8264
7.92k
    break;
8265
8266
0
  case 251: /* aref_args: args comma assocs trailer  */
8267
0
#line 2509 "mrbgems/mruby-compiler/core/parse.y"
8268
0
                    {
8269
0
                      (yyval.nd) = push((yyvsp[-3].nd), new_hash(p, (yyvsp[-1].nd)));
8270
0
                    }
8271
0
#line 8272 "mrbgems/mruby-compiler/core/y.tab.c"
8272
0
    break;
8273
8274
0
  case 252: /* aref_args: assocs trailer  */
8275
0
#line 2513 "mrbgems/mruby-compiler/core/parse.y"
8276
0
                    {
8277
0
                      (yyval.nd) = cons(new_kw_hash(p, (yyvsp[-1].nd)), 0);
8278
0
                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
8279
0
                    }
8280
0
#line 8281 "mrbgems/mruby-compiler/core/y.tab.c"
8281
0
    break;
8282
8283
41.0k
  case 253: /* arg_rhs: arg  */
8284
41.0k
#line 2520 "mrbgems/mruby-compiler/core/parse.y"
8285
41.0k
                    {
8286
41.0k
                      (yyval.nd) = (yyvsp[0].nd);
8287
41.0k
                    }
8288
41.0k
#line 8289 "mrbgems/mruby-compiler/core/y.tab.c"
8289
41.0k
    break;
8290
8291
0
  case 254: /* arg_rhs: arg "'rescue' modifier" arg  */
8292
0
#line 2524 "mrbgems/mruby-compiler/core/parse.y"
8293
0
                    {
8294
0
                      void_expr_error(p, (yyvsp[-2].nd));
8295
0
                      (yyval.nd) = new_mod_rescue(p, (yyvsp[-2].nd), (yyvsp[0].nd));
8296
0
                    }
8297
0
#line 8298 "mrbgems/mruby-compiler/core/y.tab.c"
8298
0
    break;
8299
8300
11.2k
  case 255: /* paren_args: '(' opt_call_args ')'  */
8301
11.2k
#line 2531 "mrbgems/mruby-compiler/core/parse.y"
8302
11.2k
                    {
8303
11.2k
                      (yyval.nd) = (yyvsp[-1].nd);
8304
11.2k
                    }
8305
11.2k
#line 8306 "mrbgems/mruby-compiler/core/y.tab.c"
8306
11.2k
    break;
8307
8308
0
  case 256: /* paren_args: '(' args comma tBDOT3 rparen  */
8309
0
#line 2535 "mrbgems/mruby-compiler/core/parse.y"
8310
0
                    {
8311
0
                      mrb_sym r = intern_op(mul);
8312
0
                      mrb_sym k = intern_op(pow);
8313
0
                      mrb_sym b = intern_op(and);
8314
0
                      (yyval.nd) = new_callargs(p, push((yyvsp[-3].nd), new_splat(p, new_lvar(p, r))),
8315
0
                                        new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k)))),
8316
0
                                        new_block_arg(p, new_lvar(p, b)));
8317
0
                    }
8318
0
#line 8319 "mrbgems/mruby-compiler/core/y.tab.c"
8319
0
    break;
8320
8321
0
  case 257: /* paren_args: '(' tBDOT3 rparen  */
8322
0
#line 2544 "mrbgems/mruby-compiler/core/parse.y"
8323
0
                    {
8324
0
                      mrb_sym r = intern_op(mul);
8325
0
                      mrb_sym k = intern_op(pow);
8326
0
                      mrb_sym b = intern_op(and);
8327
0
                      if (local_var_p(p, r) && local_var_p(p, k) && local_var_p(p, b)) {
8328
0
                        (yyval.nd) = new_callargs(p, list1(new_splat(p, new_lvar(p, r))),
8329
0
                                          new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k)))),
8330
0
                                          new_block_arg(p, new_lvar(p, b)));
8331
0
                      }
8332
0
                      else {
8333
0
                        yyerror(&(yylsp[-2]), p, "unexpected argument forwarding ...");
8334
0
                        (yyval.nd) = 0;
8335
0
                      }
8336
0
                    }
8337
0
#line 8338 "mrbgems/mruby-compiler/core/y.tab.c"
8338
0
    break;
8339
8340
0
  case 262: /* opt_call_args: args comma  */
8341
0
#line 2567 "mrbgems/mruby-compiler/core/parse.y"
8342
0
                    {
8343
0
                      (yyval.nd) = new_callargs(p,(yyvsp[-1].nd),0,0);
8344
0
                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
8345
0
                    }
8346
0
#line 8347 "mrbgems/mruby-compiler/core/y.tab.c"
8347
0
    break;
8348
8349
0
  case 263: /* opt_call_args: args comma assocs comma  */
8350
0
#line 2572 "mrbgems/mruby-compiler/core/parse.y"
8351
0
                    {
8352
0
                      (yyval.nd) = new_callargs(p,(yyvsp[-3].nd),new_kw_hash(p,(yyvsp[-1].nd)),0);
8353
0
                      NODE_LINENO((yyval.nd), (yyvsp[-3].nd));
8354
0
                    }
8355
0
#line 8356 "mrbgems/mruby-compiler/core/y.tab.c"
8356
0
    break;
8357
8358
0
  case 264: /* opt_call_args: assocs comma  */
8359
0
#line 2577 "mrbgems/mruby-compiler/core/parse.y"
8360
0
                    {
8361
0
                      (yyval.nd) = new_callargs(p,0,new_kw_hash(p,(yyvsp[-1].nd)),0);
8362
0
                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
8363
0
                    }
8364
0
#line 8365 "mrbgems/mruby-compiler/core/y.tab.c"
8365
0
    break;
8366
8367
0
  case 265: /* call_args: command  */
8368
0
#line 2584 "mrbgems/mruby-compiler/core/parse.y"
8369
0
                    {
8370
0
                      void_expr_error(p, (yyvsp[0].nd));
8371
0
                      (yyval.nd) = new_callargs(p, list1((yyvsp[0].nd)), 0, 0);
8372
0
                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
8373
0
                    }
8374
0
#line 8375 "mrbgems/mruby-compiler/core/y.tab.c"
8375
0
    break;
8376
8377
10.3k
  case 266: /* call_args: args opt_block_arg  */
8378
10.3k
#line 2590 "mrbgems/mruby-compiler/core/parse.y"
8379
10.3k
                    {
8380
10.3k
                      (yyval.nd) = new_callargs(p, (yyvsp[-1].nd), 0, (yyvsp[0].nd));
8381
10.3k
                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
8382
10.3k
                    }
8383
10.3k
#line 8384 "mrbgems/mruby-compiler/core/y.tab.c"
8384
10.3k
    break;
8385
8386
0
  case 267: /* call_args: assocs opt_block_arg  */
8387
0
#line 2595 "mrbgems/mruby-compiler/core/parse.y"
8388
0
                    {
8389
0
                      (yyval.nd) = new_callargs(p, 0, new_kw_hash(p, (yyvsp[-1].nd)), (yyvsp[0].nd));
8390
0
                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
8391
0
                    }
8392
0
#line 8393 "mrbgems/mruby-compiler/core/y.tab.c"
8393
0
    break;
8394
8395
0
  case 268: /* call_args: args comma assocs opt_block_arg  */
8396
0
#line 2600 "mrbgems/mruby-compiler/core/parse.y"
8397
0
                    {
8398
0
                      (yyval.nd) = new_callargs(p, (yyvsp[-3].nd), new_kw_hash(p, (yyvsp[-1].nd)), (yyvsp[0].nd));
8399
0
                      NODE_LINENO((yyval.nd), (yyvsp[-3].nd));
8400
0
                    }
8401
0
#line 8402 "mrbgems/mruby-compiler/core/y.tab.c"
8402
0
    break;
8403
8404
0
  case 269: /* call_args: block_arg  */
8405
0
#line 2605 "mrbgems/mruby-compiler/core/parse.y"
8406
0
                    {
8407
0
                      (yyval.nd) = new_callargs(p, 0, 0, (yyvsp[0].nd));
8408
0
                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
8409
0
                    }
8410
0
#line 8411 "mrbgems/mruby-compiler/core/y.tab.c"
8411
0
    break;
8412
8413
0
  case 270: /* @7: %empty  */
8414
0
#line 2611 "mrbgems/mruby-compiler/core/parse.y"
8415
0
                   {
8416
0
                      (yyval.stack) = p->cmdarg_stack;
8417
0
                      CMDARG_PUSH(1);
8418
0
                    }
8419
0
#line 8420 "mrbgems/mruby-compiler/core/y.tab.c"
8420
0
    break;
8421
8422
0
  case 271: /* command_args: @7 call_args  */
8423
0
#line 2616 "mrbgems/mruby-compiler/core/parse.y"
8424
0
                    {
8425
0
                      p->cmdarg_stack = (yyvsp[-1].stack);
8426
0
                      (yyval.nd) = (yyvsp[0].nd);
8427
0
                    }
8428
0
#line 8429 "mrbgems/mruby-compiler/core/y.tab.c"
8429
0
    break;
8430
8431
0
  case 272: /* block_arg: "&" arg  */
8432
0
#line 2623 "mrbgems/mruby-compiler/core/parse.y"
8433
0
                    {
8434
0
                      (yyval.nd) = new_block_arg(p, (yyvsp[0].nd));
8435
0
                    }
8436
0
#line 8437 "mrbgems/mruby-compiler/core/y.tab.c"
8437
0
    break;
8438
8439
0
  case 273: /* block_arg: "&"  */
8440
0
#line 2627 "mrbgems/mruby-compiler/core/parse.y"
8441
0
                    {
8442
0
                      (yyval.nd) = new_block_arg(p, 0);
8443
0
                    }
8444
0
#line 8445 "mrbgems/mruby-compiler/core/y.tab.c"
8445
0
    break;
8446
8447
0
  case 274: /* opt_block_arg: comma block_arg  */
8448
0
#line 2633 "mrbgems/mruby-compiler/core/parse.y"
8449
0
                    {
8450
0
                      (yyval.nd) = (yyvsp[0].nd);
8451
0
                    }
8452
0
#line 8453 "mrbgems/mruby-compiler/core/y.tab.c"
8453
0
    break;
8454
8455
10.3k
  case 275: /* opt_block_arg: none  */
8456
10.3k
#line 2637 "mrbgems/mruby-compiler/core/parse.y"
8457
10.3k
                    {
8458
10.3k
                      (yyval.nd) = 0;
8459
10.3k
                    }
8460
10.3k
#line 8461 "mrbgems/mruby-compiler/core/y.tab.c"
8461
10.3k
    break;
8462
8463
18.2k
  case 277: /* args: arg  */
8464
18.2k
#line 2646 "mrbgems/mruby-compiler/core/parse.y"
8465
18.2k
                    {
8466
18.2k
                      void_expr_error(p, (yyvsp[0].nd));
8467
18.2k
                      (yyval.nd) = list1((yyvsp[0].nd));
8468
18.2k
                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
8469
18.2k
                    }
8470
18.2k
#line 8471 "mrbgems/mruby-compiler/core/y.tab.c"
8471
18.2k
    break;
8472
8473
0
  case 278: /* args: "*"  */
8474
0
#line 2652 "mrbgems/mruby-compiler/core/parse.y"
8475
0
                    {
8476
0
                      (yyval.nd) = list1(new_splat(p, new_lvar(p, intern_op(mul))));
8477
0
                    }
8478
0
#line 8479 "mrbgems/mruby-compiler/core/y.tab.c"
8479
0
    break;
8480
8481
0
  case 279: /* args: "*" arg  */
8482
0
#line 2656 "mrbgems/mruby-compiler/core/parse.y"
8483
0
                    {
8484
0
                      (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd)));
8485
0
                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
8486
0
                    }
8487
0
#line 8488 "mrbgems/mruby-compiler/core/y.tab.c"
8488
0
    break;
8489
8490
173k
  case 280: /* args: args comma arg  */
8491
173k
#line 2661 "mrbgems/mruby-compiler/core/parse.y"
8492
173k
                    {
8493
173k
                      void_expr_error(p, (yyvsp[0].nd));
8494
173k
                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
8495
173k
                    }
8496
173k
#line 8497 "mrbgems/mruby-compiler/core/y.tab.c"
8497
173k
    break;
8498
8499
0
  case 281: /* args: args comma "*"  */
8500
0
#line 2666 "mrbgems/mruby-compiler/core/parse.y"
8501
0
                    {
8502
0
                      (yyval.nd) = push((yyvsp[-2].nd), new_splat(p, new_lvar(p, intern_op(mul))));
8503
0
                    }
8504
0
#line 8505 "mrbgems/mruby-compiler/core/y.tab.c"
8505
0
    break;
8506
8507
0
  case 282: /* args: args comma "*" arg  */
8508
0
#line 2670 "mrbgems/mruby-compiler/core/parse.y"
8509
0
                    {
8510
0
                      (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd)));
8511
0
                    }
8512
0
#line 8513 "mrbgems/mruby-compiler/core/y.tab.c"
8513
0
    break;
8514
8515
0
  case 283: /* mrhs: args comma arg  */
8516
0
#line 2676 "mrbgems/mruby-compiler/core/parse.y"
8517
0
                    {
8518
0
                      void_expr_error(p, (yyvsp[0].nd));
8519
0
                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
8520
0
                    }
8521
0
#line 8522 "mrbgems/mruby-compiler/core/y.tab.c"
8522
0
    break;
8523
8524
0
  case 284: /* mrhs: args comma "*" arg  */
8525
0
#line 2681 "mrbgems/mruby-compiler/core/parse.y"
8526
0
                    {
8527
0
                      (yyval.nd) = push((yyvsp[-3].nd), new_splat(p, (yyvsp[0].nd)));
8528
0
                    }
8529
0
#line 8530 "mrbgems/mruby-compiler/core/y.tab.c"
8530
0
    break;
8531
8532
0
  case 285: /* mrhs: "*" arg  */
8533
0
#line 2685 "mrbgems/mruby-compiler/core/parse.y"
8534
0
                    {
8535
0
                      (yyval.nd) = list1(new_splat(p, (yyvsp[0].nd)));
8536
0
                    }
8537
0
#line 8538 "mrbgems/mruby-compiler/core/y.tab.c"
8538
0
    break;
8539
8540
0
  case 293: /* primary: "method"  */
8541
0
#line 2698 "mrbgems/mruby-compiler/core/parse.y"
8542
0
                    {
8543
0
                      (yyval.nd) = new_fcall(p, (yyvsp[0].id), 0);
8544
0
                    }
8545
0
#line 8546 "mrbgems/mruby-compiler/core/y.tab.c"
8546
0
    break;
8547
8548
6.41k
  case 294: /* @8: %empty  */
8549
6.41k
#line 2702 "mrbgems/mruby-compiler/core/parse.y"
8550
6.41k
                    {
8551
6.41k
                      (yyval.stack) = p->cmdarg_stack;
8552
6.41k
                      p->cmdarg_stack = 0;
8553
6.41k
                    }
8554
6.41k
#line 8555 "mrbgems/mruby-compiler/core/y.tab.c"
8555
6.41k
    break;
8556
8557
6.41k
  case 295: /* primary: "'begin'" @8 bodystmt "'end'"  */
8558
6.41k
#line 2708 "mrbgems/mruby-compiler/core/parse.y"
8559
6.41k
                    {
8560
6.41k
                      p->cmdarg_stack = (yyvsp[-2].stack);
8561
6.41k
                      (yyval.nd) = (yyvsp[-1].nd);
8562
6.41k
                    }
8563
6.41k
#line 8564 "mrbgems/mruby-compiler/core/y.tab.c"
8564
6.41k
    break;
8565
8566
0
  case 296: /* @9: %empty  */
8567
0
#line 2713 "mrbgems/mruby-compiler/core/parse.y"
8568
0
                    {
8569
0
                      (yyval.stack) = p->cmdarg_stack;
8570
0
                      p->cmdarg_stack = 0;
8571
0
                    }
8572
0
#line 8573 "mrbgems/mruby-compiler/core/y.tab.c"
8573
0
    break;
8574
8575
0
  case 297: /* $@10: %empty  */
8576
0
#line 2717 "mrbgems/mruby-compiler/core/parse.y"
8577
0
                       {p->lstate = EXPR_ENDARG;}
8578
0
#line 8579 "mrbgems/mruby-compiler/core/y.tab.c"
8579
0
    break;
8580
8581
0
  case 298: /* primary: "(" @9 stmt $@10 rparen  */
8582
0
#line 2718 "mrbgems/mruby-compiler/core/parse.y"
8583
0
                    {
8584
0
                      p->cmdarg_stack = (yyvsp[-3].stack);
8585
0
                      (yyval.nd) = (yyvsp[-2].nd);
8586
0
                    }
8587
0
#line 8588 "mrbgems/mruby-compiler/core/y.tab.c"
8588
0
    break;
8589
8590
0
  case 299: /* $@11: %empty  */
8591
0
#line 2722 "mrbgems/mruby-compiler/core/parse.y"
8592
0
                              {p->lstate = EXPR_ENDARG;}
8593
0
#line 8594 "mrbgems/mruby-compiler/core/y.tab.c"
8594
0
    break;
8595
8596
0
  case 300: /* primary: "(" $@11 rparen  */
8597
0
#line 2723 "mrbgems/mruby-compiler/core/parse.y"
8598
0
                    {
8599
0
                      (yyval.nd) = new_nil(p);
8600
0
                    }
8601
0
#line 8602 "mrbgems/mruby-compiler/core/y.tab.c"
8602
0
    break;
8603
8604
47.4k
  case 301: /* primary: tLPAREN compstmt ')'  */
8605
47.4k
#line 2727 "mrbgems/mruby-compiler/core/parse.y"
8606
47.4k
                    {
8607
47.4k
                      (yyval.nd) = (yyvsp[-1].nd);
8608
47.4k
                    }
8609
47.4k
#line 8610 "mrbgems/mruby-compiler/core/y.tab.c"
8610
47.4k
    break;
8611
8612
75
  case 302: /* primary: primary_value "::" "constant"  */
8613
75
#line 2731 "mrbgems/mruby-compiler/core/parse.y"
8614
75
                    {
8615
75
                      (yyval.nd) = new_colon2(p, (yyvsp[-2].nd), (yyvsp[0].id));
8616
75
                    }
8617
75
#line 8618 "mrbgems/mruby-compiler/core/y.tab.c"
8618
75
    break;
8619
8620
0
  case 303: /* primary: tCOLON3 "constant"  */
8621
0
#line 2735 "mrbgems/mruby-compiler/core/parse.y"
8622
0
                    {
8623
0
                      (yyval.nd) = new_colon3(p, (yyvsp[0].id));
8624
0
                    }
8625
0
#line 8626 "mrbgems/mruby-compiler/core/y.tab.c"
8626
0
    break;
8627
8628
7.92k
  case 304: /* primary: "[" aref_args ']'  */
8629
7.92k
#line 2739 "mrbgems/mruby-compiler/core/parse.y"
8630
7.92k
                    {
8631
7.92k
                      (yyval.nd) = new_array(p, (yyvsp[-1].nd));
8632
7.92k
                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
8633
7.92k
                    }
8634
7.92k
#line 8635 "mrbgems/mruby-compiler/core/y.tab.c"
8635
7.92k
    break;
8636
8637
1.03k
  case 305: /* primary: tLBRACE assoc_list '}'  */
8638
1.03k
#line 2744 "mrbgems/mruby-compiler/core/parse.y"
8639
1.03k
                    {
8640
1.03k
                      (yyval.nd) = new_hash(p, (yyvsp[-1].nd));
8641
1.03k
                      NODE_LINENO((yyval.nd), (yyvsp[-1].nd));
8642
1.03k
                    }
8643
1.03k
#line 8644 "mrbgems/mruby-compiler/core/y.tab.c"
8644
1.03k
    break;
8645
8646
0
  case 306: /* primary: "'return'"  */
8647
0
#line 2749 "mrbgems/mruby-compiler/core/parse.y"
8648
0
                    {
8649
0
                      (yyval.nd) = new_return(p, 0);
8650
0
                    }
8651
0
#line 8652 "mrbgems/mruby-compiler/core/y.tab.c"
8652
0
    break;
8653
8654
0
  case 307: /* primary: "'yield'" opt_paren_args  */
8655
0
#line 2753 "mrbgems/mruby-compiler/core/parse.y"
8656
0
                    {
8657
0
                      (yyval.nd) = new_yield(p, (yyvsp[0].nd));
8658
0
                    }
8659
0
#line 8660 "mrbgems/mruby-compiler/core/y.tab.c"
8660
0
    break;
8661
8662
0
  case 308: /* primary: "'not'" '(' expr rparen  */
8663
0
#line 2757 "mrbgems/mruby-compiler/core/parse.y"
8664
0
                    {
8665
0
                      (yyval.nd) = call_uni_op(p, cond((yyvsp[-1].nd)), "!");
8666
0
                    }
8667
0
#line 8668 "mrbgems/mruby-compiler/core/y.tab.c"
8668
0
    break;
8669
8670
0
  case 309: /* primary: "'not'" '(' rparen  */
8671
0
#line 2761 "mrbgems/mruby-compiler/core/parse.y"
8672
0
                    {
8673
0
                      (yyval.nd) = call_uni_op(p, new_nil(p), "!");
8674
0
                    }
8675
0
#line 8676 "mrbgems/mruby-compiler/core/y.tab.c"
8676
0
    break;
8677
8678
0
  case 310: /* primary: operation brace_block  */
8679
0
#line 2765 "mrbgems/mruby-compiler/core/parse.y"
8680
0
                    {
8681
0
                      (yyval.nd) = new_fcall(p, (yyvsp[-1].id), new_callargs(p, 0, 0, (yyvsp[0].nd)));
8682
0
                    }
8683
0
#line 8684 "mrbgems/mruby-compiler/core/y.tab.c"
8684
0
    break;
8685
8686
0
  case 312: /* primary: method_call brace_block  */
8687
0
#line 2770 "mrbgems/mruby-compiler/core/parse.y"
8688
0
                    {
8689
0
                      call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
8690
0
                      (yyval.nd) = (yyvsp[-1].nd);
8691
0
                    }
8692
0
#line 8693 "mrbgems/mruby-compiler/core/y.tab.c"
8693
0
    break;
8694
8695
0
  case 313: /* @12: %empty  */
8696
0
#line 2775 "mrbgems/mruby-compiler/core/parse.y"
8697
0
                    {
8698
0
                      local_nest(p);
8699
0
                      nvars_nest(p);
8700
0
                      (yyval.num) = p->lpar_beg;
8701
0
                      p->lpar_beg = ++p->paren_nest;
8702
0
                    }
8703
0
#line 8704 "mrbgems/mruby-compiler/core/y.tab.c"
8704
0
    break;
8705
8706
0
  case 314: /* @13: %empty  */
8707
0
#line 2782 "mrbgems/mruby-compiler/core/parse.y"
8708
0
                    {
8709
0
                      (yyval.stack) = p->cmdarg_stack;
8710
0
                      p->cmdarg_stack = 0;
8711
0
                    }
8712
0
#line 8713 "mrbgems/mruby-compiler/core/y.tab.c"
8713
0
    break;
8714
8715
0
  case 315: /* primary: "->" @12 f_larglist @13 lambda_body  */
8716
0
#line 2787 "mrbgems/mruby-compiler/core/parse.y"
8717
0
                    {
8718
0
                      p->lpar_beg = (yyvsp[-3].num);
8719
0
                      (yyval.nd) = new_lambda(p, (yyvsp[-2].nd), (yyvsp[0].nd));
8720
0
                      local_unnest(p);
8721
0
                      nvars_unnest(p);
8722
0
                      p->cmdarg_stack = (yyvsp[-1].stack);
8723
0
                      CMDARG_LEXPOP();
8724
0
                    }
8725
0
#line 8726 "mrbgems/mruby-compiler/core/y.tab.c"
8726
0
    break;
8727
8728
4.33k
  case 316: /* primary: "'if'" expr_value then compstmt if_tail "'end'"  */
8729
4.33k
#line 2799 "mrbgems/mruby-compiler/core/parse.y"
8730
4.33k
                    {
8731
4.33k
                      (yyval.nd) = new_if(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd));
8732
4.33k
                      SET_LINENO((yyval.nd), (yyvsp[-5].num));
8733
4.33k
                    }
8734
4.33k
#line 8735 "mrbgems/mruby-compiler/core/y.tab.c"
8735
4.33k
    break;
8736
8737
0
  case 317: /* primary: "'unless'" expr_value then compstmt opt_else "'end'"  */
8738
0
#line 2807 "mrbgems/mruby-compiler/core/parse.y"
8739
0
                    {
8740
0
                      (yyval.nd) = new_unless(p, cond((yyvsp[-4].nd)), (yyvsp[-2].nd), (yyvsp[-1].nd));
8741
0
                      SET_LINENO((yyval.nd), (yyvsp[-5].num));
8742
0
                    }
8743
0
#line 8744 "mrbgems/mruby-compiler/core/y.tab.c"
8744
0
    break;
8745
8746
0
  case 318: /* $@14: %empty  */
8747
0
#line 2811 "mrbgems/mruby-compiler/core/parse.y"
8748
0
                                {COND_PUSH(1);}
8749
0
#line 8750 "mrbgems/mruby-compiler/core/y.tab.c"
8750
0
    break;
8751
8752
0
  case 319: /* $@15: %empty  */
8753
0
#line 2811 "mrbgems/mruby-compiler/core/parse.y"
8754
0
                                                              {COND_POP();}
8755
0
#line 8756 "mrbgems/mruby-compiler/core/y.tab.c"
8756
0
    break;
8757
8758
0
  case 320: /* primary: "'while'" $@14 expr_value do $@15 compstmt "'end'"  */
8759
0
#line 2814 "mrbgems/mruby-compiler/core/parse.y"
8760
0
                    {
8761
0
                      (yyval.nd) = new_while(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd));
8762
0
                      SET_LINENO((yyval.nd), (yyvsp[-6].num));
8763
0
                    }
8764
0
#line 8765 "mrbgems/mruby-compiler/core/y.tab.c"
8765
0
    break;
8766
8767
0
  case 321: /* $@16: %empty  */
8768
0
#line 2818 "mrbgems/mruby-compiler/core/parse.y"
8769
0
                                {COND_PUSH(1);}
8770
0
#line 8771 "mrbgems/mruby-compiler/core/y.tab.c"
8771
0
    break;
8772
8773
0
  case 322: /* $@17: %empty  */
8774
0
#line 2818 "mrbgems/mruby-compiler/core/parse.y"
8775
0
                                                              {COND_POP();}
8776
0
#line 8777 "mrbgems/mruby-compiler/core/y.tab.c"
8777
0
    break;
8778
8779
0
  case 323: /* primary: "'until'" $@16 expr_value do $@17 compstmt "'end'"  */
8780
0
#line 2821 "mrbgems/mruby-compiler/core/parse.y"
8781
0
                    {
8782
0
                      (yyval.nd) = new_until(p, cond((yyvsp[-4].nd)), (yyvsp[-1].nd));
8783
0
                      SET_LINENO((yyval.nd), (yyvsp[-6].num));
8784
0
                    }
8785
0
#line 8786 "mrbgems/mruby-compiler/core/y.tab.c"
8786
0
    break;
8787
8788
0
  case 324: /* primary: "'case'" expr_value opt_terms case_body "'end'"  */
8789
0
#line 2828 "mrbgems/mruby-compiler/core/parse.y"
8790
0
                    {
8791
0
                      (yyval.nd) = new_case(p, (yyvsp[-3].nd), (yyvsp[-1].nd));
8792
0
                    }
8793
0
#line 8794 "mrbgems/mruby-compiler/core/y.tab.c"
8794
0
    break;
8795
8796
0
  case 325: /* primary: "'case'" opt_terms case_body "'end'"  */
8797
0
#line 2832 "mrbgems/mruby-compiler/core/parse.y"
8798
0
                    {
8799
0
                      (yyval.nd) = new_case(p, 0, (yyvsp[-1].nd));
8800
0
                    }
8801
0
#line 8802 "mrbgems/mruby-compiler/core/y.tab.c"
8802
0
    break;
8803
8804
0
  case 326: /* $@18: %empty  */
8805
0
#line 2836 "mrbgems/mruby-compiler/core/parse.y"
8806
0
                  {COND_PUSH(1);}
8807
0
#line 8808 "mrbgems/mruby-compiler/core/y.tab.c"
8808
0
    break;
8809
8810
0
  case 327: /* $@19: %empty  */
8811
0
#line 2838 "mrbgems/mruby-compiler/core/parse.y"
8812
0
                  {COND_POP();}
8813
0
#line 8814 "mrbgems/mruby-compiler/core/y.tab.c"
8814
0
    break;
8815
8816
0
  case 328: /* primary: "'for'" for_var "'in'" $@18 expr_value do $@19 compstmt "'end'"  */
8817
0
#line 2841 "mrbgems/mruby-compiler/core/parse.y"
8818
0
                    {
8819
0
                      (yyval.nd) = new_for(p, (yyvsp[-7].nd), (yyvsp[-4].nd), (yyvsp[-1].nd));
8820
0
                      SET_LINENO((yyval.nd), (yyvsp[-8].num));
8821
0
                    }
8822
0
#line 8823 "mrbgems/mruby-compiler/core/y.tab.c"
8823
0
    break;
8824
8825
0
  case 329: /* @20: %empty  */
8826
0
#line 2847 "mrbgems/mruby-compiler/core/parse.y"
8827
0
                    {
8828
0
                      if (p->in_def || p->in_single)
8829
0
                        yyerror(&(yylsp[-2]), p, "class definition in method body");
8830
0
                      (yyval.nd) = local_switch(p);
8831
0
                      nvars_block(p);
8832
0
                    }
8833
0
#line 8834 "mrbgems/mruby-compiler/core/y.tab.c"
8834
0
    break;
8835
8836
0
  case 330: /* primary: "'class'" cpath superclass @20 bodystmt "'end'"  */
8837
0
#line 2855 "mrbgems/mruby-compiler/core/parse.y"
8838
0
                    {
8839
0
                      (yyval.nd) = new_class(p, (yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd));
8840
0
                      SET_LINENO((yyval.nd), (yyvsp[-5].num));
8841
0
                      local_resume(p, (yyvsp[-2].nd));
8842
0
                      nvars_unnest(p);
8843
0
                    }
8844
0
#line 8845 "mrbgems/mruby-compiler/core/y.tab.c"
8845
0
    break;
8846
8847
0
  case 331: /* @21: %empty  */
8848
0
#line 2863 "mrbgems/mruby-compiler/core/parse.y"
8849
0
                    {
8850
0
                      (yyval.num) = p->in_def;
8851
0
                      p->in_def = 0;
8852
0
                    }
8853
0
#line 8854 "mrbgems/mruby-compiler/core/y.tab.c"
8854
0
    break;
8855
8856
0
  case 332: /* @22: %empty  */
8857
0
#line 2868 "mrbgems/mruby-compiler/core/parse.y"
8858
0
                    {
8859
0
                      (yyval.nd) = cons(local_switch(p), nint(p->in_single));
8860
0
                      nvars_block(p);
8861
0
                      p->in_single = 0;
8862
0
                    }
8863
0
#line 8864 "mrbgems/mruby-compiler/core/y.tab.c"
8864
0
    break;
8865
8866
0
  case 333: /* primary: "'class'" "<<" expr @21 term @22 bodystmt "'end'"  */
8867
0
#line 2875 "mrbgems/mruby-compiler/core/parse.y"
8868
0
                    {
8869
0
                      (yyval.nd) = new_sclass(p, (yyvsp[-5].nd), (yyvsp[-1].nd));
8870
0
                      SET_LINENO((yyval.nd), (yyvsp[-7].num));
8871
0
                      local_resume(p, (yyvsp[-2].nd)->car);
8872
0
                      nvars_unnest(p);
8873
0
                      p->in_def = (yyvsp[-4].num);
8874
0
                      p->in_single = intn((yyvsp[-2].nd)->cdr);
8875
0
                    }
8876
0
#line 8877 "mrbgems/mruby-compiler/core/y.tab.c"
8877
0
    break;
8878
8879
0
  case 334: /* @23: %empty  */
8880
0
#line 2885 "mrbgems/mruby-compiler/core/parse.y"
8881
0
                    {
8882
0
                      if (p->in_def || p->in_single)
8883
0
                        yyerror(&(yylsp[-1]), p, "module definition in method body");
8884
0
                      (yyval.nd) = local_switch(p);
8885
0
                      nvars_block(p);
8886
0
                    }
8887
0
#line 8888 "mrbgems/mruby-compiler/core/y.tab.c"
8888
0
    break;
8889
8890
0
  case 335: /* primary: "'module'" cpath @23 bodystmt "'end'"  */
8891
0
#line 2893 "mrbgems/mruby-compiler/core/parse.y"
8892
0
                    {
8893
0
                      (yyval.nd) = new_module(p, (yyvsp[-3].nd), (yyvsp[-1].nd));
8894
0
                      SET_LINENO((yyval.nd), (yyvsp[-4].num));
8895
0
                      local_resume(p, (yyvsp[-2].nd));
8896
0
                      nvars_unnest(p);
8897
0
                    }
8898
0
#line 8899 "mrbgems/mruby-compiler/core/y.tab.c"
8899
0
    break;
8900
8901
103
  case 336: /* primary: defn_head f_arglist bodystmt "'end'"  */
8902
103
#line 2903 "mrbgems/mruby-compiler/core/parse.y"
8903
103
                    {
8904
103
                      (yyval.nd) = (yyvsp[-3].nd);
8905
103
                      defn_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd));
8906
103
                      nvars_unnest(p);
8907
103
                      p->in_def--;
8908
103
                    }
8909
103
#line 8910 "mrbgems/mruby-compiler/core/y.tab.c"
8910
103
    break;
8911
8912
0
  case 337: /* primary: defs_head f_arglist bodystmt "'end'"  */
8913
0
#line 2913 "mrbgems/mruby-compiler/core/parse.y"
8914
0
                    {
8915
0
                      (yyval.nd) = (yyvsp[-3].nd);
8916
0
                      defs_setup(p, (yyval.nd), (yyvsp[-2].nd), (yyvsp[-1].nd));
8917
0
                      nvars_unnest(p);
8918
0
                      p->in_def--;
8919
0
                      p->in_single--;
8920
0
                    }
8921
0
#line 8922 "mrbgems/mruby-compiler/core/y.tab.c"
8922
0
    break;
8923
8924
0
  case 338: /* primary: "'break'"  */
8925
0
#line 2921 "mrbgems/mruby-compiler/core/parse.y"
8926
0
                    {
8927
0
                      (yyval.nd) = new_break(p, 0);
8928
0
                    }
8929
0
#line 8930 "mrbgems/mruby-compiler/core/y.tab.c"
8930
0
    break;
8931
8932
0
  case 339: /* primary: "'next'"  */
8933
0
#line 2925 "mrbgems/mruby-compiler/core/parse.y"
8934
0
                    {
8935
0
                      (yyval.nd) = new_next(p, 0);
8936
0
                    }
8937
0
#line 8938 "mrbgems/mruby-compiler/core/y.tab.c"
8938
0
    break;
8939
8940
0
  case 340: /* primary: "'redo'"  */
8941
0
#line 2929 "mrbgems/mruby-compiler/core/parse.y"
8942
0
                    {
8943
0
                      (yyval.nd) = new_redo(p);
8944
0
                    }
8945
0
#line 8946 "mrbgems/mruby-compiler/core/y.tab.c"
8946
0
    break;
8947
8948
0
  case 341: /* primary: "'retry'"  */
8949
0
#line 2933 "mrbgems/mruby-compiler/core/parse.y"
8950
0
                    {
8951
0
                      (yyval.nd) = new_retry(p);
8952
0
                    }
8953
0
#line 8954 "mrbgems/mruby-compiler/core/y.tab.c"
8954
0
    break;
8955
8956
11.2k
  case 342: /* primary_value: primary  */
8957
11.2k
#line 2939 "mrbgems/mruby-compiler/core/parse.y"
8958
11.2k
                    {
8959
11.2k
                      (yyval.nd) = (yyvsp[0].nd);
8960
11.2k
                      if (!(yyval.nd)) (yyval.nd) = new_nil(p);
8961
11.2k
                    }
8962
11.2k
#line 8963 "mrbgems/mruby-compiler/core/y.tab.c"
8963
11.2k
    break;
8964
8965
0
  case 349: /* if_tail: "'elsif'" expr_value then compstmt if_tail  */
8966
0
#line 2958 "mrbgems/mruby-compiler/core/parse.y"
8967
0
                    {
8968
0
                      (yyval.nd) = new_if(p, cond((yyvsp[-3].nd)), (yyvsp[-1].nd), (yyvsp[0].nd));
8969
0
                    }
8970
0
#line 8971 "mrbgems/mruby-compiler/core/y.tab.c"
8971
0
    break;
8972
8973
4.33k
  case 351: /* opt_else: "'else'" compstmt  */
8974
4.33k
#line 2965 "mrbgems/mruby-compiler/core/parse.y"
8975
4.33k
                    {
8976
4.33k
                      (yyval.nd) = (yyvsp[0].nd);
8977
4.33k
                    }
8978
4.33k
#line 8979 "mrbgems/mruby-compiler/core/y.tab.c"
8979
4.33k
    break;
8980
8981
0
  case 352: /* for_var: lhs  */
8982
0
#line 2971 "mrbgems/mruby-compiler/core/parse.y"
8983
0
                    {
8984
0
                      (yyval.nd) = list1(list1((yyvsp[0].nd)));
8985
0
                    }
8986
0
#line 8987 "mrbgems/mruby-compiler/core/y.tab.c"
8987
0
    break;
8988
8989
0
  case 354: /* f_margs: f_arg  */
8990
0
#line 2978 "mrbgems/mruby-compiler/core/parse.y"
8991
0
                    {
8992
0
                      (yyval.nd) = list3((yyvsp[0].nd),0,0);
8993
0
                    }
8994
0
#line 8995 "mrbgems/mruby-compiler/core/y.tab.c"
8995
0
    break;
8996
8997
0
  case 355: /* f_margs: f_arg ',' "*" f_norm_arg  */
8998
0
#line 2982 "mrbgems/mruby-compiler/core/parse.y"
8999
0
                    {
9000
0
                      (yyval.nd) = list3((yyvsp[-3].nd), new_arg(p, (yyvsp[0].id)), 0);
9001
0
                    }
9002
0
#line 9003 "mrbgems/mruby-compiler/core/y.tab.c"
9003
0
    break;
9004
9005
0
  case 356: /* f_margs: f_arg ',' "*" f_norm_arg ',' f_arg  */
9006
0
#line 2986 "mrbgems/mruby-compiler/core/parse.y"
9007
0
                    {
9008
0
                      (yyval.nd) = list3((yyvsp[-5].nd), new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd));
9009
0
                    }
9010
0
#line 9011 "mrbgems/mruby-compiler/core/y.tab.c"
9011
0
    break;
9012
9013
0
  case 357: /* f_margs: f_arg ',' "*"  */
9014
0
#line 2990 "mrbgems/mruby-compiler/core/parse.y"
9015
0
                    {
9016
0
                      local_add_f(p, intern_op(mul));
9017
0
                      (yyval.nd) = list3((yyvsp[-2].nd), nint(-1), 0);
9018
0
                    }
9019
0
#line 9020 "mrbgems/mruby-compiler/core/y.tab.c"
9020
0
    break;
9021
9022
0
  case 358: /* f_margs: f_arg ',' "*" ',' f_arg  */
9023
0
#line 2995 "mrbgems/mruby-compiler/core/parse.y"
9024
0
                    {
9025
0
                      (yyval.nd) = list3((yyvsp[-4].nd), nint(-1), (yyvsp[0].nd));
9026
0
                    }
9027
0
#line 9028 "mrbgems/mruby-compiler/core/y.tab.c"
9028
0
    break;
9029
9030
0
  case 359: /* f_margs: "*" f_norm_arg  */
9031
0
#line 2999 "mrbgems/mruby-compiler/core/parse.y"
9032
0
                    {
9033
0
                      (yyval.nd) = list3(0, new_arg(p, (yyvsp[0].id)), 0);
9034
0
                    }
9035
0
#line 9036 "mrbgems/mruby-compiler/core/y.tab.c"
9036
0
    break;
9037
9038
0
  case 360: /* f_margs: "*" f_norm_arg ',' f_arg  */
9039
0
#line 3003 "mrbgems/mruby-compiler/core/parse.y"
9040
0
                    {
9041
0
                      (yyval.nd) = list3(0, new_arg(p, (yyvsp[-2].id)), (yyvsp[0].nd));
9042
0
                    }
9043
0
#line 9044 "mrbgems/mruby-compiler/core/y.tab.c"
9044
0
    break;
9045
9046
0
  case 361: /* f_margs: "*"  */
9047
0
#line 3007 "mrbgems/mruby-compiler/core/parse.y"
9048
0
                    {
9049
0
                      local_add_f(p, intern_op(mul));
9050
0
                      (yyval.nd) = list3(0, nint(-1), 0);
9051
0
                    }
9052
0
#line 9053 "mrbgems/mruby-compiler/core/y.tab.c"
9053
0
    break;
9054
9055
0
  case 362: /* $@24: %empty  */
9056
0
#line 3012 "mrbgems/mruby-compiler/core/parse.y"
9057
0
                    {
9058
0
                      local_add_f(p, intern_op(mul));
9059
0
                    }
9060
0
#line 9061 "mrbgems/mruby-compiler/core/y.tab.c"
9061
0
    break;
9062
9063
0
  case 363: /* f_margs: "*" ',' $@24 f_arg  */
9064
0
#line 3016 "mrbgems/mruby-compiler/core/parse.y"
9065
0
                    {
9066
0
                      (yyval.nd) = list3(0, nint(-1), (yyvsp[0].nd));
9067
0
                    }
9068
0
#line 9069 "mrbgems/mruby-compiler/core/y.tab.c"
9069
0
    break;
9070
9071
0
  case 364: /* block_args_tail: f_block_kwarg ',' f_kwrest opt_f_block_arg  */
9072
0
#line 3022 "mrbgems/mruby-compiler/core/parse.y"
9073
0
                    {
9074
0
                      (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id));
9075
0
                    }
9076
0
#line 9077 "mrbgems/mruby-compiler/core/y.tab.c"
9077
0
    break;
9078
9079
0
  case 365: /* block_args_tail: f_block_kwarg opt_f_block_arg  */
9080
0
#line 3026 "mrbgems/mruby-compiler/core/parse.y"
9081
0
                    {
9082
0
                      (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id));
9083
0
                    }
9084
0
#line 9085 "mrbgems/mruby-compiler/core/y.tab.c"
9085
0
    break;
9086
9087
0
  case 366: /* block_args_tail: f_kwrest opt_f_block_arg  */
9088
0
#line 3030 "mrbgems/mruby-compiler/core/parse.y"
9089
0
                    {
9090
0
                      (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id));
9091
0
                    }
9092
0
#line 9093 "mrbgems/mruby-compiler/core/y.tab.c"
9093
0
    break;
9094
9095
0
  case 367: /* block_args_tail: f_block_arg  */
9096
0
#line 3034 "mrbgems/mruby-compiler/core/parse.y"
9097
0
                    {
9098
0
                      (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id));
9099
0
                    }
9100
0
#line 9101 "mrbgems/mruby-compiler/core/y.tab.c"
9101
0
    break;
9102
9103
0
  case 368: /* opt_block_args_tail: ',' block_args_tail  */
9104
0
#line 3040 "mrbgems/mruby-compiler/core/parse.y"
9105
0
                    {
9106
0
                      (yyval.nd) = (yyvsp[0].nd);
9107
0
                    }
9108
0
#line 9109 "mrbgems/mruby-compiler/core/y.tab.c"
9109
0
    break;
9110
9111
0
  case 369: /* opt_block_args_tail: %empty  */
9112
0
#line 3044 "mrbgems/mruby-compiler/core/parse.y"
9113
0
                    {
9114
0
                      (yyval.nd) = new_args_tail(p, 0, 0, 0);
9115
0
                    }
9116
0
#line 9117 "mrbgems/mruby-compiler/core/y.tab.c"
9117
0
    break;
9118
9119
0
  case 370: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg opt_block_args_tail  */
9120
0
#line 3050 "mrbgems/mruby-compiler/core/parse.y"
9121
0
                    {
9122
0
                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd));
9123
0
                    }
9124
0
#line 9125 "mrbgems/mruby-compiler/core/y.tab.c"
9125
0
    break;
9126
9127
0
  case 371: /* block_param: f_arg ',' f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail  */
9128
0
#line 3054 "mrbgems/mruby-compiler/core/parse.y"
9129
0
                    {
9130
0
                      (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
9131
0
                    }
9132
0
#line 9133 "mrbgems/mruby-compiler/core/y.tab.c"
9133
0
    break;
9134
9135
0
  case 372: /* block_param: f_arg ',' f_block_optarg opt_block_args_tail  */
9136
0
#line 3058 "mrbgems/mruby-compiler/core/parse.y"
9137
0
                    {
9138
0
                      (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd));
9139
0
                    }
9140
0
#line 9141 "mrbgems/mruby-compiler/core/y.tab.c"
9141
0
    break;
9142
9143
0
  case 373: /* block_param: f_arg ',' f_block_optarg ',' f_arg opt_block_args_tail  */
9144
0
#line 3062 "mrbgems/mruby-compiler/core/parse.y"
9145
0
                    {
9146
0
                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd));
9147
0
                    }
9148
0
#line 9149 "mrbgems/mruby-compiler/core/y.tab.c"
9149
0
    break;
9150
9151
0
  case 374: /* block_param: f_arg ',' f_rest_arg opt_block_args_tail  */
9152
0
#line 3066 "mrbgems/mruby-compiler/core/parse.y"
9153
0
                    {
9154
0
                      (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd));
9155
0
                    }
9156
0
#line 9157 "mrbgems/mruby-compiler/core/y.tab.c"
9157
0
    break;
9158
9159
0
  case 375: /* block_param: f_arg ',' opt_block_args_tail  */
9160
0
#line 3070 "mrbgems/mruby-compiler/core/parse.y"
9161
0
                    {
9162
0
                      (yyval.nd) = new_args(p, (yyvsp[-2].nd), 0, 0, 0, (yyvsp[0].nd));
9163
0
                    }
9164
0
#line 9165 "mrbgems/mruby-compiler/core/y.tab.c"
9165
0
    break;
9166
9167
0
  case 376: /* block_param: f_arg ',' f_rest_arg ',' f_arg opt_block_args_tail  */
9168
0
#line 3074 "mrbgems/mruby-compiler/core/parse.y"
9169
0
                    {
9170
0
                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
9171
0
                    }
9172
0
#line 9173 "mrbgems/mruby-compiler/core/y.tab.c"
9173
0
    break;
9174
9175
0
  case 377: /* block_param: f_arg opt_block_args_tail  */
9176
0
#line 3078 "mrbgems/mruby-compiler/core/parse.y"
9177
0
                    {
9178
0
                      (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd));
9179
0
                    }
9180
0
#line 9181 "mrbgems/mruby-compiler/core/y.tab.c"
9181
0
    break;
9182
9183
0
  case 378: /* block_param: f_block_optarg ',' f_rest_arg opt_block_args_tail  */
9184
0
#line 3082 "mrbgems/mruby-compiler/core/parse.y"
9185
0
                    {
9186
0
                      (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd));
9187
0
                    }
9188
0
#line 9189 "mrbgems/mruby-compiler/core/y.tab.c"
9189
0
    break;
9190
9191
0
  case 379: /* block_param: f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail  */
9192
0
#line 3086 "mrbgems/mruby-compiler/core/parse.y"
9193
0
                    {
9194
0
                      (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
9195
0
                    }
9196
0
#line 9197 "mrbgems/mruby-compiler/core/y.tab.c"
9197
0
    break;
9198
9199
0
  case 380: /* block_param: f_block_optarg opt_block_args_tail  */
9200
0
#line 3090 "mrbgems/mruby-compiler/core/parse.y"
9201
0
                    {
9202
0
                      (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd));
9203
0
                    }
9204
0
#line 9205 "mrbgems/mruby-compiler/core/y.tab.c"
9205
0
    break;
9206
9207
0
  case 381: /* block_param: f_block_optarg ',' f_arg opt_block_args_tail  */
9208
0
#line 3094 "mrbgems/mruby-compiler/core/parse.y"
9209
0
                    {
9210
0
                      (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd));
9211
0
                    }
9212
0
#line 9213 "mrbgems/mruby-compiler/core/y.tab.c"
9213
0
    break;
9214
9215
0
  case 382: /* block_param: f_rest_arg opt_block_args_tail  */
9216
0
#line 3098 "mrbgems/mruby-compiler/core/parse.y"
9217
0
                    {
9218
0
                      (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd));
9219
0
                    }
9220
0
#line 9221 "mrbgems/mruby-compiler/core/y.tab.c"
9221
0
    break;
9222
9223
0
  case 383: /* block_param: f_rest_arg ',' f_arg opt_block_args_tail  */
9224
0
#line 3102 "mrbgems/mruby-compiler/core/parse.y"
9225
0
                    {
9226
0
                      (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
9227
0
                    }
9228
0
#line 9229 "mrbgems/mruby-compiler/core/y.tab.c"
9229
0
    break;
9230
9231
0
  case 384: /* block_param: block_args_tail  */
9232
0
#line 3106 "mrbgems/mruby-compiler/core/parse.y"
9233
0
                    {
9234
0
                      (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd));
9235
0
                    }
9236
0
#line 9237 "mrbgems/mruby-compiler/core/y.tab.c"
9237
0
    break;
9238
9239
0
  case 385: /* opt_block_param: none  */
9240
0
#line 3112 "mrbgems/mruby-compiler/core/parse.y"
9241
0
                    {
9242
0
                      local_add_blk(p);
9243
0
                      (yyval.nd) = 0;
9244
0
                    }
9245
0
#line 9246 "mrbgems/mruby-compiler/core/y.tab.c"
9246
0
    break;
9247
9248
0
  case 386: /* opt_block_param: block_param_def  */
9249
0
#line 3117 "mrbgems/mruby-compiler/core/parse.y"
9250
0
                   {
9251
0
                      p->cmd_start = TRUE;
9252
0
                      (yyval.nd) = (yyvsp[0].nd);
9253
0
                    }
9254
0
#line 9255 "mrbgems/mruby-compiler/core/y.tab.c"
9255
0
    break;
9256
9257
0
  case 387: /* $@25: %empty  */
9258
0
#line 3123 "mrbgems/mruby-compiler/core/parse.y"
9259
0
                      {local_add_blk(p);}
9260
0
#line 9261 "mrbgems/mruby-compiler/core/y.tab.c"
9261
0
    break;
9262
9263
0
  case 388: /* block_param_def: '|' $@25 opt_bv_decl '|'  */
9264
0
#line 3124 "mrbgems/mruby-compiler/core/parse.y"
9265
0
                    {
9266
0
                      (yyval.nd) = 0;
9267
0
                    }
9268
0
#line 9269 "mrbgems/mruby-compiler/core/y.tab.c"
9269
0
    break;
9270
9271
0
  case 389: /* block_param_def: "||"  */
9272
0
#line 3128 "mrbgems/mruby-compiler/core/parse.y"
9273
0
                    {
9274
0
                      local_add_blk(p);
9275
0
                      (yyval.nd) = 0;
9276
0
                    }
9277
0
#line 9278 "mrbgems/mruby-compiler/core/y.tab.c"
9278
0
    break;
9279
9280
0
  case 390: /* block_param_def: '|' block_param opt_bv_decl '|'  */
9281
0
#line 3133 "mrbgems/mruby-compiler/core/parse.y"
9282
0
                    {
9283
0
                      (yyval.nd) = (yyvsp[-2].nd);
9284
0
                    }
9285
0
#line 9286 "mrbgems/mruby-compiler/core/y.tab.c"
9286
0
    break;
9287
9288
0
  case 391: /* opt_bv_decl: opt_nl  */
9289
0
#line 3140 "mrbgems/mruby-compiler/core/parse.y"
9290
0
                    {
9291
0
                      (yyval.nd) = 0;
9292
0
                    }
9293
0
#line 9294 "mrbgems/mruby-compiler/core/y.tab.c"
9294
0
    break;
9295
9296
0
  case 392: /* opt_bv_decl: opt_nl ';' bv_decls opt_nl  */
9297
0
#line 3144 "mrbgems/mruby-compiler/core/parse.y"
9298
0
                    {
9299
0
                      (yyval.nd) = 0;
9300
0
                    }
9301
0
#line 9302 "mrbgems/mruby-compiler/core/y.tab.c"
9302
0
    break;
9303
9304
0
  case 395: /* bvar: "local variable or method"  */
9305
0
#line 3154 "mrbgems/mruby-compiler/core/parse.y"
9306
0
                    {
9307
0
                      local_add_f(p, (yyvsp[0].id));
9308
0
                      new_bv(p, (yyvsp[0].id));
9309
0
                    }
9310
0
#line 9311 "mrbgems/mruby-compiler/core/y.tab.c"
9311
0
    break;
9312
9313
0
  case 397: /* f_larglist: '(' f_args opt_bv_decl ')'  */
9314
0
#line 3162 "mrbgems/mruby-compiler/core/parse.y"
9315
0
                    {
9316
0
                      (yyval.nd) = (yyvsp[-2].nd);
9317
0
                    }
9318
0
#line 9319 "mrbgems/mruby-compiler/core/y.tab.c"
9319
0
    break;
9320
9321
0
  case 398: /* f_larglist: f_args  */
9322
0
#line 3166 "mrbgems/mruby-compiler/core/parse.y"
9323
0
                    {
9324
0
                      (yyval.nd) = (yyvsp[0].nd);
9325
0
                    }
9326
0
#line 9327 "mrbgems/mruby-compiler/core/y.tab.c"
9327
0
    break;
9328
9329
0
  case 399: /* lambda_body: tLAMBEG compstmt '}'  */
9330
0
#line 3172 "mrbgems/mruby-compiler/core/parse.y"
9331
0
                    {
9332
0
                      (yyval.nd) = (yyvsp[-1].nd);
9333
0
                    }
9334
0
#line 9335 "mrbgems/mruby-compiler/core/y.tab.c"
9335
0
    break;
9336
9337
0
  case 400: /* lambda_body: "'do' for lambda" bodystmt "'end'"  */
9338
0
#line 3176 "mrbgems/mruby-compiler/core/parse.y"
9339
0
                    {
9340
0
                      (yyval.nd) = (yyvsp[-1].nd);
9341
0
                    }
9342
0
#line 9343 "mrbgems/mruby-compiler/core/y.tab.c"
9343
0
    break;
9344
9345
0
  case 401: /* @26: %empty  */
9346
0
#line 3182 "mrbgems/mruby-compiler/core/parse.y"
9347
0
                    {
9348
0
                      local_nest(p);
9349
0
                      nvars_nest(p);
9350
0
                      (yyval.num) = p->lineno;
9351
0
                    }
9352
0
#line 9353 "mrbgems/mruby-compiler/core/y.tab.c"
9353
0
    break;
9354
9355
0
  case 402: /* do_block: "'do' for block" @26 opt_block_param bodystmt "'end'"  */
9356
0
#line 3190 "mrbgems/mruby-compiler/core/parse.y"
9357
0
                    {
9358
0
                      (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd));
9359
0
                      SET_LINENO((yyval.nd), (yyvsp[-3].num));
9360
0
                      local_unnest(p);
9361
0
                      nvars_unnest(p);
9362
0
                    }
9363
0
#line 9364 "mrbgems/mruby-compiler/core/y.tab.c"
9364
0
    break;
9365
9366
0
  case 403: /* block_call: command do_block  */
9367
0
#line 3199 "mrbgems/mruby-compiler/core/parse.y"
9368
0
                    {
9369
0
                      if (typen((yyvsp[-1].nd)->car) == NODE_YIELD) {
9370
0
                        yyerror(&(yylsp[-1]), p, "block given to yield");
9371
0
                      }
9372
0
                      else {
9373
0
                        call_with_block(p, (yyvsp[-1].nd), (yyvsp[0].nd));
9374
0
                      }
9375
0
                      (yyval.nd) = (yyvsp[-1].nd);
9376
0
                    }
9377
0
#line 9378 "mrbgems/mruby-compiler/core/y.tab.c"
9378
0
    break;
9379
9380
0
  case 404: /* block_call: block_call call_op2 operation2 opt_paren_args  */
9381
0
#line 3209 "mrbgems/mruby-compiler/core/parse.y"
9382
0
                    {
9383
0
                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num));
9384
0
                    }
9385
0
#line 9386 "mrbgems/mruby-compiler/core/y.tab.c"
9386
0
    break;
9387
9388
0
  case 405: /* block_call: block_call call_op2 operation2 opt_paren_args brace_block  */
9389
0
#line 3213 "mrbgems/mruby-compiler/core/parse.y"
9390
0
                    {
9391
0
                      (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num));
9392
0
                      call_with_block(p, (yyval.nd), (yyvsp[0].nd));
9393
0
                    }
9394
0
#line 9395 "mrbgems/mruby-compiler/core/y.tab.c"
9395
0
    break;
9396
9397
0
  case 406: /* block_call: block_call call_op2 operation2 command_args do_block  */
9398
0
#line 3218 "mrbgems/mruby-compiler/core/parse.y"
9399
0
                    {
9400
0
                      (yyval.nd) = new_call(p, (yyvsp[-4].nd), (yyvsp[-2].id), (yyvsp[-1].nd), (yyvsp[-3].num));
9401
0
                      call_with_block(p, (yyval.nd), (yyvsp[0].nd));
9402
0
                    }
9403
0
#line 9404 "mrbgems/mruby-compiler/core/y.tab.c"
9404
0
    break;
9405
9406
0
  case 407: /* method_call: operation paren_args  */
9407
0
#line 3225 "mrbgems/mruby-compiler/core/parse.y"
9408
0
                    {
9409
0
                      (yyval.nd) = new_fcall(p, (yyvsp[-1].id), (yyvsp[0].nd));
9410
0
                    }
9411
0
#line 9412 "mrbgems/mruby-compiler/core/y.tab.c"
9412
0
    break;
9413
9414
11.2k
  case 408: /* method_call: primary_value call_op operation2 opt_paren_args  */
9415
11.2k
#line 3229 "mrbgems/mruby-compiler/core/parse.y"
9416
11.2k
                    {
9417
11.2k
                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), (yyvsp[-2].num));
9418
11.2k
                    }
9419
11.2k
#line 9420 "mrbgems/mruby-compiler/core/y.tab.c"
9420
11.2k
    break;
9421
9422
0
  case 409: /* method_call: primary_value "::" operation2 paren_args  */
9423
0
#line 3233 "mrbgems/mruby-compiler/core/parse.y"
9424
0
                    {
9425
0
                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), (yyvsp[-1].id), (yyvsp[0].nd), tCOLON2);
9426
0
                    }
9427
0
#line 9428 "mrbgems/mruby-compiler/core/y.tab.c"
9428
0
    break;
9429
9430
0
  case 410: /* method_call: primary_value "::" operation3  */
9431
0
#line 3237 "mrbgems/mruby-compiler/core/parse.y"
9432
0
                    {
9433
0
                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), (yyvsp[0].id), 0, tCOLON2);
9434
0
                    }
9435
0
#line 9436 "mrbgems/mruby-compiler/core/y.tab.c"
9436
0
    break;
9437
9438
0
  case 411: /* method_call: primary_value call_op paren_args  */
9439
0
#line 3241 "mrbgems/mruby-compiler/core/parse.y"
9440
0
                    {
9441
0
                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), (yyvsp[-1].num));
9442
0
                    }
9443
0
#line 9444 "mrbgems/mruby-compiler/core/y.tab.c"
9444
0
    break;
9445
9446
0
  case 412: /* method_call: primary_value "::" paren_args  */
9447
0
#line 3245 "mrbgems/mruby-compiler/core/parse.y"
9448
0
                    {
9449
0
                      (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), tCOLON2);
9450
0
                    }
9451
0
#line 9452 "mrbgems/mruby-compiler/core/y.tab.c"
9452
0
    break;
9453
9454
0
  case 413: /* method_call: "'super'" paren_args  */
9455
0
#line 3249 "mrbgems/mruby-compiler/core/parse.y"
9456
0
                    {
9457
0
                      (yyval.nd) = new_super(p, (yyvsp[0].nd));
9458
0
                    }
9459
0
#line 9460 "mrbgems/mruby-compiler/core/y.tab.c"
9460
0
    break;
9461
9462
0
  case 414: /* method_call: "'super'"  */
9463
0
#line 3253 "mrbgems/mruby-compiler/core/parse.y"
9464
0
                    {
9465
0
                      (yyval.nd) = new_zsuper(p);
9466
0
                    }
9467
0
#line 9468 "mrbgems/mruby-compiler/core/y.tab.c"
9468
0
    break;
9469
9470
0
  case 415: /* method_call: primary_value '[' opt_call_args ']'  */
9471
0
#line 3257 "mrbgems/mruby-compiler/core/parse.y"
9472
0
                    {
9473
0
                      (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.');
9474
0
                    }
9475
0
#line 9476 "mrbgems/mruby-compiler/core/y.tab.c"
9476
0
    break;
9477
9478
0
  case 416: /* @27: %empty  */
9479
0
#line 3263 "mrbgems/mruby-compiler/core/parse.y"
9480
0
                    {
9481
0
                      local_nest(p);
9482
0
                      nvars_nest(p);
9483
0
                      (yyval.num) = p->lineno;
9484
0
                    }
9485
0
#line 9486 "mrbgems/mruby-compiler/core/y.tab.c"
9486
0
    break;
9487
9488
0
  case 417: /* brace_block: '{' @27 opt_block_param compstmt '}'  */
9489
0
#line 3270 "mrbgems/mruby-compiler/core/parse.y"
9490
0
                    {
9491
0
                      (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd));
9492
0
                      SET_LINENO((yyval.nd), (yyvsp[-3].num));
9493
0
                      local_unnest(p);
9494
0
                      nvars_unnest(p);
9495
0
                    }
9496
0
#line 9497 "mrbgems/mruby-compiler/core/y.tab.c"
9497
0
    break;
9498
9499
0
  case 418: /* @28: %empty  */
9500
0
#line 3277 "mrbgems/mruby-compiler/core/parse.y"
9501
0
                    {
9502
0
                      local_nest(p);
9503
0
                      nvars_nest(p);
9504
0
                      (yyval.num) = p->lineno;
9505
0
                    }
9506
0
#line 9507 "mrbgems/mruby-compiler/core/y.tab.c"
9507
0
    break;
9508
9509
0
  case 419: /* brace_block: "'do'" @28 opt_block_param bodystmt "'end'"  */
9510
0
#line 3284 "mrbgems/mruby-compiler/core/parse.y"
9511
0
                    {
9512
0
                      (yyval.nd) = new_block(p,(yyvsp[-2].nd),(yyvsp[-1].nd));
9513
0
                      SET_LINENO((yyval.nd), (yyvsp[-3].num));
9514
0
                      local_unnest(p);
9515
0
                      nvars_unnest(p);
9516
0
                    }
9517
0
#line 9518 "mrbgems/mruby-compiler/core/y.tab.c"
9518
0
    break;
9519
9520
0
  case 420: /* case_body: "'when'" args then compstmt cases  */
9521
0
#line 3295 "mrbgems/mruby-compiler/core/parse.y"
9522
0
                    {
9523
0
                      (yyval.nd) = cons(cons((yyvsp[-3].nd), (yyvsp[-1].nd)), (yyvsp[0].nd));
9524
0
                    }
9525
0
#line 9526 "mrbgems/mruby-compiler/core/y.tab.c"
9526
0
    break;
9527
9528
0
  case 421: /* cases: opt_else  */
9529
0
#line 3301 "mrbgems/mruby-compiler/core/parse.y"
9530
0
                    {
9531
0
                      if ((yyvsp[0].nd)) {
9532
0
                        (yyval.nd) = cons(cons(0, (yyvsp[0].nd)), 0);
9533
0
                      }
9534
0
                      else {
9535
0
                        (yyval.nd) = 0;
9536
0
                      }
9537
0
                    }
9538
0
#line 9539 "mrbgems/mruby-compiler/core/y.tab.c"
9539
0
    break;
9540
9541
0
  case 423: /* opt_rescue: "'rescue'" exc_list exc_var then compstmt opt_rescue  */
9542
0
#line 3315 "mrbgems/mruby-compiler/core/parse.y"
9543
0
                    {
9544
0
                      (yyval.nd) = list1(list3((yyvsp[-4].nd), (yyvsp[-3].nd), (yyvsp[-1].nd)));
9545
0
                      if ((yyvsp[0].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[0].nd));
9546
0
                    }
9547
0
#line 9548 "mrbgems/mruby-compiler/core/y.tab.c"
9548
0
    break;
9549
9550
0
  case 425: /* exc_list: arg  */
9551
0
#line 3323 "mrbgems/mruby-compiler/core/parse.y"
9552
0
                    {
9553
0
                        (yyval.nd) = list1((yyvsp[0].nd));
9554
0
                    }
9555
0
#line 9556 "mrbgems/mruby-compiler/core/y.tab.c"
9556
0
    break;
9557
9558
0
  case 428: /* exc_var: "=>" lhs  */
9559
0
#line 3331 "mrbgems/mruby-compiler/core/parse.y"
9560
0
                    {
9561
0
                      (yyval.nd) = (yyvsp[0].nd);
9562
0
                    }
9563
0
#line 9564 "mrbgems/mruby-compiler/core/y.tab.c"
9564
0
    break;
9565
9566
0
  case 430: /* opt_ensure: "'ensure'" compstmt  */
9567
0
#line 3338 "mrbgems/mruby-compiler/core/parse.y"
9568
0
                    {
9569
0
                      (yyval.nd) = (yyvsp[0].nd);
9570
0
                    }
9571
0
#line 9572 "mrbgems/mruby-compiler/core/y.tab.c"
9572
0
    break;
9573
9574
0
  case 437: /* string: string string_fragment  */
9575
0
#line 3352 "mrbgems/mruby-compiler/core/parse.y"
9576
0
                    {
9577
0
                      (yyval.nd) = concat_string(p, (yyvsp[-1].nd), (yyvsp[0].nd));
9578
0
                    }
9579
0
#line 9580 "mrbgems/mruby-compiler/core/y.tab.c"
9580
0
    break;
9581
9582
300k
  case 440: /* string_fragment: "string literal" tSTRING  */
9583
300k
#line 3360 "mrbgems/mruby-compiler/core/parse.y"
9584
300k
                    {
9585
300k
                      (yyval.nd) = (yyvsp[0].nd);
9586
300k
                    }
9587
300k
#line 9588 "mrbgems/mruby-compiler/core/y.tab.c"
9588
300k
    break;
9589
9590
0
  case 441: /* string_fragment: "string literal" string_rep tSTRING  */
9591
0
#line 3364 "mrbgems/mruby-compiler/core/parse.y"
9592
0
                    {
9593
0
                      node *n = (yyvsp[-1].nd);
9594
0
                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
9595
0
                        n = push(n, (yyvsp[0].nd));
9596
0
                      }
9597
0
                      else {
9598
0
                        cons_free((yyvsp[0].nd));
9599
0
                      }
9600
0
                      (yyval.nd) = new_dstr(p, n);
9601
0
                    }
9602
0
#line 9603 "mrbgems/mruby-compiler/core/y.tab.c"
9603
0
    break;
9604
9605
0
  case 443: /* string_rep: string_rep string_interp  */
9606
0
#line 3378 "mrbgems/mruby-compiler/core/parse.y"
9607
0
                    {
9608
0
                      (yyval.nd) = append((yyvsp[-1].nd), (yyvsp[0].nd));
9609
0
                    }
9610
0
#line 9611 "mrbgems/mruby-compiler/core/y.tab.c"
9611
0
    break;
9612
9613
0
  case 444: /* string_interp: tSTRING_MID  */
9614
0
#line 3384 "mrbgems/mruby-compiler/core/parse.y"
9615
0
                    {
9616
0
                      (yyval.nd) = list1((yyvsp[0].nd));
9617
0
                    }
9618
0
#line 9619 "mrbgems/mruby-compiler/core/y.tab.c"
9619
0
    break;
9620
9621
0
  case 445: /* @29: %empty  */
9622
0
#line 3388 "mrbgems/mruby-compiler/core/parse.y"
9623
0
                    {
9624
0
                      (yyval.nd) = push_strterm(p);
9625
0
                    }
9626
0
#line 9627 "mrbgems/mruby-compiler/core/y.tab.c"
9627
0
    break;
9628
9629
0
  case 446: /* string_interp: tSTRING_PART @29 compstmt '}'  */
9630
0
#line 3393 "mrbgems/mruby-compiler/core/parse.y"
9631
0
                    {
9632
0
                      pop_strterm(p,(yyvsp[-2].nd));
9633
0
                      (yyval.nd) = list2((yyvsp[-3].nd), (yyvsp[-1].nd));
9634
0
                    }
9635
0
#line 9636 "mrbgems/mruby-compiler/core/y.tab.c"
9636
0
    break;
9637
9638
0
  case 447: /* string_interp: tLITERAL_DELIM  */
9639
0
#line 3398 "mrbgems/mruby-compiler/core/parse.y"
9640
0
                    {
9641
0
                      (yyval.nd) = list1(new_literal_delim(p));
9642
0
                    }
9643
0
#line 9644 "mrbgems/mruby-compiler/core/y.tab.c"
9644
0
    break;
9645
9646
0
  case 448: /* string_interp: tHD_LITERAL_DELIM heredoc_bodies  */
9647
0
#line 3402 "mrbgems/mruby-compiler/core/parse.y"
9648
0
                    {
9649
0
                      (yyval.nd) = list1(new_literal_delim(p));
9650
0
                    }
9651
0
#line 9652 "mrbgems/mruby-compiler/core/y.tab.c"
9652
0
    break;
9653
9654
0
  case 449: /* xstring: tXSTRING_BEG tXSTRING  */
9655
0
#line 3408 "mrbgems/mruby-compiler/core/parse.y"
9656
0
                    {
9657
0
                        (yyval.nd) = (yyvsp[0].nd);
9658
0
                    }
9659
0
#line 9660 "mrbgems/mruby-compiler/core/y.tab.c"
9660
0
    break;
9661
9662
0
  case 450: /* xstring: tXSTRING_BEG string_rep tXSTRING  */
9663
0
#line 3412 "mrbgems/mruby-compiler/core/parse.y"
9664
0
                    {
9665
0
                      node *n = (yyvsp[-1].nd);
9666
0
                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
9667
0
                        n = push(n, (yyvsp[0].nd));
9668
0
                      }
9669
0
                      else {
9670
0
                        cons_free((yyvsp[0].nd));
9671
0
                      }
9672
0
                      (yyval.nd) = new_dxstr(p, n);
9673
0
                    }
9674
0
#line 9675 "mrbgems/mruby-compiler/core/y.tab.c"
9675
0
    break;
9676
9677
0
  case 451: /* regexp: tREGEXP_BEG tREGEXP  */
9678
0
#line 3425 "mrbgems/mruby-compiler/core/parse.y"
9679
0
                    {
9680
0
                        (yyval.nd) = (yyvsp[0].nd);
9681
0
                    }
9682
0
#line 9683 "mrbgems/mruby-compiler/core/y.tab.c"
9683
0
    break;
9684
9685
0
  case 452: /* regexp: tREGEXP_BEG string_rep tREGEXP  */
9686
0
#line 3429 "mrbgems/mruby-compiler/core/parse.y"
9687
0
                    {
9688
0
                      (yyval.nd) = new_dregx(p, (yyvsp[-1].nd), (yyvsp[0].nd));
9689
0
                    }
9690
0
#line 9691 "mrbgems/mruby-compiler/core/y.tab.c"
9691
0
    break;
9692
9693
0
  case 456: /* heredoc_body: tHEREDOC_END  */
9694
0
#line 3442 "mrbgems/mruby-compiler/core/parse.y"
9695
0
                    {
9696
0
                      parser_heredoc_info *info = parsing_heredoc_info(p);
9697
0
                      info->doc = push(info->doc, new_str(p, "", 0));
9698
0
                      heredoc_end(p);
9699
0
                    }
9700
0
#line 9701 "mrbgems/mruby-compiler/core/y.tab.c"
9701
0
    break;
9702
9703
0
  case 457: /* heredoc_body: heredoc_string_rep tHEREDOC_END  */
9704
0
#line 3448 "mrbgems/mruby-compiler/core/parse.y"
9705
0
                    {
9706
0
                      heredoc_end(p);
9707
0
                    }
9708
0
#line 9709 "mrbgems/mruby-compiler/core/y.tab.c"
9709
0
    break;
9710
9711
0
  case 460: /* heredoc_string_interp: tHD_STRING_MID  */
9712
0
#line 3458 "mrbgems/mruby-compiler/core/parse.y"
9713
0
                    {
9714
0
                      parser_heredoc_info *info = parsing_heredoc_info(p);
9715
0
                      info->doc = push(info->doc, (yyvsp[0].nd));
9716
0
                      heredoc_treat_nextline(p);
9717
0
                    }
9718
0
#line 9719 "mrbgems/mruby-compiler/core/y.tab.c"
9719
0
    break;
9720
9721
0
  case 461: /* @30: %empty  */
9722
0
#line 3464 "mrbgems/mruby-compiler/core/parse.y"
9723
0
                    {
9724
0
                      (yyval.nd) = push_strterm(p);
9725
0
                    }
9726
0
#line 9727 "mrbgems/mruby-compiler/core/y.tab.c"
9727
0
    break;
9728
9729
0
  case 462: /* heredoc_string_interp: tHD_STRING_PART @30 compstmt '}'  */
9730
0
#line 3469 "mrbgems/mruby-compiler/core/parse.y"
9731
0
                    {
9732
0
                      pop_strterm(p, (yyvsp[-2].nd));
9733
0
                      parser_heredoc_info *info = parsing_heredoc_info(p);
9734
0
                      info->doc = push(push(info->doc, (yyvsp[-3].nd)), (yyvsp[-1].nd));
9735
0
                    }
9736
0
#line 9737 "mrbgems/mruby-compiler/core/y.tab.c"
9737
0
    break;
9738
9739
0
  case 463: /* words: tWORDS_BEG tSTRING  */
9740
0
#line 3477 "mrbgems/mruby-compiler/core/parse.y"
9741
0
                    {
9742
0
                      (yyval.nd) = new_words(p, list1((yyvsp[0].nd)));
9743
0
                    }
9744
0
#line 9745 "mrbgems/mruby-compiler/core/y.tab.c"
9745
0
    break;
9746
9747
0
  case 464: /* words: tWORDS_BEG string_rep tSTRING  */
9748
0
#line 3481 "mrbgems/mruby-compiler/core/parse.y"
9749
0
                    {
9750
0
                      node *n = (yyvsp[-1].nd);
9751
0
                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
9752
0
                        n = push(n, (yyvsp[0].nd));
9753
0
                      }
9754
0
                      else {
9755
0
                        cons_free((yyvsp[0].nd));
9756
0
                      }
9757
0
                      (yyval.nd) = new_words(p, n);
9758
0
                    }
9759
0
#line 9760 "mrbgems/mruby-compiler/core/y.tab.c"
9760
0
    break;
9761
9762
0
  case 465: /* symbol: basic_symbol  */
9763
0
#line 3495 "mrbgems/mruby-compiler/core/parse.y"
9764
0
                    {
9765
0
                      (yyval.nd) = new_sym(p, (yyvsp[0].id));
9766
0
                    }
9767
0
#line 9768 "mrbgems/mruby-compiler/core/y.tab.c"
9768
0
    break;
9769
9770
0
  case 466: /* symbol: "symbol" "string literal" string_rep tSTRING  */
9771
0
#line 3499 "mrbgems/mruby-compiler/core/parse.y"
9772
0
                    {
9773
0
                      node *n = (yyvsp[-1].nd);
9774
0
                      p->lstate = EXPR_ENDARG;
9775
0
                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
9776
0
                        n = push(n, (yyvsp[0].nd));
9777
0
                      }
9778
0
                      else {
9779
0
                        cons_free((yyvsp[0].nd));
9780
0
                      }
9781
0
                      (yyval.nd) = new_dsym(p, new_dstr(p, n));
9782
0
                    }
9783
0
#line 9784 "mrbgems/mruby-compiler/core/y.tab.c"
9784
0
    break;
9785
9786
0
  case 467: /* symbol: "symbol" "numbered parameter"  */
9787
0
#line 3511 "mrbgems/mruby-compiler/core/parse.y"
9788
0
                    {
9789
0
                      mrb_sym sym = intern_numparam((yyvsp[0].num));
9790
0
                      (yyval.nd) = new_sym(p, sym);
9791
0
                    }
9792
0
#line 9793 "mrbgems/mruby-compiler/core/y.tab.c"
9793
0
    break;
9794
9795
0
  case 468: /* basic_symbol: "symbol" sym  */
9796
0
#line 3518 "mrbgems/mruby-compiler/core/parse.y"
9797
0
                    {
9798
0
                      p->lstate = EXPR_END;
9799
0
                      (yyval.id) = (yyvsp[0].id);
9800
0
                    }
9801
0
#line 9802 "mrbgems/mruby-compiler/core/y.tab.c"
9802
0
    break;
9803
9804
0
  case 473: /* sym: tSTRING  */
9805
0
#line 3529 "mrbgems/mruby-compiler/core/parse.y"
9806
0
                    {
9807
0
                      (yyval.id) = new_strsym(p, (yyvsp[0].nd));
9808
0
                    }
9809
0
#line 9810 "mrbgems/mruby-compiler/core/y.tab.c"
9810
0
    break;
9811
9812
0
  case 474: /* sym: "string literal" tSTRING  */
9813
0
#line 3533 "mrbgems/mruby-compiler/core/parse.y"
9814
0
                    {
9815
0
                      (yyval.id) = new_strsym(p, (yyvsp[0].nd));
9816
0
                    }
9817
0
#line 9818 "mrbgems/mruby-compiler/core/y.tab.c"
9818
0
    break;
9819
9820
0
  case 475: /* symbols: tSYMBOLS_BEG tSTRING  */
9821
0
#line 3539 "mrbgems/mruby-compiler/core/parse.y"
9822
0
                    {
9823
0
                      (yyval.nd) = new_symbols(p, list1((yyvsp[0].nd)));
9824
0
                    }
9825
0
#line 9826 "mrbgems/mruby-compiler/core/y.tab.c"
9826
0
    break;
9827
9828
0
  case 476: /* symbols: tSYMBOLS_BEG string_rep tSTRING  */
9829
0
#line 3543 "mrbgems/mruby-compiler/core/parse.y"
9830
0
                    {
9831
0
                      node *n = (yyvsp[-1].nd);
9832
0
                      if (intn((yyvsp[0].nd)->cdr->cdr) > 0) {
9833
0
                        n = push(n, (yyvsp[0].nd));
9834
0
                      }
9835
0
                      (yyval.nd) = new_symbols(p, n);
9836
0
                    }
9837
0
#line 9838 "mrbgems/mruby-compiler/core/y.tab.c"
9838
0
    break;
9839
9840
0
  case 479: /* numeric: tUMINUS_NUM "integer literal"  */
9841
0
#line 3555 "mrbgems/mruby-compiler/core/parse.y"
9842
0
                    {
9843
0
                      (yyval.nd) = new_negate(p, (yyvsp[0].nd));
9844
0
                    }
9845
0
#line 9846 "mrbgems/mruby-compiler/core/y.tab.c"
9846
0
    break;
9847
9848
0
  case 480: /* numeric: tUMINUS_NUM "float literal"  */
9849
0
#line 3559 "mrbgems/mruby-compiler/core/parse.y"
9850
0
                    {
9851
0
                      (yyval.nd) = new_negate(p, (yyvsp[0].nd));
9852
0
                    }
9853
0
#line 9854 "mrbgems/mruby-compiler/core/y.tab.c"
9854
0
    break;
9855
9856
50.7k
  case 481: /* variable: "local variable or method"  */
9857
50.7k
#line 3565 "mrbgems/mruby-compiler/core/parse.y"
9858
50.7k
                    {
9859
50.7k
                      (yyval.nd) = new_lvar(p, (yyvsp[0].id));
9860
50.7k
                    }
9861
50.7k
#line 9862 "mrbgems/mruby-compiler/core/y.tab.c"
9862
50.7k
    break;
9863
9864
6.41k
  case 482: /* variable: "instance variable"  */
9865
6.41k
#line 3569 "mrbgems/mruby-compiler/core/parse.y"
9866
6.41k
                    {
9867
6.41k
                      (yyval.nd) = new_ivar(p, (yyvsp[0].id));
9868
6.41k
                    }
9869
6.41k
#line 9870 "mrbgems/mruby-compiler/core/y.tab.c"
9870
6.41k
    break;
9871
9872
0
  case 483: /* variable: "global variable"  */
9873
0
#line 3573 "mrbgems/mruby-compiler/core/parse.y"
9874
0
                    {
9875
0
                      (yyval.nd) = new_gvar(p, (yyvsp[0].id));
9876
0
                    }
9877
0
#line 9878 "mrbgems/mruby-compiler/core/y.tab.c"
9878
0
    break;
9879
9880
0
  case 484: /* variable: "class variable"  */
9881
0
#line 3577 "mrbgems/mruby-compiler/core/parse.y"
9882
0
                    {
9883
0
                      (yyval.nd) = new_cvar(p, (yyvsp[0].id));
9884
0
                    }
9885
0
#line 9886 "mrbgems/mruby-compiler/core/y.tab.c"
9886
0
    break;
9887
9888
3.36k
  case 485: /* variable: "constant"  */
9889
3.36k
#line 3581 "mrbgems/mruby-compiler/core/parse.y"
9890
3.36k
                    {
9891
3.36k
                      (yyval.nd) = new_const(p, (yyvsp[0].id));
9892
3.36k
                    }
9893
3.36k
#line 9894 "mrbgems/mruby-compiler/core/y.tab.c"
9894
3.36k
    break;
9895
9896
6.41k
  case 486: /* var_lhs: variable  */
9897
6.41k
#line 3587 "mrbgems/mruby-compiler/core/parse.y"
9898
6.41k
                    {
9899
6.41k
                      assignable(p, (yyvsp[0].nd));
9900
6.41k
                    }
9901
6.41k
#line 9902 "mrbgems/mruby-compiler/core/y.tab.c"
9902
6.41k
    break;
9903
9904
0
  case 487: /* var_lhs: "numbered parameter"  */
9905
0
#line 3591 "mrbgems/mruby-compiler/core/parse.y"
9906
0
                    {
9907
0
                      yyerror(&(yylsp[0]), p, "can't assign to numbered parameter");
9908
0
                    }
9909
0
#line 9910 "mrbgems/mruby-compiler/core/y.tab.c"
9910
0
    break;
9911
9912
19.4k
  case 488: /* var_ref: variable  */
9913
19.4k
#line 3597 "mrbgems/mruby-compiler/core/parse.y"
9914
19.4k
                    {
9915
19.4k
                      (yyval.nd) = var_reference(p, (yyvsp[0].nd));
9916
19.4k
                    }
9917
19.4k
#line 9918 "mrbgems/mruby-compiler/core/y.tab.c"
9918
19.4k
    break;
9919
9920
0
  case 489: /* var_ref: "numbered parameter"  */
9921
0
#line 3601 "mrbgems/mruby-compiler/core/parse.y"
9922
0
                    {
9923
0
                      (yyval.nd) = new_nvar(p, (yyvsp[0].num));
9924
0
                    }
9925
0
#line 9926 "mrbgems/mruby-compiler/core/y.tab.c"
9926
0
    break;
9927
9928
0
  case 490: /* var_ref: "'nil'"  */
9929
0
#line 3605 "mrbgems/mruby-compiler/core/parse.y"
9930
0
                    {
9931
0
                      (yyval.nd) = new_nil(p);
9932
0
                    }
9933
0
#line 9934 "mrbgems/mruby-compiler/core/y.tab.c"
9934
0
    break;
9935
9936
0
  case 491: /* var_ref: "'self'"  */
9937
0
#line 3609 "mrbgems/mruby-compiler/core/parse.y"
9938
0
                    {
9939
0
                      (yyval.nd) = new_self(p);
9940
0
                    }
9941
0
#line 9942 "mrbgems/mruby-compiler/core/y.tab.c"
9942
0
    break;
9943
9944
0
  case 492: /* var_ref: "'true'"  */
9945
0
#line 3613 "mrbgems/mruby-compiler/core/parse.y"
9946
0
                    {
9947
0
                      (yyval.nd) = new_true(p);
9948
0
                    }
9949
0
#line 9950 "mrbgems/mruby-compiler/core/y.tab.c"
9950
0
    break;
9951
9952
0
  case 493: /* var_ref: "'false'"  */
9953
0
#line 3617 "mrbgems/mruby-compiler/core/parse.y"
9954
0
                    {
9955
0
                      (yyval.nd) = new_false(p);
9956
0
                    }
9957
0
#line 9958 "mrbgems/mruby-compiler/core/y.tab.c"
9958
0
    break;
9959
9960
0
  case 494: /* var_ref: "'__FILE__'"  */
9961
0
#line 3621 "mrbgems/mruby-compiler/core/parse.y"
9962
0
                    {
9963
0
                      const char *fn = mrb_sym_name_len(p->mrb, p->filename_sym, NULL);
9964
0
                      if (!fn) {
9965
0
                        fn = "(null)";
9966
0
                      }
9967
0
                      (yyval.nd) = new_str(p, fn, strlen(fn));
9968
0
                    }
9969
0
#line 9970 "mrbgems/mruby-compiler/core/y.tab.c"
9970
0
    break;
9971
9972
0
  case 495: /* var_ref: "'__LINE__'"  */
9973
0
#line 3629 "mrbgems/mruby-compiler/core/parse.y"
9974
0
                    {
9975
0
                      char buf[16];
9976
9977
0
                      dump_int(p->lineno, buf);
9978
0
                      (yyval.nd) = new_int(p, buf, 10, 0);
9979
0
                    }
9980
0
#line 9981 "mrbgems/mruby-compiler/core/y.tab.c"
9981
0
    break;
9982
9983
0
  case 496: /* var_ref: "'__ENCODING__'"  */
9984
0
#line 3636 "mrbgems/mruby-compiler/core/parse.y"
9985
0
                    {
9986
0
                      (yyval.nd) = new_fcall(p, MRB_SYM_2(p->mrb, __ENCODING__), 0);
9987
0
                    }
9988
0
#line 9989 "mrbgems/mruby-compiler/core/y.tab.c"
9989
0
    break;
9990
9991
0
  case 499: /* superclass: %empty  */
9992
0
#line 3646 "mrbgems/mruby-compiler/core/parse.y"
9993
0
                    {
9994
0
                      (yyval.nd) = 0;
9995
0
                    }
9996
0
#line 9997 "mrbgems/mruby-compiler/core/y.tab.c"
9997
0
    break;
9998
9999
0
  case 500: /* $@31: %empty  */
10000
0
#line 3650 "mrbgems/mruby-compiler/core/parse.y"
10001
0
                    {
10002
0
                      p->lstate = EXPR_BEG;
10003
0
                      p->cmd_start = TRUE;
10004
0
                    }
10005
0
#line 10006 "mrbgems/mruby-compiler/core/y.tab.c"
10006
0
    break;
10007
10008
0
  case 501: /* superclass: '<' $@31 expr_value term  */
10009
0
#line 3655 "mrbgems/mruby-compiler/core/parse.y"
10010
0
                    {
10011
0
                      (yyval.nd) = (yyvsp[-1].nd);
10012
0
                    }
10013
0
#line 10014 "mrbgems/mruby-compiler/core/y.tab.c"
10014
0
    break;
10015
10016
103
  case 504: /* f_arglist_paren: '(' f_args rparen  */
10017
103
#line 3671 "mrbgems/mruby-compiler/core/parse.y"
10018
103
                    {
10019
103
                      (yyval.nd) = (yyvsp[-1].nd);
10020
103
                      p->lstate = EXPR_BEG;
10021
103
                      p->cmd_start = TRUE;
10022
103
                    }
10023
103
#line 10024 "mrbgems/mruby-compiler/core/y.tab.c"
10024
103
    break;
10025
10026
0
  case 505: /* f_arglist_paren: '(' f_arg ',' tBDOT3 rparen  */
10027
0
#line 3677 "mrbgems/mruby-compiler/core/parse.y"
10028
0
                    {
10029
0
                      (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd));
10030
0
                    }
10031
0
#line 10032 "mrbgems/mruby-compiler/core/y.tab.c"
10032
0
    break;
10033
10034
0
  case 506: /* f_arglist_paren: '(' tBDOT3 rparen  */
10035
0
#line 3681 "mrbgems/mruby-compiler/core/parse.y"
10036
0
                    {
10037
0
                      (yyval.nd) = new_args_dots(p, 0);
10038
0
                    }
10039
0
#line 10040 "mrbgems/mruby-compiler/core/y.tab.c"
10040
0
    break;
10041
10042
0
  case 508: /* f_arglist: f_args term  */
10043
0
#line 3688 "mrbgems/mruby-compiler/core/parse.y"
10044
0
                    {
10045
0
                      (yyval.nd) = (yyvsp[-1].nd);
10046
0
                    }
10047
0
#line 10048 "mrbgems/mruby-compiler/core/y.tab.c"
10048
0
    break;
10049
10050
0
  case 509: /* f_arglist: f_arg ',' tBDOT3 term  */
10051
0
#line 3692 "mrbgems/mruby-compiler/core/parse.y"
10052
0
                    {
10053
0
                      (yyval.nd) = new_args_dots(p, (yyvsp[-3].nd));
10054
0
                    }
10055
0
#line 10056 "mrbgems/mruby-compiler/core/y.tab.c"
10056
0
    break;
10057
10058
0
  case 510: /* f_arglist: "..." term  */
10059
0
#line 3696 "mrbgems/mruby-compiler/core/parse.y"
10060
0
                    {
10061
0
                      (yyval.nd) = new_args_dots(p, 0);
10062
0
                    }
10063
0
#line 10064 "mrbgems/mruby-compiler/core/y.tab.c"
10064
0
    break;
10065
10066
0
  case 511: /* f_label: "local variable or method" "label"  */
10067
0
#line 3702 "mrbgems/mruby-compiler/core/parse.y"
10068
0
                    {
10069
0
                      local_nest(p);
10070
0
                    }
10071
0
#line 10072 "mrbgems/mruby-compiler/core/y.tab.c"
10072
0
    break;
10073
10074
0
  case 512: /* f_label: "numbered parameter" "label"  */
10075
0
#line 3706 "mrbgems/mruby-compiler/core/parse.y"
10076
0
                    {
10077
0
                      local_nest(p);
10078
0
                    }
10079
0
#line 10080 "mrbgems/mruby-compiler/core/y.tab.c"
10080
0
    break;
10081
10082
0
  case 513: /* f_kw: f_label arg  */
10083
0
#line 3712 "mrbgems/mruby-compiler/core/parse.y"
10084
0
                    {
10085
0
                      void_expr_error(p, (yyvsp[0].nd));
10086
0
                      (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p)));
10087
0
                      local_unnest(p);
10088
0
                    }
10089
0
#line 10090 "mrbgems/mruby-compiler/core/y.tab.c"
10090
0
    break;
10091
10092
0
  case 514: /* f_kw: f_label  */
10093
0
#line 3718 "mrbgems/mruby-compiler/core/parse.y"
10094
0
                    {
10095
0
                      (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0);
10096
0
                      local_unnest(p);
10097
0
                    }
10098
0
#line 10099 "mrbgems/mruby-compiler/core/y.tab.c"
10099
0
    break;
10100
10101
0
  case 515: /* f_block_kw: f_label primary_value  */
10102
0
#line 3725 "mrbgems/mruby-compiler/core/parse.y"
10103
0
                    {
10104
0
                      void_expr_error(p, (yyvsp[0].nd));
10105
0
                      (yyval.nd) = new_kw_arg(p, (yyvsp[-1].id), cons((yyvsp[0].nd), locals_node(p)));
10106
0
                      local_unnest(p);
10107
0
                    }
10108
0
#line 10109 "mrbgems/mruby-compiler/core/y.tab.c"
10109
0
    break;
10110
10111
0
  case 516: /* f_block_kw: f_label  */
10112
0
#line 3731 "mrbgems/mruby-compiler/core/parse.y"
10113
0
                    {
10114
0
                      (yyval.nd) = new_kw_arg(p, (yyvsp[0].id), 0);
10115
0
                      local_unnest(p);
10116
0
                    }
10117
0
#line 10118 "mrbgems/mruby-compiler/core/y.tab.c"
10118
0
    break;
10119
10120
0
  case 517: /* f_block_kwarg: f_block_kw  */
10121
0
#line 3738 "mrbgems/mruby-compiler/core/parse.y"
10122
0
                    {
10123
0
                      (yyval.nd) = list1((yyvsp[0].nd));
10124
0
                    }
10125
0
#line 10126 "mrbgems/mruby-compiler/core/y.tab.c"
10126
0
    break;
10127
10128
0
  case 518: /* f_block_kwarg: f_block_kwarg ',' f_block_kw  */
10129
0
#line 3742 "mrbgems/mruby-compiler/core/parse.y"
10130
0
                    {
10131
0
                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
10132
0
                    }
10133
0
#line 10134 "mrbgems/mruby-compiler/core/y.tab.c"
10134
0
    break;
10135
10136
0
  case 519: /* f_kwarg: f_kw  */
10137
0
#line 3748 "mrbgems/mruby-compiler/core/parse.y"
10138
0
                    {
10139
0
                      (yyval.nd) = list1((yyvsp[0].nd));
10140
0
                    }
10141
0
#line 10142 "mrbgems/mruby-compiler/core/y.tab.c"
10142
0
    break;
10143
10144
0
  case 520: /* f_kwarg: f_kwarg ',' f_kw  */
10145
0
#line 3752 "mrbgems/mruby-compiler/core/parse.y"
10146
0
                    {
10147
0
                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
10148
0
                    }
10149
0
#line 10150 "mrbgems/mruby-compiler/core/y.tab.c"
10150
0
    break;
10151
10152
0
  case 523: /* f_kwrest: kwrest_mark "local variable or method"  */
10153
0
#line 3762 "mrbgems/mruby-compiler/core/parse.y"
10154
0
                    {
10155
0
                      (yyval.nd) = new_kw_rest_args(p, (yyvsp[0].id));
10156
0
                    }
10157
0
#line 10158 "mrbgems/mruby-compiler/core/y.tab.c"
10158
0
    break;
10159
10160
0
  case 524: /* f_kwrest: kwrest_mark  */
10161
0
#line 3766 "mrbgems/mruby-compiler/core/parse.y"
10162
0
                    {
10163
0
                      (yyval.nd) = new_kw_rest_args(p, 0);
10164
0
                    }
10165
0
#line 10166 "mrbgems/mruby-compiler/core/y.tab.c"
10166
0
    break;
10167
10168
0
  case 525: /* args_tail: f_kwarg ',' f_kwrest opt_f_block_arg  */
10169
0
#line 3772 "mrbgems/mruby-compiler/core/parse.y"
10170
0
                    {
10171
0
                      (yyval.nd) = new_args_tail(p, (yyvsp[-3].nd), (yyvsp[-1].nd), (yyvsp[0].id));
10172
0
                    }
10173
0
#line 10174 "mrbgems/mruby-compiler/core/y.tab.c"
10174
0
    break;
10175
10176
0
  case 526: /* args_tail: f_kwarg opt_f_block_arg  */
10177
0
#line 3776 "mrbgems/mruby-compiler/core/parse.y"
10178
0
                    {
10179
0
                      (yyval.nd) = new_args_tail(p, (yyvsp[-1].nd), 0, (yyvsp[0].id));
10180
0
                    }
10181
0
#line 10182 "mrbgems/mruby-compiler/core/y.tab.c"
10182
0
    break;
10183
10184
0
  case 527: /* args_tail: f_kwrest opt_f_block_arg  */
10185
0
#line 3780 "mrbgems/mruby-compiler/core/parse.y"
10186
0
                    {
10187
0
                      (yyval.nd) = new_args_tail(p, 0, (yyvsp[-1].nd), (yyvsp[0].id));
10188
0
                    }
10189
0
#line 10190 "mrbgems/mruby-compiler/core/y.tab.c"
10190
0
    break;
10191
10192
0
  case 528: /* args_tail: f_block_arg  */
10193
0
#line 3784 "mrbgems/mruby-compiler/core/parse.y"
10194
0
                    {
10195
0
                      (yyval.nd) = new_args_tail(p, 0, 0, (yyvsp[0].id));
10196
0
                    }
10197
0
#line 10198 "mrbgems/mruby-compiler/core/y.tab.c"
10198
0
    break;
10199
10200
0
  case 529: /* opt_args_tail: ',' args_tail  */
10201
0
#line 3790 "mrbgems/mruby-compiler/core/parse.y"
10202
0
                    {
10203
0
                      (yyval.nd) = (yyvsp[0].nd);
10204
0
                    }
10205
0
#line 10206 "mrbgems/mruby-compiler/core/y.tab.c"
10206
0
    break;
10207
10208
0
  case 530: /* opt_args_tail: %empty  */
10209
0
#line 3794 "mrbgems/mruby-compiler/core/parse.y"
10210
0
                    {
10211
0
                      (yyval.nd) = new_args_tail(p, 0, 0, 0);
10212
0
                    }
10213
0
#line 10214 "mrbgems/mruby-compiler/core/y.tab.c"
10214
0
    break;
10215
10216
0
  case 531: /* f_args: f_arg ',' f_optarg ',' f_rest_arg opt_args_tail  */
10217
0
#line 3800 "mrbgems/mruby-compiler/core/parse.y"
10218
0
                    {
10219
0
                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd));
10220
0
                    }
10221
0
#line 10222 "mrbgems/mruby-compiler/core/y.tab.c"
10222
0
    break;
10223
10224
0
  case 532: /* f_args: f_arg ',' f_optarg ',' f_rest_arg ',' f_arg opt_args_tail  */
10225
0
#line 3804 "mrbgems/mruby-compiler/core/parse.y"
10226
0
                    {
10227
0
                      (yyval.nd) = new_args(p, (yyvsp[-7].nd), (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
10228
0
                    }
10229
0
#line 10230 "mrbgems/mruby-compiler/core/y.tab.c"
10230
0
    break;
10231
10232
0
  case 533: /* f_args: f_arg ',' f_optarg opt_args_tail  */
10233
0
#line 3808 "mrbgems/mruby-compiler/core/parse.y"
10234
0
                    {
10235
0
                      (yyval.nd) = new_args(p, (yyvsp[-3].nd), (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd));
10236
0
                    }
10237
0
#line 10238 "mrbgems/mruby-compiler/core/y.tab.c"
10238
0
    break;
10239
10240
0
  case 534: /* f_args: f_arg ',' f_optarg ',' f_arg opt_args_tail  */
10241
0
#line 3812 "mrbgems/mruby-compiler/core/parse.y"
10242
0
                    {
10243
0
                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd));
10244
0
                    }
10245
0
#line 10246 "mrbgems/mruby-compiler/core/y.tab.c"
10246
0
    break;
10247
10248
0
  case 535: /* f_args: f_arg ',' f_rest_arg opt_args_tail  */
10249
0
#line 3816 "mrbgems/mruby-compiler/core/parse.y"
10250
0
                    {
10251
0
                      (yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, (yyvsp[-1].id), 0, (yyvsp[0].nd));
10252
0
                    }
10253
0
#line 10254 "mrbgems/mruby-compiler/core/y.tab.c"
10254
0
    break;
10255
10256
0
  case 536: /* f_args: f_arg ',' f_rest_arg ',' f_arg opt_args_tail  */
10257
0
#line 3820 "mrbgems/mruby-compiler/core/parse.y"
10258
0
                    {
10259
0
                      (yyval.nd) = new_args(p, (yyvsp[-5].nd), 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
10260
0
                    }
10261
0
#line 10262 "mrbgems/mruby-compiler/core/y.tab.c"
10262
0
    break;
10263
10264
0
  case 537: /* f_args: f_arg opt_args_tail  */
10265
0
#line 3824 "mrbgems/mruby-compiler/core/parse.y"
10266
0
                    {
10267
0
                      (yyval.nd) = new_args(p, (yyvsp[-1].nd), 0, 0, 0, (yyvsp[0].nd));
10268
0
                    }
10269
0
#line 10270 "mrbgems/mruby-compiler/core/y.tab.c"
10270
0
    break;
10271
10272
0
  case 538: /* f_args: f_optarg ',' f_rest_arg opt_args_tail  */
10273
0
#line 3828 "mrbgems/mruby-compiler/core/parse.y"
10274
0
                    {
10275
0
                      (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), (yyvsp[-1].id), 0, (yyvsp[0].nd));
10276
0
                    }
10277
0
#line 10278 "mrbgems/mruby-compiler/core/y.tab.c"
10278
0
    break;
10279
10280
0
  case 539: /* f_args: f_optarg ',' f_rest_arg ',' f_arg opt_args_tail  */
10281
0
#line 3832 "mrbgems/mruby-compiler/core/parse.y"
10282
0
                    {
10283
0
                      (yyval.nd) = new_args(p, 0, (yyvsp[-5].nd), (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
10284
0
                    }
10285
0
#line 10286 "mrbgems/mruby-compiler/core/y.tab.c"
10286
0
    break;
10287
10288
0
  case 540: /* f_args: f_optarg opt_args_tail  */
10289
0
#line 3836 "mrbgems/mruby-compiler/core/parse.y"
10290
0
                    {
10291
0
                      (yyval.nd) = new_args(p, 0, (yyvsp[-1].nd), 0, 0, (yyvsp[0].nd));
10292
0
                    }
10293
0
#line 10294 "mrbgems/mruby-compiler/core/y.tab.c"
10294
0
    break;
10295
10296
0
  case 541: /* f_args: f_optarg ',' f_arg opt_args_tail  */
10297
0
#line 3840 "mrbgems/mruby-compiler/core/parse.y"
10298
0
                    {
10299
0
                      (yyval.nd) = new_args(p, 0, (yyvsp[-3].nd), 0, (yyvsp[-1].nd), (yyvsp[0].nd));
10300
0
                    }
10301
0
#line 10302 "mrbgems/mruby-compiler/core/y.tab.c"
10302
0
    break;
10303
10304
0
  case 542: /* f_args: f_rest_arg opt_args_tail  */
10305
0
#line 3844 "mrbgems/mruby-compiler/core/parse.y"
10306
0
                    {
10307
0
                      (yyval.nd) = new_args(p, 0, 0, (yyvsp[-1].id), 0, (yyvsp[0].nd));
10308
0
                    }
10309
0
#line 10310 "mrbgems/mruby-compiler/core/y.tab.c"
10310
0
    break;
10311
10312
0
  case 543: /* f_args: f_rest_arg ',' f_arg opt_args_tail  */
10313
0
#line 3848 "mrbgems/mruby-compiler/core/parse.y"
10314
0
                    {
10315
0
                      (yyval.nd) = new_args(p, 0, 0, (yyvsp[-3].id), (yyvsp[-1].nd), (yyvsp[0].nd));
10316
0
                    }
10317
0
#line 10318 "mrbgems/mruby-compiler/core/y.tab.c"
10318
0
    break;
10319
10320
0
  case 544: /* f_args: args_tail  */
10321
0
#line 3852 "mrbgems/mruby-compiler/core/parse.y"
10322
0
                    {
10323
0
                      (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[0].nd));
10324
0
                    }
10325
0
#line 10326 "mrbgems/mruby-compiler/core/y.tab.c"
10326
0
    break;
10327
10328
103
  case 545: /* f_args: %empty  */
10329
103
#line 3856 "mrbgems/mruby-compiler/core/parse.y"
10330
103
                    {
10331
103
                      local_add_f(p, 0);
10332
103
                      (yyval.nd) = new_args(p, 0, 0, 0, 0, 0);
10333
103
                    }
10334
103
#line 10335 "mrbgems/mruby-compiler/core/y.tab.c"
10335
103
    break;
10336
10337
0
  case 546: /* f_bad_arg: "constant"  */
10338
0
#line 3863 "mrbgems/mruby-compiler/core/parse.y"
10339
0
                    {
10340
0
                      yyerror(&(yylsp[0]), p, "formal argument cannot be a constant");
10341
0
                      (yyval.nd) = 0;
10342
0
                    }
10343
0
#line 10344 "mrbgems/mruby-compiler/core/y.tab.c"
10344
0
    break;
10345
10346
0
  case 547: /* f_bad_arg: "instance variable"  */
10347
0
#line 3868 "mrbgems/mruby-compiler/core/parse.y"
10348
0
                    {
10349
0
                      yyerror(&(yylsp[0]), p, "formal argument cannot be an instance variable");
10350
0
                      (yyval.nd) = 0;
10351
0
                    }
10352
0
#line 10353 "mrbgems/mruby-compiler/core/y.tab.c"
10353
0
    break;
10354
10355
0
  case 548: /* f_bad_arg: "global variable"  */
10356
0
#line 3873 "mrbgems/mruby-compiler/core/parse.y"
10357
0
                    {
10358
0
                      yyerror(&(yylsp[0]), p, "formal argument cannot be a global variable");
10359
0
                      (yyval.nd) = 0;
10360
0
                    }
10361
0
#line 10362 "mrbgems/mruby-compiler/core/y.tab.c"
10362
0
    break;
10363
10364
0
  case 549: /* f_bad_arg: "class variable"  */
10365
0
#line 3878 "mrbgems/mruby-compiler/core/parse.y"
10366
0
                    {
10367
0
                      yyerror(&(yylsp[0]), p, "formal argument cannot be a class variable");
10368
0
                      (yyval.nd) = 0;
10369
0
                    }
10370
0
#line 10371 "mrbgems/mruby-compiler/core/y.tab.c"
10371
0
    break;
10372
10373
0
  case 550: /* f_bad_arg: "numbered parameter"  */
10374
0
#line 3883 "mrbgems/mruby-compiler/core/parse.y"
10375
0
                    {
10376
0
                      yyerror(&(yylsp[0]), p, "formal argument cannot be a numbered parameter");
10377
0
                      (yyval.nd) = 0;
10378
0
                    }
10379
0
#line 10380 "mrbgems/mruby-compiler/core/y.tab.c"
10380
0
    break;
10381
10382
0
  case 551: /* f_norm_arg: f_bad_arg  */
10383
0
#line 3890 "mrbgems/mruby-compiler/core/parse.y"
10384
0
                    {
10385
0
                      (yyval.id) = 0;
10386
0
                    }
10387
0
#line 10388 "mrbgems/mruby-compiler/core/y.tab.c"
10388
0
    break;
10389
10390
0
  case 552: /* f_norm_arg: "local variable or method"  */
10391
0
#line 3894 "mrbgems/mruby-compiler/core/parse.y"
10392
0
                    {
10393
0
                      local_add_f(p, (yyvsp[0].id));
10394
0
                      (yyval.id) = (yyvsp[0].id);
10395
0
                    }
10396
0
#line 10397 "mrbgems/mruby-compiler/core/y.tab.c"
10397
0
    break;
10398
10399
0
  case 553: /* f_arg_item: f_norm_arg  */
10400
0
#line 3901 "mrbgems/mruby-compiler/core/parse.y"
10401
0
                    {
10402
0
                      (yyval.nd) = new_arg(p, (yyvsp[0].id));
10403
0
                    }
10404
0
#line 10405 "mrbgems/mruby-compiler/core/y.tab.c"
10405
0
    break;
10406
10407
0
  case 554: /* @32: %empty  */
10408
0
#line 3905 "mrbgems/mruby-compiler/core/parse.y"
10409
0
                    {
10410
0
                      (yyval.nd) = local_switch(p);
10411
0
                    }
10412
0
#line 10413 "mrbgems/mruby-compiler/core/y.tab.c"
10413
0
    break;
10414
10415
0
  case 555: /* f_arg_item: tLPAREN @32 f_margs rparen  */
10416
0
#line 3909 "mrbgems/mruby-compiler/core/parse.y"
10417
0
                    {
10418
0
                      (yyval.nd) = new_masgn_param(p, (yyvsp[-1].nd), p->locals->car);
10419
0
                      local_resume(p, (yyvsp[-2].nd));
10420
0
                      local_add_f(p, 0);
10421
0
                    }
10422
0
#line 10423 "mrbgems/mruby-compiler/core/y.tab.c"
10423
0
    break;
10424
10425
0
  case 556: /* f_arg: f_arg_item  */
10426
0
#line 3917 "mrbgems/mruby-compiler/core/parse.y"
10427
0
                    {
10428
0
                      (yyval.nd) = list1((yyvsp[0].nd));
10429
0
                    }
10430
0
#line 10431 "mrbgems/mruby-compiler/core/y.tab.c"
10431
0
    break;
10432
10433
0
  case 557: /* f_arg: f_arg ',' f_arg_item  */
10434
0
#line 3921 "mrbgems/mruby-compiler/core/parse.y"
10435
0
                    {
10436
0
                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
10437
0
                    }
10438
0
#line 10439 "mrbgems/mruby-compiler/core/y.tab.c"
10439
0
    break;
10440
10441
0
  case 558: /* f_opt_asgn: "local variable or method" '='  */
10442
0
#line 3927 "mrbgems/mruby-compiler/core/parse.y"
10443
0
                    {
10444
0
                      local_add_f(p, (yyvsp[-1].id));
10445
0
                      local_nest(p);
10446
0
                      (yyval.id) = (yyvsp[-1].id);
10447
0
                    }
10448
0
#line 10449 "mrbgems/mruby-compiler/core/y.tab.c"
10449
0
    break;
10450
10451
0
  case 559: /* f_opt: f_opt_asgn arg  */
10452
0
#line 3935 "mrbgems/mruby-compiler/core/parse.y"
10453
0
                    {
10454
0
                      void_expr_error(p, (yyvsp[0].nd));
10455
0
                      (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p)));
10456
0
                      local_unnest(p);
10457
0
                    }
10458
0
#line 10459 "mrbgems/mruby-compiler/core/y.tab.c"
10459
0
    break;
10460
10461
0
  case 560: /* f_block_opt: f_opt_asgn primary_value  */
10462
0
#line 3943 "mrbgems/mruby-compiler/core/parse.y"
10463
0
                    {
10464
0
                      void_expr_error(p, (yyvsp[0].nd));
10465
0
                      (yyval.nd) = cons(nsym((yyvsp[-1].id)), cons((yyvsp[0].nd), locals_node(p)));
10466
0
                      local_unnest(p);
10467
0
                    }
10468
0
#line 10469 "mrbgems/mruby-compiler/core/y.tab.c"
10469
0
    break;
10470
10471
0
  case 561: /* f_block_optarg: f_block_opt  */
10472
0
#line 3951 "mrbgems/mruby-compiler/core/parse.y"
10473
0
                    {
10474
0
                      (yyval.nd) = list1((yyvsp[0].nd));
10475
0
                    }
10476
0
#line 10477 "mrbgems/mruby-compiler/core/y.tab.c"
10477
0
    break;
10478
10479
0
  case 562: /* f_block_optarg: f_block_optarg ',' f_block_opt  */
10480
0
#line 3955 "mrbgems/mruby-compiler/core/parse.y"
10481
0
                    {
10482
0
                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
10483
0
                    }
10484
0
#line 10485 "mrbgems/mruby-compiler/core/y.tab.c"
10485
0
    break;
10486
10487
0
  case 563: /* f_optarg: f_opt  */
10488
0
#line 3961 "mrbgems/mruby-compiler/core/parse.y"
10489
0
                    {
10490
0
                      (yyval.nd) = list1((yyvsp[0].nd));
10491
0
                    }
10492
0
#line 10493 "mrbgems/mruby-compiler/core/y.tab.c"
10493
0
    break;
10494
10495
0
  case 564: /* f_optarg: f_optarg ',' f_opt  */
10496
0
#line 3965 "mrbgems/mruby-compiler/core/parse.y"
10497
0
                    {
10498
0
                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
10499
0
                    }
10500
0
#line 10501 "mrbgems/mruby-compiler/core/y.tab.c"
10501
0
    break;
10502
10503
0
  case 567: /* f_rest_arg: restarg_mark "local variable or method"  */
10504
0
#line 3975 "mrbgems/mruby-compiler/core/parse.y"
10505
0
                    {
10506
0
                      local_add_f(p, (yyvsp[0].id));
10507
0
                      (yyval.id) = (yyvsp[0].id);
10508
0
                    }
10509
0
#line 10510 "mrbgems/mruby-compiler/core/y.tab.c"
10510
0
    break;
10511
10512
0
  case 568: /* f_rest_arg: restarg_mark  */
10513
0
#line 3980 "mrbgems/mruby-compiler/core/parse.y"
10514
0
                    {
10515
0
                      (yyval.id) = intern_op(mul);
10516
0
                      local_add_f(p, (yyval.id));
10517
0
                    }
10518
0
#line 10519 "mrbgems/mruby-compiler/core/y.tab.c"
10519
0
    break;
10520
10521
0
  case 571: /* f_block_arg: blkarg_mark "local variable or method"  */
10522
0
#line 3991 "mrbgems/mruby-compiler/core/parse.y"
10523
0
                    {
10524
0
                      (yyval.id) = (yyvsp[0].id);
10525
0
                    }
10526
0
#line 10527 "mrbgems/mruby-compiler/core/y.tab.c"
10527
0
    break;
10528
10529
0
  case 572: /* f_block_arg: blkarg_mark  */
10530
0
#line 3995 "mrbgems/mruby-compiler/core/parse.y"
10531
0
                    {
10532
0
                      (yyval.id) = intern_op(and);
10533
0
                    }
10534
0
#line 10535 "mrbgems/mruby-compiler/core/y.tab.c"
10535
0
    break;
10536
10537
0
  case 573: /* opt_f_block_arg: ',' f_block_arg  */
10538
0
#line 4001 "mrbgems/mruby-compiler/core/parse.y"
10539
0
                    {
10540
0
                      (yyval.id) = (yyvsp[0].id);
10541
0
                    }
10542
0
#line 10543 "mrbgems/mruby-compiler/core/y.tab.c"
10543
0
    break;
10544
10545
0
  case 574: /* opt_f_block_arg: none  */
10546
0
#line 4005 "mrbgems/mruby-compiler/core/parse.y"
10547
0
                    {
10548
0
                      (yyval.id) = 0;
10549
0
                    }
10550
0
#line 10551 "mrbgems/mruby-compiler/core/y.tab.c"
10551
0
    break;
10552
10553
0
  case 575: /* singleton: var_ref  */
10554
0
#line 4011 "mrbgems/mruby-compiler/core/parse.y"
10555
0
                    {
10556
0
                      (yyval.nd) = (yyvsp[0].nd);
10557
0
                      if (!(yyval.nd)) (yyval.nd) = new_nil(p);
10558
0
                    }
10559
0
#line 10560 "mrbgems/mruby-compiler/core/y.tab.c"
10560
0
    break;
10561
10562
0
  case 576: /* $@33: %empty  */
10563
0
#line 4015 "mrbgems/mruby-compiler/core/parse.y"
10564
0
                      {p->lstate = EXPR_BEG;}
10565
0
#line 10566 "mrbgems/mruby-compiler/core/y.tab.c"
10566
0
    break;
10567
10568
0
  case 577: /* singleton: '(' $@33 expr rparen  */
10569
0
#line 4016 "mrbgems/mruby-compiler/core/parse.y"
10570
0
                    {
10571
0
                      if ((yyvsp[-1].nd) == 0) {
10572
0
                        yyerror(&(yylsp[-3]), p, "can't define singleton method for ().");
10573
0
                      }
10574
0
                      else {
10575
0
                        switch (typen((yyvsp[-1].nd)->car)) {
10576
0
                        case NODE_STR:
10577
0
                        case NODE_DSTR:
10578
0
                        case NODE_XSTR:
10579
0
                        case NODE_DXSTR:
10580
0
                        case NODE_DREGX:
10581
0
                        case NODE_MATCH:
10582
0
                        case NODE_FLOAT:
10583
0
                        case NODE_ARRAY:
10584
0
                        case NODE_HEREDOC:
10585
0
                          yyerror(&(yylsp[-3]), p, "can't define singleton method for literals");
10586
0
                        default:
10587
0
                          break;
10588
0
                        }
10589
0
                      }
10590
0
                      (yyval.nd) = (yyvsp[-1].nd);
10591
0
                    }
10592
0
#line 10593 "mrbgems/mruby-compiler/core/y.tab.c"
10593
0
    break;
10594
10595
1.03k
  case 579: /* assoc_list: assocs trailer  */
10596
1.03k
#line 4042 "mrbgems/mruby-compiler/core/parse.y"
10597
1.03k
                    {
10598
1.03k
                      (yyval.nd) = (yyvsp[-1].nd);
10599
1.03k
                    }
10600
1.03k
#line 10601 "mrbgems/mruby-compiler/core/y.tab.c"
10601
1.03k
    break;
10602
10603
1.03k
  case 580: /* assocs: assoc  */
10604
1.03k
#line 4048 "mrbgems/mruby-compiler/core/parse.y"
10605
1.03k
                    {
10606
1.03k
                      (yyval.nd) = list1((yyvsp[0].nd));
10607
1.03k
                      NODE_LINENO((yyval.nd), (yyvsp[0].nd));
10608
1.03k
                    }
10609
1.03k
#line 10610 "mrbgems/mruby-compiler/core/y.tab.c"
10610
1.03k
    break;
10611
10612
149k
  case 581: /* assocs: assocs comma assoc  */
10613
149k
#line 4053 "mrbgems/mruby-compiler/core/parse.y"
10614
149k
                    {
10615
149k
                      (yyval.nd) = push((yyvsp[-2].nd), (yyvsp[0].nd));
10616
149k
                    }
10617
149k
#line 10618 "mrbgems/mruby-compiler/core/y.tab.c"
10618
149k
    break;
10619
10620
150k
  case 582: /* assoc: arg "=>" arg  */
10621
150k
#line 4059 "mrbgems/mruby-compiler/core/parse.y"
10622
150k
                    {
10623
150k
                      void_expr_error(p, (yyvsp[-2].nd));
10624
150k
                      void_expr_error(p, (yyvsp[0].nd));
10625
150k
                      (yyval.nd) = cons((yyvsp[-2].nd), (yyvsp[0].nd));
10626
150k
                    }
10627
150k
#line 10628 "mrbgems/mruby-compiler/core/y.tab.c"
10628
150k
    break;
10629
10630
0
  case 583: /* assoc: "local variable or method" "label" arg  */
10631
0
#line 4065 "mrbgems/mruby-compiler/core/parse.y"
10632
0
                    {
10633
0
                      void_expr_error(p, (yyvsp[0].nd));
10634
0
                      (yyval.nd) = cons(new_sym(p, (yyvsp[-2].id)), (yyvsp[0].nd));
10635
0
                    }
10636
0
#line 10637 "mrbgems/mruby-compiler/core/y.tab.c"
10637
0
    break;
10638
10639
0
  case 584: /* assoc: "local variable or method" "label"  */
10640
0
#line 4070 "mrbgems/mruby-compiler/core/parse.y"
10641
0
                    {
10642
0
                      (yyval.nd) = cons(new_sym(p, (yyvsp[-1].id)), label_reference(p, (yyvsp[-1].id)));
10643
0
                    }
10644
0
#line 10645 "mrbgems/mruby-compiler/core/y.tab.c"
10645
0
    break;
10646
10647
0
  case 585: /* assoc: "numbered parameter" "label"  */
10648
0
#line 4074 "mrbgems/mruby-compiler/core/parse.y"
10649
0
                    {
10650
0
                      mrb_sym sym = intern_numparam((yyvsp[-1].num));
10651
0
                      (yyval.nd) = cons(new_sym(p, sym), label_reference(p, sym));
10652
0
                    }
10653
0
#line 10654 "mrbgems/mruby-compiler/core/y.tab.c"
10654
0
    break;
10655
10656
0
  case 586: /* assoc: "numbered parameter" "label" arg  */
10657
0
#line 4079 "mrbgems/mruby-compiler/core/parse.y"
10658
0
                    {
10659
0
                      void_expr_error(p, (yyvsp[0].nd));
10660
0
                      (yyval.nd) = cons(new_sym(p, intern_numparam((yyvsp[-2].num))), (yyvsp[0].nd));
10661
0
                    }
10662
0
#line 10663 "mrbgems/mruby-compiler/core/y.tab.c"
10663
0
    break;
10664
10665
0
  case 587: /* assoc: string_fragment "label" arg  */
10666
0
#line 4084 "mrbgems/mruby-compiler/core/parse.y"
10667
0
                    {
10668
0
                      void_expr_error(p, (yyvsp[0].nd));
10669
0
                      if (typen((yyvsp[-2].nd)->car) == NODE_DSTR) {
10670
0
                        (yyval.nd) = cons(new_dsym(p, (yyvsp[-2].nd)), (yyvsp[0].nd));
10671
0
                      }
10672
0
                      else {
10673
0
                        (yyval.nd) = cons(new_sym(p, new_strsym(p, (yyvsp[-2].nd))), (yyvsp[0].nd));
10674
0
                      }
10675
0
                    }
10676
0
#line 10677 "mrbgems/mruby-compiler/core/y.tab.c"
10677
0
    break;
10678
10679
0
  case 588: /* assoc: "**" arg  */
10680
0
#line 4094 "mrbgems/mruby-compiler/core/parse.y"
10681
0
                    {
10682
0
                      void_expr_error(p, (yyvsp[0].nd));
10683
0
                      (yyval.nd) = cons(new_kw_rest_args(p, 0), (yyvsp[0].nd));
10684
0
                    }
10685
0
#line 10686 "mrbgems/mruby-compiler/core/y.tab.c"
10686
0
    break;
10687
10688
0
  case 589: /* assoc: "**"  */
10689
0
#line 4099 "mrbgems/mruby-compiler/core/parse.y"
10690
0
                    {
10691
0
                      (yyval.nd) = cons(new_kw_rest_args(p, 0), new_lvar(p, intern_op(pow)));
10692
0
                    }
10693
0
#line 10694 "mrbgems/mruby-compiler/core/y.tab.c"
10694
0
    break;
10695
10696
11.2k
  case 602: /* call_op: '.'  */
10697
11.2k
#line 4125 "mrbgems/mruby-compiler/core/parse.y"
10698
11.2k
                    {
10699
11.2k
                      (yyval.num) = '.';
10700
11.2k
                    }
10701
11.2k
#line 10702 "mrbgems/mruby-compiler/core/y.tab.c"
10702
11.2k
    break;
10703
10704
0
  case 603: /* call_op: "&."  */
10705
0
#line 4129 "mrbgems/mruby-compiler/core/parse.y"
10706
0
                    {
10707
0
                      (yyval.num) = 0;
10708
0
                    }
10709
0
#line 10710 "mrbgems/mruby-compiler/core/y.tab.c"
10710
0
    break;
10711
10712
0
  case 605: /* call_op2: "::"  */
10713
0
#line 4136 "mrbgems/mruby-compiler/core/parse.y"
10714
0
                    {
10715
0
                      (yyval.num) = tCOLON2;
10716
0
                    }
10717
0
#line 10718 "mrbgems/mruby-compiler/core/y.tab.c"
10718
0
    break;
10719
10720
0
  case 614: /* term: ';'  */
10721
0
#line 4157 "mrbgems/mruby-compiler/core/parse.y"
10722
0
                      {yyerrok;}
10723
0
#line 10724 "mrbgems/mruby-compiler/core/y.tab.c"
10724
0
    break;
10725
10726
65.6k
  case 616: /* nl: '\n'  */
10727
65.6k
#line 4162 "mrbgems/mruby-compiler/core/parse.y"
10728
65.6k
                    {
10729
65.6k
                      p->lineno += (yyvsp[0].num);
10730
65.6k
                      p->column = 0;
10731
65.6k
                    }
10732
65.6k
#line 10733 "mrbgems/mruby-compiler/core/y.tab.c"
10733
65.6k
    break;
10734
10735
37.5k
  case 620: /* none: %empty  */
10736
37.5k
#line 4174 "mrbgems/mruby-compiler/core/parse.y"
10737
37.5k
                    {
10738
37.5k
                      (yyval.nd) = 0;
10739
37.5k
                    }
10740
37.5k
#line 10741 "mrbgems/mruby-compiler/core/y.tab.c"
10741
37.5k
    break;
10742
10743
10744
0
#line 10745 "mrbgems/mruby-compiler/core/y.tab.c"
10745
10746
2.53M
      default: break;
10747
4.64M
    }
10748
  /* User semantic actions sometimes alter yychar, and that requires
10749
     that yytoken be updated with the new translation.  We take the
10750
     approach of translating immediately before every use of yytoken.
10751
     One alternative is translating here after every semantic action,
10752
     but that translation would be missed if the semantic action invokes
10753
     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
10754
     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
10755
     incorrect destructor might then be invoked immediately.  In the
10756
     case of YYERROR or YYBACKUP, subsequent parser actions might lead
10757
     to an incorrect destructor call or verbose syntax error message
10758
     before the lookahead is translated.  */
10759
4.64M
  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
10760
10761
4.64M
  YYPOPSTACK (yylen);
10762
10763
4.64M
  yylen = 0;
10764
10765
4.64M
  *++yyvsp = yyval;
10766
4.64M
  *++yylsp = yyloc;
10767
10768
  /* Now 'shift' the result of the reduction.  Determine what state
10769
     that goes to, based on the state we popped back to and the rule
10770
     number reduced by.  */
10771
4.64M
  {
10772
4.64M
    const int yylhs = yyr1[yyn] - YYNTOKENS;
10773
4.64M
    const int yyi = yypgoto[yylhs] + *yyssp;
10774
4.64M
    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
10775
4.64M
               ? yytable[yyi]
10776
4.64M
               : yydefgoto[yylhs]);
10777
4.64M
  }
10778
10779
4.64M
  goto yynewstate;
10780
10781
10782
/*--------------------------------------.
10783
| yyerrlab -- here on detecting error.  |
10784
`--------------------------------------*/
10785
0
yyerrlab:
10786
  /* Make sure we have latest lookahead translation.  See comments at
10787
     user semantic actions for why this is necessary.  */
10788
0
  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
10789
  /* If not already recovering from an error, report this error.  */
10790
0
  if (!yyerrstatus)
10791
0
    {
10792
0
      ++yynerrs;
10793
0
      {
10794
0
        yypcontext_t yyctx
10795
0
          = {yyssp, yytoken, &yylloc};
10796
0
        char const *yymsgp = YY_("syntax error");
10797
0
        int yysyntax_error_status;
10798
0
        yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
10799
0
        if (yysyntax_error_status == 0)
10800
0
          yymsgp = yymsg;
10801
0
        else if (yysyntax_error_status == -1)
10802
0
          {
10803
0
            if (yymsg != yymsgbuf)
10804
0
              YYSTACK_FREE (yymsg);
10805
0
            yymsg = YY_CAST (char *,
10806
0
                             YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
10807
0
            if (yymsg)
10808
0
              {
10809
0
                yysyntax_error_status
10810
0
                  = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
10811
0
                yymsgp = yymsg;
10812
0
              }
10813
0
            else
10814
0
              {
10815
0
                yymsg = yymsgbuf;
10816
0
                yymsg_alloc = sizeof yymsgbuf;
10817
0
                yysyntax_error_status = YYENOMEM;
10818
0
              }
10819
0
          }
10820
0
        yyerror (&yylloc, p, yymsgp);
10821
0
        if (yysyntax_error_status == YYENOMEM)
10822
0
          YYNOMEM;
10823
0
      }
10824
0
    }
10825
10826
0
  yyerror_range[1] = yylloc;
10827
0
  if (yyerrstatus == 3)
10828
0
    {
10829
      /* If just tried and failed to reuse lookahead token after an
10830
         error, discard it.  */
10831
10832
0
      if (yychar <= YYEOF)
10833
0
        {
10834
          /* Return failure if at end of input.  */
10835
0
          if (yychar == YYEOF)
10836
0
            YYABORT;
10837
0
        }
10838
0
      else
10839
0
        {
10840
0
          yydestruct ("Error: discarding",
10841
0
                      yytoken, &yylval, &yylloc, p);
10842
0
          yychar = YYEMPTY;
10843
0
        }
10844
0
    }
10845
10846
  /* Else will try to reuse lookahead token after shifting the error
10847
     token.  */
10848
0
  goto yyerrlab1;
10849
10850
10851
/*---------------------------------------------------.
10852
| yyerrorlab -- error raised explicitly by YYERROR.  |
10853
`---------------------------------------------------*/
10854
0
yyerrorlab:
10855
  /* Pacify compilers when the user code never invokes YYERROR and the
10856
     label yyerrorlab therefore never appears in user code.  */
10857
0
  if (0)
10858
0
    YYERROR;
10859
0
  ++yynerrs;
10860
10861
  /* Do not reclaim the symbols of the rule whose action triggered
10862
     this YYERROR.  */
10863
0
  YYPOPSTACK (yylen);
10864
10865
0
  yylen = 0;
10866
0
  YY_STACK_PRINT (yyss, yyssp, p);
10867
0
  yystate = *yyssp;
10868
0
  goto yyerrlab1;
10869
10870
10871
/*-------------------------------------------------------------.
10872
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
10873
`-------------------------------------------------------------*/
10874
0
yyerrlab1:
10875
0
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
10876
10877
  /* Pop stack until we find a state that shifts the error token.  */
10878
0
  for (;;)
10879
0
    {
10880
0
      yyn = yypact[yystate];
10881
0
      if (!yypact_value_is_default (yyn))
10882
0
        {
10883
0
          yyn += YYSYMBOL_YYerror;
10884
0
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
10885
0
            {
10886
0
              yyn = yytable[yyn];
10887
0
              if (0 < yyn)
10888
0
                break;
10889
0
            }
10890
0
        }
10891
10892
      /* Pop the current state because it cannot handle the error token.  */
10893
0
      if (yyssp == yyss)
10894
0
        YYABORT;
10895
10896
0
      yyerror_range[1] = *yylsp;
10897
0
      yydestruct ("Error: popping",
10898
0
                  YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
10899
0
      YYPOPSTACK (1);
10900
10901
0
      yystate = *yyssp;
10902
0
      YY_STACK_PRINT (yyss, yyssp, p);
10903
0
    }
10904
10905
0
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
10906
0
  *++yyvsp = yylval;
10907
0
  YY_IGNORE_MAYBE_UNINITIALIZED_END
10908
10909
0
  yyerror_range[2] = yylloc;
10910
0
  ++yylsp;
10911
0
  YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
10912
10913
  /* Shift the error token.  */
10914
0
  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
10915
10916
10917
0
  yystate = yyn;
10918
0
  goto yynewstate;
10919
10920
10921
/*-------------------------------------.
10922
| yyacceptlab -- YYACCEPT comes here.  |
10923
`-------------------------------------*/
10924
103
yyacceptlab:
10925
103
  yyresult = 0;
10926
103
  goto yyreturnlab;
10927
10928
10929
/*-----------------------------------.
10930
| yyabortlab -- YYABORT comes here.  |
10931
`-----------------------------------*/
10932
0
yyabortlab:
10933
0
  yyresult = 1;
10934
0
  goto yyreturnlab;
10935
10936
10937
/*-----------------------------------------------------------.
10938
| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
10939
`-----------------------------------------------------------*/
10940
0
yyexhaustedlab:
10941
0
  yyerror (&yylloc, p, YY_("memory exhausted"));
10942
0
  yyresult = 2;
10943
0
  goto yyreturnlab;
10944
10945
10946
/*----------------------------------------------------------.
10947
| yyreturnlab -- parsing is finished, clean up and return.  |
10948
`----------------------------------------------------------*/
10949
103
yyreturnlab:
10950
103
  if (yychar != YYEMPTY)
10951
0
    {
10952
      /* Make sure we have latest lookahead translation.  See comments at
10953
         user semantic actions for why this is necessary.  */
10954
0
      yytoken = YYTRANSLATE (yychar);
10955
0
      yydestruct ("Cleanup: discarding lookahead",
10956
0
                  yytoken, &yylval, &yylloc, p);
10957
0
    }
10958
  /* Do not reclaim the symbols of the rule whose action triggered
10959
     this YYABORT or YYACCEPT.  */
10960
103
  YYPOPSTACK (yylen);
10961
103
  YY_STACK_PRINT (yyss, yyssp, p);
10962
309
  while (yyssp != yyss)
10963
206
    {
10964
206
      yydestruct ("Cleanup: popping",
10965
206
                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
10966
206
      YYPOPSTACK (1);
10967
206
    }
10968
103
#ifndef yyoverflow
10969
103
  if (yyss != yyssa)
10970
15
    YYSTACK_FREE (yyss);
10971
103
#endif
10972
103
  if (yymsg != yymsgbuf)
10973
0
    YYSTACK_FREE (yymsg);
10974
103
  return yyresult;
10975
0
}
10976
10977
#line 4178 "mrbgems/mruby-compiler/core/parse.y"
10978
10979
725k
#define pylval  (*((YYSTYPE*)(p->ylval)))
10980
10981
static void
10982
yyerror(void *lp, parser_state *p, const char *s)
10983
19
{
10984
19
  char* c;
10985
19
  size_t n;
10986
10987
19
  if (! p->capture_errors) {
10988
19
#ifndef MRB_NO_STDIO
10989
19
    if (p->filename_sym) {
10990
0
      const char *filename = mrb_sym_name_len(p->mrb, p->filename_sym, NULL);
10991
0
      fprintf(stderr, "%s:%d:%d: %s\n", filename, p->lineno, p->column, s);
10992
0
    }
10993
19
    else {
10994
19
      fprintf(stderr, "line %d:%d: %s\n", p->lineno, p->column, s);
10995
19
    }
10996
19
#endif
10997
19
  }
10998
0
  else if (p->nerr < sizeof(p->error_buffer) / sizeof(p->error_buffer[0])) {
10999
0
    n = strlen(s);
11000
0
    c = (char*)parser_palloc(p, n + 1);
11001
0
    memcpy(c, s, n + 1);
11002
0
    p->error_buffer[p->nerr].message = c;
11003
0
    p->error_buffer[p->nerr].lineno = p->lineno;
11004
0
    p->error_buffer[p->nerr].column = p->column;
11005
0
  }
11006
19
  p->nerr++;
11007
19
}
11008
11009
static void
11010
yyerror_c(parser_state *p, const char *msg, char c)
11011
0
{
11012
0
  char buf[256];
11013
11014
0
  strncpy(buf, msg, sizeof(buf) - 2);
11015
0
  buf[sizeof(buf) - 2] = '\0';
11016
0
  strncat(buf, &c, 1);
11017
0
  yyerror(NULL, p, buf);
11018
0
}
11019
11020
static void
11021
yywarning(parser_state *p, const char *s)
11022
0
{
11023
0
  char* c;
11024
0
  size_t n;
11025
11026
0
  if (! p->capture_errors) {
11027
0
#ifndef MRB_NO_STDIO
11028
0
    if (p->filename_sym) {
11029
0
      const char *filename = mrb_sym_name_len(p->mrb, p->filename_sym, NULL);
11030
0
      fprintf(stderr, "%s:%d:%d: warning: %s\n", filename, p->lineno, p->column, s);
11031
0
    }
11032
0
    else {
11033
0
      fprintf(stderr, "line %d:%d: warning: %s\n", p->lineno, p->column, s);
11034
0
    }
11035
0
#endif
11036
0
  }
11037
0
  else if (p->nwarn < sizeof(p->warn_buffer) / sizeof(p->warn_buffer[0])) {
11038
0
    n = strlen(s);
11039
0
    c = (char*)parser_palloc(p, n + 1);
11040
0
    memcpy(c, s, n + 1);
11041
0
    p->warn_buffer[p->nwarn].message = c;
11042
0
    p->warn_buffer[p->nwarn].lineno = p->lineno;
11043
0
    p->warn_buffer[p->nwarn].column = p->column;
11044
0
  }
11045
0
  p->nwarn++;
11046
0
}
11047
11048
static void
11049
yywarning_s(parser_state *p, const char *msg, const char *s)
11050
0
{
11051
0
  char buf[256];
11052
11053
0
  strncpy(buf, msg, sizeof(buf) - 1);
11054
0
  buf[sizeof(buf) - 1] = '\0';
11055
0
  strncat(buf, ": ", sizeof(buf) - strlen(buf) - 1);
11056
0
  strncat(buf, s, sizeof(buf) - strlen(buf) - 1);
11057
0
  yywarning(p, buf);
11058
0
}
11059
11060
static void
11061
backref_error(parser_state *p, node *n)
11062
0
{
11063
0
  int c;
11064
11065
0
  c = intn(n->car);
11066
11067
0
  if (c == NODE_NTH_REF) {
11068
0
    yyerror_c(p, "can't set variable $", (char)intn(n->cdr)+'0');
11069
0
  }
11070
0
  else if (c == NODE_BACK_REF) {
11071
0
    yyerror_c(p, "can't set variable $", (char)intn(n->cdr));
11072
0
  }
11073
0
  else {
11074
0
    yyerror(NULL, p, "Internal error in backref_error()");
11075
0
  }
11076
0
}
11077
11078
static void
11079
void_expr_error(parser_state *p, node *n)
11080
632k
{
11081
632k
  int c;
11082
11083
632k
  if (n == NULL) return;
11084
632k
  c = intn(n->car);
11085
632k
  switch (c) {
11086
0
  case NODE_BREAK:
11087
0
  case NODE_RETURN:
11088
0
  case NODE_NEXT:
11089
0
  case NODE_REDO:
11090
0
  case NODE_RETRY:
11091
0
    yyerror(NULL, p, "void value expression");
11092
0
    break;
11093
1.19k
  case NODE_AND:
11094
5.84k
  case NODE_OR:
11095
5.84k
    if (n->cdr) {
11096
5.84k
      void_expr_error(p, n->cdr->car);
11097
5.84k
      void_expr_error(p, n->cdr->cdr);
11098
5.84k
    }
11099
5.84k
    break;
11100
41.8k
  case NODE_BEGIN:
11101
41.8k
    if (n->cdr) {
11102
135k
      while (n->cdr) {
11103
93.9k
        n = n->cdr;
11104
93.9k
      }
11105
41.4k
      void_expr_error(p, n->car);
11106
41.4k
    }
11107
41.8k
    break;
11108
585k
  default:
11109
585k
    break;
11110
632k
  }
11111
632k
}
11112
11113
static void pushback(parser_state *p, int c);
11114
static mrb_bool peeks(parser_state *p, const char *s);
11115
static mrb_bool skips(parser_state *p, const char *s);
11116
11117
static inline int
11118
nextc0(parser_state *p)
11119
5.16M
{
11120
5.16M
  if (p->s && p->s < p->send) {
11121
5.16M
    return (unsigned char)*p->s++;
11122
5.16M
  }
11123
206
  else {
11124
206
#ifndef MRB_NO_STDIO
11125
206
    int c;
11126
11127
206
    if (p->f) {
11128
0
      c = fgetc(p->f);
11129
0
      if (!feof(p->f)) return c;
11130
0
    }
11131
206
#endif
11132
206
    return -1;
11133
206
  }
11134
5.16M
}
11135
11136
static inline int
11137
nextc(parser_state *p)
11138
5.92M
{
11139
5.92M
  int c;
11140
11141
5.92M
  if (p->pb) {
11142
761k
    node *tmp;
11143
11144
761k
    c = intn(p->pb->car);
11145
761k
    tmp = p->pb;
11146
761k
    p->pb = p->pb->cdr;
11147
761k
    cons_free(tmp);
11148
761k
  }
11149
5.16M
  else {
11150
5.16M
    c = nextc0(p);
11151
5.16M
    if (c < 0) goto eof;
11152
5.16M
  }
11153
5.92M
  if (c >= 0) {
11154
5.92M
    p->column++;
11155
5.92M
  }
11156
5.92M
  if (c == '\r') {
11157
0
    const int lf = nextc0(p);
11158
0
    if (lf == '\n') {
11159
0
      return '\n';
11160
0
    }
11161
0
    if (lf > 0) pushback(p, lf);
11162
0
  }
11163
5.92M
  return c;
11164
11165
206
  eof:
11166
206
  if (!p->cxt) return -1;
11167
0
  else {
11168
0
    if (p->cxt->partial_hook(p) < 0)
11169
0
      return -1;                /* end of program(s) */
11170
0
    return -2;                  /* end of a file in the program files */
11171
0
  }
11172
206
}
11173
11174
static void
11175
pushback(parser_state *p, int c)
11176
740k
{
11177
740k
  if (c >= 0) {
11178
740k
    p->column--;
11179
740k
  }
11180
740k
  p->pb = cons(nint(c), p->pb);
11181
740k
}
11182
11183
static void
11184
skip(parser_state *p, char term)
11185
0
{
11186
0
  int c;
11187
11188
0
  for (;;) {
11189
0
    c = nextc(p);
11190
0
    if (c < 0) break;
11191
0
    if (c == term) break;
11192
0
  }
11193
0
}
11194
11195
static int
11196
peekc_n(parser_state *p, int n)
11197
20.9k
{
11198
20.9k
  node *list = 0;
11199
20.9k
  int c0;
11200
11201
21.0k
  do {
11202
21.0k
    c0 = nextc(p);
11203
21.0k
    if (c0 == -1) return c0;    /* do not skip partial EOF */
11204
21.0k
    if (c0 >= 0) --p->column;
11205
21.0k
    list = push(list, nint(c0));
11206
21.0k
  } while(n--);
11207
20.9k
  if (p->pb) {
11208
0
    p->pb = append(list, p->pb);
11209
0
  }
11210
20.9k
  else {
11211
20.9k
    p->pb = list;
11212
20.9k
  }
11213
20.9k
  return c0;
11214
20.9k
}
11215
11216
static mrb_bool
11217
peek_n(parser_state *p, int c, int n)
11218
20.9k
{
11219
20.9k
  return peekc_n(p, n) == c && c >= 0;
11220
20.9k
}
11221
425
#define peek(p,c) peek_n((p), (c), 0)
11222
11223
static mrb_bool
11224
peeks(parser_state *p, const char *s)
11225
0
{
11226
0
  size_t len = strlen(s);
11227
11228
0
#ifndef MRB_NO_STDIO
11229
0
  if (p->f) {
11230
0
    int n = 0;
11231
0
    while (*s) {
11232
0
      if (!peek_n(p, *s++, n++)) return FALSE;
11233
0
    }
11234
0
    return TRUE;
11235
0
  }
11236
0
  else
11237
0
#endif
11238
0
    if (p->s && p->s + len <= p->send) {
11239
0
      if (memcmp(p->s, s, len) == 0) return TRUE;
11240
0
    }
11241
0
  return FALSE;
11242
0
}
11243
11244
static mrb_bool
11245
skips(parser_state *p, const char *s)
11246
0
{
11247
0
  int c;
11248
11249
0
  for (;;) {
11250
    /* skip until first char */
11251
0
    for (;;) {
11252
0
      c = nextc(p);
11253
0
      if (c < 0) return FALSE;
11254
0
      if (c == '\n') {
11255
0
        p->lineno++;
11256
0
        p->column = 0;
11257
0
      }
11258
0
      if (c == *s) break;
11259
0
    }
11260
0
    s++;
11261
0
    if (peeks(p, s)) {
11262
0
      size_t len = strlen(s);
11263
11264
0
      while (len--) {
11265
0
        if (nextc(p) == '\n') {
11266
0
          p->lineno++;
11267
0
          p->column = 0;
11268
0
        }
11269
0
      }
11270
0
      return TRUE;
11271
0
    }
11272
0
    else{
11273
0
      s--;
11274
0
    }
11275
0
  }
11276
0
  return FALSE;
11277
0
}
11278
11279
11280
static int
11281
newtok(parser_state *p)
11282
653k
{
11283
653k
  if (p->tokbuf != p->buf) {
11284
81
    mrb_free(p->mrb, p->tokbuf);
11285
81
    p->tokbuf = p->buf;
11286
81
    p->tsiz = MRB_PARSER_TOKBUF_SIZE;
11287
81
  }
11288
653k
  p->tidx = 0;
11289
653k
  return p->column - 1;
11290
653k
}
11291
11292
static void
11293
tokadd(parser_state *p, int32_t c)
11294
2.75M
{
11295
2.75M
  char utf8[4];
11296
2.75M
  int i, len;
11297
11298
  /* mrb_assert(-0x10FFFF <= c && c <= 0xFF); */
11299
2.75M
  if (c >= 0) {
11300
    /* Single byte from source or non-Unicode escape */
11301
2.75M
    utf8[0] = (char)c;
11302
2.75M
    len = 1;
11303
2.75M
  }
11304
0
  else {
11305
    /* Unicode character */
11306
0
    c = -c;
11307
0
    if (c < 0x80) {
11308
0
      utf8[0] = (char)c;
11309
0
      len = 1;
11310
0
    }
11311
0
    else if (c < 0x800) {
11312
0
      utf8[0] = (char)(0xC0 | (c >> 6));
11313
0
      utf8[1] = (char)(0x80 | (c & 0x3F));
11314
0
      len = 2;
11315
0
    }
11316
0
    else if (c < 0x10000) {
11317
0
      utf8[0] = (char)(0xE0 |  (c >> 12)        );
11318
0
      utf8[1] = (char)(0x80 | ((c >>  6) & 0x3F));
11319
0
      utf8[2] = (char)(0x80 | ( c        & 0x3F));
11320
0
      len = 3;
11321
0
    }
11322
0
    else {
11323
0
      utf8[0] = (char)(0xF0 |  (c >> 18)        );
11324
0
      utf8[1] = (char)(0x80 | ((c >> 12) & 0x3F));
11325
0
      utf8[2] = (char)(0x80 | ((c >>  6) & 0x3F));
11326
0
      utf8[3] = (char)(0x80 | ( c        & 0x3F));
11327
0
      len = 4;
11328
0
    }
11329
0
  }
11330
2.75M
  if (p->tidx+len >= p->tsiz) {
11331
806
    if (p->tsiz >= MRB_PARSER_TOKBUF_MAX) {
11332
378
      p->tidx += len;
11333
378
      return;
11334
378
    }
11335
428
    p->tsiz *= 2;
11336
428
    if (p->tokbuf == p->buf) {
11337
81
      p->tokbuf = (char*)mrb_malloc(p->mrb, p->tsiz);
11338
81
      memcpy(p->tokbuf, p->buf, MRB_PARSER_TOKBUF_SIZE);
11339
81
    }
11340
347
    else {
11341
347
      p->tokbuf = (char*)mrb_realloc(p->mrb, p->tokbuf, p->tsiz);
11342
347
    }
11343
428
  }
11344
5.51M
  for (i = 0; i < len; i++) {
11345
2.75M
    p->tokbuf[p->tidx++] = utf8[i];
11346
2.75M
  }
11347
2.75M
}
11348
11349
static int
11350
toklast(parser_state *p)
11351
190k
{
11352
190k
  return p->tokbuf[p->tidx-1];
11353
190k
}
11354
11355
static void
11356
tokfix(parser_state *p)
11357
651k
{
11358
651k
  if (p->tidx >= MRB_PARSER_TOKBUF_MAX) {
11359
19
    p->tidx = MRB_PARSER_TOKBUF_MAX-1;
11360
19
    yyerror(NULL, p, "string too long (truncated)");
11361
19
  }
11362
651k
  p->tokbuf[p->tidx] = '\0';
11363
651k
}
11364
11365
static const char*
11366
tok(parser_state *p)
11367
1.07M
{
11368
1.07M
  return p->tokbuf;
11369
1.07M
}
11370
11371
static int
11372
toklen(parser_state *p)
11373
515k
{
11374
515k
  return p->tidx;
11375
515k
}
11376
11377
132k
#define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
11378
7.13k
#define IS_END() (p->lstate == EXPR_END || p->lstate == EXPR_ENDARG || p->lstate == EXPR_ENDFN)
11379
233k
#define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
11380
35.7k
#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
11381
95.0k
#define IS_LABEL_POSSIBLE() ((p->lstate == EXPR_BEG && !cmd_state) || IS_ARG())
11382
20.8k
#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
11383
11384
static int32_t
11385
scan_oct(const int *start, int len, int *retlen)
11386
0
{
11387
0
  const int *s = start;
11388
0
  int32_t retval = 0;
11389
11390
  /* mrb_assert(len <= 3) */
11391
0
  while (len-- && *s >= '0' && *s <= '7') {
11392
0
    retval <<= 3;
11393
0
    retval |= *s++ - '0';
11394
0
  }
11395
0
  *retlen = (int)(s - start);
11396
11397
0
  return retval;
11398
0
}
11399
11400
static int32_t
11401
scan_hex(parser_state *p, const int *start, int len, int *retlen)
11402
0
{
11403
0
  static const char hexdigit[] = "0123456789abcdef0123456789ABCDEF";
11404
0
  const int *s = start;
11405
0
  uint32_t retval = 0;
11406
0
  char *tmp;
11407
11408
  /* mrb_assert(len <= 8) */
11409
0
  while (len-- && *s && (tmp = (char*)strchr(hexdigit, *s))) {
11410
0
    retval <<= 4;
11411
0
    retval |= (tmp - hexdigit) & 15;
11412
0
    s++;
11413
0
  }
11414
0
  *retlen = (int)(s - start);
11415
11416
0
  return (int32_t)retval;
11417
0
}
11418
11419
static int32_t
11420
read_escape_unicode(parser_state *p, int limit)
11421
0
{
11422
0
  int buf[9];
11423
0
  int i;
11424
0
  int32_t hex;
11425
11426
  /* Look for opening brace */
11427
0
  i = 0;
11428
0
  buf[0] = nextc(p);
11429
0
  if (buf[0] < 0) {
11430
0
  eof:
11431
0
    yyerror(NULL, p, "invalid escape character syntax");
11432
0
    return -1;
11433
0
  }
11434
0
  if (ISXDIGIT(buf[0])) {
11435
    /* \uxxxx form */
11436
0
    for (i=1; i<limit; i++) {
11437
0
      buf[i] = nextc(p);
11438
0
      if (buf[i] < 0) goto eof;
11439
0
      if (!ISXDIGIT(buf[i])) {
11440
0
        pushback(p, buf[i]);
11441
0
        break;
11442
0
      }
11443
0
    }
11444
0
  }
11445
0
  else {
11446
0
    pushback(p, buf[0]);
11447
0
  }
11448
0
  hex = scan_hex(p, buf, i, &i);
11449
0
  if (i == 0 || hex > 0x10FFFF || (hex & 0xFFFFF800) == 0xD800) {
11450
0
    yyerror(NULL, p, "invalid Unicode code point");
11451
0
    return -1;
11452
0
  }
11453
0
  return hex;
11454
0
}
11455
11456
/* Return negative to indicate Unicode code point */
11457
static int32_t
11458
read_escape(parser_state *p)
11459
0
{
11460
0
  int32_t c;
11461
11462
0
  switch (c = nextc(p)) {
11463
0
  case '\\':/* Backslash */
11464
0
    return c;
11465
11466
0
  case 'n':/* newline */
11467
0
    return '\n';
11468
11469
0
  case 't':/* horizontal tab */
11470
0
    return '\t';
11471
11472
0
  case 'r':/* carriage-return */
11473
0
    return '\r';
11474
11475
0
  case 'f':/* form-feed */
11476
0
    return '\f';
11477
11478
0
  case 'v':/* vertical tab */
11479
0
    return '\13';
11480
11481
0
  case 'a':/* alarm(bell) */
11482
0
    return '\007';
11483
11484
0
  case 'e':/* escape */
11485
0
    return 033;
11486
11487
0
  case '0': case '1': case '2': case '3': /* octal constant */
11488
0
  case '4': case '5': case '6': case '7':
11489
0
  {
11490
0
    int buf[3];
11491
0
    int i;
11492
11493
0
    buf[0] = c;
11494
0
    for (i=1; i<3; i++) {
11495
0
      buf[i] = nextc(p);
11496
0
      if (buf[i] < 0) goto eof;
11497
0
      if (buf[i] < '0' || '7' < buf[i]) {
11498
0
        pushback(p, buf[i]);
11499
0
        break;
11500
0
      }
11501
0
    }
11502
0
    c = scan_oct(buf, i, &i);
11503
0
  }
11504
0
  return c;
11505
11506
0
  case 'x':     /* hex constant */
11507
0
  {
11508
0
    int buf[2];
11509
0
    int i;
11510
11511
0
    for (i=0; i<2; i++) {
11512
0
      buf[i] = nextc(p);
11513
0
      if (buf[i] < 0) goto eof;
11514
0
      if (!ISXDIGIT(buf[i])) {
11515
0
        pushback(p, buf[i]);
11516
0
        break;
11517
0
      }
11518
0
    }
11519
0
    if (i == 0) {
11520
0
      yyerror(NULL, p, "invalid hex escape");
11521
0
      return -1;
11522
0
    }
11523
0
    return scan_hex(p, buf, i, &i);
11524
0
  }
11525
11526
0
  case 'u':     /* Unicode */
11527
0
    if (peek(p, '{')) {
11528
      /* \u{xxxxxxxx} form */
11529
0
      nextc(p);
11530
0
      c = read_escape_unicode(p, 8);
11531
0
      if (c < 0) return 0;
11532
0
      if (nextc(p) != '}') goto eof;
11533
0
    }
11534
0
    else {
11535
0
      c = read_escape_unicode(p, 4);
11536
0
      if (c < 0) return 0;
11537
0
    }
11538
0
    return -c;
11539
11540
0
  case 'b':/* backspace */
11541
0
    return '\010';
11542
11543
0
  case 's':/* space */
11544
0
    return ' ';
11545
11546
0
  case 'M':
11547
0
    if ((c = nextc(p)) != '-') {
11548
0
      yyerror(NULL, p, "Invalid escape character syntax");
11549
0
      pushback(p, c);
11550
0
      return '\0';
11551
0
    }
11552
0
    if ((c = nextc(p)) == '\\') {
11553
0
      return read_escape(p) | 0x80;
11554
0
    }
11555
0
    else if (c < 0) goto eof;
11556
0
    else {
11557
0
      return ((c & 0xff) | 0x80);
11558
0
    }
11559
11560
0
  case 'C':
11561
0
    if ((c = nextc(p)) != '-') {
11562
0
      yyerror(NULL, p, "Invalid escape character syntax");
11563
0
      pushback(p, c);
11564
0
      return '\0';
11565
0
    }
11566
0
  case 'c':
11567
0
    if ((c = nextc(p))== '\\') {
11568
0
      c = read_escape(p);
11569
0
    }
11570
0
    else if (c == '?')
11571
0
      return 0177;
11572
0
    else if (c < 0) goto eof;
11573
0
    return c & 0x9f;
11574
11575
0
    eof:
11576
0
  case -1:
11577
0
  case -2:                      /* end of a file */
11578
0
    yyerror(NULL, p, "Invalid escape character syntax");
11579
0
    return '\0';
11580
11581
0
  default:
11582
0
    return c;
11583
0
  }
11584
0
}
11585
11586
static void
11587
heredoc_count_indent(parser_heredoc_info *hinfo, const char *str, size_t len, size_t spaces, size_t *offset)
11588
0
{
11589
0
  size_t indent = 0;
11590
0
  *offset = 0;
11591
0
  for (size_t i = 0; i < len; i++) {
11592
0
    size_t size;
11593
0
    if (str[i] == '\n')
11594
0
      break;
11595
0
    else if (str[i] == '\t')
11596
0
      size = 8;
11597
0
    else if (ISSPACE(str[i]))
11598
0
      size = 1;
11599
0
    else
11600
0
      break;
11601
0
    size_t nindent = indent + size;
11602
0
    if (nindent > spaces || nindent > hinfo->indent)
11603
0
      break;
11604
0
    indent = nindent;
11605
0
    *offset += 1;
11606
0
  }
11607
0
}
11608
11609
static void
11610
heredoc_remove_indent(parser_state *p, parser_heredoc_info *hinfo)
11611
0
{
11612
0
  if (!hinfo->remove_indent || hinfo->indent == 0)
11613
0
    return;
11614
0
  node *indented, *n, *pair, *escaped, *nspaces;
11615
0
  const char *str;
11616
0
  size_t len, spaces, offset, start, end;
11617
0
  indented = hinfo->indented;
11618
0
  while (indented) {
11619
0
    n = indented->car;
11620
0
    pair = n->car;
11621
0
    str = (char*)pair->car;
11622
0
    len = (size_t)pair->cdr;
11623
0
    escaped = n->cdr->car;
11624
0
    nspaces = n->cdr->cdr;
11625
0
    if (escaped) {
11626
0
      char *newstr = strndup(str, len);
11627
0
      size_t newlen = 0;
11628
0
      start = 0;
11629
0
      while (start < len) {
11630
0
        end = escaped ? (size_t)escaped->car : len;
11631
0
        if (end > len) end = len;
11632
0
        spaces = (size_t)nspaces->car;
11633
0
        size_t esclen = end - start;
11634
0
        heredoc_count_indent(hinfo, str + start, esclen, spaces, &offset);
11635
0
        esclen -= offset;
11636
0
        memcpy(newstr + newlen, str + start + offset, esclen);
11637
0
        newlen += esclen;
11638
0
        start = end;
11639
0
        if (escaped)
11640
0
          escaped = escaped->cdr;
11641
0
        nspaces = nspaces->cdr;
11642
0
      }
11643
0
      if (newlen < len)
11644
0
        newstr[newlen] = '\0';
11645
0
      pair->car = (node*)newstr;
11646
0
      pair->cdr = (node*)newlen;
11647
0
    }
11648
0
    else {
11649
0
      spaces = (size_t)nspaces->car;
11650
0
      heredoc_count_indent(hinfo, str, len, spaces, &offset);
11651
0
      pair->car = (node*)(str + offset);
11652
0
      pair->cdr = (node*)(len - offset);
11653
0
    }
11654
0
    indented = indented->cdr;
11655
0
  }
11656
0
}
11657
11658
static void
11659
heredoc_push_indented(parser_state *p, parser_heredoc_info *hinfo, node *pair, node *escaped, node *nspaces, mrb_bool empty_line)
11660
0
{
11661
0
  hinfo->indented = push(hinfo->indented, cons(pair, cons(escaped, nspaces)));
11662
0
  while (nspaces) {
11663
0
    size_t tspaces = (size_t)nspaces->car;
11664
0
    if ((hinfo->indent == ~0U || tspaces < hinfo->indent) && !empty_line)
11665
0
      hinfo->indent = tspaces;
11666
0
    nspaces = nspaces->cdr;
11667
0
  }
11668
0
}
11669
11670
static int
11671
parse_string(parser_state *p)
11672
300k
{
11673
300k
  int c;
11674
300k
  string_type type = (string_type)p->lex_strterm->type;
11675
300k
  int nest_level = p->lex_strterm->level;
11676
300k
  int beg = p->lex_strterm->paren;
11677
300k
  int end = p->lex_strterm->term;
11678
300k
  parser_heredoc_info *hinfo = (type & STR_FUNC_HEREDOC) ? parsing_heredoc_info(p) : NULL;
11679
11680
300k
  mrb_bool unindent = hinfo && hinfo->remove_indent;
11681
300k
  mrb_bool head = hinfo && hinfo->line_head;
11682
300k
  mrb_bool empty = TRUE;
11683
300k
  size_t spaces = 0;
11684
300k
  size_t pos = -1;
11685
300k
  node *escaped = NULL;
11686
300k
  node *nspaces = NULL;
11687
11688
300k
  if (beg == 0) beg = -3;       /* should never happen */
11689
300k
  if (end == 0) end = -3;
11690
300k
  newtok(p);
11691
2.22M
  while ((c = nextc(p)) != end || nest_level != 0) {
11692
1.92M
    pos++;
11693
1.92M
    if (hinfo && (c == '\n' || c < 0)) {
11694
0
      mrb_bool line_head;
11695
0
      tokadd(p, '\n');
11696
0
      tokfix(p);
11697
0
      p->lineno++;
11698
0
      p->column = 0;
11699
0
      line_head = hinfo->line_head;
11700
0
      hinfo->line_head = TRUE;
11701
0
      if (line_head) {
11702
        /* check whether end of heredoc */
11703
0
        const char *s = tok(p);
11704
0
        int len = toklen(p);
11705
0
        if (hinfo->allow_indent) {
11706
0
          while (ISSPACE(*s) && len > 0) {
11707
0
            s++;
11708
0
            len--;
11709
0
          }
11710
0
        }
11711
0
        if (hinfo->term_len > 0 && len-1 == hinfo->term_len && strncmp(s, hinfo->term, len-1) == 0) {
11712
0
          heredoc_remove_indent(p, hinfo);
11713
0
          return tHEREDOC_END;
11714
0
        }
11715
0
      }
11716
0
      if (c < 0) {
11717
0
        char buf[256];
11718
0
        const char s1[] = "can't find heredoc delimiter \"";
11719
0
        const char s2[] = "\" anywhere before EOF";
11720
11721
0
        if (sizeof(s1)+sizeof(s2)+strlen(hinfo->term)+1 >= sizeof(buf)) {
11722
0
          yyerror(NULL, p, "can't find heredoc delimiter anywhere before EOF");
11723
0
        }
11724
0
        else {
11725
0
          strcpy(buf, s1);
11726
0
          strcat(buf, hinfo->term);
11727
0
          strcat(buf, s2);
11728
0
          yyerror(NULL, p, buf);
11729
0
        }
11730
0
        return 0;
11731
0
      }
11732
0
      node *nd = new_str(p, tok(p), toklen(p));
11733
0
      pylval.nd = nd;
11734
0
      if (unindent && head) {
11735
0
        nspaces = push(nspaces, nint(spaces));
11736
0
        heredoc_push_indented(p, hinfo, nd->cdr, escaped, nspaces, empty && line_head);
11737
0
      }
11738
0
      return tHD_STRING_MID;
11739
0
    }
11740
1.92M
    if (unindent && empty) {
11741
0
      if (c == '\t')
11742
0
        spaces += 8;
11743
0
      else if (ISSPACE(c))
11744
0
        spaces++;
11745
0
      else
11746
0
        empty = FALSE;
11747
0
    }
11748
1.92M
    if (c < 0) {
11749
0
      yyerror(NULL, p, "unterminated string meets end of file");
11750
0
      return 0;
11751
0
    }
11752
1.92M
    else if (c == beg) {
11753
0
      nest_level++;
11754
0
      p->lex_strterm->level = nest_level;
11755
0
    }
11756
1.92M
    else if (c == end) {
11757
0
      nest_level--;
11758
0
      p->lex_strterm->level = nest_level;
11759
0
    }
11760
1.92M
    else if (c == '\\') {
11761
0
      c = nextc(p);
11762
0
      if (type & STR_FUNC_EXPAND) {
11763
0
        if (c == end || c == beg) {
11764
0
          tokadd(p, c);
11765
0
        }
11766
0
        else if (c == '\n') {
11767
0
          p->lineno++;
11768
0
          p->column = 0;
11769
0
          if (unindent) {
11770
0
            nspaces = push(nspaces, nint(spaces));
11771
0
            escaped = push(escaped, nint(pos));
11772
0
            pos--;
11773
0
            empty = TRUE;
11774
0
            spaces = 0;
11775
0
          }
11776
0
          if (type & STR_FUNC_ARRAY) {
11777
0
            tokadd(p, '\n');
11778
0
          }
11779
0
        }
11780
0
        else if (type & STR_FUNC_REGEXP) {
11781
0
          tokadd(p, '\\');
11782
0
          tokadd(p, c);
11783
0
        }
11784
0
        else if (c == 'u' && peek(p, '{')) {
11785
          /* \u{xxxx xxxx xxxx} form */
11786
0
          nextc(p);
11787
0
          while (1) {
11788
0
            do c = nextc(p); while (ISSPACE(c));
11789
0
            if (c == '}') break;
11790
0
            pushback(p, c);
11791
0
            c = read_escape_unicode(p, 8);
11792
0
            if (c < 0) break;
11793
0
            tokadd(p, -c);
11794
0
          }
11795
0
          if (hinfo)
11796
0
            hinfo->line_head = FALSE;
11797
0
        }
11798
0
        else {
11799
0
          pushback(p, c);
11800
0
          tokadd(p, read_escape(p));
11801
0
          if (hinfo)
11802
0
            hinfo->line_head = FALSE;
11803
0
        }
11804
0
      }
11805
0
      else {
11806
0
        if (c != beg && c != end) {
11807
0
          if (c == '\n') {
11808
0
            p->lineno++;
11809
0
            p->column = 0;
11810
0
          }
11811
0
          if (!(c == '\\' || ((type & STR_FUNC_ARRAY) && ISSPACE(c)))) {
11812
0
            tokadd(p, '\\');
11813
0
          }
11814
0
        }
11815
0
        tokadd(p, c);
11816
0
      }
11817
0
      continue;
11818
0
    }
11819
1.92M
    else if ((c == '#') && (type & STR_FUNC_EXPAND)) {
11820
0
      c = nextc(p);
11821
0
      if (c == '{') {
11822
0
        tokfix(p);
11823
0
        p->lstate = EXPR_BEG;
11824
0
        p->cmd_start = TRUE;
11825
0
        node *nd = new_str(p, tok(p), toklen(p));
11826
0
        pylval.nd = nd;
11827
0
        if (hinfo) {
11828
0
          if (unindent && head) {
11829
0
            nspaces = push(nspaces, nint(spaces));
11830
0
            heredoc_push_indented(p, hinfo, nd->cdr, escaped, nspaces, FALSE);
11831
0
          }
11832
0
          hinfo->line_head = FALSE;
11833
0
          return tHD_STRING_PART;
11834
0
        }
11835
0
        return tSTRING_PART;
11836
0
      }
11837
0
      tokadd(p, '#');
11838
0
      pushback(p, c);
11839
0
      continue;
11840
0
    }
11841
1.92M
    if ((type & STR_FUNC_ARRAY) && ISSPACE(c)) {
11842
0
      if (toklen(p) == 0) {
11843
0
        do {
11844
0
          if (c == '\n') {
11845
0
            p->lineno++;
11846
0
            p->column = 0;
11847
0
            heredoc_treat_nextline(p);
11848
0
            if (p->parsing_heredoc != NULL) {
11849
0
              return tHD_LITERAL_DELIM;
11850
0
            }
11851
0
          }
11852
0
          c = nextc(p);
11853
0
        } while (ISSPACE(c));
11854
0
        pushback(p, c);
11855
0
        return tLITERAL_DELIM;
11856
0
      }
11857
0
      else {
11858
0
        pushback(p, c);
11859
0
        tokfix(p);
11860
0
        pylval.nd = new_str(p, tok(p), toklen(p));
11861
0
        return tSTRING_MID;
11862
0
      }
11863
0
    }
11864
1.92M
    if (c == '\n') {
11865
0
      p->lineno++;
11866
0
      p->column = 0;
11867
0
    }
11868
1.92M
    tokadd(p, c);
11869
1.92M
  }
11870
11871
300k
  tokfix(p);
11872
300k
  p->lstate = EXPR_END;
11873
300k
  end_strterm(p);
11874
11875
300k
  if (type & STR_FUNC_XQUOTE) {
11876
0
    pylval.nd = new_xstr(p, tok(p), toklen(p));
11877
0
    return tXSTRING;
11878
0
  }
11879
11880
300k
  if (type & STR_FUNC_REGEXP) {
11881
0
    int f = 0;
11882
0
    int re_opt;
11883
0
    char *s = strndup(tok(p), toklen(p));
11884
0
    char flags[3];
11885
0
    char *flag = flags;
11886
0
    char enc = '\0';
11887
0
    char *encp;
11888
0
    char *dup;
11889
11890
0
    newtok(p);
11891
0
    while (re_opt = nextc(p), re_opt >= 0 && ISALPHA(re_opt)) {
11892
0
      switch (re_opt) {
11893
0
      case 'i': f |= 1; break;
11894
0
      case 'x': f |= 2; break;
11895
0
      case 'm': f |= 4; break;
11896
0
      case 'u': f |= 16; break;
11897
0
      case 'n': f |= 32; break;
11898
0
      case 'o': break;
11899
0
      default: tokadd(p, re_opt); break;
11900
0
      }
11901
0
    }
11902
0
    pushback(p, re_opt);
11903
0
    if (toklen(p)) {
11904
0
      char msg[128];
11905
11906
0
      strcpy(msg, "unknown regexp option");
11907
0
      tokfix(p);
11908
0
      if (toklen(p) > 1) {
11909
0
        strcat(msg, "s");
11910
0
      }
11911
0
      strcat(msg, " - ");
11912
0
      strncat(msg, tok(p), sizeof(msg) - strlen(msg) - 1);
11913
0
      yyerror(NULL, p, msg);
11914
0
    }
11915
0
    if (f != 0) {
11916
0
      if (f & 1) *flag++ = 'i';
11917
0
      if (f & 2) *flag++ = 'x';
11918
0
      if (f & 4) *flag++ = 'm';
11919
0
      if (f & 16) enc = 'u';
11920
0
      if (f & 32) enc = 'n';
11921
0
    }
11922
0
    if (flag > flags) {
11923
0
      dup = strndup(flags, (size_t)(flag - flags));
11924
0
    }
11925
0
    else {
11926
0
      dup = NULL;
11927
0
    }
11928
0
    if (enc) {
11929
0
      encp = strndup(&enc, 1);
11930
0
    }
11931
0
    else {
11932
0
      encp = NULL;
11933
0
    }
11934
0
    pylval.nd = new_regx(p, s, dup, encp);
11935
11936
0
    return tREGEXP;
11937
0
  }
11938
300k
  pylval.nd = new_str(p, tok(p), toklen(p));
11939
11940
300k
  return tSTRING;
11941
300k
}
11942
11943
static int
11944
number_literal_suffix(parser_state *p)
11945
251k
{
11946
251k
  int c, result = 0;
11947
251k
  node *list = 0;
11948
251k
  int column = p->column;
11949
251k
  int mask = NUM_SUFFIX_R|NUM_SUFFIX_I;
11950
11951
251k
  while ((c = nextc(p)) != -1) {
11952
251k
    list = push(list, nint(c));
11953
11954
251k
    if ((mask & NUM_SUFFIX_I) && c == 'i') {
11955
0
      result |= (mask & NUM_SUFFIX_I);
11956
0
      mask &= ~NUM_SUFFIX_I;
11957
      /* r after i, rational of complex is disallowed */
11958
0
      mask &= ~NUM_SUFFIX_R;
11959
0
      continue;
11960
0
    }
11961
251k
    if ((mask & NUM_SUFFIX_R) && c == 'r') {
11962
0
      result |= (mask & NUM_SUFFIX_R);
11963
0
      mask &= ~NUM_SUFFIX_R;
11964
0
      continue;
11965
0
    }
11966
251k
    if (!ISASCII(c) || ISALPHA(c) || c == '_') {
11967
0
      p->column = column;
11968
0
      if (p->pb) {
11969
0
        p->pb = append(list, p->pb);
11970
0
      }
11971
0
      else {
11972
0
        p->pb = list;
11973
0
      }
11974
0
      return 0;
11975
0
    }
11976
251k
    pushback(p, c);
11977
251k
    break;
11978
251k
  }
11979
251k
  return result;
11980
251k
}
11981
11982
static int
11983
heredoc_identifier(parser_state *p)
11984
0
{
11985
0
  int c;
11986
0
  int type = str_heredoc;
11987
0
  mrb_bool indent = FALSE;
11988
0
  mrb_bool squiggly = FALSE;
11989
0
  mrb_bool quote = FALSE;
11990
0
  node *newnode;
11991
0
  parser_heredoc_info *info;
11992
11993
0
  c = nextc(p);
11994
0
  if (ISSPACE(c) || c == '=') {
11995
0
    pushback(p, c);
11996
0
    return 0;
11997
0
  }
11998
0
  if (c == '-' || c == '~') {
11999
0
    if (c == '-')
12000
0
      indent = TRUE;
12001
0
    if (c == '~')
12002
0
      squiggly = TRUE;
12003
0
    c = nextc(p);
12004
0
  }
12005
0
  if (c == '\'' || c == '"') {
12006
0
    int term = c;
12007
0
    if (c == '\'')
12008
0
      quote = TRUE;
12009
0
    newtok(p);
12010
0
    while ((c = nextc(p)) >= 0 && c != term) {
12011
0
      if (c == '\n') {
12012
0
        c = -1;
12013
0
        break;
12014
0
      }
12015
0
      tokadd(p, c);
12016
0
    }
12017
0
    if (c < 0) {
12018
0
      yyerror(NULL, p, "unterminated here document identifier");
12019
0
      return 0;
12020
0
    }
12021
0
  }
12022
0
  else {
12023
0
    if (c < 0) {
12024
0
      return 0;                 /* missing here document identifier */
12025
0
    }
12026
0
    if (! identchar(c)) {
12027
0
      pushback(p, c);
12028
0
      if (indent) pushback(p, '-');
12029
0
      if (squiggly) pushback(p, '~');
12030
0
      return 0;
12031
0
    }
12032
0
    newtok(p);
12033
0
    do {
12034
0
      tokadd(p, c);
12035
0
    } while ((c = nextc(p)) >= 0 && identchar(c));
12036
0
    pushback(p, c);
12037
0
  }
12038
0
  tokfix(p);
12039
0
  newnode = new_heredoc(p);
12040
0
  info = (parser_heredoc_info*)newnode->cdr;
12041
0
  info->term = strndup(tok(p), toklen(p));
12042
0
  info->term_len = toklen(p);
12043
0
  if (! quote)
12044
0
    type |= STR_FUNC_EXPAND;
12045
0
  info->type = (string_type)type;
12046
0
  info->allow_indent = indent || squiggly;
12047
0
  info->remove_indent = squiggly;
12048
0
  info->indent = ~0U;
12049
0
  info->indented = NULL;
12050
0
  info->line_head = TRUE;
12051
0
  info->doc = NULL;
12052
0
  p->heredocs_from_nextline = push(p->heredocs_from_nextline, newnode);
12053
0
  p->lstate = EXPR_END;
12054
12055
0
  pylval.nd = newnode;
12056
0
  return tHEREDOC_BEG;
12057
0
}
12058
12059
static int
12060
arg_ambiguous(parser_state *p)
12061
0
{
12062
0
  yywarning(p, "ambiguous first argument; put parentheses or even spaces");
12063
0
  return 1;
12064
0
}
12065
12066
#include "lex.def"
12067
12068
static int
12069
parser_yylex(parser_state *p)
12070
1.70M
{
12071
1.70M
  int32_t c;
12072
1.70M
  int nlines = 1;
12073
1.70M
  int space_seen = 0;
12074
1.70M
  int cmd_state;
12075
1.70M
  enum mrb_lex_state_enum last_state;
12076
1.70M
  int token_column;
12077
12078
1.70M
  if (p->lex_strterm) {
12079
300k
    if (is_strterm_type(p, STR_FUNC_HEREDOC)) {
12080
0
      if (p->parsing_heredoc != NULL)
12081
0
        return parse_string(p);
12082
0
    }
12083
300k
    else
12084
300k
      return parse_string(p);
12085
300k
  }
12086
1.40M
  cmd_state = p->cmd_start;
12087
1.40M
  p->cmd_start = FALSE;
12088
2.28M
  retry:
12089
2.28M
  last_state = p->lstate;
12090
2.28M
  switch (c = nextc(p)) {
12091
0
  case '\004':  /* ^D */
12092
0
  case '\032':  /* ^Z */
12093
0
  case '\0':    /* NUL */
12094
103
  case -1:      /* end of script. */
12095
103
    if (p->heredocs_from_nextline)
12096
0
      goto maybe_heredoc;
12097
103
    return 0;
12098
12099
  /* white spaces */
12100
775k
  case ' ': case '\t': case '\f': case '\r':
12101
775k
  case '\13':   /* '\v' */
12102
775k
    space_seen = 1;
12103
775k
    goto retry;
12104
12105
0
  case '#':     /* it's a comment */
12106
0
    skip(p, '\n');
12107
    /* fall through */
12108
0
  case -2:      /* end of a file */
12109
169k
  case '\n':
12110
169k
  maybe_heredoc:
12111
169k
    heredoc_treat_nextline(p);
12112
169k
    p->column = 0;
12113
169k
    switch (p->lstate) {
12114
103k
    case EXPR_BEG:
12115
103k
    case EXPR_FNAME:
12116
103k
    case EXPR_DOT:
12117
103k
    case EXPR_CLASS:
12118
103k
    case EXPR_VALUE:
12119
103k
      p->lineno++;
12120
103k
      if (p->parsing_heredoc != NULL) {
12121
0
        if (p->lex_strterm) {
12122
0
          return parse_string(p);
12123
0
        }
12124
0
      }
12125
103k
      goto retry;
12126
103k
    default:
12127
65.6k
      break;
12128
169k
    }
12129
65.6k
    if (p->parsing_heredoc != NULL) {
12130
0
      pylval.num = nlines;
12131
0
      return '\n';
12132
0
    }
12133
65.6k
    while ((c = nextc(p))) {
12134
65.6k
      switch (c) {
12135
0
      case ' ': case '\t': case '\f': case '\r':
12136
0
      case '\13': /* '\v' */
12137
0
        space_seen = 1;
12138
0
        break;
12139
0
      case '#': /* comment as a whitespace */
12140
0
        skip(p, '\n');
12141
0
        nlines++;
12142
0
        break;
12143
0
      case '.':
12144
0
        if (!peek(p, '.')) {
12145
0
          pushback(p, '.');
12146
0
          p->lineno+=nlines; nlines=1;
12147
0
          goto retry;
12148
0
        }
12149
0
        pushback(p, c);
12150
0
        goto normal_newline;
12151
0
      case '&':
12152
0
        if (peek(p, '.')) {
12153
0
          pushback(p, '&');
12154
0
          p->lineno+=nlines; nlines=1;
12155
0
          goto retry;
12156
0
        }
12157
0
        pushback(p, c);
12158
0
        goto normal_newline;
12159
103
      case -1:                  /* EOF */
12160
103
      case -2:                  /* end of a file */
12161
103
        goto normal_newline;
12162
65.5k
      default:
12163
65.5k
        pushback(p, c);
12164
65.5k
        goto normal_newline;
12165
65.6k
      }
12166
65.6k
    }
12167
65.6k
  normal_newline:
12168
65.6k
    p->cmd_start = TRUE;
12169
65.6k
    p->lstate = EXPR_BEG;
12170
65.6k
    pylval.num = nlines;
12171
65.6k
    return '\n';
12172
12173
4.66k
  case '*':
12174
4.66k
    if ((c = nextc(p)) == '*') {
12175
0
      if ((c = nextc(p)) == '=') {
12176
0
        pylval.id = intern_op(pow);
12177
0
        p->lstate = EXPR_BEG;
12178
0
        return tOP_ASGN;
12179
0
      }
12180
0
      pushback(p, c);
12181
0
      if (IS_SPCARG(c)) {
12182
0
        yywarning(p, "'**' interpreted as argument prefix");
12183
0
        c = tDSTAR;
12184
0
      }
12185
0
      else if (IS_BEG()) {
12186
0
        c = tDSTAR;
12187
0
      }
12188
0
      else {
12189
0
        c = tPOW; /* "**", "argument prefix" */
12190
0
      }
12191
0
    }
12192
4.66k
    else {
12193
4.66k
      if (c == '=') {
12194
0
        pylval.id = intern_op(mul);
12195
0
        p->lstate = EXPR_BEG;
12196
0
        return tOP_ASGN;
12197
0
      }
12198
4.66k
      pushback(p, c);
12199
4.66k
      if (IS_SPCARG(c)) {
12200
0
        yywarning(p, "'*' interpreted as argument prefix");
12201
0
        c = tSTAR;
12202
0
      }
12203
4.66k
      else if (IS_BEG()) {
12204
0
        c = tSTAR;
12205
0
      }
12206
4.66k
      else {
12207
4.66k
        c = '*';
12208
4.66k
      }
12209
4.66k
    }
12210
4.66k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12211
0
      p->lstate = EXPR_ARG;
12212
0
    }
12213
4.66k
    else {
12214
4.66k
      p->lstate = EXPR_BEG;
12215
4.66k
    }
12216
4.66k
    return c;
12217
12218
2.04k
  case '!':
12219
2.04k
    c = nextc(p);
12220
2.04k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12221
0
      p->lstate = EXPR_ARG;
12222
0
      if (c == '@') {
12223
0
        return '!';
12224
0
      }
12225
0
    }
12226
2.04k
    else {
12227
2.04k
      p->lstate = EXPR_BEG;
12228
2.04k
    }
12229
2.04k
    if (c == '=') {
12230
2.04k
      return tNEQ;
12231
2.04k
    }
12232
0
    if (c == '~') {
12233
0
      return tNMATCH;
12234
0
    }
12235
0
    pushback(p, c);
12236
0
    return '!';
12237
12238
184k
  case '=':
12239
184k
    if (p->column == 1) {
12240
0
      static const char begin[] = "begin";
12241
0
      static const char end[] = "\n=end";
12242
0
      if (peeks(p, begin)) {
12243
0
        c = peekc_n(p, sizeof(begin)-1);
12244
0
        if (c < 0 || ISSPACE(c)) {
12245
0
          do {
12246
0
            if (!skips(p, end)) {
12247
0
              yyerror(NULL, p, "embedded document meets end of file");
12248
0
              return 0;
12249
0
            }
12250
0
            c = nextc(p);
12251
0
          } while (!(c < 0 || ISSPACE(c)));
12252
0
          if (c != '\n') skip(p, '\n');
12253
0
          p->lineno+=nlines; nlines=1;
12254
0
          p->column = 0;
12255
0
          goto retry;
12256
0
        }
12257
0
      }
12258
0
    }
12259
184k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12260
0
      p->lstate = EXPR_ARG;
12261
0
    }
12262
184k
    else {
12263
184k
      p->lstate = EXPR_BEG;
12264
184k
    }
12265
184k
    if ((c = nextc(p)) == '=') {
12266
111
      if ((c = nextc(p)) == '=') {
12267
0
        return tEQQ;
12268
0
      }
12269
111
      pushback(p, c);
12270
111
      return tEQ;
12271
111
    }
12272
184k
    if (c == '~') {
12273
0
      return tMATCH;
12274
0
    }
12275
184k
    else if (c == '>') {
12276
150k
      return tASSOC;
12277
150k
    }
12278
34.6k
    pushback(p, c);
12279
34.6k
    return '=';
12280
12281
285
  case '<':
12282
285
    c = nextc(p);
12283
285
    if (c == '<' &&
12284
285
        p->lstate != EXPR_DOT &&
12285
285
        p->lstate != EXPR_CLASS &&
12286
285
        !IS_END() &&
12287
285
        (!IS_ARG() || space_seen)) {
12288
0
      int token = heredoc_identifier(p);
12289
0
      if (token)
12290
0
        return token;
12291
0
    }
12292
285
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12293
0
      p->lstate = EXPR_ARG;
12294
0
    }
12295
285
    else {
12296
285
      p->lstate = EXPR_BEG;
12297
285
      if (p->lstate == EXPR_CLASS) {
12298
0
        p->cmd_start = TRUE;
12299
0
      }
12300
285
    }
12301
285
    if (c == '=') {
12302
84
      if ((c = nextc(p)) == '>') {
12303
0
        return tCMP;
12304
0
      }
12305
84
      pushback(p, c);
12306
84
      return tLEQ;
12307
84
    }
12308
201
    if (c == '<') {
12309
0
      if ((c = nextc(p)) == '=') {
12310
0
        pylval.id = intern_op(lshift);
12311
0
        p->lstate = EXPR_BEG;
12312
0
        return tOP_ASGN;
12313
0
      }
12314
0
      pushback(p, c);
12315
0
      return tLSHFT;
12316
0
    }
12317
201
    pushback(p, c);
12318
201
    return '<';
12319
12320
4.38k
  case '>':
12321
4.38k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12322
0
      p->lstate = EXPR_ARG;
12323
0
    }
12324
4.38k
    else {
12325
4.38k
      p->lstate = EXPR_BEG;
12326
4.38k
    }
12327
4.38k
    if ((c = nextc(p)) == '=') {
12328
84
      return tGEQ;
12329
84
    }
12330
4.30k
    if (c == '>') {
12331
3.75k
      if ((c = nextc(p)) == '=') {
12332
0
        pylval.id = intern_op(rshift);
12333
0
        p->lstate = EXPR_BEG;
12334
0
        return tOP_ASGN;
12335
0
      }
12336
3.75k
      pushback(p, c);
12337
3.75k
      return tRSHFT;
12338
3.75k
    }
12339
545
    pushback(p, c);
12340
545
    return '>';
12341
12342
300k
  case '"':
12343
300k
    p->lex_strterm = new_strterm(p, str_dquote, '"', 0);
12344
300k
    return tSTRING_BEG;
12345
12346
0
  case '\'':
12347
0
    p->lex_strterm = new_strterm(p, str_squote, '\'', 0);
12348
0
    return parse_string(p);
12349
12350
0
  case '`':
12351
0
    if (p->lstate == EXPR_FNAME) {
12352
0
      p->lstate = EXPR_ENDFN;
12353
0
      return '`';
12354
0
    }
12355
0
    if (p->lstate == EXPR_DOT) {
12356
0
      if (cmd_state)
12357
0
        p->lstate = EXPR_CMDARG;
12358
0
      else
12359
0
        p->lstate = EXPR_ARG;
12360
0
      return '`';
12361
0
    }
12362
0
    p->lex_strterm = new_strterm(p, str_xquote, '`', 0);
12363
0
    return tXSTRING_BEG;
12364
12365
2.28k
  case '?':
12366
2.28k
    if (IS_END()) {
12367
2.28k
      p->lstate = EXPR_VALUE;
12368
2.28k
      return '?';
12369
2.28k
    }
12370
0
    c = nextc(p);
12371
0
    if (c < 0) {
12372
0
      yyerror(NULL, p, "incomplete character syntax");
12373
0
      return 0;
12374
0
    }
12375
0
    if (ISSPACE(c)) {
12376
0
      if (!IS_ARG()) {
12377
0
        int c2;
12378
0
        switch (c) {
12379
0
        case ' ':
12380
0
          c2 = 's';
12381
0
          break;
12382
0
        case '\n':
12383
0
          c2 = 'n';
12384
0
          break;
12385
0
        case '\t':
12386
0
          c2 = 't';
12387
0
          break;
12388
0
        case '\v':
12389
0
          c2 = 'v';
12390
0
          break;
12391
0
        case '\r':
12392
0
          c2 = 'r';
12393
0
          break;
12394
0
        case '\f':
12395
0
          c2 = 'f';
12396
0
          break;
12397
0
        default:
12398
0
          c2 = 0;
12399
0
          break;
12400
0
        }
12401
0
        if (c2) {
12402
0
          char buf[256];
12403
0
          char cc[] = { (char)c2, '\0' };
12404
12405
0
          strcpy(buf, "invalid character syntax; use ?\\");
12406
0
          strncat(buf, cc, 2);
12407
0
          yyerror(NULL, p, buf);
12408
0
        }
12409
0
      }
12410
0
      ternary:
12411
0
      pushback(p, c);
12412
0
      p->lstate = EXPR_VALUE;
12413
0
      return '?';
12414
0
    }
12415
0
    newtok(p);
12416
    /* need support UTF-8 if configured */
12417
0
    if ((ISALNUM(c) || c == '_')) {
12418
0
      int c2 = nextc(p);
12419
0
      pushback(p, c2);
12420
0
      if ((ISALNUM(c2) || c2 == '_')) {
12421
0
        goto ternary;
12422
0
      }
12423
0
    }
12424
0
    if (c == '\\') {
12425
0
      c = read_escape(p);
12426
0
      tokadd(p, c);
12427
0
    }
12428
0
    else {
12429
0
      tokadd(p, c);
12430
0
    }
12431
0
    tokfix(p);
12432
0
    pylval.nd = new_str(p, tok(p), toklen(p));
12433
0
    p->lstate = EXPR_END;
12434
0
    return tCHAR;
12435
12436
0
  case '&':
12437
0
    if ((c = nextc(p)) == '&') {
12438
0
      p->lstate = EXPR_BEG;
12439
0
      if ((c = nextc(p)) == '=') {
12440
0
        pylval.id = intern_op(andand);
12441
0
        p->lstate = EXPR_BEG;
12442
0
        return tOP_ASGN;
12443
0
      }
12444
0
      pushback(p, c);
12445
0
      return tANDOP;
12446
0
    }
12447
0
    else if (c == '.') {
12448
0
      p->lstate = EXPR_DOT;
12449
0
      return tANDDOT;
12450
0
    }
12451
0
    else if (c == '=') {
12452
0
      pylval.id = intern_op(and);
12453
0
      p->lstate = EXPR_BEG;
12454
0
      return tOP_ASGN;
12455
0
    }
12456
0
    pushback(p, c);
12457
0
    if (IS_SPCARG(c)) {
12458
0
      yywarning(p, "'&' interpreted as argument prefix");
12459
0
      c = tAMPER;
12460
0
    }
12461
0
    else if (IS_BEG()) {
12462
0
      c = tAMPER;
12463
0
    }
12464
0
    else {
12465
0
      c = '&';
12466
0
    }
12467
0
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12468
0
      p->lstate = EXPR_ARG;
12469
0
    }
12470
0
    else {
12471
0
      p->lstate = EXPR_BEG;
12472
0
    }
12473
0
    return c;
12474
12475
6.41k
  case '|':
12476
6.41k
    if ((c = nextc(p)) == '|') {
12477
6.41k
      p->lstate = EXPR_BEG;
12478
6.41k
      if ((c = nextc(p)) == '=') {
12479
6.41k
        pylval.id = intern_op(oror);
12480
6.41k
        p->lstate = EXPR_BEG;
12481
6.41k
        return tOP_ASGN;
12482
6.41k
      }
12483
0
      pushback(p, c);
12484
0
      return tOROP;
12485
6.41k
    }
12486
0
    if (c == '=') {
12487
0
      pylval.id = intern_op(or);
12488
0
      p->lstate = EXPR_BEG;
12489
0
      return tOP_ASGN;
12490
0
    }
12491
0
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12492
0
      p->lstate = EXPR_ARG;
12493
0
    }
12494
0
    else {
12495
0
      p->lstate = EXPR_BEG;
12496
0
    }
12497
0
    pushback(p, c);
12498
0
    return '|';
12499
12500
3.49k
  case '+':
12501
3.49k
    c = nextc(p);
12502
3.49k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12503
0
      p->lstate = EXPR_ARG;
12504
0
      if (c == '@') {
12505
0
        return tUPLUS;
12506
0
      }
12507
0
      pushback(p, c);
12508
0
      return '+';
12509
0
    }
12510
3.49k
    if (c == '=') {
12511
0
      pylval.id = intern_op(add);
12512
0
      p->lstate = EXPR_BEG;
12513
0
      return tOP_ASGN;
12514
0
    }
12515
3.49k
    if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
12516
0
      p->lstate = EXPR_BEG;
12517
0
      pushback(p, c);
12518
0
      if (c >= 0 && ISDIGIT(c)) {
12519
0
        c = '+';
12520
0
        goto start_num;
12521
0
      }
12522
0
      return tUPLUS;
12523
0
    }
12524
3.49k
    p->lstate = EXPR_BEG;
12525
3.49k
    pushback(p, c);
12526
3.49k
    return '+';
12527
12528
4.32k
  case '-':
12529
4.32k
    c = nextc(p);
12530
4.32k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12531
0
      p->lstate = EXPR_ARG;
12532
0
      if (c == '@') {
12533
0
        return tUMINUS;
12534
0
      }
12535
0
      pushback(p, c);
12536
0
      return '-';
12537
0
    }
12538
4.32k
    if (c == '=') {
12539
0
      pylval.id = intern_op(sub);
12540
0
      p->lstate = EXPR_BEG;
12541
0
      return tOP_ASGN;
12542
0
    }
12543
4.32k
    if (c == '>') {
12544
0
      p->lstate = EXPR_ENDFN;
12545
0
      return tLAMBDA;
12546
0
    }
12547
4.32k
    if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
12548
0
      p->lstate = EXPR_BEG;
12549
0
      pushback(p, c);
12550
0
      if (c >= 0 && ISDIGIT(c)) {
12551
0
        return tUMINUS_NUM;
12552
0
      }
12553
0
      return tUMINUS;
12554
0
    }
12555
4.32k
    p->lstate = EXPR_BEG;
12556
4.32k
    pushback(p, c);
12557
4.32k
    return '-';
12558
12559
11.2k
  case '.':
12560
11.2k
    {
12561
11.2k
      int is_beg = IS_BEG();
12562
11.2k
      p->lstate = EXPR_MID;
12563
11.2k
      if ((c = nextc(p)) == '.') {
12564
0
        if ((c = nextc(p)) == '.') {
12565
0
          return is_beg ? tBDOT3 : tDOT3;
12566
0
        }
12567
0
        pushback(p, c);
12568
0
        return is_beg ? tBDOT2 : tDOT2;
12569
0
      }
12570
11.2k
      pushback(p, c);
12571
11.2k
      p->lstate = EXPR_BEG;
12572
11.2k
      if (c >= 0 && ISDIGIT(c)) {
12573
0
        yyerror(NULL, p, "no .<digit> floating literal anymore; put 0 before dot");
12574
0
      }
12575
11.2k
      p->lstate = EXPR_DOT;
12576
11.2k
      return '.';
12577
11.2k
    }
12578
12579
0
    start_num:
12580
242k
  case '0': case '1': case '2': case '3': case '4':
12581
251k
  case '5': case '6': case '7': case '8': case '9':
12582
251k
  {
12583
251k
    int is_float, seen_point, seen_e, nondigit;
12584
251k
    int suffix = 0;
12585
12586
251k
    is_float = seen_point = seen_e = nondigit = 0;
12587
251k
    p->lstate = EXPR_END;
12588
251k
    newtok(p);
12589
251k
    if (c == '-') {
12590
0
      tokadd(p, c);
12591
0
      c = nextc(p);
12592
0
    }
12593
251k
    else if (c == '+') {
12594
0
      c = nextc(p);
12595
0
    }
12596
251k
    if (c == '0') {
12597
1.96k
#define no_digits() do {yyerror(NULL, p,"numeric literal without digits"); return 0;} while (0)
12598
1.96k
      int start = toklen(p);
12599
1.96k
      c = nextc(p);
12600
1.96k
      if (c == 'x' || c == 'X') {
12601
        /* hexadecimal */
12602
0
        c = nextc(p);
12603
0
        if (c >= 0 && ISXDIGIT(c)) {
12604
0
          do {
12605
0
            if (c == '_') {
12606
0
              if (nondigit) break;
12607
0
              nondigit = c;
12608
0
              continue;
12609
0
            }
12610
0
            if (!ISXDIGIT(c)) break;
12611
0
            nondigit = 0;
12612
0
            tokadd(p, tolower(c));
12613
0
          } while ((c = nextc(p)) >= 0);
12614
0
        }
12615
0
        pushback(p, c);
12616
0
        tokfix(p);
12617
0
        if (toklen(p) == start) {
12618
0
          no_digits();
12619
0
        }
12620
0
        else if (nondigit) goto trailing_uc;
12621
0
        suffix = number_literal_suffix(p);
12622
0
        pylval.nd = new_int(p, tok(p), 16, suffix);
12623
0
        return tINTEGER;
12624
0
      }
12625
1.96k
      if (c == 'b' || c == 'B') {
12626
        /* binary */
12627
0
        c = nextc(p);
12628
0
        if (c == '0' || c == '1') {
12629
0
          do {
12630
0
            if (c == '_') {
12631
0
              if (nondigit) break;
12632
0
              nondigit = c;
12633
0
              continue;
12634
0
            }
12635
0
            if (c != '0' && c != '1') break;
12636
0
            nondigit = 0;
12637
0
            tokadd(p, c);
12638
0
          } while ((c = nextc(p)) >= 0);
12639
0
        }
12640
0
        pushback(p, c);
12641
0
        tokfix(p);
12642
0
        if (toklen(p) == start) {
12643
0
          no_digits();
12644
0
        }
12645
0
        else if (nondigit) goto trailing_uc;
12646
0
        suffix = number_literal_suffix(p);
12647
0
        pylval.nd = new_int(p, tok(p), 2, suffix);
12648
0
        return tINTEGER;
12649
0
      }
12650
1.96k
      if (c == 'd' || c == 'D') {
12651
        /* decimal */
12652
0
        c = nextc(p);
12653
0
        if (c >= 0 && ISDIGIT(c)) {
12654
0
          do {
12655
0
            if (c == '_') {
12656
0
              if (nondigit) break;
12657
0
              nondigit = c;
12658
0
              continue;
12659
0
            }
12660
0
            if (!ISDIGIT(c)) break;
12661
0
            nondigit = 0;
12662
0
            tokadd(p, c);
12663
0
          } while ((c = nextc(p)) >= 0);
12664
0
        }
12665
0
        pushback(p, c);
12666
0
        tokfix(p);
12667
0
        if (toklen(p) == start) {
12668
0
          no_digits();
12669
0
        }
12670
0
        else if (nondigit) goto trailing_uc;
12671
0
        suffix = number_literal_suffix(p);
12672
0
        pylval.nd = new_int(p, tok(p), 10, suffix);
12673
0
        return tINTEGER;
12674
0
      }
12675
1.96k
      if (c == '_') {
12676
        /* 0_0 */
12677
0
        goto octal_number;
12678
0
      }
12679
1.96k
      if (c == 'o' || c == 'O') {
12680
        /* prefixed octal */
12681
0
        c = nextc(p);
12682
0
        if (c < 0 || c == '_' || !ISDIGIT(c)) {
12683
0
          no_digits();
12684
0
        }
12685
0
      }
12686
1.96k
      if (c >= '0' && c <= '7') {
12687
        /* octal */
12688
0
        octal_number:
12689
0
        do {
12690
0
          if (c == '_') {
12691
0
            if (nondigit) break;
12692
0
            nondigit = c;
12693
0
            continue;
12694
0
          }
12695
0
          if (c < '0' || c > '9') break;
12696
0
          if (c > '7') goto invalid_octal;
12697
0
          nondigit = 0;
12698
0
          tokadd(p, c);
12699
0
        } while ((c = nextc(p)) >= 0);
12700
12701
0
        if (toklen(p) > start) {
12702
0
          pushback(p, c);
12703
0
          tokfix(p);
12704
0
          if (nondigit) goto trailing_uc;
12705
0
          suffix = number_literal_suffix(p);
12706
0
          pylval.nd = new_int(p, tok(p), 8, suffix);
12707
0
          return tINTEGER;
12708
0
        }
12709
0
        if (nondigit) {
12710
0
          pushback(p, c);
12711
0
          goto trailing_uc;
12712
0
        }
12713
0
      }
12714
1.96k
      if (c > '7' && c <= '9') {
12715
0
        invalid_octal:
12716
0
        yyerror(NULL, p, "Invalid octal digit");
12717
0
      }
12718
1.96k
      else if (c == '.' || c == 'e' || c == 'E') {
12719
0
        tokadd(p, '0');
12720
0
      }
12721
1.96k
      else {
12722
1.96k
        pushback(p, c);
12723
1.96k
        suffix = number_literal_suffix(p);
12724
1.96k
        pylval.nd = new_int(p, "0", 10, suffix);
12725
1.96k
        return tINTEGER;
12726
1.96k
      }
12727
1.96k
    }
12728
12729
500k
    for (;;) {
12730
500k
      switch (c) {
12731
242k
      case '0': case '1': case '2': case '3': case '4':
12732
251k
      case '5': case '6': case '7': case '8': case '9':
12733
251k
        nondigit = 0;
12734
251k
        tokadd(p, c);
12735
251k
        break;
12736
12737
0
      case '.':
12738
0
        if (nondigit) goto trailing_uc;
12739
0
        if (seen_point || seen_e) {
12740
0
          goto decode_num;
12741
0
        }
12742
0
        else {
12743
0
          int c0 = nextc(p);
12744
0
          if (c0 < 0 || !ISDIGIT(c0)) {
12745
0
            pushback(p, c0);
12746
0
            goto decode_num;
12747
0
          }
12748
0
          c = c0;
12749
0
        }
12750
0
        tokadd(p, '.');
12751
0
        tokadd(p, c);
12752
0
        is_float++;
12753
0
        seen_point++;
12754
0
        nondigit = 0;
12755
0
        break;
12756
12757
0
      case 'e':
12758
0
      case 'E':
12759
0
        if (nondigit) {
12760
0
          pushback(p, c);
12761
0
          c = nondigit;
12762
0
          goto decode_num;
12763
0
        }
12764
0
        if (seen_e) {
12765
0
          goto decode_num;
12766
0
        }
12767
0
        tokadd(p, c);
12768
0
        seen_e++;
12769
0
        is_float++;
12770
0
        nondigit = c;
12771
0
        c = nextc(p);
12772
0
        if (c != '-' && c != '+') continue;
12773
0
        tokadd(p, c);
12774
0
        nondigit = c;
12775
0
        break;
12776
12777
0
      case '_':       /* '_' in number just ignored */
12778
0
        if (nondigit) goto decode_num;
12779
0
        nondigit = c;
12780
0
        break;
12781
12782
249k
      default:
12783
249k
        goto decode_num;
12784
500k
      }
12785
251k
      c = nextc(p);
12786
251k
    }
12787
12788
249k
    decode_num:
12789
249k
    pushback(p, c);
12790
249k
    if (nondigit) {
12791
0
      trailing_uc:
12792
0
      yyerror_c(p, "trailing non digit in number: ", (char)nondigit);
12793
0
    }
12794
249k
    tokfix(p);
12795
249k
    if (is_float) {
12796
#ifdef MRB_NO_FLOAT
12797
      yywarning_s(p, "floating-point numbers are not supported", tok(p));
12798
      pylval.nd = new_int(p, "0", 10, 0);
12799
      return tINTEGER;
12800
#else
12801
0
      double d;
12802
12803
0
      if (!mrb_read_float(tok(p), NULL, &d)) {
12804
0
        yywarning_s(p, "corrupted float value", tok(p));
12805
0
      }
12806
0
      suffix = number_literal_suffix(p);
12807
0
      if (seen_e && (suffix & NUM_SUFFIX_R)) {
12808
0
        pushback(p, 'r');
12809
0
        suffix &= ~NUM_SUFFIX_R;
12810
0
      }
12811
0
      pylval.nd = new_float(p, tok(p), suffix);
12812
0
      return tFLOAT;
12813
0
#endif
12814
0
    }
12815
249k
    suffix = number_literal_suffix(p);
12816
249k
    pylval.nd = new_int(p, tok(p), 10, suffix);
12817
249k
    return tINTEGER;
12818
249k
  }
12819
12820
58.7k
  case ')':
12821
66.7k
  case ']':
12822
66.7k
    p->paren_nest--;
12823
    /* fall through */
12824
67.7k
  case '}':
12825
67.7k
    COND_LEXPOP();
12826
67.7k
    CMDARG_LEXPOP();
12827
67.7k
    if (c == ')')
12828
58.7k
      p->lstate = EXPR_ENDFN;
12829
8.95k
    else
12830
8.95k
      p->lstate = EXPR_END;
12831
67.7k
    return c;
12832
12833
2.35k
  case ':':
12834
2.35k
    c = nextc(p);
12835
2.35k
    if (c == ':') {
12836
75
      if (IS_BEG() || p->lstate == EXPR_CLASS || IS_SPCARG(-1)) {
12837
0
        p->lstate = EXPR_BEG;
12838
0
        return tCOLON3;
12839
0
      }
12840
75
      p->lstate = EXPR_DOT;
12841
75
      return tCOLON2;
12842
75
    }
12843
2.28k
    if (!space_seen && IS_END()) {
12844
0
      pushback(p, c);
12845
0
      p->lstate = EXPR_BEG;
12846
0
      return tLABEL_TAG;
12847
0
    }
12848
2.28k
    if (IS_END() || ISSPACE(c) || c == '#') {
12849
2.28k
      pushback(p, c);
12850
2.28k
      p->lstate = EXPR_BEG;
12851
2.28k
      return ':';
12852
2.28k
    }
12853
0
    pushback(p, c);
12854
0
    p->lstate = EXPR_FNAME;
12855
0
    return tSYMBEG;
12856
12857
2.92k
  case '/':
12858
2.92k
    if (IS_BEG()) {
12859
0
      p->lex_strterm = new_strterm(p, str_regexp, '/', 0);
12860
0
      return tREGEXP_BEG;
12861
0
    }
12862
2.92k
    if ((c = nextc(p)) == '=') {
12863
0
      pylval.id = intern_op(div);
12864
0
      p->lstate = EXPR_BEG;
12865
0
      return tOP_ASGN;
12866
0
    }
12867
2.92k
    pushback(p, c);
12868
2.92k
    if (IS_SPCARG(c)) {
12869
0
      p->lex_strterm = new_strterm(p, str_regexp, '/', 0);
12870
0
      return tREGEXP_BEG;
12871
0
    }
12872
2.92k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12873
0
      p->lstate = EXPR_ARG;
12874
0
    }
12875
2.92k
    else {
12876
2.92k
      p->lstate = EXPR_BEG;
12877
2.92k
    }
12878
2.92k
    return '/';
12879
12880
1.47k
  case '^':
12881
1.47k
    if ((c = nextc(p)) == '=') {
12882
0
      pylval.id = intern_op(xor);
12883
0
      p->lstate = EXPR_BEG;
12884
0
      return tOP_ASGN;
12885
0
    }
12886
1.47k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12887
0
      p->lstate = EXPR_ARG;
12888
0
    }
12889
1.47k
    else {
12890
1.47k
      p->lstate = EXPR_BEG;
12891
1.47k
    }
12892
1.47k
    pushback(p, c);
12893
1.47k
    return '^';
12894
12895
0
  case ';':
12896
0
    p->lstate = EXPR_BEG;
12897
0
    return ';';
12898
12899
322k
  case ',':
12900
322k
    p->lstate = EXPR_BEG;
12901
322k
    return ',';
12902
12903
0
  case '~':
12904
0
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12905
0
      if ((c = nextc(p)) != '@') {
12906
0
        pushback(p, c);
12907
0
      }
12908
0
      p->lstate = EXPR_ARG;
12909
0
    }
12910
0
    else {
12911
0
      p->lstate = EXPR_BEG;
12912
0
    }
12913
0
    return '~';
12914
12915
58.7k
  case '(':
12916
58.7k
    if (IS_BEG()) {
12917
47.4k
      c = tLPAREN;
12918
47.4k
    }
12919
11.3k
    else if (IS_SPCARG(-1)) {
12920
0
      c = tLPAREN_ARG;
12921
0
    }
12922
11.3k
    else if (p->lstate == EXPR_END && space_seen) {
12923
0
      c = tLPAREN_ARG;
12924
0
    }
12925
58.7k
    p->paren_nest++;
12926
58.7k
    COND_PUSH(0);
12927
58.7k
    CMDARG_PUSH(0);
12928
58.7k
    p->lstate = EXPR_BEG;
12929
58.7k
    return c;
12930
12931
7.92k
  case '[':
12932
7.92k
    p->paren_nest++;
12933
7.92k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
12934
0
      p->lstate = EXPR_ARG;
12935
0
      p->paren_nest--;
12936
0
      if ((c = nextc(p)) == ']') {
12937
0
        if ((c = nextc(p)) == '=') {
12938
0
          return tASET;
12939
0
        }
12940
0
        pushback(p, c);
12941
0
        return tAREF;
12942
0
      }
12943
0
      pushback(p, c);
12944
0
      return '[';
12945
0
    }
12946
7.92k
    else if (IS_BEG()) {
12947
7.92k
      c = tLBRACK;
12948
7.92k
    }
12949
0
    else if (IS_ARG() && space_seen) {
12950
0
      c = tLBRACK;
12951
0
    }
12952
7.92k
    p->lstate = EXPR_BEG;
12953
7.92k
    COND_PUSH(0);
12954
7.92k
    CMDARG_PUSH(0);
12955
7.92k
    return c;
12956
12957
1.03k
  case '{':
12958
1.03k
    if (p->lpar_beg && p->lpar_beg == p->paren_nest) {
12959
0
      p->lstate = EXPR_BEG;
12960
0
      p->lpar_beg = 0;
12961
0
      p->paren_nest--;
12962
0
      COND_PUSH(0);
12963
0
      CMDARG_PUSH(0);
12964
0
      return tLAMBEG;
12965
0
    }
12966
1.03k
    if (IS_ARG() || p->lstate == EXPR_END || p->lstate == EXPR_ENDFN)
12967
0
      c = '{';          /* block (primary) */
12968
1.03k
    else if (p->lstate == EXPR_ENDARG)
12969
0
      c = tLBRACE_ARG;  /* block (expr) */
12970
1.03k
    else
12971
1.03k
      c = tLBRACE;      /* hash */
12972
1.03k
    COND_PUSH(0);
12973
1.03k
    CMDARG_PUSH(0);
12974
1.03k
    p->lstate = EXPR_BEG;
12975
1.03k
    return c;
12976
12977
0
  case '\\':
12978
0
    c = nextc(p);
12979
0
    if (c == '\n') {
12980
0
      p->lineno+=nlines; nlines=1;
12981
0
      p->column = 0;
12982
0
      space_seen = 1;
12983
0
      goto retry; /* skip \\n */
12984
0
    }
12985
0
    pushback(p, c);
12986
0
    return '\\';
12987
12988
1.15k
  case '%':
12989
1.15k
    if (IS_BEG()) {
12990
0
      int term;
12991
0
      int paren;
12992
12993
0
      c = nextc(p);
12994
0
      quotation:
12995
0
      if (c < 0 || !ISALNUM(c)) {
12996
0
        term = c;
12997
0
        c = 'Q';
12998
0
      }
12999
0
      else {
13000
0
        term = nextc(p);
13001
0
        if (ISALNUM(term)) {
13002
0
          yyerror(NULL, p, "unknown type of %string");
13003
0
          return 0;
13004
0
        }
13005
0
      }
13006
0
      if (c < 0 || term < 0) {
13007
0
        yyerror(NULL, p, "unterminated quoted string meets end of file");
13008
0
        return 0;
13009
0
      }
13010
0
      paren = term;
13011
0
      if (term == '(') term = ')';
13012
0
      else if (term == '[') term = ']';
13013
0
      else if (term == '{') term = '}';
13014
0
      else if (term == '<') term = '>';
13015
0
      else paren = 0;
13016
13017
0
      switch (c) {
13018
0
      case 'Q':
13019
0
        p->lex_strterm = new_strterm(p, str_dquote, term, paren);
13020
0
        return tSTRING_BEG;
13021
13022
0
      case 'q':
13023
0
        p->lex_strterm = new_strterm(p, str_squote, term, paren);
13024
0
        return parse_string(p);
13025
13026
0
      case 'W':
13027
0
        p->lex_strterm = new_strterm(p, str_dword, term, paren);
13028
0
        return tWORDS_BEG;
13029
13030
0
      case 'w':
13031
0
        p->lex_strterm = new_strterm(p, str_sword, term, paren);
13032
0
        return tWORDS_BEG;
13033
13034
0
      case 'x':
13035
0
        p->lex_strterm = new_strterm(p, str_xquote, term, paren);
13036
0
        return tXSTRING_BEG;
13037
13038
0
      case 'r':
13039
0
        p->lex_strterm = new_strterm(p, str_regexp, term, paren);
13040
0
        return tREGEXP_BEG;
13041
13042
0
      case 's':
13043
0
        p->lex_strterm = new_strterm(p, str_ssym, term, paren);
13044
0
        return tSYMBEG;
13045
13046
0
      case 'I':
13047
0
        p->lex_strterm = new_strterm(p, str_dsymbols, term, paren);
13048
0
        return tSYMBOLS_BEG;
13049
13050
0
      case 'i':
13051
0
        p->lex_strterm = new_strterm(p, str_ssymbols, term, paren);
13052
0
        return tSYMBOLS_BEG;
13053
13054
0
      default:
13055
0
        yyerror(NULL, p, "unknown type of %string");
13056
0
        return 0;
13057
0
      }
13058
0
    }
13059
1.15k
    if ((c = nextc(p)) == '=') {
13060
0
      pylval.id = intern_op(mod);
13061
0
      p->lstate = EXPR_BEG;
13062
0
      return tOP_ASGN;
13063
0
    }
13064
1.15k
    if (IS_SPCARG(c)) {
13065
0
      goto quotation;
13066
0
    }
13067
1.15k
    if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
13068
0
      p->lstate = EXPR_ARG;
13069
0
    }
13070
1.15k
    else {
13071
1.15k
      p->lstate = EXPR_BEG;
13072
1.15k
    }
13073
1.15k
    pushback(p, c);
13074
1.15k
    return '%';
13075
13076
0
  case '$':
13077
0
    p->lstate = EXPR_END;
13078
0
    token_column = newtok(p);
13079
0
    c = nextc(p);
13080
0
    if (c < 0) {
13081
0
      yyerror(NULL, p, "incomplete global variable syntax");
13082
0
      return 0;
13083
0
    }
13084
0
    switch (c) {
13085
0
    case '_':     /* $_: last read line string */
13086
0
      c = nextc(p);
13087
0
      if (c >= 0 && identchar(c)) { /* if there is more after _ it is a variable */
13088
0
        tokadd(p, '$');
13089
0
        tokadd(p, c);
13090
0
        break;
13091
0
      }
13092
0
      pushback(p, c);
13093
0
      c = '_';
13094
      /* fall through */
13095
0
    case '~':     /* $~: match-data */
13096
0
    case '*':     /* $*: argv */
13097
0
    case '$':     /* $$: pid */
13098
0
    case '?':     /* $?: last status */
13099
0
    case '!':     /* $!: error string */
13100
0
    case '@':     /* $@: error position */
13101
0
    case '/':     /* $/: input record separator */
13102
0
    case '\\':    /* $\: output record separator */
13103
0
    case ';':     /* $;: field separator */
13104
0
    case ',':     /* $,: output field separator */
13105
0
    case '.':     /* $.: last read line number */
13106
0
    case '=':     /* $=: ignorecase */
13107
0
    case ':':     /* $:: load path */
13108
0
    case '<':     /* $<: reading filename */
13109
0
    case '>':     /* $>: default output handle */
13110
0
    case '\"':    /* $": already loaded files */
13111
0
      tokadd(p, '$');
13112
0
      tokadd(p, c);
13113
0
      tokfix(p);
13114
0
      pylval.id = intern(tok(p), toklen(p));
13115
0
      return tGVAR;
13116
13117
0
    case '-':
13118
0
      tokadd(p, '$');
13119
0
      tokadd(p, c);
13120
0
      c = nextc(p);
13121
0
      pushback(p, c);
13122
0
      gvar:
13123
0
      tokfix(p);
13124
0
      pylval.id = intern(tok(p), toklen(p));
13125
0
      return tGVAR;
13126
13127
0
    case '&':     /* $&: last match */
13128
0
    case '`':     /* $`: string before last match */
13129
0
    case '\'':    /* $': string after last match */
13130
0
    case '+':     /* $+: string matches last pattern */
13131
0
      if (last_state == EXPR_FNAME) {
13132
0
        tokadd(p, '$');
13133
0
        tokadd(p, c);
13134
0
        goto gvar;
13135
0
      }
13136
0
      pylval.nd = new_back_ref(p, c);
13137
0
      return tBACK_REF;
13138
13139
0
    case '1': case '2': case '3':
13140
0
    case '4': case '5': case '6':
13141
0
    case '7': case '8': case '9':
13142
0
      do {
13143
0
        tokadd(p, c);
13144
0
        c = nextc(p);
13145
0
      } while (c >= 0 && ISDIGIT(c));
13146
0
      pushback(p, c);
13147
0
      if (last_state == EXPR_FNAME) goto gvar;
13148
0
      tokfix(p);
13149
0
      {
13150
0
        mrb_int n;
13151
0
        if (!mrb_read_int(tok(p), NULL, NULL, &n)) {
13152
0
          yywarning(p, "capture group index too big; always nil");
13153
0
          return keyword_nil;
13154
0
        }
13155
0
        pylval.nd = new_nth_ref(p, (int)n);
13156
0
      }
13157
0
      return tNTH_REF;
13158
13159
0
    default:
13160
0
      if (!identchar(c)) {
13161
0
        pushback(p,  c);
13162
0
        return '$';
13163
0
      }
13164
      /* fall through */
13165
0
    case '0':
13166
0
      tokadd(p, '$');
13167
0
    }
13168
0
    break;
13169
13170
6.41k
    case '@':
13171
6.41k
      c = nextc(p);
13172
6.41k
      token_column = newtok(p);
13173
6.41k
      tokadd(p, '@');
13174
6.41k
      if (c == '@') {
13175
0
        tokadd(p, '@');
13176
0
        c = nextc(p);
13177
0
      }
13178
6.41k
      if (c < 0) {
13179
0
        if (p->tidx == 1) {
13180
0
          yyerror(NULL, p, "incomplete instance variable syntax");
13181
0
        }
13182
0
        else {
13183
0
          yyerror(NULL, p, "incomplete class variable syntax");
13184
0
        }
13185
0
        return 0;
13186
0
      }
13187
6.41k
      else if (ISDIGIT(c)) {
13188
0
        if (p->tidx == 1) {
13189
0
          yyerror_c(p, "wrong instance variable name: @", c);
13190
0
        }
13191
0
        else {
13192
0
          yyerror_c(p, "wrong class variable name: @@", c);
13193
0
        }
13194
0
        return 0;
13195
0
      }
13196
6.41k
      if (!identchar(c)) {
13197
0
        pushback(p, c);
13198
0
        return '@';
13199
0
      }
13200
6.41k
      break;
13201
13202
6.41k
    case '_':
13203
0
      token_column = newtok(p);
13204
0
      break;
13205
13206
95.0k
    default:
13207
95.0k
      if (!identchar(c)) {
13208
0
        char buf[36];
13209
0
        const char s[] = "Invalid char in expression: 0x";
13210
0
        const char hexdigits[] = "0123456789ABCDEF";
13211
13212
0
        strcpy(buf, s);
13213
0
        buf[sizeof(s)-1] = hexdigits[(c & 0xf0) >> 4];
13214
0
        buf[sizeof(s)]   = hexdigits[(c & 0x0f)];
13215
0
        buf[sizeof(s)+1] = 0;
13216
0
        yyerror(NULL, p, buf);
13217
0
        goto retry;
13218
0
      }
13219
13220
95.0k
      token_column = newtok(p);
13221
95.0k
      break;
13222
2.28M
  }
13223
13224
571k
  do {
13225
571k
    tokadd(p, c);
13226
571k
    c = nextc(p);
13227
571k
    if (c < 0) break;
13228
571k
  } while (identchar(c));
13229
101k
  if (token_column == 0 && toklen(p) == 7 && (c < 0 || c == '\n') &&
13230
101k
      strncmp(tok(p), "__END__", toklen(p)) == 0)
13231
0
    return -1;
13232
13233
101k
  switch (tok(p)[0]) {
13234
6.41k
  case '@': case '$':
13235
6.41k
    pushback(p, c);
13236
6.41k
    break;
13237
95.0k
  default:
13238
95.0k
    if ((c == '!' || c == '?') && !peek(p, '=')) {
13239
13
      tokadd(p, c);
13240
13
    }
13241
95.0k
    else {
13242
95.0k
      pushback(p, c);
13243
95.0k
    }
13244
101k
  }
13245
101k
  tokfix(p);
13246
101k
  {
13247
101k
    int result = 0;
13248
13249
101k
    switch (tok(p)[0]) {
13250
0
    case '$':
13251
0
      p->lstate = EXPR_END;
13252
0
      result = tGVAR;
13253
0
      break;
13254
6.41k
    case '@':
13255
6.41k
      p->lstate = EXPR_END;
13256
6.41k
      if (tok(p)[1] == '@')
13257
0
        result = tCVAR;
13258
6.41k
      else
13259
6.41k
        result = tIVAR;
13260
6.41k
      break;
13261
13262
0
    case '_':
13263
0
      if (toklen(p) == 2 && ISDIGIT(tok(p)[1]) && p->nvars) {
13264
0
        int n = tok(p)[1] - '0';
13265
0
        int nvar;
13266
13267
0
        if (n > 0) {
13268
0
          nvar = intn(p->nvars->car);
13269
0
          if (nvar != -2) {     /* numbered parameters never appear on toplevel */
13270
0
            pylval.num = n;
13271
0
            p->lstate = EXPR_END;
13272
0
            return tNUMPARAM;
13273
0
          }
13274
0
        }
13275
0
      }
13276
      /* fall through */
13277
95.0k
    default:
13278
95.0k
      if (toklast(p) == '!' || toklast(p) == '?') {
13279
13
        result = tFID;
13280
13
      }
13281
95.0k
      else {
13282
95.0k
        if (p->lstate == EXPR_FNAME) {
13283
103
          if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') &&
13284
103
              (!peek(p, '=') || (peek_n(p, '>', 1)))) {
13285
0
            result = tIDENTIFIER;
13286
0
            tokadd(p, c);
13287
0
            tokfix(p);
13288
0
          }
13289
103
          else {
13290
103
            pushback(p, c);
13291
103
          }
13292
103
          if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') &&
13293
103
              (!peek(p, '=') || (peek_n(p, '>', 1)))) {
13294
0
            result = tIDENTIFIER;
13295
0
            tokadd(p, c);
13296
0
            tokfix(p);
13297
0
          }
13298
103
          else {
13299
103
            pushback(p, c);
13300
103
          }
13301
103
        }
13302
95.0k
        if (result == 0 && ISUPPER(tok(p)[0])) {
13303
3.44k
          result = tCONSTANT;
13304
3.44k
        }
13305
91.5k
        else {
13306
91.5k
          result = tIDENTIFIER;
13307
91.5k
        }
13308
95.0k
      }
13309
13310
95.0k
      if (IS_LABEL_POSSIBLE()) {
13311
20.8k
        if (IS_LABEL_SUFFIX(0)) {
13312
0
          p->lstate = EXPR_END;
13313
0
          tokfix(p);
13314
0
          pylval.id = intern(tok(p), toklen(p));
13315
0
          return tIDENTIFIER;
13316
0
        }
13317
20.8k
      }
13318
95.0k
      if (p->lstate != EXPR_DOT) {
13319
83.7k
        const struct kwtable *kw;
13320
13321
        /* See if it is a reserved word.  */
13322
83.7k
        kw = mrb_reserved_word(tok(p), toklen(p));
13323
83.7k
        if (kw) {
13324
29.5k
          enum mrb_lex_state_enum state = p->lstate;
13325
29.5k
          pylval.num = p->lineno;
13326
29.5k
          p->lstate = kw->state;
13327
29.5k
          if (state == EXPR_FNAME) {
13328
0
            pylval.id = intern_cstr(kw->name);
13329
0
            return kw->id[0];
13330
0
          }
13331
29.5k
          if (p->lstate == EXPR_BEG) {
13332
10.7k
            p->cmd_start = TRUE;
13333
10.7k
          }
13334
29.5k
          if (kw->id[0] == keyword_do) {
13335
0
            if (p->lpar_beg && p->lpar_beg == p->paren_nest) {
13336
0
              p->lpar_beg = 0;
13337
0
              p->paren_nest--;
13338
0
              return keyword_do_LAMBDA;
13339
0
            }
13340
0
            if (COND_P()) return keyword_do_cond;
13341
0
            if (CMDARG_P() && state != EXPR_CMDARG)
13342
0
              return keyword_do_block;
13343
0
            if (state == EXPR_ENDARG || state == EXPR_BEG)
13344
0
              return keyword_do_block;
13345
0
            return keyword_do;
13346
0
          }
13347
29.5k
          if (state == EXPR_BEG || state == EXPR_VALUE || state == EXPR_CLASS)
13348
26.0k
            return kw->id[0];
13349
3.50k
          else {
13350
3.50k
            if (kw->id[0] != kw->id[1])
13351
0
              p->lstate = EXPR_BEG;
13352
3.50k
            return kw->id[1];
13353
3.50k
          }
13354
29.5k
        }
13355
83.7k
      }
13356
13357
65.4k
      if (IS_BEG() || p->lstate == EXPR_DOT || IS_ARG()) {
13358
65.3k
        if (cmd_state) {
13359
37.9k
          p->lstate = EXPR_CMDARG;
13360
37.9k
        }
13361
27.3k
        else {
13362
27.3k
          p->lstate = EXPR_ARG;
13363
27.3k
        }
13364
65.3k
      }
13365
103
      else if (p->lstate == EXPR_FNAME) {
13366
103
        p->lstate = EXPR_ENDFN;
13367
103
      }
13368
0
      else {
13369
0
        p->lstate = EXPR_END;
13370
0
      }
13371
101k
    }
13372
71.8k
    {
13373
71.8k
      mrb_sym ident = intern(tok(p), toklen(p));
13374
13375
71.8k
      pylval.id = ident;
13376
71.8k
      if (last_state != EXPR_DOT && ISLOWER(tok(p)[0]) && local_var_p(p, ident)) {
13377
34.9k
        p->lstate = EXPR_END;
13378
34.9k
      }
13379
71.8k
    }
13380
71.8k
    return result;
13381
101k
  }
13382
101k
}
13383
13384
static int
13385
yylex(void *lval, void *lp, parser_state *p)
13386
1.70M
{
13387
1.70M
  p->ylval = lval;
13388
1.70M
  return parser_yylex(p);
13389
1.70M
}
13390
13391
static void
13392
parser_init_cxt(parser_state *p, mrb_ccontext *cxt)
13393
103
{
13394
103
  if (!cxt) return;
13395
0
  if (cxt->filename) mrb_parser_set_filename(p, cxt->filename);
13396
0
  if (cxt->lineno) p->lineno = cxt->lineno;
13397
0
  if (cxt->syms) {
13398
0
    int i;
13399
13400
0
    p->locals = cons(0,0);
13401
0
    for (i=0; i<cxt->slen; i++) {
13402
0
      local_add_f(p, cxt->syms[i]);
13403
0
    }
13404
0
  }
13405
0
  p->capture_errors = cxt->capture_errors;
13406
0
  p->no_optimize = cxt->no_optimize;
13407
0
  p->no_ext_ops = cxt->no_ext_ops;
13408
0
  p->upper = cxt->upper;
13409
0
  if (cxt->partial_hook) {
13410
0
    p->cxt = cxt;
13411
0
  }
13412
0
}
13413
13414
static void
13415
parser_update_cxt(parser_state *p, mrb_ccontext *cxt)
13416
101
{
13417
101
  node *n, *n0;
13418
101
  int i = 0;
13419
13420
101
  if (!cxt) return;
13421
0
  if (!p->tree) return;
13422
0
  if (intn(p->tree->car) != NODE_SCOPE) return;
13423
0
  n0 = n = p->tree->cdr->car;
13424
0
  while (n) {
13425
0
    i++;
13426
0
    n = n->cdr;
13427
0
  }
13428
0
  cxt->syms = (mrb_sym*)mrb_realloc(p->mrb, cxt->syms, i*sizeof(mrb_sym));
13429
0
  cxt->slen = i;
13430
0
  for (i=0, n=n0; n; i++,n=n->cdr) {
13431
0
    cxt->syms[i] = sym(n->car);
13432
0
  }
13433
0
}
13434
13435
void mrb_parser_dump(mrb_state *mrb, node *tree, int offset);
13436
13437
MRB_API void
13438
mrb_parser_parse(parser_state *p, mrb_ccontext *c)
13439
103
{
13440
103
  struct mrb_jmpbuf buf1;
13441
103
  struct mrb_jmpbuf *prev = p->mrb->jmp;
13442
103
  p->mrb->jmp = &buf1;
13443
13444
103
  MRB_TRY(p->mrb->jmp) {
13445
103
    int n = 1;
13446
13447
103
    p->cmd_start = TRUE;
13448
103
    p->in_def = p->in_single = 0;
13449
103
    p->nerr = p->nwarn = 0;
13450
103
    p->lex_strterm = NULL;
13451
103
    parser_init_cxt(p, c);
13452
13453
103
    n = yyparse(p);
13454
103
    if (n != 0 || p->nerr > 0) {
13455
2
      p->tree = 0;
13456
2
      p->mrb->jmp = prev;
13457
2
      return;
13458
2
    }
13459
101
    parser_update_cxt(p, c);
13460
101
    if (c && c->dump_result) {
13461
0
      mrb_parser_dump(p->mrb, p->tree, 0);
13462
0
    }
13463
101
  }
13464
101
  MRB_CATCH(p->mrb->jmp) {
13465
0
    p->nerr++;
13466
0
    if (p->mrb->exc == NULL) {
13467
0
      yyerror(NULL, p, "memory allocation error");
13468
0
      p->nerr++;
13469
0
      p->tree = 0;
13470
0
    }
13471
0
  }
13472
101
  MRB_END_EXC(p->jmp);
13473
101
  p->mrb->jmp = prev;
13474
101
}
13475
13476
MRB_API parser_state*
13477
mrb_parser_new(mrb_state *mrb)
13478
103
{
13479
103
  mrb_mempool *pool;
13480
103
  parser_state *p;
13481
103
  static const parser_state parser_state_zero = { 0 };
13482
13483
103
  pool = mrb_mempool_open(mrb);
13484
103
  if (!pool) return NULL;
13485
103
  p = (parser_state*)mrb_mempool_alloc(pool, sizeof(parser_state));
13486
103
  if (!p) return NULL;
13487
13488
103
  *p = parser_state_zero;
13489
103
  p->mrb = mrb;
13490
103
  p->pool = pool;
13491
13492
103
  p->s = p->send = NULL;
13493
103
#ifndef MRB_NO_STDIO
13494
103
  p->f = NULL;
13495
103
#endif
13496
13497
103
  p->cmd_start = TRUE;
13498
103
  p->in_def = p->in_single = 0;
13499
13500
103
  p->capture_errors = FALSE;
13501
103
  p->lineno = 1;
13502
103
  p->column = 0;
13503
#if defined(PARSER_TEST) || defined(PARSER_DEBUG)
13504
  yydebug = 1;
13505
#endif
13506
103
  p->tsiz = MRB_PARSER_TOKBUF_SIZE;
13507
103
  p->tokbuf = p->buf;
13508
13509
103
  p->lex_strterm = NULL;
13510
13511
103
  p->current_filename_index = -1;
13512
103
  p->filename_table = NULL;
13513
103
  p->filename_table_length = 0;
13514
13515
103
  return p;
13516
103
}
13517
13518
MRB_API void
13519
103
mrb_parser_free(parser_state *p) {
13520
103
  if (p->tokbuf != p->buf) {
13521
0
    mrb_free(p->mrb, p->tokbuf);
13522
0
  }
13523
103
  mrb_mempool_close(p->pool);
13524
103
}
13525
13526
MRB_API mrb_ccontext*
13527
mrb_ccontext_new(mrb_state *mrb)
13528
0
{
13529
0
  return (mrb_ccontext*)mrb_calloc(mrb, 1, sizeof(mrb_ccontext));
13530
0
}
13531
13532
MRB_API void
13533
mrb_ccontext_free(mrb_state *mrb, mrb_ccontext *cxt)
13534
0
{
13535
0
  mrb_free(mrb, cxt->filename);
13536
0
  mrb_free(mrb, cxt->syms);
13537
0
  mrb_free(mrb, cxt);
13538
0
}
13539
13540
MRB_API const char*
13541
mrb_ccontext_filename(mrb_state *mrb, mrb_ccontext *c, const char *s)
13542
0
{
13543
0
  if (s) {
13544
0
    size_t len = strlen(s);
13545
0
    char *p = (char*)mrb_malloc_simple(mrb, len + 1);
13546
13547
0
    if (p == NULL) return NULL;
13548
0
    memcpy(p, s, len + 1);
13549
0
    if (c->filename) {
13550
0
      mrb_free(mrb, c->filename);
13551
0
    }
13552
0
    c->filename = p;
13553
0
  }
13554
0
  return c->filename;
13555
0
}
13556
13557
MRB_API void
13558
mrb_ccontext_partial_hook(mrb_state *mrb, mrb_ccontext *c, int (*func)(struct mrb_parser_state*), void *data)
13559
0
{
13560
0
  c->partial_hook = func;
13561
0
  c->partial_data = data;
13562
0
}
13563
13564
MRB_API void
13565
mrb_ccontext_cleanup_local_variables(mrb_state *mrb, mrb_ccontext *c)
13566
0
{
13567
0
  if (c->syms) {
13568
0
    mrb_free(mrb, c->syms);
13569
0
    c->syms = NULL;
13570
0
    c->slen = 0;
13571
0
  }
13572
0
  c->keep_lv = FALSE;
13573
0
}
13574
13575
MRB_API void
13576
mrb_parser_set_filename(struct mrb_parser_state *p, const char *f)
13577
0
{
13578
0
  mrb_sym sym;
13579
0
  uint16_t i;
13580
0
  mrb_sym* new_table;
13581
13582
0
  sym = mrb_intern_cstr(p->mrb, f);
13583
0
  p->filename_sym = sym;
13584
0
  p->lineno = (p->filename_table_length > 0)? 0 : 1;
13585
13586
0
  for (i = 0; i < p->filename_table_length; i++) {
13587
0
    if (p->filename_table[i] == sym) {
13588
0
      p->current_filename_index = i;
13589
0
      return;
13590
0
    }
13591
0
  }
13592
13593
0
  if (p->filename_table_length == UINT16_MAX) {
13594
0
    yyerror(NULL, p, "too many files to compile");
13595
0
    return;
13596
0
  }
13597
0
  p->current_filename_index = p->filename_table_length++;
13598
13599
0
  new_table = (mrb_sym*)parser_palloc(p, sizeof(mrb_sym) * p->filename_table_length);
13600
0
  if (p->filename_table) {
13601
0
    memmove(new_table, p->filename_table, sizeof(mrb_sym) * p->current_filename_index);
13602
0
  }
13603
0
  p->filename_table = new_table;
13604
0
  p->filename_table[p->filename_table_length - 1] = sym;
13605
0
}
13606
13607
MRB_API mrb_sym
13608
0
mrb_parser_get_filename(struct mrb_parser_state* p, uint16_t idx) {
13609
0
  if (idx >= p->filename_table_length) return 0;
13610
0
  else {
13611
0
    return p->filename_table[idx];
13612
0
  }
13613
0
}
13614
13615
#ifndef MRB_NO_STDIO
13616
static struct mrb_parser_state *
13617
mrb_parse_file_continue(mrb_state *mrb, FILE *f, const void *prebuf, size_t prebufsize, mrb_ccontext *c)
13618
0
{
13619
0
  parser_state *p;
13620
13621
0
  p = mrb_parser_new(mrb);
13622
0
  if (!p) return NULL;
13623
0
  if (prebuf) {
13624
0
    p->s = (const char*)prebuf;
13625
0
    p->send = (const char*)prebuf + prebufsize;
13626
0
  }
13627
0
  else {
13628
0
    p->s = p->send = NULL;
13629
0
  }
13630
0
  p->f = f;
13631
13632
0
  mrb_parser_parse(p, c);
13633
0
  return p;
13634
0
}
13635
13636
MRB_API parser_state*
13637
mrb_parse_file(mrb_state *mrb, FILE *f, mrb_ccontext *c)
13638
0
{
13639
0
  return mrb_parse_file_continue(mrb, f, NULL, 0, c);
13640
0
}
13641
#endif
13642
13643
MRB_API parser_state*
13644
mrb_parse_nstring(mrb_state *mrb, const char *s, size_t len, mrb_ccontext *c)
13645
103
{
13646
103
  parser_state *p;
13647
13648
103
  p = mrb_parser_new(mrb);
13649
103
  if (!p) return NULL;
13650
103
  p->s = s;
13651
103
  p->send = s + len;
13652
13653
103
  mrb_parser_parse(p, c);
13654
103
  return p;
13655
103
}
13656
13657
MRB_API parser_state*
13658
mrb_parse_string(mrb_state *mrb, const char *s, mrb_ccontext *c)
13659
0
{
13660
0
  return mrb_parse_nstring(mrb, s, strlen(s), c);
13661
0
}
13662
13663
MRB_API mrb_value
13664
mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrb_ccontext *c)
13665
103
{
13666
103
  struct RClass *target = mrb->object_class;
13667
103
  struct RProc *proc;
13668
103
  mrb_value v;
13669
103
  mrb_int keep = 0;
13670
13671
103
  if (!p) {
13672
0
    return mrb_undef_value();
13673
0
  }
13674
103
  if (!p->tree || p->nerr) {
13675
2
    if (c) c->parser_nerr = p->nerr;
13676
2
    if (p->capture_errors) {
13677
0
      char buf[256];
13678
13679
0
      strcpy(buf, "line ");
13680
0
      dump_int(p->error_buffer[0].lineno, buf+5);
13681
0
      strcat(buf, ": ");
13682
0
      strncat(buf, p->error_buffer[0].message, sizeof(buf) - strlen(buf) - 1);
13683
0
      mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SYNTAX_ERROR, buf, strlen(buf)));
13684
0
      mrb_parser_free(p);
13685
0
      return mrb_undef_value();
13686
0
    }
13687
2
    else {
13688
2
      if (mrb->exc == NULL) {
13689
2
        mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SYNTAX_ERROR, "syntax error"));
13690
2
      }
13691
2
      mrb_parser_free(p);
13692
2
      return mrb_undef_value();
13693
2
    }
13694
2
  }
13695
101
  proc = mrb_generate_code(mrb, p);
13696
101
  mrb_parser_free(p);
13697
101
  if (proc == NULL) {
13698
30
    if (mrb->exc == NULL) {
13699
30
      mrb->exc = mrb_obj_ptr(mrb_exc_new_lit(mrb, E_SCRIPT_ERROR, "codegen error"));
13700
30
    }
13701
30
    return mrb_undef_value();
13702
30
  }
13703
71
  if (c) {
13704
0
    if (c->dump_result) mrb_codedump_all(mrb, proc);
13705
0
    if (c->no_exec) return mrb_obj_value(proc);
13706
0
    if (c->target_class) {
13707
0
      target = c->target_class;
13708
0
    }
13709
0
    if (c->keep_lv) {
13710
0
      keep = c->slen + 1;
13711
0
    }
13712
0
    else {
13713
0
      c->keep_lv = TRUE;
13714
0
    }
13715
0
  }
13716
71
  MRB_PROC_SET_TARGET_CLASS(proc, target);
13717
71
  if (mrb->c->ci) {
13718
71
    mrb_vm_ci_target_class_set(mrb->c->ci, target);
13719
71
  }
13720
71
  v = mrb_top_run(mrb, proc, mrb_top_self(mrb), keep);
13721
71
  if (mrb->exc) return mrb_nil_value();
13722
59
  return v;
13723
71
}
13724
13725
#ifndef MRB_NO_STDIO
13726
MRB_API mrb_value
13727
mrb_load_file_cxt(mrb_state *mrb, FILE *f, mrb_ccontext *c)
13728
0
{
13729
0
  return mrb_load_exec(mrb, mrb_parse_file(mrb, f, c), c);
13730
0
}
13731
13732
MRB_API mrb_value
13733
mrb_load_file(mrb_state *mrb, FILE *f)
13734
0
{
13735
0
  return mrb_load_file_cxt(mrb, f, NULL);
13736
0
}
13737
13738
#define DETECT_SIZE 64
13739
13740
/*
13741
 * In order to be recognized as a `.mrb` file, the following three points must be satisfied:
13742
 * - File starts with "RITE"
13743
 * - At least `sizeof(struct rite_binary_header)` bytes can be read
13744
 * - `NUL` is included in the first 64 bytes of the file
13745
 */
13746
MRB_API mrb_value
13747
mrb_load_detect_file_cxt(mrb_state *mrb, FILE *fp, mrb_ccontext *c)
13748
0
{
13749
0
  union {
13750
0
    char b[DETECT_SIZE];
13751
0
    struct rite_binary_header h;
13752
0
  } leading;
13753
0
  size_t bufsize;
13754
13755
0
  if (mrb == NULL || fp == NULL) {
13756
0
    return mrb_nil_value();
13757
0
  }
13758
13759
0
  bufsize = fread(leading.b, sizeof(char), sizeof(leading), fp);
13760
0
  if (bufsize < sizeof(leading.h) ||
13761
0
      memcmp(leading.h.binary_ident, RITE_BINARY_IDENT, sizeof(leading.h.binary_ident)) != 0 ||
13762
0
      memchr(leading.b, '\0', bufsize) == NULL) {
13763
0
    return mrb_load_exec(mrb, mrb_parse_file_continue(mrb, fp, leading.b, bufsize, c), c);
13764
0
  }
13765
0
  else {
13766
0
    mrb_int binsize;
13767
0
    uint8_t *bin;
13768
0
    mrb_value bin_obj = mrb_nil_value(); /* temporary string object */
13769
0
    mrb_value result;
13770
13771
0
    binsize = bin_to_uint32(leading.h.binary_size);
13772
0
    bin_obj = mrb_str_new(mrb, NULL, binsize);
13773
0
    bin = (uint8_t*)RSTRING_PTR(bin_obj);
13774
0
    if ((size_t)binsize > bufsize)  {
13775
0
      memcpy(bin, leading.b, bufsize);
13776
0
      if (fread(bin + bufsize, binsize - bufsize, 1, fp) == 0) {
13777
0
        binsize = bufsize;
13778
        /* The error is reported by mrb_load_irep_buf_cxt() */
13779
0
      }
13780
0
    }
13781
13782
0
    result = mrb_load_irep_buf_cxt(mrb, bin, binsize, c);
13783
0
    if (mrb_string_p(bin_obj)) mrb_str_resize(mrb, bin_obj, 0);
13784
0
    return result;
13785
0
  }
13786
0
}
13787
#endif
13788
13789
MRB_API mrb_value
13790
mrb_load_nstring_cxt(mrb_state *mrb, const char *s, size_t len, mrb_ccontext *c)
13791
103
{
13792
103
  return mrb_load_exec(mrb, mrb_parse_nstring(mrb, s, len, c), c);
13793
103
}
13794
13795
MRB_API mrb_value
13796
mrb_load_nstring(mrb_state *mrb, const char *s, size_t len)
13797
0
{
13798
0
  return mrb_load_nstring_cxt(mrb, s, len, NULL);
13799
0
}
13800
13801
MRB_API mrb_value
13802
mrb_load_string_cxt(mrb_state *mrb, const char *s, mrb_ccontext *c)
13803
103
{
13804
103
  return mrb_load_nstring_cxt(mrb, s, strlen(s), c);
13805
103
}
13806
13807
MRB_API mrb_value
13808
mrb_load_string(mrb_state *mrb, const char *s)
13809
103
{
13810
103
  return mrb_load_string_cxt(mrb, s, NULL);
13811
103
}
13812
13813
#ifndef MRB_NO_STDIO
13814
13815
static void
13816
dump_prefix(node *tree, int offset)
13817
0
{
13818
0
  printf("%05d ", tree->lineno);
13819
0
  while (offset--) {
13820
0
    putc(' ', stdout);
13821
0
    putc(' ', stdout);
13822
0
  }
13823
0
}
13824
13825
static void
13826
dump_recur(mrb_state *mrb, node *tree, int offset)
13827
0
{
13828
0
  while (tree) {
13829
0
    mrb_parser_dump(mrb, tree->car, offset);
13830
0
    tree = tree->cdr;
13831
0
  }
13832
0
}
13833
13834
static void
13835
dump_args(mrb_state *mrb, node *n, int offset)
13836
0
{
13837
0
  if (n->car) {
13838
0
    dump_prefix(n, offset+1);
13839
0
    printf("mandatory args:\n");
13840
0
    dump_recur(mrb, n->car, offset+2);
13841
0
  }
13842
0
  n = n->cdr;
13843
0
  if (n->car) {
13844
0
    dump_prefix(n, offset+1);
13845
0
    printf("optional args:\n");
13846
0
    {
13847
0
      node *n2 = n->car;
13848
13849
0
      while (n2) {
13850
0
        dump_prefix(n2, offset+2);
13851
0
        printf("%s=\n", mrb_sym_name(mrb, sym(n2->car->car)));
13852
0
        mrb_parser_dump(mrb, n2->car->cdr, offset+3);
13853
0
        n2 = n2->cdr;
13854
0
      }
13855
0
    }
13856
0
  }
13857
0
  n = n->cdr;
13858
0
  if (n->car) {
13859
0
    mrb_sym rest = sym(n->car);
13860
13861
0
    dump_prefix(n, offset+1);
13862
0
    if (rest == MRB_OPSYM(mul))
13863
0
      printf("rest=*\n");
13864
0
    else
13865
0
      printf("rest=*%s\n", mrb_sym_name(mrb, rest));
13866
0
  }
13867
0
  n = n->cdr;
13868
0
  if (n->car) {
13869
0
    dump_prefix(n, offset+1);
13870
0
    printf("post mandatory args:\n");
13871
0
    dump_recur(mrb, n->car, offset+2);
13872
0
  }
13873
13874
0
  n = n->cdr;
13875
0
  if (n) {
13876
0
    mrb_assert(intn(n->car) == NODE_ARGS_TAIL);
13877
0
    mrb_parser_dump(mrb, n, offset);
13878
0
  }
13879
0
}
13880
13881
/*
13882
 * This function restores the GC arena on return.
13883
 * For this reason, if a process that further generates an object is
13884
 * performed at the caller, the string pointer returned as the return
13885
 * value may become invalid.
13886
 */
13887
static const char*
13888
str_dump(mrb_state *mrb, const char *str, int len)
13889
0
{
13890
0
  int ai = mrb_gc_arena_save(mrb);
13891
0
  mrb_value s;
13892
# if INT_MAX > MRB_INT_MAX / 4
13893
  /* check maximum length with "\xNN" character */
13894
  if (len > MRB_INT_MAX / 4) {
13895
    len = MRB_INT_MAX / 4;
13896
  }
13897
# endif
13898
0
  s = mrb_str_new(mrb, str, (mrb_int)len);
13899
0
  s = mrb_str_dump(mrb, s);
13900
0
  mrb_gc_arena_restore(mrb, ai);
13901
0
  return RSTRING_PTR(s);
13902
0
}
13903
#endif
13904
13905
void
13906
mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
13907
0
{
13908
0
#ifndef MRB_NO_STDIO
13909
0
  int nodetype;
13910
13911
0
  if (!tree) return;
13912
0
  again:
13913
0
  dump_prefix(tree, offset);
13914
0
  nodetype = intn(tree->car);
13915
0
  tree = tree->cdr;
13916
0
  switch (nodetype) {
13917
0
  case NODE_BEGIN:
13918
0
    printf("NODE_BEGIN:\n");
13919
0
    dump_recur(mrb, tree, offset+1);
13920
0
    break;
13921
13922
0
  case NODE_RESCUE:
13923
0
    printf("NODE_RESCUE:\n");
13924
0
    if (tree->car) {
13925
0
      dump_prefix(tree, offset+1);
13926
0
      printf("body:\n");
13927
0
      mrb_parser_dump(mrb, tree->car, offset+2);
13928
0
    }
13929
0
    tree = tree->cdr;
13930
0
    if (tree->car) {
13931
0
      node *n2 = tree->car;
13932
13933
0
      dump_prefix(n2, offset+1);
13934
0
      printf("rescue:\n");
13935
0
      while (n2) {
13936
0
        node *n3 = n2->car;
13937
0
        if (n3->car) {
13938
0
          dump_prefix(n2, offset+2);
13939
0
          printf("handle classes:\n");
13940
0
          dump_recur(mrb, n3->car, offset+3);
13941
0
        }
13942
0
        if (n3->cdr->car) {
13943
0
          dump_prefix(n3, offset+2);
13944
0
          printf("exc_var:\n");
13945
0
          mrb_parser_dump(mrb, n3->cdr->car, offset+3);
13946
0
        }
13947
0
        if (n3->cdr->cdr->car) {
13948
0
          dump_prefix(n3, offset+2);
13949
0
          printf("rescue body:\n");
13950
0
          mrb_parser_dump(mrb, n3->cdr->cdr->car, offset+3);
13951
0
        }
13952
0
        n2 = n2->cdr;
13953
0
      }
13954
0
    }
13955
0
    tree = tree->cdr;
13956
0
    if (tree->car) {
13957
0
      dump_prefix(tree, offset+1);
13958
0
      printf("else:\n");
13959
0
      mrb_parser_dump(mrb, tree->car, offset+2);
13960
0
    }
13961
0
    break;
13962
13963
0
  case NODE_ENSURE:
13964
0
    printf("NODE_ENSURE:\n");
13965
0
    dump_prefix(tree, offset+1);
13966
0
    printf("body:\n");
13967
0
    mrb_parser_dump(mrb, tree->car, offset+2);
13968
0
    dump_prefix(tree, offset+1);
13969
0
    printf("ensure:\n");
13970
0
    mrb_parser_dump(mrb, tree->cdr->cdr, offset+2);
13971
0
    break;
13972
13973
0
  case NODE_LAMBDA:
13974
0
    printf("NODE_LAMBDA:\n");
13975
0
    dump_prefix(tree, offset+1);
13976
0
    goto block;
13977
13978
0
  case NODE_BLOCK:
13979
0
    block:
13980
0
    printf("NODE_BLOCK:\n");
13981
0
    tree = tree->cdr;
13982
0
    if (tree->car) {
13983
0
      dump_args(mrb, tree->car, offset+1);
13984
0
    }
13985
0
    dump_prefix(tree, offset+1);
13986
0
    printf("body:\n");
13987
0
    mrb_parser_dump(mrb, tree->cdr->car, offset+2);
13988
0
    break;
13989
13990
0
  case NODE_IF:
13991
0
    printf("NODE_IF:\n");
13992
0
    dump_prefix(tree, offset+1);
13993
0
    printf("cond:\n");
13994
0
    mrb_parser_dump(mrb, tree->car, offset+2);
13995
0
    dump_prefix(tree, offset+1);
13996
0
    printf("then:\n");
13997
0
    mrb_parser_dump(mrb, tree->cdr->car, offset+2);
13998
0
    if (tree->cdr->cdr->car) {
13999
0
      dump_prefix(tree, offset+1);
14000
0
      printf("else:\n");
14001
0
      mrb_parser_dump(mrb, tree->cdr->cdr->car, offset+2);
14002
0
    }
14003
0
    break;
14004
14005
0
  case NODE_AND:
14006
0
    printf("NODE_AND:\n");
14007
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14008
0
    mrb_parser_dump(mrb, tree->cdr, offset+1);
14009
0
    break;
14010
14011
0
  case NODE_OR:
14012
0
    printf("NODE_OR:\n");
14013
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14014
0
    mrb_parser_dump(mrb, tree->cdr, offset+1);
14015
0
    break;
14016
14017
0
  case NODE_CASE:
14018
0
    printf("NODE_CASE:\n");
14019
0
    if (tree->car) {
14020
0
      mrb_parser_dump(mrb, tree->car, offset+1);
14021
0
    }
14022
0
    tree = tree->cdr;
14023
0
    while (tree) {
14024
0
      dump_prefix(tree, offset+1);
14025
0
      printf("case:\n");
14026
0
      dump_recur(mrb, tree->car->car, offset+2);
14027
0
      dump_prefix(tree, offset+1);
14028
0
      printf("body:\n");
14029
0
      mrb_parser_dump(mrb, tree->car->cdr, offset+2);
14030
0
      tree = tree->cdr;
14031
0
    }
14032
0
    break;
14033
14034
0
  case NODE_WHILE:
14035
0
    printf("NODE_WHILE:\n");
14036
0
    dump_prefix(tree, offset+1);
14037
0
    printf("cond:\n");
14038
0
    mrb_parser_dump(mrb, tree->car, offset+2);
14039
0
    dump_prefix(tree, offset+1);
14040
0
    printf("body:\n");
14041
0
    mrb_parser_dump(mrb, tree->cdr, offset+2);
14042
0
    break;
14043
14044
0
  case NODE_UNTIL:
14045
0
    printf("NODE_UNTIL:\n");
14046
0
    dump_prefix(tree, offset+1);
14047
0
    printf("cond:\n");
14048
0
    mrb_parser_dump(mrb, tree->car, offset+2);
14049
0
    dump_prefix(tree, offset+1);
14050
0
    printf("body:\n");
14051
0
    mrb_parser_dump(mrb, tree->cdr, offset+2);
14052
0
    break;
14053
14054
0
  case NODE_FOR:
14055
0
    printf("NODE_FOR:\n");
14056
0
    dump_prefix(tree, offset+1);
14057
0
    printf("var:\n");
14058
0
    {
14059
0
      node *n2 = tree->car;
14060
14061
0
      if (n2->car) {
14062
0
        dump_prefix(n2, offset+2);
14063
0
        printf("pre:\n");
14064
0
        dump_recur(mrb, n2->car, offset+3);
14065
0
      }
14066
0
      n2 = n2->cdr;
14067
0
      if (n2) {
14068
0
        if (n2->car) {
14069
0
          dump_prefix(n2, offset+2);
14070
0
          printf("rest:\n");
14071
0
          mrb_parser_dump(mrb, n2->car, offset+3);
14072
0
        }
14073
0
        n2 = n2->cdr;
14074
0
        if (n2) {
14075
0
          if (n2->car) {
14076
0
            dump_prefix(n2, offset+2);
14077
0
            printf("post:\n");
14078
0
            dump_recur(mrb, n2->car, offset+3);
14079
0
          }
14080
0
        }
14081
0
      }
14082
0
    }
14083
0
    tree = tree->cdr;
14084
0
    dump_prefix(tree, offset+1);
14085
0
    printf("in:\n");
14086
0
    mrb_parser_dump(mrb, tree->car, offset+2);
14087
0
    tree = tree->cdr;
14088
0
    dump_prefix(tree, offset+1);
14089
0
    printf("do:\n");
14090
0
    mrb_parser_dump(mrb, tree->car, offset+2);
14091
0
    break;
14092
14093
0
  case NODE_SCOPE:
14094
0
    printf("NODE_SCOPE:\n");
14095
0
    {
14096
0
      node *n2 = tree->car;
14097
0
      mrb_bool first_lval = TRUE;
14098
14099
0
      if (n2 && (n2->car || n2->cdr)) {
14100
0
        dump_prefix(n2, offset+1);
14101
0
        printf("local variables:\n");
14102
0
        dump_prefix(n2, offset+2);
14103
0
        while (n2) {
14104
0
          if (n2->car) {
14105
0
            if (!first_lval) printf(", ");
14106
0
            printf("%s", mrb_sym_name(mrb, sym(n2->car)));
14107
0
            first_lval = FALSE;
14108
0
          }
14109
0
          n2 = n2->cdr;
14110
0
        }
14111
0
        printf("\n");
14112
0
      }
14113
0
    }
14114
0
    tree = tree->cdr;
14115
0
    offset++;
14116
0
    goto again;
14117
14118
0
  case NODE_FCALL:
14119
0
  case NODE_CALL:
14120
0
  case NODE_SCALL:
14121
0
    switch (nodetype) {
14122
0
    case NODE_FCALL:
14123
0
      printf("NODE_FCALL:\n"); break;
14124
0
    case NODE_CALL:
14125
0
      printf("NODE_CALL(.):\n"); break;
14126
0
    case NODE_SCALL:
14127
0
      printf("NODE_SCALL(&.):\n"); break;
14128
0
    default:
14129
0
      break;
14130
0
    }
14131
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14132
0
    dump_prefix(tree, offset+1);
14133
0
    printf("method='%s' (%d)\n",
14134
0
        mrb_sym_dump(mrb, sym(tree->cdr->car)),
14135
0
        intn(tree->cdr->car));
14136
0
    tree = tree->cdr->cdr->car;
14137
0
    if (tree) {
14138
0
      dump_prefix(tree, offset+1);
14139
0
      printf("args:\n");
14140
0
      dump_recur(mrb, tree->car, offset+2);
14141
0
      if (tree->cdr) {
14142
0
        if (tree->cdr->car) {
14143
0
          dump_prefix(tree, offset+1);
14144
0
          printf("kwargs:\n");
14145
0
          mrb_parser_dump(mrb, tree->cdr->car, offset+2);
14146
0
        }
14147
0
        if (tree->cdr->cdr) {
14148
0
          dump_prefix(tree, offset+1);
14149
0
          printf("block:\n");
14150
0
          mrb_parser_dump(mrb, tree->cdr->cdr, offset+2);
14151
0
        }
14152
0
      }
14153
0
    }
14154
0
    break;
14155
14156
0
  case NODE_DOT2:
14157
0
    printf("NODE_DOT2:\n");
14158
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14159
0
    mrb_parser_dump(mrb, tree->cdr, offset+1);
14160
0
    break;
14161
14162
0
  case NODE_DOT3:
14163
0
    printf("NODE_DOT3:\n");
14164
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14165
0
    mrb_parser_dump(mrb, tree->cdr, offset+1);
14166
0
    break;
14167
14168
0
  case NODE_COLON2:
14169
0
    printf("NODE_COLON2:\n");
14170
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14171
0
    dump_prefix(tree, offset+1);
14172
0
    printf("::%s\n", mrb_sym_name(mrb, sym(tree->cdr)));
14173
0
    break;
14174
14175
0
  case NODE_COLON3:
14176
0
    printf("NODE_COLON3: ::%s\n", mrb_sym_name(mrb, sym(tree)));
14177
0
    break;
14178
14179
0
  case NODE_ARRAY:
14180
0
    printf("NODE_ARRAY:\n");
14181
0
    dump_recur(mrb, tree, offset+1);
14182
0
    break;
14183
14184
0
  case NODE_HASH:
14185
0
    printf("NODE_HASH:\n");
14186
0
    while (tree) {
14187
0
      dump_prefix(tree, offset+1);
14188
0
      printf("key:\n");
14189
0
      mrb_parser_dump(mrb, tree->car->car, offset+2);
14190
0
      dump_prefix(tree, offset+1);
14191
0
      printf("value:\n");
14192
0
      mrb_parser_dump(mrb, tree->car->cdr, offset+2);
14193
0
      tree = tree->cdr;
14194
0
    }
14195
0
    break;
14196
14197
0
  case NODE_KW_HASH:
14198
0
    printf("NODE_KW_HASH:\n");
14199
0
    while (tree) {
14200
0
      dump_prefix(tree, offset+1);
14201
0
      printf("key:\n");
14202
0
      mrb_parser_dump(mrb, tree->car->car, offset+2);
14203
0
      dump_prefix(tree, offset+1);
14204
0
      printf("value:\n");
14205
0
      mrb_parser_dump(mrb, tree->car->cdr, offset+2);
14206
0
      tree = tree->cdr;
14207
0
    }
14208
0
    break;
14209
14210
0
  case NODE_SPLAT:
14211
0
    printf("NODE_SPLAT:\n");
14212
0
    mrb_parser_dump(mrb, tree, offset+1);
14213
0
    break;
14214
14215
0
  case NODE_ASGN:
14216
0
    printf("NODE_ASGN:\n");
14217
0
    dump_prefix(tree, offset+1);
14218
0
    printf("lhs:\n");
14219
0
    mrb_parser_dump(mrb, tree->car, offset+2);
14220
0
    dump_prefix(tree, offset+1);
14221
0
    printf("rhs:\n");
14222
0
    mrb_parser_dump(mrb, tree->cdr, offset+2);
14223
0
    break;
14224
14225
0
  case NODE_MASGN:
14226
0
    printf("NODE_MASGN:\n");
14227
0
    dump_prefix(tree, offset+1);
14228
0
    printf("mlhs:\n");
14229
0
    {
14230
0
      node *n2 = tree->car;
14231
14232
0
      if (n2->car) {
14233
0
        dump_prefix(tree, offset+2);
14234
0
        printf("pre:\n");
14235
0
        dump_recur(mrb, n2->car, offset+3);
14236
0
      }
14237
0
      n2 = n2->cdr;
14238
0
      if (n2) {
14239
0
        if (n2->car) {
14240
0
          dump_prefix(n2, offset+2);
14241
0
          printf("rest:\n");
14242
0
          if (n2->car == nint(-1)) {
14243
0
            dump_prefix(n2, offset+2);
14244
0
            printf("(empty)\n");
14245
0
          }
14246
0
          else {
14247
0
            mrb_parser_dump(mrb, n2->car, offset+3);
14248
0
          }
14249
0
        }
14250
0
        n2 = n2->cdr;
14251
0
        if (n2 && n2->car) {
14252
0
          dump_prefix(n2, offset+2);
14253
0
          printf("post:\n");
14254
0
          dump_recur(mrb, n2->car, offset+3);
14255
0
        }
14256
0
      }
14257
0
    }
14258
0
    dump_prefix(tree, offset+1);
14259
0
    printf("rhs:\n");
14260
0
    mrb_parser_dump(mrb, tree->cdr, offset+2);
14261
0
    break;
14262
14263
0
  case NODE_OP_ASGN:
14264
0
    printf("NODE_OP_ASGN:\n");
14265
0
    dump_prefix(tree, offset+1);
14266
0
    printf("lhs:\n");
14267
0
    mrb_parser_dump(mrb, tree->car, offset+2);
14268
0
    tree = tree->cdr;
14269
0
    dump_prefix(tree, offset+1);
14270
0
    printf("op='%s' (%d)\n", mrb_sym_name(mrb, sym(tree->car)), intn(tree->car));
14271
0
    tree = tree->cdr;
14272
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14273
0
    break;
14274
14275
0
  case NODE_SUPER:
14276
0
    printf("NODE_SUPER:\n");
14277
0
    if (tree) {
14278
0
      dump_prefix(tree, offset+1);
14279
0
      printf("args:\n");
14280
0
      dump_recur(mrb, tree->car, offset+2);
14281
0
      if (tree->cdr) {
14282
0
        dump_prefix(tree, offset+1);
14283
0
        printf("block:\n");
14284
0
        mrb_parser_dump(mrb, tree->cdr, offset+2);
14285
0
      }
14286
0
    }
14287
0
    break;
14288
14289
0
  case NODE_ZSUPER:
14290
0
    printf("NODE_ZSUPER:\n");
14291
0
    if (tree) {
14292
0
      dump_prefix(tree, offset+1);
14293
0
      printf("args:\n");
14294
0
      dump_recur(mrb, tree->car, offset+2);
14295
0
      if (tree->cdr) {
14296
0
        dump_prefix(tree, offset+1);
14297
0
        printf("block:\n");
14298
0
        mrb_parser_dump(mrb, tree->cdr, offset+2);
14299
0
      }
14300
0
    }
14301
0
    break;
14302
14303
0
  case NODE_RETURN:
14304
0
    printf("NODE_RETURN:\n");
14305
0
    mrb_parser_dump(mrb, tree, offset+1);
14306
0
    break;
14307
14308
0
  case NODE_YIELD:
14309
0
    printf("NODE_YIELD:\n");
14310
0
    dump_recur(mrb, tree, offset+1);
14311
0
    break;
14312
14313
0
  case NODE_BREAK:
14314
0
    printf("NODE_BREAK:\n");
14315
0
    mrb_parser_dump(mrb, tree, offset+1);
14316
0
    break;
14317
14318
0
  case NODE_NEXT:
14319
0
    printf("NODE_NEXT:\n");
14320
0
    mrb_parser_dump(mrb, tree, offset+1);
14321
0
    break;
14322
14323
0
  case NODE_REDO:
14324
0
    printf("NODE_REDO\n");
14325
0
    break;
14326
14327
0
  case NODE_RETRY:
14328
0
    printf("NODE_RETRY\n");
14329
0
    break;
14330
14331
0
  case NODE_LVAR:
14332
0
    printf("NODE_LVAR %s\n", mrb_sym_name(mrb, sym(tree)));
14333
0
    break;
14334
14335
0
  case NODE_GVAR:
14336
0
    printf("NODE_GVAR %s\n", mrb_sym_name(mrb, sym(tree)));
14337
0
    break;
14338
14339
0
  case NODE_IVAR:
14340
0
    printf("NODE_IVAR %s\n", mrb_sym_name(mrb, sym(tree)));
14341
0
    break;
14342
14343
0
  case NODE_CVAR:
14344
0
    printf("NODE_CVAR %s\n", mrb_sym_name(mrb, sym(tree)));
14345
0
    break;
14346
14347
0
  case NODE_NVAR:
14348
0
    printf("NODE_NVAR %d\n", intn(tree));
14349
0
    break;
14350
14351
0
  case NODE_CONST:
14352
0
    printf("NODE_CONST %s\n", mrb_sym_name(mrb, sym(tree)));
14353
0
    break;
14354
14355
0
  case NODE_MATCH:
14356
0
    printf("NODE_MATCH:\n");
14357
0
    dump_prefix(tree, offset + 1);
14358
0
    printf("lhs:\n");
14359
0
    mrb_parser_dump(mrb, tree->car, offset + 2);
14360
0
    dump_prefix(tree, offset + 1);
14361
0
    printf("rhs:\n");
14362
0
    mrb_parser_dump(mrb, tree->cdr, offset + 2);
14363
0
    break;
14364
14365
0
  case NODE_BACK_REF:
14366
0
    printf("NODE_BACK_REF: $%c\n", intn(tree));
14367
0
    break;
14368
14369
0
  case NODE_NTH_REF:
14370
0
    printf("NODE_NTH_REF: $%d\n", intn(tree));
14371
0
    break;
14372
14373
0
  case NODE_ARG:
14374
0
    printf("NODE_ARG %s\n", mrb_sym_name(mrb, sym(tree)));
14375
0
    break;
14376
14377
0
  case NODE_BLOCK_ARG:
14378
0
    printf("NODE_BLOCK_ARG:\n");
14379
0
    mrb_parser_dump(mrb, tree, offset+1);
14380
0
    break;
14381
14382
0
  case NODE_INT:
14383
0
    printf("NODE_INT %s base %d\n", (char*)tree->car, intn(tree->cdr->car));
14384
0
    break;
14385
14386
0
  case NODE_FLOAT:
14387
0
    printf("NODE_FLOAT %s\n", (char*)tree);
14388
0
    break;
14389
14390
0
  case NODE_NEGATE:
14391
0
    printf("NODE_NEGATE:\n");
14392
0
    mrb_parser_dump(mrb, tree, offset+1);
14393
0
    break;
14394
14395
0
  case NODE_STR:
14396
0
    printf("NODE_STR %s len %d\n", str_dump(mrb, (char*)tree->car, intn(tree->cdr)), intn(tree->cdr));
14397
0
    break;
14398
14399
0
  case NODE_DSTR:
14400
0
    printf("NODE_DSTR:\n");
14401
0
    dump_recur(mrb, tree, offset+1);
14402
0
    break;
14403
14404
0
  case NODE_XSTR:
14405
0
    printf("NODE_XSTR %s len %d\n", str_dump(mrb, (char*)tree->car, intn(tree->cdr)), intn(tree->cdr));
14406
0
    break;
14407
14408
0
  case NODE_DXSTR:
14409
0
    printf("NODE_DXSTR:\n");
14410
0
    dump_recur(mrb, tree, offset+1);
14411
0
    break;
14412
14413
0
  case NODE_REGX:
14414
0
    printf("NODE_REGX /%s/\n", (char*)tree->car);
14415
0
    if (tree->cdr->car) {
14416
0
      dump_prefix(tree, offset+1);
14417
0
      printf("opt: %s\n", (char*)tree->cdr->car);
14418
0
    }
14419
0
    if (tree->cdr->cdr) {
14420
0
      dump_prefix(tree, offset+1);
14421
0
      printf("enc: %s\n", (char*)tree->cdr->cdr);
14422
0
    }
14423
0
    break;
14424
14425
0
  case NODE_DREGX:
14426
0
    printf("NODE_DREGX:\n");
14427
0
    dump_recur(mrb, tree->car, offset+1);
14428
0
    dump_prefix(tree, offset+1);
14429
0
    printf("tail: %s\n", (char*)tree->cdr->cdr->car);
14430
0
    if (tree->cdr->cdr->cdr->car) {
14431
0
      dump_prefix(tree, offset+1);
14432
0
      printf("opt: %s\n", (char*)tree->cdr->cdr->cdr->car);
14433
0
    }
14434
0
    if (tree->cdr->cdr->cdr->cdr) {
14435
0
      dump_prefix(tree, offset+1);
14436
0
      printf("enc: %s\n", (char*)tree->cdr->cdr->cdr->cdr);
14437
0
    }
14438
0
    break;
14439
14440
0
  case NODE_SYM:
14441
0
    printf("NODE_SYM :%s (%d)\n", mrb_sym_dump(mrb, sym(tree)),
14442
0
           intn(tree));
14443
0
    break;
14444
14445
0
  case NODE_DSYM:
14446
0
    printf("NODE_DSYM:\n");
14447
0
    mrb_parser_dump(mrb, tree, offset+1);
14448
0
    break;
14449
14450
0
  case NODE_WORDS:
14451
0
    printf("NODE_WORDS:\n");
14452
0
    dump_recur(mrb, tree, offset+1);
14453
0
    break;
14454
14455
0
  case NODE_SYMBOLS:
14456
0
    printf("NODE_SYMBOLS:\n");
14457
0
    dump_recur(mrb, tree, offset+1);
14458
0
    break;
14459
14460
0
  case NODE_LITERAL_DELIM:
14461
0
    printf("NODE_LITERAL_DELIM\n");
14462
0
    break;
14463
14464
0
  case NODE_SELF:
14465
0
    printf("NODE_SELF\n");
14466
0
    break;
14467
14468
0
  case NODE_NIL:
14469
0
    printf("NODE_NIL\n");
14470
0
    break;
14471
14472
0
  case NODE_TRUE:
14473
0
    printf("NODE_TRUE\n");
14474
0
    break;
14475
14476
0
  case NODE_FALSE:
14477
0
    printf("NODE_FALSE\n");
14478
0
    break;
14479
14480
0
  case NODE_ALIAS:
14481
0
    printf("NODE_ALIAS %s %s:\n",
14482
0
        mrb_sym_dump(mrb, sym(tree->car)),
14483
0
        mrb_sym_dump(mrb, sym(tree->cdr)));
14484
0
    break;
14485
14486
0
  case NODE_UNDEF:
14487
0
    printf("NODE_UNDEF");
14488
0
    {
14489
0
      node *t = tree;
14490
0
      while (t) {
14491
0
        printf(" %s", mrb_sym_dump(mrb, sym(t->car)));
14492
0
        t = t->cdr;
14493
0
      }
14494
0
    }
14495
0
    printf(":\n");
14496
0
    break;
14497
14498
0
  case NODE_CLASS:
14499
0
    printf("NODE_CLASS:\n");
14500
0
    if (tree->car->car == nint(0)) {
14501
0
      dump_prefix(tree, offset+1);
14502
0
      printf(":%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
14503
0
    }
14504
0
    else if (tree->car->car == nint(1)) {
14505
0
      dump_prefix(tree, offset+1);
14506
0
      printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
14507
0
    }
14508
0
    else {
14509
0
      mrb_parser_dump(mrb, tree->car->car, offset+1);
14510
0
      dump_prefix(tree, offset+1);
14511
0
      printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
14512
0
    }
14513
0
    if (tree->cdr->car) {
14514
0
      dump_prefix(tree, offset+1);
14515
0
      printf("super:\n");
14516
0
      mrb_parser_dump(mrb, tree->cdr->car, offset+2);
14517
0
    }
14518
0
    dump_prefix(tree, offset+1);
14519
0
    printf("body:\n");
14520
0
    mrb_parser_dump(mrb, tree->cdr->cdr->car->cdr, offset+2);
14521
0
    break;
14522
14523
0
  case NODE_MODULE:
14524
0
    printf("NODE_MODULE:\n");
14525
0
    if (tree->car->car == nint(0)) {
14526
0
      dump_prefix(tree, offset+1);
14527
0
      printf(":%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
14528
0
    }
14529
0
    else if (tree->car->car == nint(1)) {
14530
0
      dump_prefix(tree, offset+1);
14531
0
      printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
14532
0
    }
14533
0
    else {
14534
0
      mrb_parser_dump(mrb, tree->car->car, offset+1);
14535
0
      dump_prefix(tree, offset+1);
14536
0
      printf("::%s\n", mrb_sym_name(mrb, sym(tree->car->cdr)));
14537
0
    }
14538
0
    dump_prefix(tree, offset+1);
14539
0
    printf("body:\n");
14540
0
    mrb_parser_dump(mrb, tree->cdr->car->cdr, offset+2);
14541
0
    break;
14542
14543
0
  case NODE_SCLASS:
14544
0
    printf("NODE_SCLASS:\n");
14545
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14546
0
    dump_prefix(tree, offset+1);
14547
0
    printf("body:\n");
14548
0
    mrb_parser_dump(mrb, tree->cdr->car->cdr, offset+2);
14549
0
    break;
14550
14551
0
  case NODE_DEF:
14552
0
    printf("NODE_DEF:\n");
14553
0
    dump_prefix(tree, offset+1);
14554
0
    printf("%s\n", mrb_sym_dump(mrb, sym(tree->car)));
14555
0
    tree = tree->cdr;
14556
0
    {
14557
0
      node *n2 = tree->car;
14558
0
      mrb_bool first_lval = TRUE;
14559
14560
0
      if (n2 && (n2->car || n2->cdr)) {
14561
0
        dump_prefix(n2, offset+1);
14562
0
        printf("local variables:\n");
14563
0
        dump_prefix(n2, offset+2);
14564
0
        while (n2) {
14565
0
          if (n2->car) {
14566
0
            if (!first_lval) printf(", ");
14567
0
            printf("%s", mrb_sym_name(mrb, sym(n2->car)));
14568
0
            first_lval = FALSE;
14569
0
          }
14570
0
          n2 = n2->cdr;
14571
0
        }
14572
0
        printf("\n");
14573
0
      }
14574
0
    }
14575
0
    tree = tree->cdr;
14576
0
    if (tree->car) {
14577
0
      dump_args(mrb, tree->car, offset);
14578
0
    }
14579
0
    mrb_parser_dump(mrb, tree->cdr->car, offset+1);
14580
0
    break;
14581
14582
0
  case NODE_SDEF:
14583
0
    printf("NODE_SDEF:\n");
14584
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14585
0
    tree = tree->cdr;
14586
0
    dump_prefix(tree, offset+1);
14587
0
    printf(":%s\n", mrb_sym_dump(mrb, sym(tree->car)));
14588
0
    tree = tree->cdr->cdr;
14589
0
    if (tree->car) {
14590
0
      dump_args(mrb, tree->car, offset+1);
14591
0
    }
14592
0
    tree = tree->cdr;
14593
0
    mrb_parser_dump(mrb, tree->car, offset+1);
14594
0
    break;
14595
14596
0
  case NODE_POSTEXE:
14597
0
    printf("NODE_POSTEXE:\n");
14598
0
    mrb_parser_dump(mrb, tree, offset+1);
14599
0
    break;
14600
14601
0
  case NODE_HEREDOC:
14602
0
    printf("NODE_HEREDOC (<<%s):\n", ((parser_heredoc_info*)tree)->term);
14603
0
    dump_recur(mrb, ((parser_heredoc_info*)tree)->doc, offset+1);
14604
0
    break;
14605
14606
0
  case NODE_ARGS_TAIL:
14607
0
    printf("NODE_ARGS_TAIL:\n");
14608
0
    {
14609
0
      node *kws = tree->car;
14610
14611
0
      while (kws) {
14612
0
        mrb_parser_dump(mrb, kws->car, offset+1);
14613
0
        kws = kws->cdr;
14614
0
      }
14615
0
    }
14616
0
    tree = tree->cdr;
14617
0
    if (tree->car) {
14618
0
      mrb_assert(intn(tree->car->car) == NODE_KW_REST_ARGS);
14619
0
      mrb_parser_dump(mrb, tree->car, offset+1);
14620
0
    }
14621
0
    tree = tree->cdr;
14622
0
    if (tree->car) {
14623
0
      dump_prefix(tree, offset+1);
14624
0
      printf("block='%s'\n", mrb_sym_name(mrb, sym(tree->car)));
14625
0
    }
14626
0
    break;
14627
14628
0
  case NODE_KW_ARG:
14629
0
    printf("NODE_KW_ARG %s:\n", mrb_sym_name(mrb, sym(tree->car)));
14630
0
    mrb_parser_dump(mrb, tree->cdr->car, offset + 1);
14631
0
    break;
14632
14633
0
  case NODE_KW_REST_ARGS:
14634
0
    if (tree)
14635
0
      printf("NODE_KW_REST_ARGS %s\n", mrb_sym_name(mrb, sym(tree)));
14636
0
    else
14637
0
      printf("NODE_KW_REST_ARGS\n");
14638
0
    break;
14639
14640
0
  default:
14641
0
    printf("node type: %d (0x%x)\n", nodetype, (unsigned)nodetype);
14642
0
    break;
14643
0
  }
14644
0
#endif
14645
0
}
14646
14647
typedef mrb_bool mrb_parser_foreach_top_variable_func(mrb_state *mrb, mrb_sym sym, void *user);
14648
void mrb_parser_foreach_top_variable(mrb_state *mrb, struct mrb_parser_state *p, mrb_parser_foreach_top_variable_func *func, void *user);
14649
14650
void
14651
mrb_parser_foreach_top_variable(mrb_state *mrb, struct mrb_parser_state *p, mrb_parser_foreach_top_variable_func *func, void *user)
14652
0
{
14653
0
  const mrb_ast_node *n = p->tree;
14654
0
  if ((intptr_t)n->car == NODE_SCOPE) {
14655
0
    n = n->cdr->car;
14656
0
    for (; n; n = n->cdr) {
14657
0
      mrb_sym sym = sym(n->car);
14658
0
      if (sym && !func(mrb, sym, user)) break;
14659
0
    }
14660
0
  }
14661
0
}