~ubuntu-branches/ubuntu/intrepid/ruby1.8/intrepid-updates

« back to all changes in this revision

Viewing changes to parse.c

  • Committer: Bazaar Package Importer
  • Author(s): akira yamada
  • Date: 2007-03-13 22:11:58 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20070313221158-h3oql37brlaf2go2
Tags: 1.8.6-1
* new upstream version, 1.8.6.
* libruby1.8 conflicts with libopenssl-ruby1.8 (< 1.8.6) (closes: #410018)
* changed packaging style to cdbs from dbs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* A Bison parser, made by GNU Bison 2.3.  */
 
2
 
 
3
/* Skeleton implementation for Bison's Yacc-like parsers in C
 
4
 
 
5
   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
 
6
   Free Software Foundation, 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 2, or (at your option)
 
11
   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, write to the Free Software
 
20
   Foundation, Inc., 51 Franklin Street, Fifth Floor,
 
21
   Boston, MA 02110-1301, USA.  */
 
22
 
 
23
/* As a special exception, you may create a larger work that contains
 
24
   part or all of the Bison parser skeleton and distribute that work
 
25
   under terms of your choice, so long as that work isn't itself a
 
26
   parser generator using the skeleton or a modified version thereof
 
27
   as a parser skeleton.  Alternatively, if you modify or redistribute
 
28
   the parser skeleton itself, you may (at your option) remove this
 
29
   special exception, which will cause the skeleton and the resulting
 
30
   Bison output files to be licensed under the GNU General Public
 
31
   License without this special exception.
 
32
 
 
33
   This special exception was added by the Free Software Foundation in
 
34
   version 2.2 of Bison.  */
 
35
 
 
36
/* C LALR(1) parser skeleton written by Richard Stallman, by
 
37
   simplifying the original so-called "semantic" parser.  */
 
38
 
 
39
/* All symbols defined below should begin with yy or YY, to avoid
 
40
   infringing on user name space.  This should be done even for local
 
41
   variables, as they might otherwise be expanded by user macros.
 
42
   There are some unavoidable exceptions within include files to
 
43
   define necessary library symbols; they are noted "INFRINGES ON
 
44
   USER NAME SPACE" below.  */
 
45
 
 
46
/* Identify Bison output.  */
 
47
#define YYBISON 1
 
48
 
 
49
/* Bison version.  */
 
50
#define YYBISON_VERSION "2.3"
 
51
 
 
52
/* Skeleton name.  */
 
53
#define YYSKELETON_NAME "yacc.c"
 
54
 
 
55
/* Pure parsers.  */
 
56
#define YYPURE 0
 
57
 
 
58
/* Using locations.  */
 
59
#define YYLSP_NEEDED 0
 
60
 
 
61
 
 
62
 
 
63
/* Tokens.  */
 
64
#ifndef YYTOKENTYPE
 
65
# define YYTOKENTYPE
 
66
   /* Put the tokens into the symbol table, so that GDB and other debuggers
 
67
      know about them.  */
 
68
   enum yytokentype {
 
69
     kCLASS = 258,
 
70
     kMODULE = 259,
 
71
     kDEF = 260,
 
72
     kUNDEF = 261,
 
73
     kBEGIN = 262,
 
74
     kRESCUE = 263,
 
75
     kENSURE = 264,
 
76
     kEND = 265,
 
77
     kIF = 266,
 
78
     kUNLESS = 267,
 
79
     kTHEN = 268,
 
80
     kELSIF = 269,
 
81
     kELSE = 270,
 
82
     kCASE = 271,
 
83
     kWHEN = 272,
 
84
     kWHILE = 273,
 
85
     kUNTIL = 274,
 
86
     kFOR = 275,
 
87
     kBREAK = 276,
 
88
     kNEXT = 277,
 
89
     kREDO = 278,
 
90
     kRETRY = 279,
 
91
     kIN = 280,
 
92
     kDO = 281,
 
93
     kDO_COND = 282,
 
94
     kDO_BLOCK = 283,
 
95
     kRETURN = 284,
 
96
     kYIELD = 285,
 
97
     kSUPER = 286,
 
98
     kSELF = 287,
 
99
     kNIL = 288,
 
100
     kTRUE = 289,
 
101
     kFALSE = 290,
 
102
     kAND = 291,
 
103
     kOR = 292,
 
104
     kNOT = 293,
 
105
     kIF_MOD = 294,
 
106
     kUNLESS_MOD = 295,
 
107
     kWHILE_MOD = 296,
 
108
     kUNTIL_MOD = 297,
 
109
     kRESCUE_MOD = 298,
 
110
     kALIAS = 299,
 
111
     kDEFINED = 300,
 
112
     klBEGIN = 301,
 
113
     klEND = 302,
 
114
     k__LINE__ = 303,
 
115
     k__FILE__ = 304,
 
116
     tIDENTIFIER = 305,
 
117
     tFID = 306,
 
118
     tGVAR = 307,
 
119
     tIVAR = 308,
 
120
     tCONSTANT = 309,
 
121
     tCVAR = 310,
 
122
     tINTEGER = 311,
 
123
     tFLOAT = 312,
 
124
     tSTRING_CONTENT = 313,
 
125
     tNTH_REF = 314,
 
126
     tBACK_REF = 315,
 
127
     tREGEXP_END = 316,
 
128
     tUPLUS = 317,
 
129
     tUMINUS = 318,
 
130
     tPOW = 319,
 
131
     tCMP = 320,
 
132
     tEQ = 321,
 
133
     tEQQ = 322,
 
134
     tNEQ = 323,
 
135
     tGEQ = 324,
 
136
     tLEQ = 325,
 
137
     tANDOP = 326,
 
138
     tOROP = 327,
 
139
     tMATCH = 328,
 
140
     tNMATCH = 329,
 
141
     tDOT2 = 330,
 
142
     tDOT3 = 331,
 
143
     tAREF = 332,
 
144
     tASET = 333,
 
145
     tLSHFT = 334,
 
146
     tRSHFT = 335,
 
147
     tCOLON2 = 336,
 
148
     tCOLON3 = 337,
 
149
     tOP_ASGN = 338,
 
150
     tASSOC = 339,
 
151
     tLPAREN = 340,
 
152
     tLPAREN_ARG = 341,
 
153
     tRPAREN = 342,
 
154
     tLBRACK = 343,
 
155
     tLBRACE = 344,
 
156
     tLBRACE_ARG = 345,
 
157
     tSTAR = 346,
 
158
     tAMPER = 347,
 
159
     tSYMBEG = 348,
 
160
     tSTRING_BEG = 349,
 
161
     tXSTRING_BEG = 350,
 
162
     tREGEXP_BEG = 351,
 
163
     tWORDS_BEG = 352,
 
164
     tQWORDS_BEG = 353,
 
165
     tSTRING_DBEG = 354,
 
166
     tSTRING_DVAR = 355,
 
167
     tSTRING_END = 356,
 
168
     tLOWEST = 357,
 
169
     tUMINUS_NUM = 358,
 
170
     tLAST_TOKEN = 359
 
171
   };
 
172
#endif
 
173
/* Tokens.  */
 
174
#define kCLASS 258
 
175
#define kMODULE 259
 
176
#define kDEF 260
 
177
#define kUNDEF 261
 
178
#define kBEGIN 262
 
179
#define kRESCUE 263
 
180
#define kENSURE 264
 
181
#define kEND 265
 
182
#define kIF 266
 
183
#define kUNLESS 267
 
184
#define kTHEN 268
 
185
#define kELSIF 269
 
186
#define kELSE 270
 
187
#define kCASE 271
 
188
#define kWHEN 272
 
189
#define kWHILE 273
 
190
#define kUNTIL 274
 
191
#define kFOR 275
 
192
#define kBREAK 276
 
193
#define kNEXT 277
 
194
#define kREDO 278
 
195
#define kRETRY 279
 
196
#define kIN 280
 
197
#define kDO 281
 
198
#define kDO_COND 282
 
199
#define kDO_BLOCK 283
 
200
#define kRETURN 284
 
201
#define kYIELD 285
 
202
#define kSUPER 286
 
203
#define kSELF 287
 
204
#define kNIL 288
 
205
#define kTRUE 289
 
206
#define kFALSE 290
 
207
#define kAND 291
 
208
#define kOR 292
 
209
#define kNOT 293
 
210
#define kIF_MOD 294
 
211
#define kUNLESS_MOD 295
 
212
#define kWHILE_MOD 296
 
213
#define kUNTIL_MOD 297
 
214
#define kRESCUE_MOD 298
 
215
#define kALIAS 299
 
216
#define kDEFINED 300
 
217
#define klBEGIN 301
 
218
#define klEND 302
 
219
#define k__LINE__ 303
 
220
#define k__FILE__ 304
 
221
#define tIDENTIFIER 305
 
222
#define tFID 306
 
223
#define tGVAR 307
 
224
#define tIVAR 308
 
225
#define tCONSTANT 309
 
226
#define tCVAR 310
 
227
#define tINTEGER 311
 
228
#define tFLOAT 312
 
229
#define tSTRING_CONTENT 313
 
230
#define tNTH_REF 314
 
231
#define tBACK_REF 315
 
232
#define tREGEXP_END 316
 
233
#define tUPLUS 317
 
234
#define tUMINUS 318
 
235
#define tPOW 319
 
236
#define tCMP 320
 
237
#define tEQ 321
 
238
#define tEQQ 322
 
239
#define tNEQ 323
 
240
#define tGEQ 324
 
241
#define tLEQ 325
 
242
#define tANDOP 326
 
243
#define tOROP 327
 
244
#define tMATCH 328
 
245
#define tNMATCH 329
 
246
#define tDOT2 330
 
247
#define tDOT3 331
 
248
#define tAREF 332
 
249
#define tASET 333
 
250
#define tLSHFT 334
 
251
#define tRSHFT 335
 
252
#define tCOLON2 336
 
253
#define tCOLON3 337
 
254
#define tOP_ASGN 338
 
255
#define tASSOC 339
 
256
#define tLPAREN 340
 
257
#define tLPAREN_ARG 341
 
258
#define tRPAREN 342
 
259
#define tLBRACK 343
 
260
#define tLBRACE 344
 
261
#define tLBRACE_ARG 345
 
262
#define tSTAR 346
 
263
#define tAMPER 347
 
264
#define tSYMBEG 348
 
265
#define tSTRING_BEG 349
 
266
#define tXSTRING_BEG 350
 
267
#define tREGEXP_BEG 351
 
268
#define tWORDS_BEG 352
 
269
#define tQWORDS_BEG 353
 
270
#define tSTRING_DBEG 354
 
271
#define tSTRING_DVAR 355
 
272
#define tSTRING_END 356
 
273
#define tLOWEST 357
 
274
#define tUMINUS_NUM 358
 
275
#define tLAST_TOKEN 359
 
276
 
 
277
 
 
278
 
 
279
 
 
280
/* Copy the first part of user declarations.  */
 
281
#line 13 "parse.y"
 
282
 
 
283
 
 
284
#define YYDEBUG 1
 
285
#define YYERROR_VERBOSE 1
 
286
#ifndef YYSTACK_USE_ALLOCA
 
287
#define YYSTACK_USE_ALLOCA 0
 
288
#endif
 
289
 
 
290
#include "ruby.h"
 
291
#include "env.h"
 
292
#include "intern.h"
 
293
#include "node.h"
 
294
#include "st.h"
 
295
#include <stdio.h>
 
296
#include <errno.h>
 
297
#include <ctype.h>
 
298
 
 
299
#define YYMALLOC        rb_parser_malloc
 
300
#define YYREALLOC       rb_parser_realloc
 
301
#define YYCALLOC        rb_parser_calloc
 
302
#define YYFREE  rb_parser_free
 
303
#define malloc  YYMALLOC
 
304
#define realloc YYREALLOC
 
305
#define calloc  YYCALLOC
 
306
#define free    YYFREE
 
307
static void *rb_parser_malloc _((size_t));
 
308
static void *rb_parser_realloc _((void *, size_t));
 
309
static void *rb_parser_calloc _((size_t, size_t));
 
310
static void rb_parser_free _((void *));
 
311
 
 
312
#define yyparse ruby_yyparse
 
313
#define yylex ruby_yylex
 
314
#define yyerror ruby_yyerror
 
315
#define yylval ruby_yylval
 
316
#define yychar ruby_yychar
 
317
#define yydebug ruby_yydebug
 
318
 
 
319
#define ID_SCOPE_SHIFT 3
 
320
#define ID_SCOPE_MASK 0x07
 
321
#define ID_LOCAL    0x01
 
322
#define ID_INSTANCE 0x02
 
323
#define ID_GLOBAL   0x03
 
324
#define ID_ATTRSET  0x04
 
325
#define ID_CONST    0x05
 
326
#define ID_CLASS    0x06
 
327
#define ID_JUNK     0x07
 
328
#define ID_INTERNAL ID_JUNK
 
329
 
 
330
#define is_notop_id(id) ((id)>tLAST_TOKEN)
 
331
#define is_local_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_LOCAL)
 
332
#define is_global_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_GLOBAL)
 
333
#define is_instance_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_INSTANCE)
 
334
#define is_attrset_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_ATTRSET)
 
335
#define is_const_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CONST)
 
336
#define is_class_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_CLASS)
 
337
#define is_junk_id(id) (is_notop_id(id)&&((id)&ID_SCOPE_MASK)==ID_JUNK)
 
338
 
 
339
#define is_asgn_or_id(id) ((is_notop_id(id)) && \
 
340
        (((id)&ID_SCOPE_MASK) == ID_GLOBAL || \
 
341
         ((id)&ID_SCOPE_MASK) == ID_INSTANCE || \
 
342
         ((id)&ID_SCOPE_MASK) == ID_CLASS))
 
343
 
 
344
NODE *ruby_eval_tree_begin = 0;
 
345
NODE *ruby_eval_tree = 0;
 
346
 
 
347
char *ruby_sourcefile;          /* current source file */
 
348
int   ruby_sourceline;          /* current line no. */
 
349
 
 
350
static int yylex();
 
351
static int yyerror();
 
352
 
 
353
static enum lex_state {
 
354
    EXPR_BEG,                   /* ignore newline, +/- is a sign. */
 
355
    EXPR_END,                   /* newline significant, +/- is an operator. */
 
356
    EXPR_ARG,                   /* newline significant, +/- is an operator. */
 
357
    EXPR_CMDARG,                /* newline significant, +/- is an operator. */
 
358
    EXPR_ENDARG,                /* newline significant, +/- is an operator. */
 
359
    EXPR_MID,                   /* newline significant, +/- is an operator. */
 
360
    EXPR_FNAME,                 /* ignore newline, no reserved words. */
 
361
    EXPR_DOT,                   /* right after `.' or `::', no reserved words. */
 
362
    EXPR_CLASS,                 /* immediate after `class', no here document. */
 
363
} lex_state;
 
364
static NODE *lex_strterm;
 
365
 
 
366
#ifdef HAVE_LONG_LONG
 
367
typedef unsigned LONG_LONG stack_type;
 
368
#else
 
369
typedef unsigned long stack_type;
 
370
#endif
 
371
 
 
372
#define BITSTACK_PUSH(stack, n) (stack = (stack<<1)|((n)&1))
 
373
#define BITSTACK_POP(stack)     (stack >>= 1)
 
374
#define BITSTACK_LEXPOP(stack)  (stack = (stack >> 1) | (stack & 1))
 
375
#define BITSTACK_SET_P(stack)   (stack&1)
 
376
 
 
377
static stack_type cond_stack = 0;
 
378
#define COND_PUSH(n)    BITSTACK_PUSH(cond_stack, n)
 
379
#define COND_POP()      BITSTACK_POP(cond_stack)
 
380
#define COND_LEXPOP()   BITSTACK_LEXPOP(cond_stack)
 
381
#define COND_P()        BITSTACK_SET_P(cond_stack)
 
382
 
 
383
static stack_type cmdarg_stack = 0;
 
384
#define CMDARG_PUSH(n)  BITSTACK_PUSH(cmdarg_stack, n)
 
385
#define CMDARG_POP()    BITSTACK_POP(cmdarg_stack)
 
386
#define CMDARG_LEXPOP() BITSTACK_LEXPOP(cmdarg_stack)
 
387
#define CMDARG_P()      BITSTACK_SET_P(cmdarg_stack)
 
388
 
 
389
static int class_nest = 0;
 
390
static int in_single = 0;
 
391
static int in_def = 0;
 
392
static int compile_for_eval = 0;
 
393
static ID cur_mid = 0;
 
394
static int command_start = Qtrue;
 
395
 
 
396
static NODE *cond();
 
397
static NODE *logop();
 
398
static int cond_negative();
 
399
 
 
400
static NODE *newline_node();
 
401
static void fixpos();
 
402
 
 
403
static int value_expr0();
 
404
static void void_expr0();
 
405
static void void_stmts();
 
406
static NODE *remove_begin();
 
407
#define value_expr(node) value_expr0((node) = remove_begin(node))
 
408
#define void_expr(node) void_expr0((node) = remove_begin(node))
 
409
 
 
410
static NODE *block_append();
 
411
static NODE *list_append();
 
412
static NODE *list_concat();
 
413
static NODE *arg_concat();
 
414
static NODE *arg_prepend();
 
415
static NODE *literal_concat();
 
416
static NODE *new_evstr();
 
417
static NODE *evstr2dstr();
 
418
static NODE *call_op();
 
419
static int in_defined = 0;
 
420
 
 
421
static NODE *negate_lit();
 
422
static NODE *ret_args();
 
423
static NODE *arg_blk_pass();
 
424
static NODE *new_call();
 
425
static NODE *new_fcall();
 
426
static NODE *new_super();
 
427
static NODE *new_yield();
 
428
 
 
429
static NODE *gettable();
 
430
static NODE *assignable();
 
431
static NODE *aryset();
 
432
static NODE *attrset();
 
433
static void rb_backref_error();
 
434
static NODE *node_assign();
 
435
 
 
436
static NODE *match_gen();
 
437
static void local_push();
 
438
static void local_pop();
 
439
static int  local_append();
 
440
static int  local_cnt();
 
441
static int  local_id();
 
442
static ID  *local_tbl();
 
443
static ID   internal_id();
 
444
 
 
445
static struct RVarmap *dyna_push();
 
446
static void dyna_pop();
 
447
static int dyna_in_block();
 
448
static NODE *dyna_init();
 
449
 
 
450
static void top_local_init();
 
451
static void top_local_setup();
 
452
 
 
453
#define RE_OPTION_ONCE 0x80
 
454
 
 
455
#define NODE_STRTERM NODE_ZARRAY        /* nothing to gc */
 
456
#define NODE_HEREDOC NODE_ARRAY         /* 1, 3 to gc */
 
457
#define SIGN_EXTEND(x,n) (((1<<(n)-1)^((x)&~(~0<<(n))))-(1<<(n)-1))
 
458
#define nd_func u1.id
 
459
#if SIZEOF_SHORT == 2
 
460
#define nd_term(node) ((signed short)(node)->u2.id)
 
461
#else
 
462
#define nd_term(node) SIGN_EXTEND((node)->u2.id, CHAR_BIT*2)
 
463
#endif
 
464
#define nd_paren(node) (char)((node)->u2.id >> CHAR_BIT*2)
 
465
#define nd_nest u3.id
 
466
 
 
467
/* Older versions of Yacc set YYMAXDEPTH to a very low value by default (150,
 
468
   for instance).  This is too low for Ruby to parse some files, such as
 
469
   date/format.rb, therefore bump the value up to at least Bison's default. */
 
470
#ifdef OLD_YACC
 
471
#ifndef YYMAXDEPTH
 
472
#define YYMAXDEPTH 10000
 
473
#endif
 
474
#endif
 
475
 
 
476
 
 
477
 
 
478
/* Enabling traces.  */
 
479
#ifndef YYDEBUG
 
480
# define YYDEBUG 0
 
481
#endif
 
482
 
 
483
/* Enabling verbose error messages.  */
 
484
#ifdef YYERROR_VERBOSE
 
485
# undef YYERROR_VERBOSE
 
486
# define YYERROR_VERBOSE 1
 
487
#else
 
488
# define YYERROR_VERBOSE 0
 
489
#endif
 
490
 
 
491
/* Enabling the token table.  */
 
492
#ifndef YYTOKEN_TABLE
 
493
# define YYTOKEN_TABLE 0
 
494
#endif
 
495
 
 
496
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 
497
typedef union YYSTYPE
 
498
#line 209 "parse.y"
 
499
{
 
500
    NODE *node;
 
501
    ID id;
 
502
    int num;
 
503
    struct RVarmap *vars;
 
504
}
 
505
/* Line 187 of yacc.c.  */
 
506
#line 507 "parse.c"
 
507
        YYSTYPE;
 
508
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 
509
# define YYSTYPE_IS_DECLARED 1
 
510
# define YYSTYPE_IS_TRIVIAL 1
 
511
#endif
 
512
 
 
513
 
 
514
 
 
515
/* Copy the second part of user declarations.  */
 
516
 
 
517
 
 
518
/* Line 216 of yacc.c.  */
 
519
#line 520 "parse.c"
 
520
 
 
521
#ifdef short
 
522
# undef short
 
523
#endif
 
524
 
 
525
#ifdef YYTYPE_UINT8
 
526
typedef YYTYPE_UINT8 yytype_uint8;
 
527
#else
 
528
typedef unsigned char yytype_uint8;
 
529
#endif
 
530
 
 
531
#ifdef YYTYPE_INT8
 
532
typedef YYTYPE_INT8 yytype_int8;
 
533
#elif (defined __STDC__ || defined __C99__FUNC__ \
 
534
     || defined __cplusplus || defined _MSC_VER)
 
535
typedef signed char yytype_int8;
 
536
#else
 
537
typedef short int yytype_int8;
 
538
#endif
 
539
 
 
540
#ifdef YYTYPE_UINT16
 
541
typedef YYTYPE_UINT16 yytype_uint16;
 
542
#else
 
543
typedef unsigned short int yytype_uint16;
 
544
#endif
 
545
 
 
546
#ifdef YYTYPE_INT16
 
547
typedef YYTYPE_INT16 yytype_int16;
 
548
#else
 
549
typedef short int yytype_int16;
 
550
#endif
 
551
 
 
552
#ifndef YYSIZE_T
 
553
# ifdef __SIZE_TYPE__
 
554
#  define YYSIZE_T __SIZE_TYPE__
 
555
# elif defined size_t
 
556
#  define YYSIZE_T size_t
 
557
# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
 
558
     || defined __cplusplus || defined _MSC_VER)
 
559
#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 
560
#  define YYSIZE_T size_t
 
561
# else
 
562
#  define YYSIZE_T unsigned int
 
563
# endif
 
564
#endif
 
565
 
 
566
#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
567
 
 
568
#ifndef YY_
 
569
# if YYENABLE_NLS
 
570
#  if ENABLE_NLS
 
571
#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 
572
#   define YY_(msgid) dgettext ("bison-runtime", msgid)
 
573
#  endif
 
574
# endif
 
575
# ifndef YY_
 
576
#  define YY_(msgid) msgid
 
577
# endif
 
578
#endif
 
579
 
 
580
/* Suppress unused-variable warnings by "using" E.  */
 
581
#if ! defined lint || defined __GNUC__
 
582
# define YYUSE(e) ((void) (e))
 
583
#else
 
584
# define YYUSE(e) /* empty */
 
585
#endif
 
586
 
 
587
/* Identity function, used to suppress warnings about constant conditions.  */
 
588
#ifndef lint
 
589
# define YYID(n) (n)
 
590
#else
 
591
#if (defined __STDC__ || defined __C99__FUNC__ \
 
592
     || defined __cplusplus || defined _MSC_VER)
 
593
static int
 
594
YYID (int i)
 
595
#else
 
596
static int
 
597
YYID (i)
 
598
    int i;
 
599
#endif
 
600
{
 
601
  return i;
 
602
}
 
603
#endif
 
604
 
 
605
#if ! defined yyoverflow || YYERROR_VERBOSE
 
606
 
 
607
/* The parser invokes alloca or malloc; define the necessary symbols.  */
 
608
 
 
609
# ifdef YYSTACK_USE_ALLOCA
 
610
#  if YYSTACK_USE_ALLOCA
 
611
#   ifdef __GNUC__
 
612
#    define YYSTACK_ALLOC __builtin_alloca
 
613
#   elif defined __BUILTIN_VA_ARG_INCR
 
614
#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
 
615
#   elif defined _AIX
 
616
#    define YYSTACK_ALLOC __alloca
 
617
#   elif defined _MSC_VER
 
618
#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
 
619
#    define alloca _alloca
 
620
#   else
 
621
#    define YYSTACK_ALLOC alloca
 
622
#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
 
623
     || defined __cplusplus || defined _MSC_VER)
 
624
#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 
625
#     ifndef _STDLIB_H
 
626
#      define _STDLIB_H 1
 
627
#     endif
 
628
#    endif
 
629
#   endif
 
630
#  endif
 
631
# endif
 
632
 
 
633
# ifdef YYSTACK_ALLOC
 
634
   /* Pacify GCC's `empty if-body' warning.  */
 
635
#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
 
636
#  ifndef YYSTACK_ALLOC_MAXIMUM
 
637
    /* The OS might guarantee only one guard page at the bottom of the stack,
 
638
       and a page size can be as small as 4096 bytes.  So we cannot safely
 
639
       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
 
640
       to allow for a few compiler-allocated temporary stack slots.  */
 
641
#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
 
642
#  endif
 
643
# else
 
644
#  define YYSTACK_ALLOC YYMALLOC
 
645
#  define YYSTACK_FREE YYFREE
 
646
#  ifndef YYSTACK_ALLOC_MAXIMUM
 
647
#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 
648
#  endif
 
649
#  if (defined __cplusplus && ! defined _STDLIB_H \
 
650
       && ! ((defined YYMALLOC || defined malloc) \
 
651
             && (defined YYFREE || defined free)))
 
652
#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 
653
#   ifndef _STDLIB_H
 
654
#    define _STDLIB_H 1
 
655
#   endif
 
656
#  endif
 
657
#  ifndef YYMALLOC
 
658
#   define YYMALLOC malloc
 
659
#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
 
660
     || defined __cplusplus || defined _MSC_VER)
 
661
void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 
662
#   endif
 
663
#  endif
 
664
#  ifndef YYFREE
 
665
#   define YYFREE free
 
666
#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
 
667
     || defined __cplusplus || defined _MSC_VER)
 
668
void free (void *); /* INFRINGES ON USER NAME SPACE */
 
669
#   endif
 
670
#  endif
 
671
# endif
 
672
#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
 
673
 
 
674
 
 
675
#if (! defined yyoverflow \
 
676
     && (! defined __cplusplus \
 
677
         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
678
 
 
679
/* A type that is properly aligned for any stack member.  */
 
680
union yyalloc
 
681
{
 
682
  yytype_int16 yyss;
 
683
  YYSTYPE yyvs;
 
684
  };
 
685
 
 
686
/* The size of the maximum gap between one aligned stack and the next.  */
 
687
# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
 
688
 
 
689
/* The size of an array large to enough to hold all stacks, each with
 
690
   N elements.  */
 
691
# define YYSTACK_BYTES(N) \
 
692
     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
 
693
      + YYSTACK_GAP_MAXIMUM)
 
694
 
 
695
/* Copy COUNT objects from FROM to TO.  The source and destination do
 
696
   not overlap.  */
 
697
# ifndef YYCOPY
 
698
#  if defined __GNUC__ && 1 < __GNUC__
 
699
#   define YYCOPY(To, From, Count) \
 
700
      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
 
701
#  else
 
702
#   define YYCOPY(To, From, Count)              \
 
703
      do                                        \
 
704
        {                                       \
 
705
          YYSIZE_T yyi;                         \
 
706
          for (yyi = 0; yyi < (Count); yyi++)   \
 
707
            (To)[yyi] = (From)[yyi];            \
 
708
        }                                       \
 
709
      while (YYID (0))
 
710
#  endif
 
711
# endif
 
712
 
 
713
/* Relocate STACK from its old location to the new one.  The
 
714
   local variables YYSIZE and YYSTACKSIZE give the old and new number of
 
715
   elements in the stack, and YYPTR gives the new location of the
 
716
   stack.  Advance YYPTR to a properly aligned location for the next
 
717
   stack.  */
 
718
# define YYSTACK_RELOCATE(Stack)                                        \
 
719
    do                                                                  \
 
720
      {                                                                 \
 
721
        YYSIZE_T yynewbytes;                                            \
 
722
        YYCOPY (&yyptr->Stack, Stack, yysize);                          \
 
723
        Stack = &yyptr->Stack;                                          \
 
724
        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 
725
        yyptr += yynewbytes / sizeof (*yyptr);                          \
 
726
      }                                                                 \
 
727
    while (YYID (0))
 
728
 
 
729
#endif
 
730
 
 
731
/* YYFINAL -- State number of the termination state.  */
 
732
#define YYFINAL  3
 
733
/* YYLAST -- Last index in YYTABLE.  */
 
734
#define YYLAST   9550
 
735
 
 
736
/* YYNTOKENS -- Number of terminals.  */
 
737
#define YYNTOKENS  132
 
738
/* YYNNTS -- Number of nonterminals.  */
 
739
#define YYNNTS  144
 
740
/* YYNRULES -- Number of rules.  */
 
741
#define YYNRULES  501
 
742
/* YYNRULES -- Number of states.  */
 
743
#define YYNSTATES  895
 
744
 
 
745
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 
746
#define YYUNDEFTOK  2
 
747
#define YYMAXUTOK   359
 
748
 
 
749
#define YYTRANSLATE(YYX)                                                \
 
750
  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
751
 
 
752
/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
 
753
static const yytype_uint8 yytranslate[] =
 
754
{
 
755
       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
756
     130,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
757
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
758
       2,     2,   129,   117,     2,     2,     2,   115,   110,     2,
 
759
     128,   125,   113,   111,   126,   112,   124,   114,     2,     2,
 
760
       2,     2,     2,     2,     2,     2,     2,     2,   105,   131,
 
761
     107,   103,   106,   104,     2,     2,     2,     2,     2,     2,
 
762
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
763
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
764
       2,   122,     2,   123,   109,     2,   127,     2,     2,     2,
 
765
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
766
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
767
       2,     2,     2,   120,   108,   121,   118,     2,     2,     2,
 
768
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
769
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
770
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
771
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
772
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
773
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
774
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
775
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
776
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
777
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
778
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
779
       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
 
780
       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
 
781
       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
 
782
      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
 
783
      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
 
784
      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
 
785
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
 
786
      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
 
787
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
 
788
      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
 
789
      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
 
790
      95,    96,    97,    98,    99,   100,   101,   102,   116,   119
 
791
};
 
792
 
 
793
#if YYDEBUG
 
794
/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
 
795
   YYRHS.  */
 
796
static const yytype_uint16 yyprhs[] =
 
797
{
 
798
       0,     0,     3,     4,     7,    12,    15,    17,    19,    23,
 
799
      26,    27,    32,    36,    40,    44,    47,    51,    55,    59,
 
800
      63,    67,    68,    74,    79,    83,    87,    91,    98,   104,
 
801
     110,   116,   120,   124,   128,   132,   134,   136,   140,   144,
 
802
     147,   150,   152,   154,   156,   158,   161,   164,   167,   169,
 
803
     174,   179,   180,   181,   188,   191,   195,   200,   206,   211,
 
804
     217,   220,   223,   225,   229,   231,   235,   237,   240,   244,
 
805
     247,   250,   252,   254,   258,   261,   265,   267,   272,   276,
 
806
     280,   284,   288,   291,   293,   295,   300,   304,   308,   312,
 
807
     316,   319,   321,   323,   325,   328,   330,   334,   336,   338,
 
808
     340,   342,   344,   346,   348,   350,   352,   354,   355,   360,
 
809
     362,   364,   366,   368,   370,   372,   374,   376,   378,   380,
 
810
     382,   384,   386,   388,   390,   392,   394,   396,   398,   400,
 
811
     402,   404,   406,   408,   410,   412,   414,   416,   418,   420,
 
812
     422,   424,   426,   428,   430,   432,   434,   436,   438,   440,
 
813
     442,   444,   446,   448,   450,   452,   454,   456,   458,   460,
 
814
     462,   464,   466,   468,   470,   472,   474,   476,   478,   480,
 
815
     482,   484,   486,   488,   490,   492,   496,   502,   506,   513,
 
816
     519,   525,   531,   537,   542,   546,   550,   554,   558,   562,
 
817
     566,   570,   574,   578,   583,   588,   591,   594,   598,   602,
 
818
     606,   610,   614,   618,   622,   626,   630,   634,   638,   642,
 
819
     646,   649,   652,   656,   660,   664,   668,   669,   674,   680,
 
820
     682,   684,   686,   689,   692,   698,   701,   705,   709,   714,
 
821
     719,   726,   728,   730,   732,   735,   741,   744,   750,   755,
 
822
     763,   767,   769,   774,   778,   784,   792,   795,   801,   806,
 
823
     813,   821,   831,   835,   837,   838,   841,   843,   844,   848,
 
824
     849,   854,   857,   860,   862,   864,   868,   872,   877,   880,
 
825
     882,   884,   886,   888,   890,   892,   894,   896,   898,   899,
 
826
     904,   905,   911,   915,   919,   922,   927,   931,   935,   937,
 
827
     942,   946,   948,   949,   956,   959,   961,   964,   971,   978,
 
828
     979,   980,   988,   989,   990,   998,  1004,  1009,  1015,  1016,
 
829
    1017,  1027,  1028,  1035,  1036,  1037,  1046,  1047,  1053,  1054,
 
830
    1061,  1062,  1063,  1073,  1075,  1077,  1079,  1081,  1083,  1085,
 
831
    1087,  1089,  1092,  1094,  1096,  1098,  1100,  1106,  1108,  1111,
 
832
    1113,  1115,  1117,  1120,  1122,  1126,  1127,  1128,  1135,  1138,
 
833
    1143,  1148,  1151,  1156,  1161,  1165,  1168,  1170,  1171,  1172,
 
834
    1179,  1180,  1181,  1188,  1194,  1196,  1201,  1204,  1206,  1208,
 
835
    1215,  1217,  1219,  1221,  1223,  1226,  1228,  1231,  1233,  1235,
 
836
    1237,  1239,  1241,  1243,  1246,  1250,  1254,  1258,  1262,  1266,
 
837
    1267,  1271,  1273,  1276,  1280,  1284,  1285,  1289,  1290,  1293,
 
838
    1294,  1297,  1299,  1300,  1304,  1305,  1310,  1312,  1314,  1316,
 
839
    1318,  1321,  1323,  1325,  1327,  1329,  1333,  1335,  1337,  1340,
 
840
    1343,  1345,  1347,  1349,  1351,  1353,  1355,  1357,  1359,  1361,
 
841
    1363,  1365,  1367,  1369,  1371,  1373,  1375,  1376,  1381,  1384,
 
842
    1389,  1392,  1399,  1404,  1409,  1412,  1417,  1420,  1423,  1425,
 
843
    1426,  1428,  1430,  1432,  1434,  1436,  1438,  1442,  1446,  1448,
 
844
    1452,  1454,  1456,  1459,  1461,  1463,  1465,  1468,  1471,  1473,
 
845
    1475,  1476,  1482,  1484,  1487,  1490,  1492,  1496,  1500,  1502,
 
846
    1504,  1506,  1508,  1510,  1512,  1514,  1516,  1518,  1520,  1522,
 
847
    1524,  1525,  1527,  1528,  1530,  1531,  1533,  1535,  1537,  1539,
 
848
    1541,  1544
 
849
};
 
850
 
 
851
/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 
852
static const yytype_int16 yyrhs[] =
 
853
{
 
854
     133,     0,    -1,    -1,   134,   136,    -1,   136,   219,   203,
 
855
     222,    -1,   137,   270,    -1,   275,    -1,   138,    -1,   137,
 
856
     274,   138,    -1,     1,   138,    -1,    -1,    44,   160,   139,
 
857
     160,    -1,    44,    52,    52,    -1,    44,    52,    60,    -1,
 
858
      44,    52,    59,    -1,     6,   161,    -1,   138,    39,   142,
 
859
      -1,   138,    40,   142,    -1,   138,    41,   142,    -1,   138,
 
860
      42,   142,    -1,   138,    43,   138,    -1,    -1,    46,   140,
 
861
     120,   136,   121,    -1,    47,   120,   136,   121,    -1,   155,
 
862
     103,   143,    -1,   149,   103,   143,    -1,   246,    83,   143,
 
863
      -1,   199,   122,   168,   123,    83,   143,    -1,   199,   124,
 
864
      50,    83,   143,    -1,   199,   124,    54,    83,   143,    -1,
 
865
     199,    81,    50,    83,   143,    -1,   247,    83,   143,    -1,
 
866
     155,   103,   181,    -1,   149,   103,   167,    -1,   149,   103,
 
867
     181,    -1,   141,    -1,   143,    -1,   141,    36,   141,    -1,
 
868
     141,    37,   141,    -1,    38,   141,    -1,   117,   143,    -1,
 
869
     165,    -1,   141,    -1,   148,    -1,   144,    -1,    29,   171,
 
870
      -1,    21,   171,    -1,    22,   171,    -1,   209,    -1,   209,
 
871
     124,   267,   173,    -1,   209,    81,   267,   173,    -1,    -1,
 
872
      -1,    90,   146,   205,   147,   136,   121,    -1,   266,   173,
 
873
      -1,   266,   173,   145,    -1,   199,   124,   267,   173,    -1,
 
874
     199,   124,   267,   173,   145,    -1,   199,    81,   267,   173,
 
875
      -1,   199,    81,   267,   173,   145,    -1,    31,   173,    -1,
 
876
      30,   173,    -1,   151,    -1,    85,   150,   125,    -1,   151,
 
877
      -1,    85,   150,   125,    -1,   153,    -1,   153,   152,    -1,
 
878
     153,    91,   154,    -1,   153,    91,    -1,    91,   154,    -1,
 
879
      91,    -1,   154,    -1,    85,   150,   125,    -1,   152,   126,
 
880
      -1,   153,   152,   126,    -1,   244,    -1,   199,   122,   168,
 
881
     123,    -1,   199,   124,    50,    -1,   199,    81,    50,    -1,
 
882
     199,   124,    54,    -1,   199,    81,    54,    -1,    82,    54,
 
883
      -1,   247,    -1,   244,    -1,   199,   122,   168,   123,    -1,
 
884
     199,   124,    50,    -1,   199,    81,    50,    -1,   199,   124,
 
885
      54,    -1,   199,    81,    54,    -1,    82,    54,    -1,   247,
 
886
      -1,    50,    -1,    54,    -1,    82,   156,    -1,   156,    -1,
 
887
     199,    81,   156,    -1,    50,    -1,    54,    -1,    51,    -1,
 
888
     163,    -1,   164,    -1,   158,    -1,   240,    -1,   159,    -1,
 
889
     242,    -1,   160,    -1,    -1,   161,   126,   162,   160,    -1,
 
890
     108,    -1,   109,    -1,   110,    -1,    65,    -1,    66,    -1,
 
891
      67,    -1,    73,    -1,   106,    -1,    69,    -1,   107,    -1,
 
892
      70,    -1,    79,    -1,    80,    -1,   111,    -1,   112,    -1,
 
893
     113,    -1,    91,    -1,   114,    -1,   115,    -1,    64,    -1,
 
894
     118,    -1,    62,    -1,    63,    -1,    77,    -1,    78,    -1,
 
895
     127,    -1,    48,    -1,    49,    -1,    46,    -1,    47,    -1,
 
896
      44,    -1,    36,    -1,     7,    -1,    21,    -1,    16,    -1,
 
897
       3,    -1,     5,    -1,    45,    -1,    26,    -1,    15,    -1,
 
898
      14,    -1,    10,    -1,     9,    -1,    35,    -1,    20,    -1,
 
899
      25,    -1,     4,    -1,    22,    -1,    33,    -1,    38,    -1,
 
900
      37,    -1,    23,    -1,     8,    -1,    24,    -1,    29,    -1,
 
901
      32,    -1,    31,    -1,    13,    -1,    34,    -1,     6,    -1,
 
902
      17,    -1,    30,    -1,    11,    -1,    12,    -1,    18,    -1,
 
903
      19,    -1,   155,   103,   165,    -1,   155,   103,   165,    43,
 
904
     165,    -1,   246,    83,   165,    -1,   199,   122,   168,   123,
 
905
      83,   165,    -1,   199,   124,    50,    83,   165,    -1,   199,
 
906
     124,    54,    83,   165,    -1,   199,    81,    50,    83,   165,
 
907
      -1,   199,    81,    54,    83,   165,    -1,    82,    54,    83,
 
908
     165,    -1,   247,    83,   165,    -1,   165,    75,   165,    -1,
 
909
     165,    76,   165,    -1,   165,   111,   165,    -1,   165,   112,
 
910
     165,    -1,   165,   113,   165,    -1,   165,   114,   165,    -1,
 
911
     165,   115,   165,    -1,   165,    64,   165,    -1,   116,    56,
 
912
      64,   165,    -1,   116,    57,    64,   165,    -1,    62,   165,
 
913
      -1,    63,   165,    -1,   165,   108,   165,    -1,   165,   109,
 
914
     165,    -1,   165,   110,   165,    -1,   165,    65,   165,    -1,
 
915
     165,   106,   165,    -1,   165,    69,   165,    -1,   165,   107,
 
916
     165,    -1,   165,    70,   165,    -1,   165,    66,   165,    -1,
 
917
     165,    67,   165,    -1,   165,    68,   165,    -1,   165,    73,
 
918
     165,    -1,   165,    74,   165,    -1,   117,   165,    -1,   118,
 
919
     165,    -1,   165,    79,   165,    -1,   165,    80,   165,    -1,
 
920
     165,    71,   165,    -1,   165,    72,   165,    -1,    -1,    45,
 
921
     271,   166,   165,    -1,   165,   104,   165,   105,   165,    -1,
 
922
     182,    -1,   165,    -1,   275,    -1,   148,   271,    -1,   180,
 
923
     272,    -1,   180,   126,    91,   165,   271,    -1,   264,   272,
 
924
      -1,    91,   165,   271,    -1,   128,   275,   125,    -1,   128,
 
925
     171,   271,   125,    -1,   128,   209,   271,   125,    -1,   128,
 
926
     180,   126,   209,   271,   125,    -1,   275,    -1,   169,    -1,
 
927
     148,    -1,   180,   179,    -1,   180,   126,    91,   167,   179,
 
928
      -1,   264,   179,    -1,   264,   126,    91,   167,   179,    -1,
 
929
     180,   126,   264,   179,    -1,   180,   126,   264,   126,    91,
 
930
     165,   179,    -1,    91,   167,   179,    -1,   178,    -1,   167,
 
931
     126,   180,   179,    -1,   167,   126,   178,    -1,   167,   126,
 
932
      91,   167,   179,    -1,   167,   126,   180,   126,    91,   167,
 
933
     179,    -1,   264,   179,    -1,   264,   126,    91,   167,   179,
 
934
      -1,   167,   126,   264,   179,    -1,   167,   126,   180,   126,
 
935
     264,   179,    -1,   167,   126,   264,   126,    91,   167,   179,
 
936
      -1,   167,   126,   180,   126,   264,   126,    91,   167,   179,
 
937
      -1,    91,   167,   179,    -1,   178,    -1,    -1,   174,   175,
 
938
      -1,   171,    -1,    -1,    86,   176,   125,    -1,    -1,    86,
 
939
     172,   177,   125,    -1,    92,   167,    -1,   126,   178,    -1,
 
940
     275,    -1,   167,    -1,   180,   126,   167,    -1,   180,   126,
 
941
     167,    -1,   180,   126,    91,   167,    -1,    91,   167,    -1,
 
942
     223,    -1,   224,    -1,   227,    -1,   228,    -1,   229,    -1,
 
943
     232,    -1,   245,    -1,   247,    -1,    51,    -1,    -1,     7,
 
944
     183,   135,    10,    -1,    -1,    86,   141,   184,   271,   125,
 
945
      -1,    85,   136,   125,    -1,   199,    81,    54,    -1,    82,
 
946
      54,    -1,   199,   122,   168,   123,    -1,    88,   168,   123,
 
947
      -1,    89,   263,   121,    -1,    29,    -1,    30,   128,   171,
 
948
     125,    -1,    30,   128,   125,    -1,    30,    -1,    -1,    45,
 
949
     271,   128,   185,   141,   125,    -1,   266,   211,    -1,   210,
 
950
      -1,   210,   211,    -1,    11,   142,   200,   136,   202,    10,
 
951
      -1,    12,   142,   200,   136,   203,    10,    -1,    -1,    -1,
 
952
      18,   186,   142,   201,   187,   136,    10,    -1,    -1,    -1,
 
953
      19,   188,   142,   201,   189,   136,    10,    -1,    16,   142,
 
954
     270,   216,    10,    -1,    16,   270,   216,    10,    -1,    16,
 
955
     270,    15,   136,    10,    -1,    -1,    -1,    20,   204,    25,
 
956
     190,   142,   201,   191,   136,    10,    -1,    -1,     3,   157,
 
957
     248,   192,   135,    10,    -1,    -1,    -1,     3,    79,   141,
 
958
     193,   273,   194,   135,    10,    -1,    -1,     4,   157,   195,
 
959
     135,    10,    -1,    -1,     5,   158,   196,   250,   135,    10,
 
960
      -1,    -1,    -1,     5,   261,   269,   197,   158,   198,   250,
 
961
     135,    10,    -1,    21,    -1,    22,    -1,    23,    -1,    24,
 
962
      -1,   182,    -1,   273,    -1,   105,    -1,    13,    -1,   273,
 
963
      13,    -1,   273,    -1,   105,    -1,    27,    -1,   203,    -1,
 
964
      14,   142,   200,   136,   202,    -1,   275,    -1,    15,   136,
 
965
      -1,   155,    -1,   149,    -1,   275,    -1,   108,   108,    -1,
 
966
      72,    -1,   108,   204,   108,    -1,    -1,    -1,    28,   207,
 
967
     205,   208,   136,    10,    -1,   148,   206,    -1,   209,   124,
 
968
     267,   170,    -1,   209,    81,   267,   170,    -1,   266,   169,
 
969
      -1,   199,   124,   267,   170,    -1,   199,    81,   267,   169,
 
970
      -1,   199,    81,   268,    -1,    31,   169,    -1,    31,    -1,
 
971
      -1,    -1,   120,   212,   205,   213,   136,   121,    -1,    -1,
 
972
      -1,    26,   214,   205,   215,   136,    10,    -1,    17,   217,
 
973
     200,   136,   218,    -1,   180,    -1,   180,   126,    91,   167,
 
974
      -1,    91,   167,    -1,   203,    -1,   216,    -1,     8,   220,
 
975
     221,   200,   136,   219,    -1,   275,    -1,   167,    -1,   181,
 
976
      -1,   275,    -1,    84,   155,    -1,   275,    -1,     9,   136,
 
977
      -1,   275,    -1,   243,    -1,   240,    -1,   242,    -1,   225,
 
978
      -1,   226,    -1,   225,   226,    -1,    94,   234,   101,    -1,
 
979
      95,   235,   101,    -1,    96,   235,    61,    -1,    97,   129,
 
980
     101,    -1,    97,   230,   101,    -1,    -1,   230,   231,   129,
 
981
      -1,   236,    -1,   231,   236,    -1,    98,   129,   101,    -1,
 
982
      98,   233,   101,    -1,    -1,   233,    58,   129,    -1,    -1,
 
983
     234,   236,    -1,    -1,   235,   236,    -1,    58,    -1,    -1,
 
984
     100,   237,   239,    -1,    -1,    99,   238,   136,   121,    -1,
 
985
      52,    -1,    53,    -1,    55,    -1,   247,    -1,    93,   241,
 
986
      -1,   158,    -1,    53,    -1,    52,    -1,    55,    -1,    93,
 
987
     235,   101,    -1,    56,    -1,    57,    -1,   116,    56,    -1,
 
988
     116,    57,    -1,    50,    -1,    53,    -1,    52,    -1,    54,
 
989
      -1,    55,    -1,    33,    -1,    32,    -1,    34,    -1,    35,
 
990
      -1,    49,    -1,    48,    -1,   244,    -1,   244,    -1,    59,
 
991
      -1,    60,    -1,   273,    -1,    -1,   107,   249,   142,   273,
 
992
      -1,     1,   273,    -1,   128,   251,   271,   125,    -1,   251,
 
993
     273,    -1,   253,   126,   255,   126,   257,   260,    -1,   253,
 
994
     126,   255,   260,    -1,   253,   126,   257,   260,    -1,   253,
 
995
     260,    -1,   255,   126,   257,   260,    -1,   255,   260,    -1,
 
996
     257,   260,    -1,   259,    -1,    -1,    54,    -1,    53,    -1,
 
997
      52,    -1,    55,    -1,    50,    -1,   252,    -1,   253,   126,
 
998
     252,    -1,    50,   103,   167,    -1,   254,    -1,   255,   126,
 
999
     254,    -1,   113,    -1,    91,    -1,   256,    50,    -1,   256,
 
1000
      -1,   110,    -1,    92,    -1,   258,    50,    -1,   126,   259,
 
1001
      -1,   275,    -1,   245,    -1,    -1,   128,   262,   141,   271,
 
1002
     125,    -1,   275,    -1,   264,   272,    -1,   180,   272,    -1,
 
1003
     265,    -1,   264,   126,   265,    -1,   167,    84,   167,    -1,
 
1004
      50,    -1,    54,    -1,    51,    -1,    50,    -1,    54,    -1,
 
1005
      51,    -1,   163,    -1,    50,    -1,    51,    -1,   163,    -1,
 
1006
     124,    -1,    81,    -1,    -1,   274,    -1,    -1,   130,    -1,
 
1007
      -1,   130,    -1,   126,    -1,   131,    -1,   130,    -1,   273,
 
1008
      -1,   274,   131,    -1,    -1
 
1009
};
 
1010
 
 
1011
/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 
1012
static const yytype_uint16 yyrline[] =
 
1013
{
 
1014
       0,   346,   346,   346,   371,   391,   398,   399,   403,   407,
 
1015
     413,   413,   417,   421,   428,   433,   437,   446,   455,   467,
 
1016
     479,   484,   483,   497,   505,   509,   515,   540,   556,   568,
 
1017
     580,   592,   597,   601,   606,   611,   614,   615,   619,   623,
 
1018
     627,   631,   634,   641,   642,   643,   647,   651,   657,   658,
 
1019
     662,   669,   673,   668,   683,   688,   700,   705,   717,   722,
 
1020
     734,   739,   746,   747,   753,   754,   760,   764,   768,   772,
 
1021
     776,   780,   786,   787,   793,   797,   803,   807,   811,   815,
 
1022
     819,   823,   829,   835,   842,   846,   850,   854,   858,   862,
 
1023
     868,   874,   881,   885,   888,   892,   896,   902,   903,   904,
 
1024
     905,   910,   917,   918,   921,   925,   928,   932,   932,   938,
 
1025
     939,   940,   941,   942,   943,   944,   945,   946,   947,   948,
 
1026
     949,   950,   951,   952,   953,   954,   955,   956,   957,   958,
 
1027
     959,   960,   961,   962,   963,   966,   966,   966,   966,   967,
 
1028
     967,   967,   967,   967,   967,   967,   968,   968,   968,   968,
 
1029
     968,   968,   968,   969,   969,   969,   969,   969,   969,   970,
 
1030
     970,   970,   970,   970,   970,   970,   971,   971,   971,   971,
 
1031
     971,   972,   972,   972,   972,   975,   979,   983,  1008,  1024,
 
1032
    1036,  1048,  1060,  1065,  1070,  1075,  1088,  1101,  1105,  1109,
 
1033
    1113,  1117,  1121,  1125,  1129,  1133,  1142,  1146,  1150,  1154,
 
1034
    1158,  1162,  1166,  1170,  1174,  1178,  1182,  1186,  1190,  1194,
 
1035
    1198,  1202,  1206,  1210,  1214,  1218,  1222,  1222,  1227,  1232,
 
1036
    1238,  1245,  1246,  1251,  1255,  1260,  1264,  1271,  1275,  1279,
 
1037
    1284,  1291,  1292,  1295,  1300,  1304,  1309,  1314,  1319,  1324,
 
1038
    1330,  1334,  1337,  1341,  1345,  1350,  1355,  1360,  1365,  1370,
 
1039
    1375,  1380,  1385,  1389,  1392,  1392,  1404,  1405,  1405,  1410,
 
1040
    1410,  1417,  1423,  1427,  1430,  1434,  1440,  1444,  1448,  1454,
 
1041
    1455,  1456,  1457,  1458,  1459,  1460,  1461,  1462,  1467,  1466,
 
1042
    1479,  1479,  1484,  1489,  1493,  1497,  1505,  1514,  1518,  1522,
 
1043
    1526,  1530,  1534,  1534,  1539,  1545,  1546,  1555,  1568,  1581,
 
1044
    1581,  1581,  1591,  1591,  1591,  1601,  1608,  1612,  1616,  1616,
 
1045
    1616,  1624,  1623,  1640,  1645,  1639,  1662,  1661,  1678,  1677,
 
1046
    1695,  1696,  1695,  1710,  1714,  1718,  1722,  1728,  1735,  1736,
 
1047
    1737,  1738,  1741,  1742,  1743,  1746,  1747,  1756,  1757,  1763,
 
1048
    1764,  1767,  1768,  1772,  1776,  1783,  1787,  1782,  1797,  1806,
 
1049
    1810,  1816,  1821,  1826,  1831,  1835,  1839,  1846,  1850,  1845,
 
1050
    1858,  1862,  1857,  1871,  1878,  1879,  1883,  1889,  1890,  1893,
 
1051
    1904,  1907,  1911,  1912,  1915,  1919,  1922,  1930,  1933,  1934,
 
1052
    1938,  1941,  1954,  1955,  1961,  1967,  1990,  2023,  2027,  2034,
 
1053
    2037,  2043,  2044,  2050,  2054,  2061,  2064,  2071,  2074,  2081,
 
1054
    2084,  2090,  2092,  2091,  2103,  2102,  2123,  2124,  2125,  2126,
 
1055
    2129,  2136,  2137,  2138,  2139,  2142,  2175,  2176,  2177,  2181,
 
1056
    2187,  2188,  2189,  2190,  2191,  2192,  2193,  2194,  2195,  2196,
 
1057
    2197,  2200,  2206,  2212,  2213,  2216,  2221,  2220,  2228,  2231,
 
1058
    2237,  2243,  2247,  2251,  2255,  2259,  2263,  2267,  2271,  2276,
 
1059
    2281,  2285,  2289,  2293,  2297,  2308,  2309,  2315,  2325,  2330,
 
1060
    2336,  2337,  2340,  2349,  2360,  2361,  2364,  2374,  2378,  2381,
 
1061
    2386,  2386,  2411,  2412,  2416,  2425,  2426,  2432,  2438,  2439,
 
1062
    2440,  2443,  2444,  2445,  2446,  2449,  2450,  2451,  2454,  2455,
 
1063
    2458,  2459,  2462,  2463,  2466,  2467,  2468,  2471,  2472,  2475,
 
1064
    2476,  2479
 
1065
};
 
1066
#endif
 
1067
 
 
1068
#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
 
1069
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
 
1070
   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 
1071
static const char *const yytname[] =
 
1072
{
 
1073
  "$end", "error", "$undefined", "kCLASS", "kMODULE", "kDEF", "kUNDEF",
 
1074
  "kBEGIN", "kRESCUE", "kENSURE", "kEND", "kIF", "kUNLESS", "kTHEN",
 
1075
  "kELSIF", "kELSE", "kCASE", "kWHEN", "kWHILE", "kUNTIL", "kFOR",
 
1076
  "kBREAK", "kNEXT", "kREDO", "kRETRY", "kIN", "kDO", "kDO_COND",
 
1077
  "kDO_BLOCK", "kRETURN", "kYIELD", "kSUPER", "kSELF", "kNIL", "kTRUE",
 
1078
  "kFALSE", "kAND", "kOR", "kNOT", "kIF_MOD", "kUNLESS_MOD", "kWHILE_MOD",
 
1079
  "kUNTIL_MOD", "kRESCUE_MOD", "kALIAS", "kDEFINED", "klBEGIN", "klEND",
 
1080
  "k__LINE__", "k__FILE__", "tIDENTIFIER", "tFID", "tGVAR", "tIVAR",
 
1081
  "tCONSTANT", "tCVAR", "tINTEGER", "tFLOAT", "tSTRING_CONTENT",
 
1082
  "tNTH_REF", "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW",
 
1083
  "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP",
 
1084
  "tMATCH", "tNMATCH", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT",
 
1085
  "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN",
 
1086
  "tLPAREN_ARG", "tRPAREN", "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR",
 
1087
  "tAMPER", "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG",
 
1088
  "tWORDS_BEG", "tQWORDS_BEG", "tSTRING_DBEG", "tSTRING_DVAR",
 
1089
  "tSTRING_END", "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'",
 
1090
  "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'",
 
1091
  "'~'", "tLAST_TOKEN", "'{'", "'}'", "'['", "']'", "'.'", "')'", "','",
 
1092
  "'`'", "'('", "' '", "'\\n'", "';'", "$accept", "program", "@1",
 
1093
  "bodystmt", "compstmt", "stmts", "stmt", "@2", "@3", "expr",
 
1094
  "expr_value", "command_call", "block_command", "cmd_brace_block", "@4",
 
1095
  "@5", "command", "mlhs", "mlhs_entry", "mlhs_basic", "mlhs_item",
 
1096
  "mlhs_head", "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym",
 
1097
  "fitem", "undef_list", "@6", "op", "reswords", "arg", "@7", "arg_value",
 
1098
  "aref_args", "paren_args", "opt_paren_args", "call_args", "call_args2",
 
1099
  "command_args", "@8", "open_args", "@9", "@10", "block_arg",
 
1100
  "opt_block_arg", "args", "mrhs", "primary", "@11", "@12", "@13", "@14",
 
1101
  "@15", "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "@24",
 
1102
  "@25", "@26", "primary_value", "then", "do", "if_tail", "opt_else",
 
1103
  "block_var", "opt_block_var", "do_block", "@27", "@28", "block_call",
 
1104
  "method_call", "brace_block", "@29", "@30", "@31", "@32", "case_body",
 
1105
  "when_args", "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure",
 
1106
  "literal", "strings", "string", "string1", "xstring", "regexp", "words",
 
1107
  "word_list", "word", "qwords", "qword_list", "string_contents",
 
1108
  "xstring_contents", "string_content", "@33", "@34", "string_dvar",
 
1109
  "symbol", "sym", "dsym", "numeric", "variable", "var_ref", "var_lhs",
 
1110
  "backref", "superclass", "@35", "f_arglist", "f_args", "f_norm_arg",
 
1111
  "f_arg", "f_opt", "f_optarg", "restarg_mark", "f_rest_arg",
 
1112
  "blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "@36",
 
1113
  "assoc_list", "assocs", "assoc", "operation", "operation2", "operation3",
 
1114
  "dot_or_colon", "opt_terms", "opt_nl", "trailer", "term", "terms",
 
1115
  "none", 0
 
1116
};
 
1117
#endif
 
1118
 
 
1119
# ifdef YYPRINT
 
1120
/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
 
1121
   token YYLEX-NUM.  */
 
1122
static const yytype_uint16 yytoknum[] =
 
1123
{
 
1124
       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
 
1125
     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
 
1126
     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
 
1127
     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
 
1128
     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
 
1129
     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
 
1130
     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
 
1131
     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
 
1132
     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
 
1133
     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
 
1134
     355,   356,   357,    61,    63,    58,    62,    60,   124,    94,
 
1135
      38,    43,    45,    42,    47,    37,   358,    33,   126,   359,
 
1136
     123,   125,    91,    93,    46,    41,    44,    96,    40,    32,
 
1137
      10,    59
 
1138
};
 
1139
# endif
 
1140
 
 
1141
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 
1142
static const yytype_uint16 yyr1[] =
 
1143
{
 
1144
       0,   132,   134,   133,   135,   136,   137,   137,   137,   137,
 
1145
     139,   138,   138,   138,   138,   138,   138,   138,   138,   138,
 
1146
     138,   140,   138,   138,   138,   138,   138,   138,   138,   138,
 
1147
     138,   138,   138,   138,   138,   138,   141,   141,   141,   141,
 
1148
     141,   141,   142,   143,   143,   143,   143,   143,   144,   144,
 
1149
     144,   146,   147,   145,   148,   148,   148,   148,   148,   148,
 
1150
     148,   148,   149,   149,   150,   150,   151,   151,   151,   151,
 
1151
     151,   151,   152,   152,   153,   153,   154,   154,   154,   154,
 
1152
     154,   154,   154,   154,   155,   155,   155,   155,   155,   155,
 
1153
     155,   155,   156,   156,   157,   157,   157,   158,   158,   158,
 
1154
     158,   158,   159,   159,   160,   160,   161,   162,   161,   163,
 
1155
     163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
 
1156
     163,   163,   163,   163,   163,   163,   163,   163,   163,   163,
 
1157
     163,   163,   163,   163,   163,   164,   164,   164,   164,   164,
 
1158
     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
 
1159
     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
 
1160
     164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
 
1161
     164,   164,   164,   164,   164,   165,   165,   165,   165,   165,
 
1162
     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
 
1163
     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
 
1164
     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
 
1165
     165,   165,   165,   165,   165,   165,   166,   165,   165,   165,
 
1166
     167,   168,   168,   168,   168,   168,   168,   169,   169,   169,
 
1167
     169,   170,   170,   171,   171,   171,   171,   171,   171,   171,
 
1168
     171,   171,   172,   172,   172,   172,   172,   172,   172,   172,
 
1169
     172,   172,   172,   172,   174,   173,   175,   176,   175,   177,
 
1170
     175,   178,   179,   179,   180,   180,   181,   181,   181,   182,
 
1171
     182,   182,   182,   182,   182,   182,   182,   182,   183,   182,
 
1172
     184,   182,   182,   182,   182,   182,   182,   182,   182,   182,
 
1173
     182,   182,   185,   182,   182,   182,   182,   182,   182,   186,
 
1174
     187,   182,   188,   189,   182,   182,   182,   182,   190,   191,
 
1175
     182,   192,   182,   193,   194,   182,   195,   182,   196,   182,
 
1176
     197,   198,   182,   182,   182,   182,   182,   199,   200,   200,
 
1177
     200,   200,   201,   201,   201,   202,   202,   203,   203,   204,
 
1178
     204,   205,   205,   205,   205,   207,   208,   206,   209,   209,
 
1179
     209,   210,   210,   210,   210,   210,   210,   212,   213,   211,
 
1180
     214,   215,   211,   216,   217,   217,   217,   218,   218,   219,
 
1181
     219,   220,   220,   220,   221,   221,   222,   222,   223,   223,
 
1182
     223,   224,   225,   225,   226,   227,   228,   229,   229,   230,
 
1183
     230,   231,   231,   232,   232,   233,   233,   234,   234,   235,
 
1184
     235,   236,   237,   236,   238,   236,   239,   239,   239,   239,
 
1185
     240,   241,   241,   241,   241,   242,   243,   243,   243,   243,
 
1186
     244,   244,   244,   244,   244,   244,   244,   244,   244,   244,
 
1187
     244,   245,   246,   247,   247,   248,   249,   248,   248,   250,
 
1188
     250,   251,   251,   251,   251,   251,   251,   251,   251,   251,
 
1189
     252,   252,   252,   252,   252,   253,   253,   254,   255,   255,
 
1190
     256,   256,   257,   257,   258,   258,   259,   260,   260,   261,
 
1191
     262,   261,   263,   263,   263,   264,   264,   265,   266,   266,
 
1192
     266,   267,   267,   267,   267,   268,   268,   268,   269,   269,
 
1193
     270,   270,   271,   271,   272,   272,   272,   273,   273,   274,
 
1194
     274,   275
 
1195
};
 
1196
 
 
1197
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
 
1198
static const yytype_uint8 yyr2[] =
 
1199
{
 
1200
       0,     2,     0,     2,     4,     2,     1,     1,     3,     2,
 
1201
       0,     4,     3,     3,     3,     2,     3,     3,     3,     3,
 
1202
       3,     0,     5,     4,     3,     3,     3,     6,     5,     5,
 
1203
       5,     3,     3,     3,     3,     1,     1,     3,     3,     2,
 
1204
       2,     1,     1,     1,     1,     2,     2,     2,     1,     4,
 
1205
       4,     0,     0,     6,     2,     3,     4,     5,     4,     5,
 
1206
       2,     2,     1,     3,     1,     3,     1,     2,     3,     2,
 
1207
       2,     1,     1,     3,     2,     3,     1,     4,     3,     3,
 
1208
       3,     3,     2,     1,     1,     4,     3,     3,     3,     3,
 
1209
       2,     1,     1,     1,     2,     1,     3,     1,     1,     1,
 
1210
       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
 
1211
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 
1212
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 
1213
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 
1214
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 
1215
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 
1216
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 
1217
       1,     1,     1,     1,     1,     3,     5,     3,     6,     5,
 
1218
       5,     5,     5,     4,     3,     3,     3,     3,     3,     3,
 
1219
       3,     3,     3,     4,     4,     2,     2,     3,     3,     3,
 
1220
       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
 
1221
       2,     2,     3,     3,     3,     3,     0,     4,     5,     1,
 
1222
       1,     1,     2,     2,     5,     2,     3,     3,     4,     4,
 
1223
       6,     1,     1,     1,     2,     5,     2,     5,     4,     7,
 
1224
       3,     1,     4,     3,     5,     7,     2,     5,     4,     6,
 
1225
       7,     9,     3,     1,     0,     2,     1,     0,     3,     0,
 
1226
       4,     2,     2,     1,     1,     3,     3,     4,     2,     1,
 
1227
       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
 
1228
       0,     5,     3,     3,     2,     4,     3,     3,     1,     4,
 
1229
       3,     1,     0,     6,     2,     1,     2,     6,     6,     0,
 
1230
       0,     7,     0,     0,     7,     5,     4,     5,     0,     0,
 
1231
       9,     0,     6,     0,     0,     8,     0,     5,     0,     6,
 
1232
       0,     0,     9,     1,     1,     1,     1,     1,     1,     1,
 
1233
       1,     2,     1,     1,     1,     1,     5,     1,     2,     1,
 
1234
       1,     1,     2,     1,     3,     0,     0,     6,     2,     4,
 
1235
       4,     2,     4,     4,     3,     2,     1,     0,     0,     6,
 
1236
       0,     0,     6,     5,     1,     4,     2,     1,     1,     6,
 
1237
       1,     1,     1,     1,     2,     1,     2,     1,     1,     1,
 
1238
       1,     1,     1,     2,     3,     3,     3,     3,     3,     0,
 
1239
       3,     1,     2,     3,     3,     0,     3,     0,     2,     0,
 
1240
       2,     1,     0,     3,     0,     4,     1,     1,     1,     1,
 
1241
       2,     1,     1,     1,     1,     3,     1,     1,     2,     2,
 
1242
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 
1243
       1,     1,     1,     1,     1,     1,     0,     4,     2,     4,
 
1244
       2,     6,     4,     4,     2,     4,     2,     2,     1,     0,
 
1245
       1,     1,     1,     1,     1,     1,     3,     3,     1,     3,
 
1246
       1,     1,     2,     1,     1,     1,     2,     2,     1,     1,
 
1247
       0,     5,     1,     2,     2,     1,     3,     3,     1,     1,
 
1248
       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
 
1249
       0,     1,     0,     1,     0,     1,     1,     1,     1,     1,
 
1250
       2,     0
 
1251
};
 
1252
 
 
1253
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
 
1254
   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
 
1255
   means the default is an error.  */
 
1256
static const yytype_uint16 yydefact[] =
 
1257
{
 
1258
       2,     0,     0,     1,     0,     0,     0,     0,     0,   278,
 
1259
       0,     0,   490,   299,   302,     0,   323,   324,   325,   326,
 
1260
     288,   291,   356,   426,   425,   427,   428,     0,     0,   492,
 
1261
      21,     0,   430,   429,   420,   277,   422,   421,   423,   424,
 
1262
     416,   417,   433,   434,     0,     0,     0,     0,     0,   501,
 
1263
     501,    71,   399,   397,   399,   399,   389,   395,     0,     0,
 
1264
       0,     3,   490,     7,    35,    36,    44,    43,     0,    62,
 
1265
       0,    66,    72,     0,    41,   219,     0,    48,   295,   269,
 
1266
     270,   381,   382,   271,   272,   273,   274,   379,   380,   378,
 
1267
     431,   275,     0,   276,   254,     6,     9,   323,   324,   288,
 
1268
     291,   356,   492,    92,    93,     0,     0,     0,     0,    95,
 
1269
       0,   327,     0,   431,   276,     0,   316,   144,   155,   145,
 
1270
     168,   141,   161,   151,   150,   171,   172,   166,   149,   148,
 
1271
     143,   169,   173,   174,   153,   142,   156,   160,   162,   154,
 
1272
     147,   163,   170,   165,   164,   157,   167,   152,   140,   159,
 
1273
     158,   139,   146,   137,   138,   135,   136,    97,    99,    98,
 
1274
     130,   131,   128,   112,   113,   114,   117,   119,   115,   132,
 
1275
     133,   120,   121,   125,   116,   118,   109,   110,   111,   122,
 
1276
     123,   124,   126,   127,   129,   134,   470,   318,   100,   101,
 
1277
     469,     0,   164,   157,   167,   152,   135,   136,    97,    98,
 
1278
     102,   104,   106,    15,   103,   105,     0,     0,    42,     0,
 
1279
       0,     0,   431,     0,   276,     0,   498,   497,   490,     0,
 
1280
     499,   491,     0,     0,     0,   340,   339,     0,     0,   431,
 
1281
     276,     0,     0,     0,   233,   220,   264,    46,   241,   501,
 
1282
     501,   475,    47,    45,     0,    61,     0,   501,   355,    60,
 
1283
      39,     0,    10,   493,   216,     0,     0,   195,     0,   196,
 
1284
     284,     0,     0,     0,    62,   280,     0,   492,     0,   494,
 
1285
     494,   221,   494,     0,   494,   472,     0,    70,     0,    76,
 
1286
      83,   413,   412,   414,   411,     0,   410,     0,     0,     0,
 
1287
       0,     0,     0,     0,   418,   419,    40,   210,   211,     5,
 
1288
     491,     0,     0,     0,     0,     0,     0,     0,   345,   348,
 
1289
       0,    74,     0,    69,    67,     0,     0,     0,     0,     0,
 
1290
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1291
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1292
       0,     0,     0,   501,     0,     0,     0,   360,   357,   296,
 
1293
     383,     0,     0,   351,    54,   294,     0,   313,    92,    93,
 
1294
      94,   418,   419,     0,   436,   311,   435,     0,   501,     0,
 
1295
       0,     0,   449,   489,   488,   320,   107,     0,   501,   284,
 
1296
     330,   329,     0,   328,     0,     0,   501,     0,     0,     0,
 
1297
       0,     0,     0,     0,     0,   500,     0,     0,   284,     0,
 
1298
     501,     0,   308,   501,   261,     0,     0,   234,   263,     0,
 
1299
     236,   290,     0,   257,   256,   255,   233,   492,   501,   492,
 
1300
       0,    12,    14,    13,     0,   292,     0,     0,     0,     0,
 
1301
       0,     0,     0,   282,    63,   492,   492,   222,   286,   496,
 
1302
     495,   223,   496,   225,   496,   474,   287,   473,    82,     0,
 
1303
     501,     0,   401,   404,   402,   415,   400,   384,   398,   385,
 
1304
     386,   387,   388,     0,   391,   393,     0,   394,     0,     0,
 
1305
       8,    16,    17,    18,    19,    20,    37,    38,   501,     0,
 
1306
      25,    33,     0,    34,     0,    68,    75,    24,   175,   264,
 
1307
      32,   192,   200,   205,   206,   207,   202,   204,   214,   215,
 
1308
     208,   209,   185,   186,   212,   213,     0,   201,   203,   197,
 
1309
     198,   199,   187,   188,   189,   190,   191,   481,   486,   482,
 
1310
     487,   254,   354,     0,   481,   483,   482,   484,   501,   481,
 
1311
     482,   254,   254,   501,   501,    26,   177,    31,   184,    51,
 
1312
      55,     0,   438,     0,     0,    92,    93,    96,     0,     0,
 
1313
     501,     0,   492,   454,   452,   451,   450,   453,   461,   465,
 
1314
     464,   460,   449,     0,     0,   455,   501,   458,   501,   463,
 
1315
     501,     0,   448,     0,     0,   279,   501,   501,   370,   501,
 
1316
     331,   175,   485,   283,     0,   481,   482,   501,     0,     0,
 
1317
       0,   364,     0,   306,   334,   333,   300,   332,   303,   485,
 
1318
     283,     0,   481,   482,     0,     0,   240,   477,     0,   265,
 
1319
     262,   501,     0,     0,   476,   289,     0,    41,     0,   259,
 
1320
       0,   253,   501,     0,     0,     0,     0,     0,   227,    11,
 
1321
       0,   217,     0,    23,   183,    63,     0,   226,     0,   265,
 
1322
      79,    81,     0,   481,   482,     0,     0,   390,   392,   396,
 
1323
     193,   194,   343,     0,   346,   341,   268,     0,    73,     0,
 
1324
       0,     0,     0,   353,    58,   285,     0,     0,   232,   352,
 
1325
      56,   231,   350,    50,   349,    49,   361,   358,   501,   314,
 
1326
       0,     0,   285,   317,     0,     0,   492,     0,   440,     0,
 
1327
     444,   468,     0,   446,   462,     0,   447,   466,   321,   108,
 
1328
     371,   372,   501,   373,     0,   501,   337,     0,     0,   335,
 
1329
       0,   285,     0,     0,     0,   305,   307,   366,     0,     0,
 
1330
       0,     0,   285,     0,   501,     0,   238,   501,   501,     0,
 
1331
       0,   258,     0,   246,   228,     0,   492,   501,   501,   229,
 
1332
       0,    22,   281,   492,    77,     0,   406,   407,   408,   403,
 
1333
     409,   342,     0,     0,     0,   266,   176,   218,    30,   181,
 
1334
     182,    59,     0,    28,   179,    29,   180,    57,     0,     0,
 
1335
      52,     0,   437,   312,   471,   457,     0,   319,   456,   501,
 
1336
     501,   467,     0,   459,   501,   449,     0,     0,   375,   338,
 
1337
       0,     4,   377,     0,   297,     0,   298,     0,   501,     0,
 
1338
       0,   309,   235,     0,   237,   252,     0,   243,   501,   501,
 
1339
     260,     0,     0,   293,   224,   405,   344,     0,   267,    27,
 
1340
     178,     0,     0,     0,     0,   439,     0,   442,   443,   445,
 
1341
       0,     0,   374,     0,    84,    91,     0,   376,     0,   365,
 
1342
     367,   368,   363,   301,   304,     0,   501,   501,     0,   242,
 
1343
       0,   248,   501,   230,   347,   362,   359,     0,   315,   501,
 
1344
       0,    90,     0,   501,     0,   501,   501,     0,   239,   244,
 
1345
       0,   501,     0,   247,    53,   441,   322,   485,    89,     0,
 
1346
     481,   482,   369,   336,   310,   501,     0,   249,   501,    85,
 
1347
     245,     0,   250,   501,   251
 
1348
};
 
1349
 
 
1350
/* YYDEFGOTO[NTERM-NUM].  */
 
1351
static const yytype_int16 yydefgoto[] =
 
1352
{
 
1353
      -1,     1,     2,   377,   378,    62,    63,   424,   255,    64,
 
1354
     209,    65,    66,   540,   678,   823,    67,    68,   263,    69,
 
1355
      70,    71,    72,   210,   109,   110,   200,   201,   202,   203,
 
1356
     574,   527,   189,    74,   426,   236,   268,   668,   669,   237,
 
1357
     619,   245,   246,   415,   620,   730,   610,   407,   269,   483,
 
1358
      75,   206,   435,   630,   222,   720,   223,   721,   604,   845,
 
1359
     544,   541,   771,   370,   372,   573,   785,   258,   382,   596,
 
1360
     708,   709,   228,   654,   309,   478,   753,    77,    78,   355,
 
1361
     534,   769,   533,   768,   394,   592,   842,   577,   702,   787,
 
1362
     791,    79,    80,    81,    82,    83,    84,    85,   291,   463,
 
1363
      86,   293,   287,   285,   456,   646,   645,   749,    87,   286,
 
1364
      88,    89,   212,    91,   213,   214,   365,   543,   563,   564,
 
1365
     565,   566,   567,   568,   569,   570,   571,   781,   690,   191,
 
1366
     371,   273,   270,   241,   115,   548,   522,   375,   219,   254,
 
1367
     441,   383,   221,    95
 
1368
};
 
1369
 
 
1370
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
 
1371
   STATE-NUM.  */
 
1372
#define YYPACT_NINF -654
 
1373
static const yytype_int16 yypact[] =
 
1374
{
 
1375
    -654,    73,  2254,  -654,  5471,  7939,  8236,  3906,  5121,  -654,
 
1376
    6810,  6810,  3777,  -654,  -654,  8038,  5677,  5677,  -654,  -654,
 
1377
    5677,  4436,  4539,  -654,  -654,  -654,  -654,  6810,  4996,   -44,
 
1378
    -654,    -3,  -654,  -654,  2117,  4024,  -654,  -654,  4127,  -654,
 
1379
    -654,  -654,  -654,  -654,  7634,  7634,    50,  3187,  6810,  6913,
 
1380
    7634,  8335,  4871,  -654,  -654,  -654,   -18,    -1,    94,  7737,
 
1381
    7634,  -654,   124,   757,   249,  -654,  -654,   104,    74,  -654,
 
1382
      57,  8137,  -654,    96,  9349,   171,   485,    11,    32,  -654,
 
1383
    -654,   120,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,
 
1384
      10,  -654,    64,    38,    42,  -654,   757,  -654,  -654,  -654,
 
1385
      99,   111,   -44,   129,   140,  6810,    90,  3318,   325,  -654,
 
1386
      78,  -654,   549,  -654,  -654,    42,  -654,  -654,  -654,  -654,
 
1387
    -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,
 
1388
    -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,
 
1389
    -654,  -654,  -654,  -654,    95,   148,   282,   333,  -654,  -654,
 
1390
    -654,  -654,  -654,  -654,  -654,   336,   337,   465,  -654,   473,
 
1391
    -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,
 
1392
    -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,
 
1393
    -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,
 
1394
    -654,   495,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,
 
1395
    -654,  -654,  -654,   147,  -654,  -654,  2615,   225,   249,    48,
 
1396
     188,   558,    31,   213,   258,    48,  -654,  -654,   124,    88,
 
1397
    -654,   209,  6810,  6810,   288,  -654,  -654,   559,   324,    66,
 
1398
     245,  7634,  7634,  7634,  -654,  9349,   274,  -654,  -654,   262,
 
1399
     269,  -654,  -654,  -654,  5363,  -654,  5780,  5677,  -654,  -654,
 
1400
    -654,   222,  -654,  -654,   275,   285,  3449,  -654,   571,   366,
 
1401
     476,  3187,   310,   315,   342,   249,  7634,   -44,   371,   392,
 
1402
     401,  -654,   480,   375,   401,  -654,   470,  -654,   586,   595,
 
1403
     618,  -654,  -654,  -654,  -654,   231,  -654,   482,   515,   674,
 
1404
     425,   565,   444,    30,   493,   499,  -654,  -654,  -654,  -654,
 
1405
    3674,  6810,  6810,  6810,  6810,  5471,  6810,  6810,  -654,  -654,
 
1406
    7016,  -654,  3187,  8335,   438,  7016,  7634,  7634,  7634,  7634,
 
1407
    7634,  7634,  7634,  7634,  7634,  7634,  7634,  7634,  7634,  7634,
 
1408
    7634,  7634,  7634,  7634,  7634,  7634,  7634,  7634,  7634,  7634,
 
1409
    7634,  7634,  1612,  6913,  8489,  8555,  8555,  -654,  -654,  -654,
 
1410
    -654,  7737,  7737,  -654,   501,  -654,   275,   249,  -654,   623,
 
1411
    -654,  -654,  -654,   124,  -654,  -654,  -654,  8621,  6913,  8555,
 
1412
    2615,  6810,   419,  -654,  -654,  -654,  -654,   583,   596,   283,
 
1413
    -654,  -654,  2737,   590,  7634,  8687,  6913,  8753,  7634,  7634,
 
1414
    2981,   601,  3571,  7119,   611,  -654,    18,    18,   252,  8819,
 
1415
    6913,  8885,  -654,   498,  -654,  7634,  5883,  -654,  -654,  5986,
 
1416
    -654,  -654,   503,  5574,  -654,  -654,   104,   -44,   510,     9,
 
1417
     512,  -654,  -654,  -654,  5121,  -654,  7634,  3449,   528,  8687,
 
1418
    8753,  7634,   529,  -654,   527,   -44,  9213,  -654,  -654,  7222,
 
1419
    -654,  -654,  7634,  -654,  7634,  -654,  -654,  -654,   623,  8951,
 
1420
    6913,  9017,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,
 
1421
    -654,  -654,  -654,    25,  -654,  -654,   534,  -654,  7634,  7634,
 
1422
     757,  -654,  -654,  -654,  -654,  -654,  -654,  -654,    37,  7634,
 
1423
    -654,   544,   546,  -654,   550,  -654,  -654,  -654,  1775,  -654,
 
1424
    -654,   366,  9418,  9418,  9418,  9418,   547,   547,  9435,  1667,
 
1425
    9418,  9418,  9366,  9366,   394,   394,  2464,   547,   547,   714,
 
1426
     714,   437,    43,    43,   366,   366,   366,  2365,  4642,  2484,
 
1427
    4745,   111,  -654,   554,   487,  -654,   585,  -654,  4539,  -654,
 
1428
    -654,  1899,  1899,    37,    37,  -654,  9349,  -654,  9349,  -654,
 
1429
    -654,   124,  -654,  6810,  2615,   141,   477,  -654,   111,   562,
 
1430
     111,   681,    35,   597,  -654,  -654,  -654,  -654,  -654,  -654,
 
1431
    -654,  -654,   429,  2615,   124,  -654,   575,  -654,   577,   655,
 
1432
     588,   665,  -654,  5246,  5121,  -654,  7325,   703,  -654,   398,
 
1433
    -654,  2345,  4230,  4333,   599,   344,   416,   703,   726,   734,
 
1434
    7634,   626,    48,  -654,  -654,  -654,  -654,  -654,  -654,    60,
 
1435
      85,   635,   259,   354,  6810,   657,  -654,  -654,  7634,   274,
 
1436
    -654,   628,  7634,   274,  -654,  -654,  7634,  9265,    16,  -654,
 
1437
     636,  -654,   634,   643,  6089,  8555,  8555,   645,  -654,  -654,
 
1438
    6810,  9349,   656,  -654,  9349,   296,   658,  -654,  7634,  -654,
 
1439
     141,   477,   661,   340,   351,  3449,   671,  -654,  -654,  -654,
 
1440
     366,   366,  -654,  7840,  -654,  -654,  -654,  7428,  -654,  7634,
 
1441
    7634,  7737,  7634,  -654,   501,   624,  7737,  7737,  -654,  -654,
 
1442
     501,  -654,  -654,  -654,  -654,  -654,  -654,  -654,    37,  -654,
 
1443
     124,   776,  -654,  -654,   663,  7634,   -44,   781,  -654,   429,
 
1444
    -654,  -654,   452,  -654,  -654,   -12,  -654,  -654,  -654,  -654,
 
1445
     544,  -654,   708,  -654,  3084,   792,  -654,  6810,   797,  -654,
 
1446
    7634,   432,  7634,  7634,   798,  -654,  -654,  -654,  7531,  2859,
 
1447
    3571,  3571,   367,    18,   498,  6192,  -654,   498,   498,  6295,
 
1448
     685,  -654,  6398,  -654,  -654,   104,     9,   111,   111,  -654,
 
1449
     101,  -654,  -654,  9213,   631,   690,  -654,  -654,  -654,  -654,
 
1450
    -654,  -654,   709,  3571,  7634,   692,  9349,  9349,  -654,  9349,
 
1451
    9349,  -654,  7737,  -654,  9349,  -654,  9349,  -654,  3571,  3449,
 
1452
    -654,  2615,  -654,  -654,  -654,  -654,   691,  -654,  -654,   693,
 
1453
     588,  -654,   597,  -654,   588,   419,  8434,    48,  -654,  -654,
 
1454
    3571,  -654,  -654,    48,  -654,  7634,  -654,  7634,   165,   810,
 
1455
     812,  -654,  -654,  7634,  -654,  -654,  7634,  -654,   705,   710,
 
1456
    -654,  7634,   712,  -654,  -654,  -654,  -654,   825,  -654,  -654,
 
1457
    9349,   830,   720,  3449,   832,  -654,   452,  -654,  -654,  -654,
 
1458
    2615,   789,  -654,   640,   595,   618,  2615,  -654,  2737,  -654,
 
1459
    -654,  -654,  -654,  -654,  -654,  3571,  9286,   498,  6501,  -654,
 
1460
    6604,  -654,   498,  -654,  -654,  -654,  -654,   724,  -654,   588,
 
1461
     838,   623,  9083,  6913,  9149,   596,   398,   839,  -654,  -654,
 
1462
    7634,   727,  7634,  -654,  -654,  -654,  -654,    41,   477,   732,
 
1463
      76,    93,  -654,  -654,  -654,   498,  6707,  -654,   498,   631,
 
1464
    -654,  7634,  -654,   498,  -654
 
1465
};
 
1466
 
 
1467
/* YYPGOTO[NTERM-NUM].  */
 
1468
static const yytype_int16 yypgoto[] =
 
1469
{
 
1470
    -654,  -654,  -654,  -360,   431,  -654,    59,  -654,  -654,   958,
 
1471
      44,    23,  -654,  -569,  -654,  -654,     1,    -6,  -183,    22,
 
1472
     779,  -654,   -25,   927,   -70,   853,     7,  -654,    21,  -654,
 
1473
    -654,    -5,  -654,   -16,  -654,  1378,  -338,    -7,  -479,    82,
 
1474
    -654,     2,  -654,  -654,  -654,  -654,    -9,   158,   110,  -278,
 
1475
      26,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,  -654,
 
1476
    -654,  -654,  -654,  -654,  -654,  -654,  -654,   185,  -209,  -372,
 
1477
       0,  -520,   208,  -458,  -654,  -654,  -654,  -228,  -654,   785,
 
1478
    -654,  -654,  -654,  -654,  -356,  -654,  -654,     3,  -654,  -654,
 
1479
    -654,  -654,  -654,  -654,   784,  -654,  -654,  -654,  -654,  -654,
 
1480
    -654,  -654,  -654,   458,  -217,  -654,  -654,  -654,    12,  -654,
 
1481
      14,  -654,   627,   860,  1246,  1107,  -654,  -654,    84,   309,
 
1482
     183,  -654,  -653,   184,  -654,  -608,  -654,  -321,  -504,  -654,
 
1483
    -654,  -654,    -4,  -382,   755,  -226,  -654,  -654,   -24,    20,
 
1484
     467,    53,   814,   756
 
1485
};
 
1486
 
 
1487
/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
 
1488
   positive, shift that token.  If negative, reduce the rule which
 
1489
   number is the opposite.  If zero, do what YYDEFACT says.
 
1490
   If YYTABLE_NINF, syntax error.  */
 
1491
#define YYTABLE_NINF -502
 
1492
static const yytype_int16 yytable[] =
 
1493
{
 
1494
     235,   235,   188,   188,   235,   523,   390,   238,   238,   225,
 
1495
     551,   238,   240,   240,   187,   248,   240,   234,   234,   419,
 
1496
     204,   234,   205,   188,   249,   598,   277,   614,   257,   259,
 
1497
     549,   111,   111,   235,   235,   588,   360,   490,   299,   783,
 
1498
     204,   111,   205,   297,   298,   594,   274,   188,   584,   252,
 
1499
     267,   572,   672,   674,   -87,   215,   218,   705,   347,   284,
 
1500
     614,   380,   601,    96,   693,   220,   696,   714,   347,   264,
 
1501
     458,   306,   307,     3,   464,   676,   677,   111,   432,   363,
 
1502
     559,   780,   296,   452,   784,   -87,   253,   353,   466,   -86,
 
1503
     625,   -84,   345,  -432,   248,   761,   354,   111,   560,   242,
 
1504
     405,   767,   243,   392,   260,   393,   -88,   316,   353,   652,
 
1505
     -89,   290,   642,   -84,  -432,   220,   521,   256,   528,   531,
 
1506
     532,   352,   356,   595,   453,   454,   239,   239,   292,   484,
 
1507
     239,   467,   308,   626,   -84,   346,   -76,   306,   307,   253,
 
1508
     358,   -91,   729,   550,   359,   653,   -87,   351,   216,   217,
 
1509
     294,   295,   348,   381,   647,  -478,   339,   340,   341,   521,
 
1510
     272,   528,   348,   366,   -83,   253,  -479,  -485,   -87,  -481,
 
1511
     247,   -87,   -87,   783,   -84,   550,  -426,   310,   216,   217,
 
1512
     704,   -86,   393,   311,   681,   364,   -79,    76,  -481,    76,
 
1513
     112,   112,   -76,   -89,   391,   211,   211,   211,   -88,   315,
 
1514
     227,   211,   211,   687,   550,   211,   -86,   -86,   216,   217,
 
1515
    -420,   -81,   211,  -482,    53,   235,   235,   297,   859,  -426,
 
1516
     770,  -423,  -485,   -88,   -88,   550,   813,   244,   235,  -425,
 
1517
     235,   235,    76,   211,   211,   238,   278,   238,   238,   247,
 
1518
     240,   572,   240,   240,   211,   234,   648,   234,   416,  -478,
 
1519
     436,  -420,  -327,  -420,   216,   217,   278,  -478,   672,   674,
 
1520
    -479,  -485,  -423,  -485,  -423,  -485,   396,   397,  -479,  -481,
 
1521
     -91,   220,  -425,   376,   421,   827,   828,   -90,   840,   379,
 
1522
     829,   422,   423,   264,   -86,   306,   307,   437,   485,   452,
 
1523
     211,   384,    76,  -327,   235,  -327,   388,   547,   701,   488,
 
1524
     491,   492,   493,   494,   495,   496,   497,   498,   499,   500,
 
1525
     501,   502,   503,   504,   505,   506,   507,   508,   509,   510,
 
1526
     511,   512,   513,   514,   515,   516,   412,   235,   414,   417,
 
1527
     453,   454,   455,   480,   264,   536,   538,   520,   487,   111,
 
1528
     395,   389,   398,   614,   267,   471,   472,   473,   474,   402,
 
1529
     614,   801,   235,   -91,   239,   875,   239,   418,   405,   470,
 
1530
     -90,   -91,   520,  -427,   475,   -78,   431,   -86,   581,   267,
 
1531
     235,   -83,   536,   538,   535,   537,   -80,   235,   -82,   -88,
 
1532
     520,   361,   362,   719,   235,   -78,   -90,   267,   406,   235,
 
1533
     235,    76,   -85,   235,   520,   409,   736,   617,   410,   737,
 
1534
     738,   267,   611,   425,   621,   427,  -427,   211,   211,   622,
 
1535
     631,   824,   707,   704,  -428,   634,   542,  -430,  -429,   188,
 
1536
     482,   -65,   -73,   235,   520,   482,   235,   712,   235,   211,
 
1537
     316,   211,   211,    61,   235,   433,   204,   623,   205,   627,
 
1538
     434,    76,   841,   -78,   520,   629,    76,   -86,   -78,   597,
 
1539
     597,   267,   650,   651,   -80,   636,   637,  -428,   316,   -80,
 
1540
    -430,  -429,   -88,   235,   572,   -78,   -78,   -64,   614,   553,
 
1541
     860,   554,   555,   556,   557,   -85,   -80,   -80,   262,   553,
 
1542
     -80,   554,   555,   556,   557,    76,   211,   211,   211,   211,
 
1543
      76,   211,   211,   -77,   438,   211,   446,    76,   278,   713,
 
1544
     211,   316,   782,   591,   614,   337,   338,   339,   340,   341,
 
1545
     558,   559,   288,   289,   663,   795,   329,   330,   439,   -88,
 
1546
     558,   559,   440,   664,   448,   879,   461,   442,   211,   560,
 
1547
     670,   440,   561,   673,   675,   -85,   211,   211,   262,   560,
 
1548
     452,   663,   561,   558,   559,   465,  -420,   562,   337,   338,
 
1549
     339,   340,   341,   211,  -423,    76,   211,   468,  -283,   431,
 
1550
     235,   606,   560,   469,   486,   561,   342,    76,   188,   188,
 
1551
     666,   211,   684,   452,   235,    76,   373,    76,   836,   -90,
 
1552
     698,   453,   454,   457,   838,   211,   204,   680,   205,  -420,
 
1553
     -86,   539,   235,   575,   679,   699,   235,  -423,   211,  -283,
 
1554
     235,  -283,   -82,   580,   576,  -482,   444,   343,   235,   344,
 
1555
     440,   316,    76,   -78,   453,   454,   459,   688,   393,   374,
 
1556
     611,   593,   743,   452,   605,   735,   329,   330,   615,    90,
 
1557
     367,    90,   113,   113,   113,   211,   624,   628,   550,   385,
 
1558
     399,   235,   229,   756,   757,   759,   760,   225,   723,   633,
 
1559
     764,   766,   429,   -73,   635,   334,   335,   336,   337,   338,
 
1560
     339,   340,   341,   649,   453,   454,   462,   449,   667,   235,
 
1561
    -264,   368,   657,   369,    90,   658,  -431,   665,   279,   111,
 
1562
     386,   400,   387,   401,   758,   682,   482,   428,   -88,   763,
 
1563
     765,   683,   262,   386,   759,   430,   764,   766,   279,  -276,
 
1564
     685,   689,   235,   692,  -284,   694,   776,   762,   450,   235,
 
1565
     451,   -80,  -285,   235,   695,   697,   235,  -431,   704,  -431,
 
1566
     807,   862,   711,   746,   747,   809,   748,   -85,   211,    76,
 
1567
      42,    43,   452,   772,    90,   460,   715,   443,   235,   445,
 
1568
    -276,   447,  -276,   262,   716,  -284,   820,  -284,    76,   232,
 
1569
     -77,   793,   718,  -285,   725,  -285,   812,    94,   722,    94,
 
1570
     732,   731,   863,   814,   864,    94,    94,    94,   734,   726,
 
1571
     739,    94,    94,   453,   454,    94,   597,   741,   316,   820,
 
1572
     733,   235,    94,   742,   744,   819,   773,   846,   774,   211,
 
1573
     235,   777,   786,   329,   330,   235,   301,   302,   303,   304,
 
1574
     305,   790,    94,    94,    94,   271,   275,   794,   796,   211,
 
1575
     810,   815,   111,   579,    94,   211,   825,   816,  -265,   826,
 
1576
     843,   587,   844,   589,   336,   337,   338,   339,   340,   341,
 
1577
      76,   848,   235,    90,   235,   854,   850,   853,   227,   808,
 
1578
     855,   856,   858,   861,   871,   874,   211,   235,   876,   884,
 
1579
     314,   211,   211,   886,   235,   889,   235,   520,   632,   116,
 
1580
      94,   752,    94,   349,   267,   350,   883,   190,   882,   830,
 
1581
     235,   686,   778,   779,     0,   235,   300,     0,     0,     0,
 
1582
       0,     0,   802,    90,     0,   804,   805,     0,    90,    76,
 
1583
       0,     0,   211,     0,     0,     0,     0,     0,     0,     0,
 
1584
       0,     0,     0,     0,    76,    76,    76,     0,     0,     0,
 
1585
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1586
       0,     0,     0,     0,     0,     0,     0,    90,     0,    73,
 
1587
       0,    73,    90,     0,     0,     0,     0,     0,    76,    90,
 
1588
     279,     0,   226,     0,     0,     0,     0,   211,     0,     0,
 
1589
       0,     0,     0,    76,    76,     0,    76,     0,     0,     0,
 
1590
       0,    94,     0,     0,     0,     0,   849,   851,   208,   208,
 
1591
     208,   833,     0,     0,    73,    76,     0,    94,    94,     0,
 
1592
       0,     0,     0,     0,     0,   250,     0,     0,     0,     0,
 
1593
       0,     0,     0,     0,     0,   408,   408,    90,     0,    94,
 
1594
       0,    94,    94,   420,   868,   869,   265,     0,    76,    90,
 
1595
     873,    94,     0,     0,     0,    76,    94,    90,     0,    90,
 
1596
       0,    76,     0,    76,     0,     0,     0,     0,     0,   887,
 
1597
      76,     0,     0,     0,    73,     0,     0,     0,     0,     0,
 
1598
       0,     0,     0,   890,     0,     0,   892,     0,   211,     0,
 
1599
       0,   894,     0,     0,    90,    94,    94,    94,    94,    94,
 
1600
      94,    94,    94,   357,     0,    94,     0,    94,     0,     0,
 
1601
      94,     0,     0,     0,     0,     0,   745,     0,     0,     0,
 
1602
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1603
       0,     0,     0,     0,     0,     0,     0,     0,    94,   271,
 
1604
       0,     0,     0,     0,     0,     0,    94,    94,     0,    93,
 
1605
       0,    93,   114,   114,     0,     0,     0,     0,     0,     0,
 
1606
       0,     0,   230,    94,   271,    94,    94,     0,     0,     0,
 
1607
       0,     0,     0,    73,   578,   789,     0,    94,     0,     0,
 
1608
       0,    94,   271,     0,     0,    94,     0,    94,     0,     0,
 
1609
     798,   799,   800,     0,    93,    94,   271,     0,   280,   408,
 
1610
       0,     0,     0,     0,     0,     0,     0,     0,    94,     0,
 
1611
       0,    90,     0,     0,   408,     0,     0,     0,   280,     0,
 
1612
     208,   208,    94,    73,   817,     0,     0,     0,    73,     0,
 
1613
      90,     0,     0,     0,     0,     0,     0,     0,     0,   821,
 
1614
     822,     0,     0,     0,     0,    94,   271,     0,     0,     0,
 
1615
       0,     0,     0,     0,    93,     0,     0,     0,     0,     0,
 
1616
       0,   837,     0,     0,     0,     0,     0,    73,     0,     0,
 
1617
       0,     0,    73,     0,   655,     0,     0,     0,     0,    73,
 
1618
       0,     0,     0,     0,     0,     0,     0,     0,    92,     0,
 
1619
      92,     0,     0,     0,   857,     0,     0,     0,     0,   208,
 
1620
     208,   208,   208,     0,   476,   477,     0,   865,     0,   866,
 
1621
       0,     0,    90,     0,     0,     0,   867,     0,     0,     0,
 
1622
     229,     0,     0,     0,   671,     0,     0,   671,   671,   655,
 
1623
     655,     0,     0,    92,     0,     0,     0,    73,    94,    94,
 
1624
       0,     0,     0,     0,     0,     0,   671,     0,     0,    73,
 
1625
       0,     0,     0,    93,     0,     0,     0,    73,    94,    73,
 
1626
       0,     0,   691,     0,   691,     0,   691,     0,     0,   552,
 
1627
       0,    90,   703,   706,     0,   706,     0,     0,     0,     0,
 
1628
       0,     0,     0,   706,     0,     0,    90,    90,    90,     0,
 
1629
       0,     0,     0,    92,    73,     0,     0,     0,     0,    94,
 
1630
       0,     0,     0,    93,     0,     0,     0,   408,    93,     0,
 
1631
       0,   265,     0,     0,     0,     0,     0,     0,   408,    94,
 
1632
      90,     0,     0,     0,     0,    94,     0,     0,     0,     0,
 
1633
       0,     0,     0,     0,     0,    90,    90,     0,    90,     0,
 
1634
      94,     0,     0,     0,     0,     0,     0,    93,     0,     0,
 
1635
       0,     0,    93,   834,     0,     0,    94,    90,     0,    93,
 
1636
     280,    94,    94,     0,     0,     0,     0,     0,     0,     0,
 
1637
       0,     0,     0,     0,   655,     0,     0,     0,     0,     0,
 
1638
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1639
      90,     0,    92,     0,     0,     0,     0,    90,   788,    94,
 
1640
       0,   792,    94,    90,     0,    90,     0,     0,     0,     0,
 
1641
       0,    73,    90,     0,    94,    94,    94,    93,     0,     0,
 
1642
     408,     0,     0,   408,   408,     0,     0,     0,     0,    93,
 
1643
      73,     0,     0,   671,   671,     0,     0,    93,     0,    93,
 
1644
       0,   208,    92,     0,     0,     0,     0,    92,    94,     0,
 
1645
       0,     0,     0,     0,     0,     0,     0,    94,     0,     0,
 
1646
       0,     0,     0,    94,    94,     0,    94,     0,     0,     0,
 
1647
       0,     0,     0,     0,    93,   691,   691,     0,     0,     0,
 
1648
     691,     0,     0,     0,     0,    94,    92,     0,     0,     0,
 
1649
       0,    92,     0,     0,   706,     0,     0,     0,    92,     0,
 
1650
       0,     0,   208,     0,   408,   408,     0,     0,     0,     0,
 
1651
       0,     0,    73,     0,     0,     0,     0,     0,    94,     0,
 
1652
     226,     0,     0,     0,     0,    94,     0,     0,   740,     0,
 
1653
       0,    94,     0,    94,     0,     0,     0,     0,     0,     0,
 
1654
      94,     0,   408,   408,     0,     0,     0,     0,   408,   403,
 
1655
     404,     0,     0,     0,     0,   691,    92,     0,    94,   271,
 
1656
       0,   578,   706,     0,     0,     0,     0,   408,    92,     0,
 
1657
       0,    73,     0,     0,     0,     0,    92,     0,    92,     0,
 
1658
       0,   408,     0,     0,   408,     0,    73,    73,    73,   408,
 
1659
       0,    93,     0,     0,     0,     0,     0,     0,     0,     0,
 
1660
       0,     0,   517,   518,     0,   208,   519,     0,     0,     0,
 
1661
      93,     0,     0,    92,   160,   161,   162,   163,   164,   165,
 
1662
      73,   166,   167,     0,     0,   168,     0,     0,   481,   169,
 
1663
     170,   171,   172,   489,     0,    73,    73,     0,    73,     0,
 
1664
       0,     0,     0,   173,     0,     0,     0,     0,     0,     0,
 
1665
       0,     0,     0,   832,     0,     0,     0,    73,   174,   175,
 
1666
     176,   177,   178,   179,   180,   181,   182,   183,     0,     0,
 
1667
     184,   316,   317,   318,   319,   320,   321,   322,   323,   185,
 
1668
     325,   326,     0,     0,     0,     0,   329,   330,     0,     0,
 
1669
      73,     0,    93,   750,     0,     0,     0,    73,     0,     0,
 
1670
     230,     0,     0,    73,     0,    73,     0,     0,     0,     0,
 
1671
       0,   489,    73,   332,   333,   334,   335,   336,   337,   338,
 
1672
     339,   340,   341,   607,   609,     0,     0,   613,     0,     0,
 
1673
      92,   618,     0,     0,     0,     0,     0,     0,     0,     0,
 
1674
       0,     0,     0,     0,     0,     0,     0,     0,     0,    92,
 
1675
       0,    93,     0,     0,     0,     0,     0,   639,   659,     0,
 
1676
     613,     0,   639,     0,     0,     0,    93,    93,    93,     0,
 
1677
       0,     0,     0,     0,     0,     0,     0,     0,     0,   316,
 
1678
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
 
1679
     327,   328,     0,     0,   329,   330,     0,   656,     0,     0,
 
1680
      93,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1681
       0,     0,     0,     0,     0,    93,    93,     0,    93,   331,
 
1682
       0,   332,   333,   334,   335,   336,   337,   338,   339,   340,
 
1683
     341,    92,     0,   835,     0,     0,     0,    93,     0,  -501,
 
1684
       0,  -220,     0,     0,     0,     0,     0,  -501,  -501,  -501,
 
1685
       0,     0,  -501,  -501,  -501,     0,  -501,     0,     0,     0,
 
1686
       0,     0,     0,     0,     0,     0,  -501,     0,     0,     0,
 
1687
      93,     0,     0,     0,     0,  -501,  -501,    93,  -501,  -501,
 
1688
    -501,  -501,  -501,    93,     0,    93,     0,     0,     0,     0,
 
1689
      92,     0,    93,     0,   700,     0,     0,     0,     0,     0,
 
1690
       0,     0,     0,     0,     0,    92,    92,    92,   717,     0,
 
1691
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1692
    -501,     0,     0,     0,     0,     0,   724,     0,     0,     0,
 
1693
     727,     0,     0,     0,   728,     0,     0,     0,     0,    92,
 
1694
       0,     0,   609,     0,  -501,     0,     0,     0,     0,     0,
 
1695
       0,     0,     0,     0,    92,    92,     0,    92,     0,     0,
 
1696
    -501,     0,     0,  -501,  -501,     0,     0,   247,     0,  -501,
 
1697
    -501,     0,     0,     0,     0,   755,    92,     0,     0,     0,
 
1698
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1699
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1700
       0,     0,     0,   775,     0,     0,     0,     0,     0,    92,
 
1701
       0,     0,     0,     0,     0,     0,    92,     0,     0,     0,
 
1702
       0,     0,    92,     0,    92,     0,     0,     0,     0,     0,
 
1703
       0,    92,     0,     0,     0,     0,   639,     0,     0,     0,
 
1704
       0,     0,     0,   613,     0,     0,     0,     0,     0,     0,
 
1705
     613,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1706
    -478,  -478,  -478,     0,  -478,     0,     0,     0,  -478,  -478,
 
1707
       0,     0,   818,  -478,     0,  -478,  -478,  -478,  -478,  -478,
 
1708
    -478,  -478,     0,  -478,     0,     0,  -478,  -478,  -478,  -478,
 
1709
    -478,  -478,  -478,     0,     0,     0,     0,     0,     0,     0,
 
1710
       0,     0,  -478,     0,     0,  -478,  -478,  -478,  -478,  -478,
 
1711
    -478,  -478,  -478,  -478,  -478,   839,  -478,  -478,     0,  -478,
 
1712
    -478,     0,     0,     0,   847,     0,     0,     0,     0,   852,
 
1713
       0,     0,     0,     0,     0,     0,     0,     0,     0,  -478,
 
1714
       0,     0,  -478,  -478,     0,  -478,  -478,     0,  -478,  -478,
 
1715
    -478,  -478,  -478,  -478,  -478,  -478,     0,     0,     0,     0,
 
1716
       0,     0,     0,     0,     0,     0,   609,     0,   613,     0,
 
1717
       0,     0,     0,  -478,  -478,  -478,     0,  -478,     0,     0,
 
1718
       0,     0,     0,     0,     0,  -478,     0,     0,   885,     0,
 
1719
     888,     0,     0,     0,  -501,     4,     0,     5,     6,     7,
 
1720
       8,     9,     0,     0,   613,    10,    11,     0,     0,   893,
 
1721
      12,     0,    13,    14,    15,    16,    17,    18,    19,     0,
 
1722
       0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
 
1723
       0,     0,    27,     0,     0,     0,     0,     0,    28,    29,
 
1724
      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
 
1725
      40,    41,     0,    42,    43,     0,    44,    45,     0,     0,
 
1726
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1727
       0,     0,     0,     0,     0,     0,    46,     0,     0,    47,
 
1728
      48,     0,    49,    50,     0,    51,     0,    52,    53,    54,
 
1729
      55,    56,    57,     0,     0,     0,     0,     0,     0,     0,
 
1730
       0,     0,     0,     0,     0,  -485,     0,     0,     0,     0,
 
1731
      58,    59,    60,  -485,  -485,  -485,     0,     0,     0,  -485,
 
1732
    -485,     0,  -485,     0,  -501,  -501,     0,     0,   659,     0,
 
1733
       0,  -485,     0,     0,     0,     0,     0,     0,     0,     0,
 
1734
       0,  -485,  -485,     0,  -485,  -485,  -485,  -485,  -485,   316,
 
1735
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
 
1736
     327,   328,     0,     0,   329,   330,     0,     0,     0,  -485,
 
1737
    -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
 
1738
    -485,  -485,     0,     0,  -485,  -485,  -485,     0,   661,   331,
 
1739
       0,   332,   333,   334,   335,   336,   337,   338,   339,   340,
 
1740
     341,     0,     0,     0,     0,     0,     0,     0,   -87,  -485,
 
1741
       0,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,  -485,
 
1742
    -485,     0,     0,     0,  -283,  -485,  -485,  -485,     0,  -485,
 
1743
    -485,   -79,  -283,  -283,  -283,  -485,  -485,     0,  -283,  -283,
 
1744
       0,  -283,     0,     0,     0,     0,     0,     0,     0,     0,
 
1745
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1746
    -283,  -283,     0,  -283,  -283,  -283,  -283,  -283,   316,   317,
 
1747
     318,   319,   320,   321,   322,   323,   324,   325,   326,   327,
 
1748
     328,     0,     0,   329,   330,     0,     0,     0,  -283,  -283,
 
1749
    -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,
 
1750
    -283,     0,     0,  -283,  -283,  -283,     0,   662,   331,   660,
 
1751
     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
 
1752
       0,     0,     0,     0,     0,     0,     0,   -89,  -283,     0,
 
1753
    -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,
 
1754
       0,     0,     0,     0,     0,  -283,  -283,     0,  -283,  -283,
 
1755
     -81,     0,     0,     0,  -283,  -283,     4,     0,     5,     6,
 
1756
       7,     8,     9,  -501,  -501,  -501,    10,    11,     0,     0,
 
1757
    -501,    12,     0,    13,    14,    15,    16,    17,    18,    19,
 
1758
       0,     0,     0,     0,    20,    21,    22,    23,    24,    25,
 
1759
      26,     0,     0,    27,     0,     0,     0,     0,     0,    28,
 
1760
      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
 
1761
      39,    40,    41,     0,    42,    43,     0,    44,    45,     0,
 
1762
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1763
       0,     0,     0,     0,     0,     0,     0,    46,     0,     0,
 
1764
      47,    48,     0,    49,    50,     0,    51,     0,    52,    53,
 
1765
      54,    55,    56,    57,     0,     0,     0,     0,     0,     0,
 
1766
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1767
       0,    58,    59,    60,     0,     0,     0,     0,     4,     0,
 
1768
       5,     6,     7,     8,     9,  -501,  -501,  -501,    10,    11,
 
1769
       0,  -501,  -501,    12,     0,    13,    14,    15,    16,    17,
 
1770
      18,    19,     0,     0,     0,     0,    20,    21,    22,    23,
 
1771
      24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
 
1772
       0,    28,    29,    30,    31,    32,    33,    34,    35,    36,
 
1773
      37,    38,    39,    40,    41,     0,    42,    43,     0,    44,
 
1774
      45,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1775
       0,     0,     0,     0,     0,     0,     0,     0,     0,    46,
 
1776
       0,     0,    47,    48,     0,    49,    50,     0,    51,     0,
 
1777
      52,    53,    54,    55,    56,    57,     0,     0,     0,     0,
 
1778
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1779
       0,     0,     0,    58,    59,    60,     0,     0,     0,     0,
 
1780
       4,     0,     5,     6,     7,     8,     9,  -501,  -501,  -501,
 
1781
      10,    11,     0,     0,  -501,    12,  -501,    13,    14,    15,
 
1782
      16,    17,    18,    19,     0,     0,     0,     0,    20,    21,
 
1783
      22,    23,    24,    25,    26,     0,     0,    27,     0,     0,
 
1784
       0,     0,     0,    28,    29,    30,    31,    32,    33,    34,
 
1785
      35,    36,    37,    38,    39,    40,    41,     0,    42,    43,
 
1786
       0,    44,    45,     0,     0,     0,     0,     0,     0,     0,
 
1787
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1788
       0,    46,     0,     0,    47,    48,     0,    49,    50,     0,
 
1789
      51,     0,    52,    53,    54,    55,    56,    57,     0,     0,
 
1790
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1791
       0,     0,     0,     0,     0,    58,    59,    60,     0,     0,
 
1792
       0,     0,     4,     0,     5,     6,     7,     8,     9,  -501,
 
1793
    -501,  -501,    10,    11,     0,     0,  -501,    12,     0,    13,
 
1794
      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
 
1795
      20,    21,    22,    23,    24,    25,    26,     0,     0,    27,
 
1796
       0,     0,     0,     0,     0,    28,    29,    30,    31,    32,
 
1797
      33,    34,    35,    36,    37,    38,    39,    40,    41,     0,
 
1798
      42,    43,     0,    44,    45,     0,     0,     0,     0,     0,
 
1799
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1800
       0,     0,     0,    46,     0,     0,    47,    48,     0,    49,
 
1801
      50,     0,    51,     0,    52,    53,    54,    55,    56,    57,
 
1802
       0,     0,     0,     0,     0,     4,     0,     5,     6,     7,
 
1803
       8,     9,     0,  -501,  -501,    10,    11,    58,    59,    60,
 
1804
      12,     0,    13,    14,    15,    16,    17,    18,    19,     0,
 
1805
       0,  -501,  -501,    20,    21,    22,    23,    24,    25,    26,
 
1806
       0,     0,    27,     0,     0,     0,     0,     0,    28,    29,
 
1807
      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
 
1808
      40,    41,     0,    42,    43,     0,    44,    45,     0,     0,
 
1809
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1810
       0,     0,     0,     0,     0,     0,    46,     0,     0,    47,
 
1811
      48,     0,    49,    50,     0,    51,     0,    52,    53,    54,
 
1812
      55,    56,    57,     0,     0,     0,     0,     0,     4,     0,
 
1813
       5,     6,     7,     8,     9,     0,     0,     0,    10,    11,
 
1814
      58,    59,    60,    12,     0,    13,    14,    15,    16,    17,
 
1815
      18,    19,     0,     0,  -501,  -501,    20,    21,    22,    23,
 
1816
      24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
 
1817
       0,    28,    29,    30,    31,    32,    33,    34,    35,    36,
 
1818
      37,    38,    39,    40,    41,     0,    42,    43,     0,    44,
 
1819
      45,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1820
       0,     0,     0,     0,     0,     0,     0,     0,     0,    46,
 
1821
       0,     0,   261,    48,     0,    49,    50,     0,    51,     0,
 
1822
      52,    53,    54,    55,    56,    57,     0,     0,     0,     0,
 
1823
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1824
       0,     0,     0,    58,    59,    60,     0,     0,     0,     0,
 
1825
       0,     0,  -501,     0,     0,     0,     0,  -501,  -501,     4,
 
1826
       0,     5,     6,     7,     8,     9,     0,     0,     0,    10,
 
1827
      11,     0,     0,     0,    12,     0,    13,    14,    15,    16,
 
1828
      17,    18,    19,     0,     0,     0,     0,    20,    21,    22,
 
1829
      23,    24,    25,    26,     0,     0,    27,     0,     0,     0,
 
1830
       0,     0,    28,    29,    30,    31,    32,    33,    34,    35,
 
1831
      36,    37,    38,    39,    40,    41,     0,    42,    43,     0,
 
1832
      44,    45,     0,     0,     0,     0,     0,     0,     0,     0,
 
1833
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1834
      46,     0,     0,    47,    48,     0,    49,    50,     0,    51,
 
1835
       0,    52,    53,    54,    55,    56,    57,     0,     0,     0,
 
1836
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1837
       0,     0,     0,     0,    58,    59,    60,     0,     0,     0,
 
1838
       0,     0,     0,  -501,     0,     0,     0,     0,  -501,  -501,
 
1839
       4,     0,     5,     6,     7,     8,     9,     0,     0,     0,
 
1840
      10,    11,     0,     0,     0,    12,     0,    13,    14,    15,
 
1841
      16,    17,    18,    19,     0,     0,     0,     0,    20,    21,
 
1842
      22,    23,    24,    25,    26,     0,     0,    27,     0,     0,
 
1843
       0,     0,     0,    28,    29,    30,    31,    32,    33,    34,
 
1844
      35,    36,    37,    38,    39,    40,    41,     0,    42,    43,
 
1845
       0,    44,    45,     0,     0,     0,     0,     0,     0,     0,
 
1846
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1847
       0,    46,     0,     0,    47,    48,     0,    49,    50,     0,
 
1848
      51,     0,    52,    53,    54,    55,    56,    57,     0,     0,
 
1849
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1850
       0,     0,     0,     0,     0,    58,    59,    60,     0,     0,
 
1851
    -501,     0,     4,     0,     5,     6,     7,     8,     9,  -501,
 
1852
    -501,  -501,    10,    11,     0,     0,     0,    12,     0,    13,
 
1853
      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
 
1854
      20,    21,    22,    23,    24,    25,    26,     0,     0,    27,
 
1855
       0,     0,     0,     0,     0,    28,    29,    30,    31,    32,
 
1856
      33,    34,    35,    36,    37,    38,    39,    40,    41,     0,
 
1857
      42,    43,     0,    44,    45,     0,     0,     0,     0,     0,
 
1858
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1859
       0,     0,     0,    46,     0,     0,    47,    48,     0,    49,
 
1860
      50,     0,    51,     0,    52,    53,    54,    55,    56,    57,
 
1861
       0,     0,     0,     0,     0,     0,     0,     5,     6,     7,
 
1862
       8,     9,     0,     0,     0,    10,    11,    58,    59,    60,
 
1863
      12,     0,    13,    14,    15,    16,    17,    18,    19,     0,
 
1864
       0,  -501,  -501,    20,    21,    22,    23,    24,    25,    26,
 
1865
       0,     0,    27,     0,     0,     0,     0,     0,    28,    29,
 
1866
      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
 
1867
      40,    41,     0,    42,    43,     0,    44,    45,     0,     0,
 
1868
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1869
       0,     0,     0,     0,     0,     0,    46,     0,     0,    47,
 
1870
      48,     0,    49,    50,     0,    51,     0,    52,    53,    54,
 
1871
      55,    56,    57,     0,     0,     0,     0,     0,     0,     0,
 
1872
       5,     6,     7,     0,     9,     0,     0,     0,    10,    11,
 
1873
      58,    59,    60,    12,     0,    13,    14,    15,    16,    17,
 
1874
      18,    19,     0,     0,     0,   395,    20,    21,    22,    23,
 
1875
      24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
 
1876
       0,     0,    29,     0,     0,    32,    33,    34,    35,    36,
 
1877
      37,    38,    39,    40,    41,     0,    42,    43,     0,    44,
 
1878
      45,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1879
       0,     0,     0,     0,     0,     0,     0,     0,     0,   207,
 
1880
       0,     0,   107,    48,     0,    49,    50,     0,     0,     0,
 
1881
      52,    53,    54,    55,    56,    57,     0,     0,     0,     0,
 
1882
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1883
       0,     0,     0,    58,    59,    60,     0,     0,     0,     0,
 
1884
       0,     0,     0,     0,     0,     0,     0,   216,   217,   117,
 
1885
     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
 
1886
     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
 
1887
     138,   139,   140,     0,     0,   141,   142,   143,   144,   145,
 
1888
     146,   147,   148,   149,   150,     0,     0,     0,     0,     0,
 
1889
     151,   152,   153,   154,   155,   156,   157,   158,    36,    37,
 
1890
     159,    39,     0,     0,     0,     0,     0,     0,   160,   161,
 
1891
     162,   163,   164,   165,     0,   166,   167,     0,     0,   168,
 
1892
       0,     0,     0,   169,   170,   171,   172,     0,     0,     0,
 
1893
       0,     0,     0,     0,     0,     0,     0,   173,     0,     0,
 
1894
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1895
       0,     0,   174,   175,   176,   177,   178,   179,   180,   181,
 
1896
     182,   183,     0,     0,   184,     0,     0,  -480,  -480,  -480,
 
1897
       0,  -480,     0,   185,   186,  -480,  -480,     0,     0,     0,
 
1898
    -480,     0,  -480,  -480,  -480,  -480,  -480,  -480,  -480,     0,
 
1899
    -480,     0,     0,  -480,  -480,  -480,  -480,  -480,  -480,  -480,
 
1900
       0,     0,     0,     0,     0,     0,     0,     0,     0,  -480,
 
1901
       0,     0,  -480,  -480,  -480,  -480,  -480,  -480,  -480,  -480,
 
1902
    -480,  -480,     0,  -480,  -480,     0,  -480,  -480,     0,     0,
 
1903
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1904
       0,     0,     0,     0,     0,     0,  -480,     0,     0,  -480,
 
1905
    -480,     0,  -480,  -480,     0,  -480,  -480,  -480,  -480,  -480,
 
1906
    -480,  -480,  -480,     0,     0,     0,     0,     0,     0,     0,
 
1907
    -479,  -479,  -479,     0,  -479,     0,     0,     0,  -479,  -479,
 
1908
    -480,  -480,  -480,  -479,  -480,  -479,  -479,  -479,  -479,  -479,
 
1909
    -479,  -479,  -480,  -479,     0,     0,  -479,  -479,  -479,  -479,
 
1910
    -479,  -479,  -479,     0,     0,     0,     0,     0,     0,     0,
 
1911
       0,     0,  -479,     0,     0,  -479,  -479,  -479,  -479,  -479,
 
1912
    -479,  -479,  -479,  -479,  -479,     0,  -479,  -479,     0,  -479,
 
1913
    -479,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1914
       0,     0,     0,     0,     0,     0,     0,     0,     0,  -479,
 
1915
       0,     0,  -479,  -479,     0,  -479,  -479,     0,  -479,  -479,
 
1916
    -479,  -479,  -479,  -479,  -479,  -479,     0,     0,     0,     0,
 
1917
       0,     0,     0,  -481,  -481,  -481,     0,  -481,     0,     0,
 
1918
       0,  -481,  -481,  -479,  -479,  -479,  -481,  -479,  -481,  -481,
 
1919
    -481,  -481,  -481,  -481,  -481,  -479,     0,     0,     0,  -481,
 
1920
    -481,  -481,  -481,  -481,  -481,  -481,     0,     0,     0,     0,
 
1921
       0,     0,     0,     0,     0,  -481,     0,     0,  -481,  -481,
 
1922
    -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,     0,  -481,
 
1923
    -481,     0,  -481,  -481,     0,     0,     0,     0,     0,     0,
 
1924
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1925
       0,     0,  -481,   710,     0,  -481,  -481,     0,  -481,  -481,
 
1926
       0,  -481,  -481,  -481,  -481,  -481,  -481,  -481,  -481,     0,
 
1927
       0,     0,     0,   -87,     0,     0,  -482,  -482,  -482,     0,
 
1928
    -482,     0,     0,     0,  -482,  -482,  -481,  -481,  -481,  -482,
 
1929
       0,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -481,     0,
 
1930
       0,     0,  -482,  -482,  -482,  -482,  -482,  -482,  -482,     0,
 
1931
       0,     0,     0,     0,     0,     0,     0,     0,  -482,     0,
 
1932
       0,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,  -482,
 
1933
    -482,     0,  -482,  -482,     0,  -482,  -482,     0,     0,     0,
 
1934
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1935
       0,     0,     0,     0,     0,  -482,   662,     0,  -482,  -482,
 
1936
       0,  -482,  -482,     0,  -482,  -482,  -482,  -482,  -482,  -482,
 
1937
    -482,  -482,     0,     0,     0,     0,   -89,     0,     0,  -254,
 
1938
    -254,  -254,     0,  -254,     0,     0,     0,  -254,  -254,  -482,
 
1939
    -482,  -482,  -254,     0,  -254,  -254,  -254,  -254,  -254,  -254,
 
1940
    -254,  -482,     0,     0,     0,  -254,  -254,  -254,  -254,  -254,
 
1941
    -254,  -254,     0,     0,     0,     0,     0,     0,     0,     0,
 
1942
       0,  -254,     0,     0,  -254,  -254,  -254,  -254,  -254,  -254,
 
1943
    -254,  -254,  -254,  -254,     0,  -254,  -254,     0,  -254,  -254,
 
1944
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1945
       0,     0,     0,     0,     0,     0,     0,     0,  -254,     0,
 
1946
       0,  -254,  -254,     0,  -254,  -254,     0,  -254,  -254,  -254,
 
1947
    -254,  -254,  -254,  -254,  -254,     0,     0,     0,     0,     0,
 
1948
       0,     0,  -254,  -254,  -254,     0,  -254,     0,     0,     0,
 
1949
    -254,  -254,  -254,  -254,  -254,  -254,     0,  -254,  -254,  -254,
 
1950
    -254,  -254,  -254,  -254,   244,     0,     0,     0,  -254,  -254,
 
1951
    -254,  -254,  -254,  -254,  -254,     0,     0,     0,     0,     0,
 
1952
       0,     0,     0,     0,  -254,     0,     0,  -254,  -254,  -254,
 
1953
    -254,  -254,  -254,  -254,  -254,  -254,  -254,     0,  -254,  -254,
 
1954
       0,  -254,  -254,     0,     0,     0,     0,     0,     0,     0,
 
1955
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1956
       0,  -254,     0,     0,  -254,  -254,     0,  -254,  -254,     0,
 
1957
    -254,  -254,  -254,  -254,  -254,  -254,  -254,  -254,     0,     0,
 
1958
       0,     0,     0,     0,     0,  -483,  -483,  -483,     0,  -483,
 
1959
       0,     0,     0,  -483,  -483,  -254,  -254,  -254,  -483,     0,
 
1960
    -483,  -483,  -483,  -483,  -483,  -483,  -483,   247,     0,     0,
 
1961
       0,  -483,  -483,  -483,  -483,  -483,  -483,  -483,     0,     0,
 
1962
       0,     0,     0,     0,     0,     0,     0,  -483,     0,     0,
 
1963
    -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
 
1964
       0,  -483,  -483,     0,  -483,  -483,     0,     0,     0,     0,
 
1965
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1966
       0,     0,     0,     0,  -483,     0,     0,  -483,  -483,     0,
 
1967
    -483,  -483,     0,  -483,  -483,  -483,  -483,  -483,  -483,  -483,
 
1968
    -483,     0,     0,     0,     0,     0,     0,     0,  -484,  -484,
 
1969
    -484,     0,  -484,     0,     0,     0,  -484,  -484,  -483,  -483,
 
1970
    -483,  -484,     0,  -484,  -484,  -484,  -484,  -484,  -484,  -484,
 
1971
    -483,     0,     0,     0,  -484,  -484,  -484,  -484,  -484,  -484,
 
1972
    -484,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1973
    -484,     0,     0,  -484,  -484,  -484,  -484,  -484,  -484,  -484,
 
1974
    -484,  -484,  -484,     0,  -484,  -484,     0,  -484,  -484,     0,
 
1975
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1976
       0,     0,     0,     0,     0,     0,     0,  -484,     0,     0,
 
1977
    -484,  -484,     0,  -484,  -484,     0,  -484,  -484,  -484,  -484,
 
1978
    -484,  -484,  -484,  -484,     0,     0,     0,     0,     0,     0,
 
1979
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
1980
       0,  -484,  -484,  -484,     0,     0,     0,     0,     0,     0,
 
1981
       0,     0,     0,  -484,   117,   118,   119,   120,   121,   122,
 
1982
     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
 
1983
     133,   134,   135,   136,   137,   138,   139,   140,     0,     0,
 
1984
     141,   142,   143,   192,   193,   194,   195,   148,   149,   150,
 
1985
       0,     0,     0,     0,     0,   151,   152,   153,   154,   196,
 
1986
     197,   198,   158,   281,   282,   199,   283,     0,     0,     0,
 
1987
       0,     0,     0,   160,   161,   162,   163,   164,   165,     0,
 
1988
     166,   167,     0,     0,   168,     0,     0,     0,   169,   170,
 
1989
     171,   172,     0,     0,     0,     0,     0,     0,     0,     0,
 
1990
       0,     0,   173,     0,     0,     0,     0,     0,     0,     0,
 
1991
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
 
1992
     177,   178,   179,   180,   181,   182,   183,     0,     0,   184,
 
1993
       0,     0,     0,     0,     0,     0,     0,     0,   185,   117,
 
1994
     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
 
1995
     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
 
1996
     138,   139,   140,     0,     0,   141,   142,   143,   192,   193,
 
1997
     194,   195,   148,   149,   150,     0,     0,     0,     0,     0,
 
1998
     151,   152,   153,   154,   196,   197,   198,   158,   251,     0,
 
1999
     199,     0,     0,     0,     0,     0,     0,     0,   160,   161,
 
2000
     162,   163,   164,   165,     0,   166,   167,     0,     0,   168,
 
2001
       0,     0,     0,   169,   170,   171,   172,     0,     0,     0,
 
2002
       0,     0,     0,     0,     0,     0,     0,   173,     0,    52,
 
2003
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2004
       0,     0,   174,   175,   176,   177,   178,   179,   180,   181,
 
2005
     182,   183,     0,     0,   184,     0,     0,     0,     0,     0,
 
2006
       0,     0,     0,   185,   117,   118,   119,   120,   121,   122,
 
2007
     123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
 
2008
     133,   134,   135,   136,   137,   138,   139,   140,     0,     0,
 
2009
     141,   142,   143,   192,   193,   194,   195,   148,   149,   150,
 
2010
       0,     0,     0,     0,     0,   151,   152,   153,   154,   196,
 
2011
     197,   198,   158,     0,     0,   199,     0,     0,     0,     0,
 
2012
       0,     0,     0,   160,   161,   162,   163,   164,   165,     0,
 
2013
     166,   167,     0,     0,   168,     0,     0,     0,   169,   170,
 
2014
     171,   172,     0,     0,     0,     0,     0,     0,     0,     0,
 
2015
       0,     0,   173,     0,    52,     0,     0,     0,     0,     0,
 
2016
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
 
2017
     177,   178,   179,   180,   181,   182,   183,     0,     0,   184,
 
2018
       0,     0,     0,     0,     0,     0,     0,     0,   185,   117,
 
2019
     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
 
2020
     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
 
2021
     138,   139,   140,     0,     0,   141,   142,   143,   192,   193,
 
2022
     194,   195,   148,   149,   150,     0,     0,     0,     0,     0,
 
2023
     151,   152,   153,   154,   196,   197,   198,   158,     0,     0,
 
2024
     199,     0,     0,     0,     0,     0,     0,     0,   160,   161,
 
2025
     162,   163,   164,   165,     0,   166,   167,     0,     0,   168,
 
2026
       0,     0,     0,   169,   170,   171,   172,     0,     0,     0,
 
2027
       0,     0,     0,     0,     0,     0,     0,   173,     0,     0,
 
2028
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2029
       0,     0,   174,   175,   176,   177,   178,   179,   180,   181,
 
2030
     182,   183,     0,     0,   184,     0,     5,     6,     7,     0,
 
2031
       9,     0,     0,   185,    10,    11,     0,     0,     0,    12,
 
2032
       0,    13,    14,    15,    97,    98,    18,    19,     0,     0,
 
2033
       0,     0,    99,    21,    22,    23,    24,    25,    26,     0,
 
2034
       0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
 
2035
       0,    32,    33,    34,    35,    36,    37,    38,    39,    40,
 
2036
      41,     0,    42,    43,     0,    44,    45,     0,     0,     0,
 
2037
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2038
       0,     0,     0,     0,     0,   207,     0,     0,   107,    48,
 
2039
       0,    49,    50,     0,   231,   232,    52,    53,    54,    55,
 
2040
      56,    57,     0,     0,     0,     0,     0,     0,     0,     0,
 
2041
       0,     0,     0,     0,     5,     6,     7,     8,     9,    58,
 
2042
     233,    60,    10,    11,     0,     0,     0,    12,   411,    13,
 
2043
      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
 
2044
      20,    21,    22,    23,    24,    25,    26,     0,     0,    27,
 
2045
       0,     0,     0,     0,     0,    28,    29,    30,    31,    32,
 
2046
      33,    34,    35,    36,    37,    38,    39,    40,    41,     0,
 
2047
      42,    43,     0,    44,    45,     0,     0,     0,     0,     0,
 
2048
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2049
       0,     0,     0,    46,     0,     0,    47,    48,     0,    49,
 
2050
      50,     0,    51,     0,    52,    53,    54,    55,    56,    57,
 
2051
       0,     0,     0,     0,     0,     0,     0,     5,     6,     7,
 
2052
       0,     9,     0,     0,     0,    10,    11,    58,    59,    60,
 
2053
      12,     0,    13,    14,    15,    16,    17,    18,    19,     0,
 
2054
       0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
 
2055
       0,     0,    27,     0,     0,     0,     0,     0,     0,    29,
 
2056
       0,     0,    32,    33,    34,    35,    36,    37,    38,    39,
 
2057
      40,    41,     0,    42,    43,     0,    44,    45,     0,     0,
 
2058
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2059
       0,     0,     0,     0,     0,     0,   207,     0,     0,   107,
 
2060
      48,     0,    49,    50,     0,   616,   232,    52,    53,    54,
 
2061
      55,    56,    57,     0,     0,     0,     0,     0,     0,     0,
 
2062
       5,     6,     7,     0,     9,     0,     0,     0,    10,    11,
 
2063
      58,    59,    60,    12,     0,    13,    14,    15,    97,    98,
 
2064
      18,    19,     0,     0,     0,     0,    99,    21,    22,    23,
 
2065
      24,    25,    26,     0,     0,     0,     0,     0,     0,     0,
 
2066
       0,     0,    29,     0,     0,    32,    33,    34,    35,    36,
 
2067
      37,    38,    39,    40,    41,     0,    42,    43,     0,    44,
 
2068
      45,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2069
       0,     0,     0,     0,     0,     0,     0,     0,     0,   207,
 
2070
       0,     0,   107,    48,     0,    49,    50,     0,   231,   232,
 
2071
      52,    53,    54,    55,    56,    57,     0,     0,     0,     0,
 
2072
       0,     0,     0,     5,     6,     7,     0,     9,     0,     0,
 
2073
       0,    10,    11,    58,   233,    60,    12,     0,    13,    14,
 
2074
      15,    97,    98,    18,    19,     0,     0,     0,     0,    99,
 
2075
      21,    22,    23,    24,    25,    26,     0,     0,     0,     0,
 
2076
       0,     0,     0,     0,     0,    29,     0,     0,    32,    33,
 
2077
      34,    35,    36,    37,    38,    39,    40,    41,     0,    42,
 
2078
      43,     0,    44,    45,     0,     0,     0,     0,     0,     0,
 
2079
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2080
       0,     0,   207,     0,     0,   107,   413,     0,    49,    50,
 
2081
       0,   231,   232,    52,    53,    54,    55,    56,    57,     0,
 
2082
       0,     0,     0,     0,     0,     0,     5,     6,     7,     0,
 
2083
       9,     0,     0,     0,    10,    11,    58,   233,    60,    12,
 
2084
       0,    13,    14,    15,    97,    98,    18,    19,     0,     0,
 
2085
       0,     0,    99,   100,   101,    23,    24,    25,    26,     0,
 
2086
       0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
 
2087
       0,    32,    33,    34,    35,    36,    37,    38,    39,    40,
 
2088
      41,     0,    42,    43,     0,    44,    45,     0,     0,     0,
 
2089
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2090
       0,     0,     0,     0,     0,   207,     0,     0,   107,    48,
 
2091
       0,    49,    50,     0,   608,   232,    52,    53,    54,    55,
 
2092
      56,    57,     0,     0,     0,     0,     0,     0,     0,     5,
 
2093
       6,     7,     0,     9,     0,     0,     0,    10,    11,    58,
 
2094
     233,    60,    12,     0,    13,    14,    15,    97,    98,    18,
 
2095
      19,     0,     0,     0,     0,    99,   100,   101,    23,    24,
 
2096
      25,    26,     0,     0,     0,     0,     0,     0,     0,     0,
 
2097
       0,    29,     0,     0,    32,    33,    34,    35,    36,    37,
 
2098
      38,    39,    40,    41,     0,    42,    43,     0,    44,    45,
 
2099
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2100
       0,     0,     0,     0,     0,     0,     0,     0,   207,     0,
 
2101
       0,   107,    48,     0,    49,    50,     0,   612,   232,    52,
 
2102
      53,    54,    55,    56,    57,     0,     0,     0,     0,     0,
 
2103
       0,     0,     5,     6,     7,     0,     9,     0,     0,     0,
 
2104
      10,    11,    58,   233,    60,    12,     0,    13,    14,    15,
 
2105
      97,    98,    18,    19,     0,     0,     0,     0,    99,    21,
 
2106
      22,    23,    24,    25,    26,     0,     0,     0,     0,     0,
 
2107
       0,     0,     0,     0,    29,     0,     0,    32,    33,    34,
 
2108
      35,    36,    37,    38,    39,    40,    41,     0,    42,    43,
 
2109
       0,    44,    45,     0,     0,     0,     0,     0,     0,     0,
 
2110
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2111
       0,   207,     0,     0,   107,    48,     0,    49,    50,     0,
 
2112
     608,   232,    52,    53,    54,    55,    56,    57,     0,     0,
 
2113
       0,     0,     0,     0,     0,     5,     6,     7,     0,     9,
 
2114
       0,     0,     0,    10,    11,    58,   233,    60,    12,     0,
 
2115
      13,    14,    15,    97,    98,    18,    19,     0,     0,     0,
 
2116
       0,    99,   100,   101,    23,    24,    25,    26,     0,     0,
 
2117
       0,     0,     0,     0,     0,     0,     0,    29,     0,     0,
 
2118
      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
 
2119
       0,    42,    43,     0,    44,    45,     0,     0,     0,     0,
 
2120
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2121
       0,     0,     0,     0,   207,     0,     0,   107,    48,     0,
 
2122
      49,    50,     0,   803,   232,    52,    53,    54,    55,    56,
 
2123
      57,     0,     0,     0,     0,     0,     0,     0,     5,     6,
 
2124
       7,     0,     9,     0,     0,     0,    10,    11,    58,   233,
 
2125
      60,    12,     0,    13,    14,    15,    97,    98,    18,    19,
 
2126
       0,     0,     0,     0,    99,   100,   101,    23,    24,    25,
 
2127
      26,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2128
      29,     0,     0,    32,    33,    34,    35,    36,    37,    38,
 
2129
      39,    40,    41,     0,    42,    43,     0,    44,    45,     0,
 
2130
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2131
       0,     0,     0,     0,     0,     0,     0,   207,     0,     0,
 
2132
     107,    48,     0,    49,    50,     0,   806,   232,    52,    53,
 
2133
      54,    55,    56,    57,     0,     0,     0,     0,     0,     0,
 
2134
       0,     5,     6,     7,     0,     9,     0,     0,     0,    10,
 
2135
      11,    58,   233,    60,    12,     0,    13,    14,    15,    97,
 
2136
      98,    18,    19,     0,     0,     0,     0,    99,   100,   101,
 
2137
      23,    24,    25,    26,     0,     0,     0,     0,     0,     0,
 
2138
       0,     0,     0,    29,     0,     0,    32,    33,    34,    35,
 
2139
      36,    37,    38,    39,    40,    41,     0,    42,    43,     0,
 
2140
      44,    45,     0,     0,     0,     0,     0,     0,     0,     0,
 
2141
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2142
     207,     0,     0,   107,    48,     0,    49,    50,     0,   811,
 
2143
     232,    52,    53,    54,    55,    56,    57,     0,     0,     0,
 
2144
       0,     0,     0,     0,     5,     6,     7,     0,     9,     0,
 
2145
       0,     0,    10,    11,    58,   233,    60,    12,     0,    13,
 
2146
      14,    15,    97,    98,    18,    19,     0,     0,     0,     0,
 
2147
      99,   100,   101,    23,    24,    25,    26,     0,     0,     0,
 
2148
       0,     0,     0,     0,     0,     0,    29,     0,     0,    32,
 
2149
      33,    34,    35,    36,    37,    38,    39,    40,    41,     0,
 
2150
      42,    43,     0,    44,    45,     0,     0,     0,     0,     0,
 
2151
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2152
       0,     0,     0,   207,     0,     0,   107,    48,     0,    49,
 
2153
      50,     0,   870,   232,    52,    53,    54,    55,    56,    57,
 
2154
       0,     0,     0,     0,     0,     0,     0,     5,     6,     7,
 
2155
       0,     9,     0,     0,     0,    10,    11,    58,   233,    60,
 
2156
      12,     0,    13,    14,    15,    97,    98,    18,    19,     0,
 
2157
       0,     0,     0,    99,   100,   101,    23,    24,    25,    26,
 
2158
       0,     0,     0,     0,     0,     0,     0,     0,     0,    29,
 
2159
       0,     0,    32,    33,    34,    35,    36,    37,    38,    39,
 
2160
      40,    41,     0,    42,    43,     0,    44,    45,     0,     0,
 
2161
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2162
       0,     0,     0,     0,     0,     0,   207,     0,     0,   107,
 
2163
      48,     0,    49,    50,     0,   872,   232,    52,    53,    54,
 
2164
      55,    56,    57,     0,     0,     0,     0,     0,     0,     0,
 
2165
       5,     6,     7,     0,     9,     0,     0,     0,    10,    11,
 
2166
      58,   233,    60,    12,     0,    13,    14,    15,    97,    98,
 
2167
      18,    19,     0,     0,     0,     0,    99,   100,   101,    23,
 
2168
      24,    25,    26,     0,     0,     0,     0,     0,     0,     0,
 
2169
       0,     0,    29,     0,     0,    32,    33,    34,    35,    36,
 
2170
      37,    38,    39,    40,    41,     0,    42,    43,     0,    44,
 
2171
      45,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2172
       0,     0,     0,     0,     0,     0,     0,     0,     0,   207,
 
2173
       0,     0,   107,    48,     0,    49,    50,     0,   891,   232,
 
2174
      52,    53,    54,    55,    56,    57,     0,     0,     0,     0,
 
2175
       0,     0,     0,     5,     6,     7,     0,     9,     0,     0,
 
2176
       0,    10,    11,    58,   233,    60,    12,     0,    13,    14,
 
2177
      15,    16,    17,    18,    19,     0,     0,     0,     0,    20,
 
2178
      21,    22,    23,    24,    25,    26,     0,     0,    27,     0,
 
2179
       0,     0,     0,     0,     0,    29,     0,     0,    32,    33,
 
2180
      34,    35,    36,    37,    38,    39,    40,    41,     0,    42,
 
2181
      43,     0,    44,    45,     0,     0,     0,     0,     0,     0,
 
2182
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2183
       0,     0,   207,     0,     0,   107,    48,     0,    49,    50,
 
2184
       0,     0,     0,    52,    53,    54,    55,    56,    57,     0,
 
2185
       0,     0,     0,     0,     0,     0,     5,     6,     7,     0,
 
2186
       9,     0,     0,     0,    10,    11,    58,    59,    60,    12,
 
2187
       0,    13,    14,    15,    97,    98,    18,    19,     0,     0,
 
2188
       0,     0,    99,    21,    22,    23,    24,    25,    26,     0,
 
2189
       0,     0,     0,     0,     0,     0,     0,     0,    29,     0,
 
2190
       0,    32,    33,    34,    35,    36,    37,    38,    39,    40,
 
2191
      41,     0,    42,    43,     0,    44,    45,     0,     0,     0,
 
2192
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2193
       0,     0,     0,     0,     0,   207,     0,     0,   107,    48,
 
2194
       0,    49,    50,     0,   266,     0,    52,    53,    54,    55,
 
2195
      56,    57,     0,     0,     0,     0,     0,     0,     0,     5,
 
2196
       6,     7,     0,     9,     0,     0,     0,    10,    11,    58,
 
2197
     233,    60,    12,     0,    13,    14,    15,    16,    17,    18,
 
2198
      19,     0,     0,     0,     0,    20,    21,    22,    23,    24,
 
2199
      25,    26,     0,     0,     0,     0,     0,     0,     0,     0,
 
2200
       0,    29,     0,     0,    32,    33,    34,    35,    36,    37,
 
2201
      38,    39,    40,    41,     0,    42,    43,     0,    44,    45,
 
2202
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2203
       0,     0,     0,     0,     0,     0,     0,     0,   207,     0,
 
2204
       0,   107,    48,     0,    49,    50,     0,   479,     0,    52,
 
2205
      53,    54,    55,    56,    57,     0,     0,     0,     0,     0,
 
2206
       0,     0,     5,     6,     7,     0,     9,     0,     0,     0,
 
2207
      10,    11,    58,   233,    60,    12,     0,    13,    14,    15,
 
2208
      97,    98,    18,    19,     0,     0,     0,     0,    99,   100,
 
2209
     101,    23,    24,    25,    26,     0,     0,     0,     0,     0,
 
2210
       0,     0,     0,     0,    29,     0,     0,    32,    33,    34,
 
2211
      35,    36,    37,    38,    39,    40,    41,     0,    42,    43,
 
2212
       0,    44,    45,     0,     0,     0,     0,     0,     0,     0,
 
2213
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2214
       0,   207,     0,     0,   107,    48,     0,    49,    50,     0,
 
2215
     590,     0,    52,    53,    54,    55,    56,    57,     0,     0,
 
2216
       0,     0,     0,     0,     0,     5,     6,     7,     0,     9,
 
2217
       0,     0,     0,    10,    11,    58,   233,    60,    12,     0,
 
2218
      13,    14,    15,    97,    98,    18,    19,     0,     0,     0,
 
2219
       0,    99,   100,   101,    23,    24,    25,    26,     0,     0,
 
2220
       0,     0,     0,     0,     0,     0,     0,    29,     0,     0,
 
2221
      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
 
2222
       0,    42,    43,     0,    44,    45,     0,     0,     0,     0,
 
2223
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2224
       0,     0,     0,     0,   207,     0,     0,   107,    48,     0,
 
2225
      49,    50,     0,   638,     0,    52,    53,    54,    55,    56,
 
2226
      57,     0,     0,     0,     0,     0,     0,     0,     5,     6,
 
2227
       7,     0,     9,     0,     0,     0,    10,    11,    58,   233,
 
2228
      60,    12,     0,    13,    14,    15,    97,    98,    18,    19,
 
2229
       0,     0,     0,     0,    99,   100,   101,    23,    24,    25,
 
2230
      26,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2231
      29,     0,     0,    32,    33,    34,    35,    36,    37,    38,
 
2232
      39,    40,    41,     0,    42,    43,     0,    44,    45,     0,
 
2233
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2234
       0,     0,     0,     0,     0,     0,     0,   207,     0,     0,
 
2235
     107,    48,     0,    49,    50,     0,   479,     0,    52,    53,
 
2236
      54,    55,    56,    57,     0,     0,     0,     0,     0,     0,
 
2237
       0,     5,     6,     7,     0,     9,     0,     0,     0,    10,
 
2238
      11,    58,   233,    60,    12,     0,    13,    14,    15,    97,
 
2239
      98,    18,    19,     0,     0,     0,     0,    99,   100,   101,
 
2240
      23,    24,    25,    26,     0,     0,     0,     0,     0,     0,
 
2241
       0,     0,     0,    29,     0,     0,    32,    33,    34,    35,
 
2242
      36,    37,    38,    39,    40,    41,     0,    42,    43,     0,
 
2243
      44,    45,     0,     0,     0,     0,     0,     0,     0,     0,
 
2244
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2245
     207,     0,     0,   107,    48,     0,    49,    50,     0,   754,
 
2246
       0,    52,    53,    54,    55,    56,    57,     0,     0,     0,
 
2247
       0,     0,     0,     0,     5,     6,     7,     0,     9,     0,
 
2248
       0,     0,    10,    11,    58,   233,    60,    12,     0,    13,
 
2249
      14,    15,    97,    98,    18,    19,     0,     0,     0,     0,
 
2250
      99,   100,   101,    23,    24,    25,    26,     0,     0,     0,
 
2251
       0,     0,     0,     0,     0,     0,    29,     0,     0,    32,
 
2252
      33,    34,    35,    36,    37,    38,    39,    40,    41,     0,
 
2253
      42,    43,     0,    44,    45,     0,     0,     0,     0,     0,
 
2254
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2255
       0,     0,     0,   207,     0,     0,   107,    48,     0,    49,
 
2256
      50,     0,   797,     0,    52,    53,    54,    55,    56,    57,
 
2257
       0,     0,     0,     0,     0,     0,     0,     5,     6,     7,
 
2258
       0,     9,     0,     0,     0,    10,    11,    58,   233,    60,
 
2259
      12,     0,    13,    14,    15,    97,    98,    18,    19,     0,
 
2260
       0,     0,     0,    99,   100,   101,    23,    24,    25,    26,
 
2261
       0,     0,     0,     0,     0,     0,     0,     0,     0,    29,
 
2262
       0,     0,    32,    33,    34,    35,    36,    37,    38,    39,
 
2263
      40,    41,     0,    42,    43,     0,    44,    45,     0,     0,
 
2264
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2265
       0,     0,     0,     0,     0,     0,   207,     0,     0,   107,
 
2266
      48,     0,    49,    50,     0,     0,     0,    52,    53,    54,
 
2267
      55,    56,    57,     0,     0,     0,     0,     0,     0,     0,
 
2268
       5,     6,     7,     0,     9,     0,     0,     0,    10,    11,
 
2269
      58,   233,    60,    12,     0,    13,    14,    15,    16,    17,
 
2270
      18,    19,     0,     0,     0,     0,    20,    21,    22,    23,
 
2271
      24,    25,    26,     0,     0,     0,     0,     0,     0,     0,
 
2272
       0,     0,    29,     0,     0,    32,    33,    34,    35,    36,
 
2273
      37,    38,    39,    40,    41,     0,    42,    43,     0,    44,
 
2274
      45,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2275
       0,     0,     0,     0,     0,     0,     0,     0,     0,   207,
 
2276
       0,     0,   107,    48,     0,    49,    50,     0,     0,     0,
 
2277
      52,    53,    54,    55,    56,    57,     0,     0,     0,     0,
 
2278
       0,     0,     0,     5,     6,     7,     0,     9,     0,     0,
 
2279
       0,    10,    11,    58,   233,    60,    12,     0,    13,    14,
 
2280
      15,    97,    98,    18,    19,     0,     0,     0,     0,    99,
 
2281
     100,   101,    23,    24,    25,    26,     0,     0,     0,     0,
 
2282
       0,     0,     0,     0,     0,   102,     0,     0,    32,    33,
 
2283
      34,    35,    36,    37,    38,    39,    40,    41,     0,    42,
 
2284
      43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2285
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2286
       0,     0,   224,     0,     0,    47,    48,     0,    49,    50,
 
2287
       0,    51,     0,    52,    53,    54,    55,    56,    57,     0,
 
2288
       0,     0,     5,     6,     7,     0,     9,     0,   751,     0,
 
2289
      10,    11,     0,     0,     0,    12,   108,    13,    14,    15,
 
2290
      97,    98,    18,    19,     0,     0,     0,     0,    99,   100,
 
2291
     101,    23,    24,    25,    26,     0,     0,     0,     0,     0,
 
2292
       0,     0,     0,     0,   102,     0,     0,    32,    33,   103,
 
2293
      35,    36,    37,   104,    39,    40,    41,     0,    42,    43,
 
2294
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2295
       0,     0,     0,     0,     0,     0,     0,     0,   105,     0,
 
2296
       0,   106,     0,     0,   107,    48,     0,    49,    50,     0,
 
2297
       0,     0,    52,    53,    54,    55,    56,    57,     0,     0,
 
2298
       0,     5,     6,     7,     0,     9,     0,     0,     0,    10,
 
2299
      11,     0,     0,     0,    12,   108,    13,    14,    15,    97,
 
2300
      98,    18,    19,     0,     0,     0,     0,    99,   100,   101,
 
2301
      23,    24,    25,    26,     0,     0,     0,     0,     0,     0,
 
2302
       0,     0,     0,   102,     0,     0,    32,    33,    34,    35,
 
2303
      36,    37,    38,    39,    40,    41,     0,    42,    43,     0,
 
2304
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2305
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2306
     224,     0,     0,    47,    48,     0,    49,    50,     0,    51,
 
2307
       0,    52,    53,    54,    55,    56,    57,     0,     0,     0,
 
2308
       5,     6,     7,     0,     9,     0,     0,     0,    10,    11,
 
2309
       0,     0,     0,    12,   108,    13,    14,    15,    97,    98,
 
2310
      18,    19,     0,     0,     0,     0,    99,   100,   101,    23,
 
2311
      24,    25,    26,     0,     0,     0,     0,     0,     0,     0,
 
2312
       0,     0,   102,     0,     0,    32,    33,    34,    35,    36,
 
2313
      37,    38,    39,    40,    41,     0,    42,    43,     0,     0,
 
2314
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2315
       0,     0,     0,     0,     0,     0,     0,     0,     0,   276,
 
2316
       0,     0,   312,    48,     0,    49,    50,     0,   313,     0,
 
2317
      52,    53,    54,    55,    56,    57,     0,     0,     0,     5,
 
2318
       6,     7,     0,     9,     0,     0,     0,    10,    11,     0,
 
2319
       0,     0,    12,   108,    13,    14,    15,    97,    98,    18,
 
2320
      19,     0,     0,     0,     0,    99,   100,   101,    23,    24,
 
2321
      25,    26,     0,     0,     0,     0,     0,     0,     0,     0,
 
2322
       0,   102,     0,     0,    32,    33,   103,    35,    36,    37,
 
2323
     104,    39,    40,    41,     0,    42,    43,     0,     0,     0,
 
2324
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2325
       0,     0,     0,     0,     0,     0,     0,     0,   106,     0,
 
2326
       0,   107,    48,     0,    49,    50,     0,     0,     0,    52,
 
2327
      53,    54,    55,    56,    57,     0,     0,     0,     5,     6,
 
2328
       7,     0,     9,     0,     0,     0,    10,    11,     0,     0,
 
2329
       0,    12,   108,    13,    14,    15,    97,    98,    18,    19,
 
2330
       0,     0,     0,     0,    99,   100,   101,    23,    24,    25,
 
2331
      26,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2332
     102,     0,     0,    32,    33,    34,    35,    36,    37,    38,
 
2333
      39,    40,    41,     0,    42,    43,     0,     0,     0,     0,
 
2334
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2335
       0,     0,     0,     0,     0,     0,     0,   276,     0,     0,
 
2336
     107,    48,     0,    49,    50,     0,     0,     0,    52,    53,
 
2337
      54,    55,    56,    57,     0,     0,     0,     5,     6,     7,
 
2338
       0,     9,     0,     0,     0,    10,    11,     0,     0,     0,
 
2339
      12,   108,    13,    14,    15,    97,    98,    18,    19,     0,
 
2340
       0,     0,     0,    99,   100,   101,    23,    24,    25,    26,
 
2341
       0,     0,     0,     0,     0,     0,     0,     0,     0,   102,
 
2342
       0,     0,    32,    33,    34,    35,    36,    37,    38,    39,
 
2343
      40,    41,     0,    42,    43,     0,     0,     0,     0,     0,
 
2344
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2345
       0,     0,     0,     0,     0,     0,   831,     0,     0,   107,
 
2346
      48,     0,    49,    50,     0,     0,     0,    52,    53,    54,
 
2347
      55,    56,    57,     0,     0,     0,     0,     0,     0,   524,
 
2348
     525,     0,     0,   526,     0,     0,     0,     0,     0,     0,
 
2349
     108,   160,   161,   162,   163,   164,   165,     0,   166,   167,
 
2350
       0,     0,   168,     0,     0,     0,   169,   170,   171,   172,
 
2351
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2352
     173,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2353
       0,     0,     0,     0,     0,   174,   175,   176,   177,   178,
 
2354
     179,   180,   181,   182,   183,   529,   525,   184,     0,   530,
 
2355
       0,     0,     0,     0,     0,     0,   185,   160,   161,   162,
 
2356
     163,   164,   165,     0,   166,   167,     0,     0,   168,     0,
 
2357
       0,     0,   169,   170,   171,   172,     0,     0,     0,     0,
 
2358
       0,     0,     0,     0,     0,     0,   173,     0,     0,     0,
 
2359
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2360
       0,   174,   175,   176,   177,   178,   179,   180,   181,   182,
 
2361
     183,   545,   518,   184,     0,   546,     0,     0,     0,     0,
 
2362
       0,     0,   185,   160,   161,   162,   163,   164,   165,     0,
 
2363
     166,   167,     0,     0,   168,     0,     0,     0,   169,   170,
 
2364
     171,   172,     0,     0,     0,     0,     0,     0,     0,     0,
 
2365
       0,     0,   173,     0,     0,     0,     0,     0,     0,     0,
 
2366
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
 
2367
     177,   178,   179,   180,   181,   182,   183,   582,   518,   184,
 
2368
       0,   583,     0,     0,     0,     0,     0,     0,   185,   160,
 
2369
     161,   162,   163,   164,   165,     0,   166,   167,     0,     0,
 
2370
     168,     0,     0,     0,   169,   170,   171,   172,     0,     0,
 
2371
       0,     0,     0,     0,     0,     0,     0,     0,   173,     0,
 
2372
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2373
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
 
2374
     181,   182,   183,   585,   525,   184,     0,   586,     0,     0,
 
2375
       0,     0,     0,     0,   185,   160,   161,   162,   163,   164,
 
2376
     165,     0,   166,   167,     0,     0,   168,     0,     0,     0,
 
2377
     169,   170,   171,   172,     0,     0,     0,     0,     0,     0,
 
2378
       0,     0,     0,     0,   173,     0,     0,     0,     0,     0,
 
2379
       0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
 
2380
     175,   176,   177,   178,   179,   180,   181,   182,   183,   599,
 
2381
     518,   184,     0,   600,     0,     0,     0,     0,     0,     0,
 
2382
     185,   160,   161,   162,   163,   164,   165,     0,   166,   167,
 
2383
       0,     0,   168,     0,     0,     0,   169,   170,   171,   172,
 
2384
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2385
     173,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2386
       0,     0,     0,     0,     0,   174,   175,   176,   177,   178,
 
2387
     179,   180,   181,   182,   183,   602,   525,   184,     0,   603,
 
2388
       0,     0,     0,     0,     0,     0,   185,   160,   161,   162,
 
2389
     163,   164,   165,     0,   166,   167,     0,     0,   168,     0,
 
2390
       0,     0,   169,   170,   171,   172,     0,     0,     0,     0,
 
2391
       0,     0,     0,     0,     0,     0,   173,     0,     0,     0,
 
2392
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2393
       0,   174,   175,   176,   177,   178,   179,   180,   181,   182,
 
2394
     183,   640,   518,   184,     0,   641,     0,     0,     0,     0,
 
2395
       0,     0,   185,   160,   161,   162,   163,   164,   165,     0,
 
2396
     166,   167,     0,     0,   168,     0,     0,     0,   169,   170,
 
2397
     171,   172,     0,     0,     0,     0,     0,     0,     0,     0,
 
2398
       0,     0,   173,     0,     0,     0,     0,     0,     0,     0,
 
2399
       0,     0,     0,     0,     0,     0,     0,   174,   175,   176,
 
2400
     177,   178,   179,   180,   181,   182,   183,   643,   525,   184,
 
2401
       0,   644,     0,     0,     0,     0,     0,     0,   185,   160,
 
2402
     161,   162,   163,   164,   165,     0,   166,   167,     0,     0,
 
2403
     168,     0,     0,     0,   169,   170,   171,   172,     0,     0,
 
2404
       0,     0,     0,     0,     0,     0,     0,     0,   173,     0,
 
2405
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2406
       0,     0,     0,   174,   175,   176,   177,   178,   179,   180,
 
2407
     181,   182,   183,   877,   518,   184,     0,   878,     0,     0,
 
2408
       0,     0,     0,     0,   185,   160,   161,   162,   163,   164,
 
2409
     165,     0,   166,   167,     0,     0,   168,     0,     0,     0,
 
2410
     169,   170,   171,   172,     0,     0,     0,     0,     0,     0,
 
2411
       0,     0,     0,     0,   173,     0,     0,     0,     0,     0,
 
2412
       0,     0,     0,     0,     0,     0,     0,     0,     0,   174,
 
2413
     175,   176,   177,   178,   179,   180,   181,   182,   183,   880,
 
2414
     525,   184,     0,   881,     0,     0,     0,     0,     0,     0,
 
2415
     185,   160,   161,   162,   163,   164,   165,     0,   166,   167,
 
2416
       0,     0,   168,     0,     0,     0,   169,   170,   171,   172,
 
2417
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2418
     173,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2419
       0,     0,     0,     0,     0,   174,   175,   176,   177,   178,
 
2420
     179,   180,   181,   182,   183,     0,     0,   184,     0,     0,
 
2421
       0,     0,     0,     0,     0,     0,   185,   316,   317,   318,
 
2422
     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
 
2423
       0,     0,   329,   330,     0,     0,     0,     0,     0,     0,
 
2424
       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2425
       0,     0,     0,     0,     0,     0,     0,   331,     0,   332,
 
2426
     333,   334,   335,   336,   337,   338,   339,   340,   341,   316,
 
2427
     317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
 
2428
     327,   328,     0,   253,   329,   330,     0,     0,     0,  -220,
 
2429
     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
 
2430
     326,   327,   328,     0,     0,   329,   330,     0,     0,   331,
 
2431
       0,   332,   333,   334,   335,   336,   337,   338,   339,   340,
 
2432
     341,     0,     0,     0,     0,     0,     0,     0,     0,     0,
 
2433
     331,  -220,   332,   333,   334,   335,   336,   337,   338,   339,
 
2434
     340,   341,     0,     0,     0,     0,     0,     0,     0,     0,
 
2435
       0,     0,   605,   316,   317,   318,   319,   320,   321,   322,
 
2436
     323,   324,   325,   326,   327,   328,     0,     0,   329,   330,
 
2437
     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
 
2438
     326,  -502,  -502,     0,     0,   329,   330,     0,     0,     0,
 
2439
       0,     0,     0,   331,     0,   332,   333,   334,   335,   336,
 
2440
     337,   338,   339,   340,   341,     0,     0,     0,     0,     0,
 
2441
       0,     0,   332,   333,   334,   335,   336,   337,   338,   339,
 
2442
     340,   341,   316,  -502,  -502,  -502,  -502,   321,   322,     0,
 
2443
       0,  -502,  -502,     0,     0,     0,     0,   329,   330,   316,
 
2444
     317,   318,   319,   320,   321,   322,     0,     0,   325,   326,
 
2445
       0,     0,     0,     0,   329,   330,     0,     0,     0,     0,
 
2446
       0,     0,     0,     0,   332,   333,   334,   335,   336,   337,
 
2447
     338,   339,   340,   341,     0,     0,     0,     0,     0,     0,
 
2448
       0,   332,   333,   334,   335,   336,   337,   338,   339,   340,
 
2449
     341
 
2450
};
 
2451
 
 
2452
static const yytype_int16 yycheck[] =
 
2453
{
 
2454
      16,    17,     7,     8,    20,   343,   215,    16,    17,    15,
 
2455
     370,    20,    16,    17,     7,    22,    20,    16,    17,   247,
 
2456
       8,    20,     8,    28,    22,   397,    51,   409,    44,    45,
 
2457
     368,     5,     6,    49,    50,   391,   106,   315,    62,   692,
 
2458
      28,    15,    28,    59,    60,    27,    50,    52,   386,    28,
 
2459
      49,   372,   531,   532,    13,    11,    12,   577,    26,    52,
 
2460
     442,    13,   400,     4,   568,    12,   570,   587,    26,    47,
 
2461
     287,    36,    37,     0,   291,   533,   534,    51,   261,     1,
 
2462
      92,   689,    59,    58,   692,    25,   130,    94,    58,    13,
 
2463
      81,    25,    81,    83,   101,   664,    94,    71,   110,    17,
 
2464
      84,   670,    20,    15,    54,    17,    13,    64,   115,    72,
 
2465
      25,   129,   450,   103,    83,    62,   342,   120,   344,   345,
 
2466
     346,    83,   102,   105,    99,   100,    16,    17,   129,   312,
 
2467
      20,   101,    28,   124,   103,   124,   126,    36,    37,   130,
 
2468
      50,   103,   126,   369,    54,   108,   105,    83,   130,   131,
 
2469
      56,    57,   120,   105,   129,    26,   113,   114,   115,   385,
 
2470
      50,   387,   120,   110,   126,   130,    26,    26,   108,   128,
 
2471
     128,   130,   131,   826,   108,   401,    81,   103,   130,   131,
 
2472
      15,   105,    17,   126,   544,   107,   126,     2,   128,     4,
 
2473
       5,     6,   126,   108,   218,    10,    11,    12,   105,   103,
 
2474
      15,    16,    17,   563,   430,    20,   130,   131,   130,   131,
 
2475
      81,   126,    27,   128,    94,   231,   232,   233,   826,   124,
 
2476
     678,    81,    81,   130,   131,   451,   125,   128,   244,    81,
 
2477
     246,   247,    47,    48,    49,   244,    51,   246,   247,   128,
 
2478
     244,   562,   246,   247,    59,   244,   463,   246,   247,   120,
 
2479
     266,   122,    81,   124,   130,   131,    71,   128,   737,   738,
 
2480
     120,   120,   122,   122,   124,   124,   222,   223,   128,   128,
 
2481
      25,   218,   124,   126,    52,   779,   780,    25,   798,    54,
 
2482
     784,    59,    60,   261,    25,    36,    37,   267,   313,    58,
 
2483
     105,   103,   107,   122,   310,   124,    83,   367,   576,   315,
 
2484
     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
 
2485
     326,   327,   328,   329,   330,   331,   332,   333,   334,   335,
 
2486
     336,   337,   338,   339,   340,   341,   244,   343,   246,   247,
 
2487
      99,   100,   101,   310,   312,   351,   352,   342,   315,   313,
 
2488
     131,    83,    54,   725,   343,   301,   302,   303,   304,    25,
 
2489
     732,   723,   368,   108,   244,   859,   246,   247,    84,   300,
 
2490
     108,   103,   367,    81,   305,    25,    83,   108,   384,   368,
 
2491
     386,   126,   388,   389,   351,   352,    25,   393,   126,    25,
 
2492
     385,    56,    57,   592,   400,   126,   103,   386,   126,   405,
 
2493
     406,   206,    25,   409,   399,   126,   624,   413,   240,   625,
 
2494
     626,   400,   406,   128,   413,   120,   124,   222,   223,   413,
 
2495
     426,   771,    14,    15,    81,   431,   363,    81,    81,   424,
 
2496
     310,   125,   126,   439,   429,   315,   442,    83,   444,   244,
 
2497
      64,   246,   247,     2,   450,   125,   424,   417,   424,   419,
 
2498
     125,   256,   798,   103,   449,   424,   261,   103,   108,   396,
 
2499
     397,   450,   468,   469,   103,   435,   436,   124,    64,   108,
 
2500
     124,   124,   108,   479,   785,   125,   126,   125,   850,    50,
 
2501
     830,    52,    53,    54,    55,   108,   125,   126,    47,    50,
 
2502
     126,    52,    53,    54,    55,   300,   301,   302,   303,   304,
 
2503
     305,   306,   307,   126,   123,   310,   121,   312,   313,    83,
 
2504
     315,    64,    50,   393,   886,   111,   112,   113,   114,   115,
 
2505
      91,    92,    54,    55,   521,    83,    79,    80,   126,   103,
 
2506
      91,    92,   130,   521,    54,   863,   101,   126,   343,   110,
 
2507
     528,   130,   113,   531,   532,   103,   351,   352,   107,   110,
 
2508
      58,   548,   113,    91,    92,   101,    81,   128,   111,   112,
 
2509
     113,   114,   115,   368,    81,   370,   371,    64,    81,    83,
 
2510
     576,   403,   110,    64,   126,   113,    81,   382,   573,   574,
 
2511
      83,   386,   552,    58,   590,   390,    81,   392,   787,   103,
 
2512
     573,    99,   100,   101,   793,   400,   574,   543,   574,   124,
 
2513
     103,    90,   608,    10,   541,   574,   612,   124,   413,   122,
 
2514
     616,   124,   126,    13,     8,   128,   126,   122,   624,   124,
 
2515
     130,    64,   427,   126,    99,   100,   101,   564,    17,   124,
 
2516
     624,    10,   638,    58,   126,   624,    79,    80,   125,     2,
 
2517
      81,     4,     5,     6,     7,   450,   126,   125,   864,    81,
 
2518
      81,   657,    15,   659,   660,   661,   662,   653,   604,   121,
 
2519
     666,   667,    81,   126,   125,   108,   109,   110,   111,   112,
 
2520
     113,   114,   115,   129,    99,   100,   101,    81,    83,   685,
 
2521
     126,   122,   126,   124,    47,   125,    81,   123,    51,   653,
 
2522
     122,   122,   124,   124,   661,   123,   576,   256,   103,   666,
 
2523
     667,    10,   261,   122,   710,   124,   712,   713,    71,    81,
 
2524
     103,   126,   718,   126,    81,    50,   686,    83,   122,   725,
 
2525
     124,   126,    81,   729,   126,    50,   732,   122,    15,   124,
 
2526
     729,    81,   123,    52,    53,   729,    55,   103,   543,   544,
 
2527
      59,    60,    58,   680,   107,    61,    10,   270,   754,   272,
 
2528
     122,   274,   124,   312,    10,   122,   762,   124,   563,    92,
 
2529
     126,   707,   126,   122,   126,   124,   736,     2,   123,     4,
 
2530
     126,   125,   122,   743,   124,    10,    11,    12,   125,   611,
 
2531
     125,    16,    17,    99,   100,    20,   723,   121,    64,   795,
 
2532
     622,   797,    27,   125,   123,   762,    10,   803,   125,   604,
 
2533
     806,    10,    84,    79,    80,   811,    39,    40,    41,    42,
 
2534
      43,     9,    47,    48,    49,    49,    50,    10,    10,   624,
 
2535
     125,   121,   786,   382,    59,   630,   125,   108,   126,   126,
 
2536
      10,   390,    10,   392,   110,   111,   112,   113,   114,   115,
 
2537
     645,   126,   848,   206,   850,    10,   126,   125,   653,   729,
 
2538
      10,   121,    10,    54,   848,   121,   661,   863,    10,    10,
 
2539
      71,   666,   667,   126,   870,   123,   872,   862,   427,     6,
 
2540
     105,   653,   107,    78,   863,    81,   866,     7,   865,   785,
 
2541
     886,   562,   689,   689,    -1,   891,    62,    -1,    -1,    -1,
 
2542
      -1,    -1,   724,   256,    -1,   727,   728,    -1,   261,   704,
 
2543
      -1,    -1,   707,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2544
      -1,    -1,    -1,    -1,   719,   720,   721,    -1,    -1,    -1,
 
2545
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2546
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   300,    -1,     2,
 
2547
      -1,     4,   305,    -1,    -1,    -1,    -1,    -1,   753,   312,
 
2548
     313,    -1,    15,    -1,    -1,    -1,    -1,   762,    -1,    -1,
 
2549
      -1,    -1,    -1,   768,   769,    -1,   771,    -1,    -1,    -1,
 
2550
      -1,   206,    -1,    -1,    -1,    -1,   808,   809,    10,    11,
 
2551
      12,   786,    -1,    -1,    47,   790,    -1,   222,   223,    -1,
 
2552
      -1,    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,    -1,
 
2553
      -1,    -1,    -1,    -1,    -1,   239,   240,   370,    -1,   244,
 
2554
      -1,   246,   247,   247,   846,   847,    48,    -1,   823,   382,
 
2555
     852,   256,    -1,    -1,    -1,   830,   261,   390,    -1,   392,
 
2556
      -1,   836,    -1,   838,    -1,    -1,    -1,    -1,    -1,   871,
 
2557
     845,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,
 
2558
      -1,    -1,    -1,   885,    -1,    -1,   888,    -1,   863,    -1,
 
2559
      -1,   893,    -1,    -1,   427,   300,   301,   302,   303,   304,
 
2560
     305,   306,   307,   105,    -1,   310,    -1,   312,    -1,    -1,
 
2561
     315,    -1,    -1,    -1,    -1,    -1,   645,    -1,    -1,    -1,
 
2562
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2563
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   343,   343,
 
2564
      -1,    -1,    -1,    -1,    -1,    -1,   351,   352,    -1,     2,
 
2565
      -1,     4,     5,     6,    -1,    -1,    -1,    -1,    -1,    -1,
 
2566
      -1,    -1,    15,   368,   368,   370,   371,    -1,    -1,    -1,
 
2567
      -1,    -1,    -1,   206,   378,   704,    -1,   382,    -1,    -1,
 
2568
      -1,   386,   386,    -1,    -1,   390,    -1,   392,    -1,    -1,
 
2569
     719,   720,   721,    -1,    47,   400,   400,    -1,    51,   403,
 
2570
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   413,    -1,
 
2571
      -1,   544,    -1,    -1,   418,    -1,    -1,    -1,    71,    -1,
 
2572
     222,   223,   427,   256,   753,    -1,    -1,    -1,   261,    -1,
 
2573
     563,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   768,
 
2574
     769,    -1,    -1,    -1,    -1,   450,   450,    -1,    -1,    -1,
 
2575
      -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,
 
2576
      -1,   790,    -1,    -1,    -1,    -1,    -1,   300,    -1,    -1,
 
2577
      -1,    -1,   305,    -1,   478,    -1,    -1,    -1,    -1,   312,
 
2578
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     2,    -1,
 
2579
       4,    -1,    -1,    -1,   823,    -1,    -1,    -1,    -1,   301,
 
2580
     302,   303,   304,    -1,   306,   307,    -1,   836,    -1,   838,
 
2581
      -1,    -1,   645,    -1,    -1,    -1,   845,    -1,    -1,    -1,
 
2582
     653,    -1,    -1,    -1,   528,    -1,    -1,   531,   532,   533,
 
2583
     534,    -1,    -1,    47,    -1,    -1,    -1,   370,   543,   544,
 
2584
      -1,    -1,    -1,    -1,    -1,    -1,   550,    -1,    -1,   382,
 
2585
      -1,    -1,    -1,   206,    -1,    -1,    -1,   390,   563,   392,
 
2586
      -1,    -1,   566,    -1,   568,    -1,   570,    -1,    -1,   371,
 
2587
      -1,   704,   576,   577,    -1,   579,    -1,    -1,    -1,    -1,
 
2588
      -1,    -1,    -1,   587,    -1,    -1,   719,   720,   721,    -1,
 
2589
      -1,    -1,    -1,   107,   427,    -1,    -1,    -1,    -1,   604,
 
2590
      -1,    -1,    -1,   256,    -1,    -1,    -1,   611,   261,    -1,
 
2591
      -1,   413,    -1,    -1,    -1,    -1,    -1,    -1,   622,   624,
 
2592
     753,    -1,    -1,    -1,    -1,   630,    -1,    -1,    -1,    -1,
 
2593
      -1,    -1,    -1,    -1,    -1,   768,   769,    -1,   771,    -1,
 
2594
     645,    -1,    -1,    -1,    -1,    -1,    -1,   300,    -1,    -1,
 
2595
      -1,    -1,   305,   786,    -1,    -1,   661,   790,    -1,   312,
 
2596
     313,   666,   667,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2597
      -1,    -1,    -1,    -1,   678,    -1,    -1,    -1,    -1,    -1,
 
2598
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2599
     823,    -1,   206,    -1,    -1,    -1,    -1,   830,   702,   704,
 
2600
      -1,   705,   707,   836,    -1,   838,    -1,    -1,    -1,    -1,
 
2601
      -1,   544,   845,    -1,   719,   720,   721,   370,    -1,    -1,
 
2602
     724,    -1,    -1,   727,   728,    -1,    -1,    -1,    -1,   382,
 
2603
     563,    -1,    -1,   737,   738,    -1,    -1,   390,    -1,   392,
 
2604
      -1,   543,   256,    -1,    -1,    -1,    -1,   261,   753,    -1,
 
2605
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   762,    -1,    -1,
 
2606
      -1,    -1,    -1,   768,   769,    -1,   771,    -1,    -1,    -1,
 
2607
      -1,    -1,    -1,    -1,   427,   779,   780,    -1,    -1,    -1,
 
2608
     784,    -1,    -1,    -1,    -1,   790,   300,    -1,    -1,    -1,
 
2609
      -1,   305,    -1,    -1,   798,    -1,    -1,    -1,   312,    -1,
 
2610
      -1,    -1,   604,    -1,   808,   809,    -1,    -1,    -1,    -1,
 
2611
      -1,    -1,   645,    -1,    -1,    -1,    -1,    -1,   823,    -1,
 
2612
     653,    -1,    -1,    -1,    -1,   830,    -1,    -1,   630,    -1,
 
2613
      -1,   836,    -1,   838,    -1,    -1,    -1,    -1,    -1,    -1,
 
2614
     845,    -1,   846,   847,    -1,    -1,    -1,    -1,   852,   231,
 
2615
     232,    -1,    -1,    -1,    -1,   859,   370,    -1,   863,   863,
 
2616
      -1,   865,   866,    -1,    -1,    -1,    -1,   871,   382,    -1,
 
2617
      -1,   704,    -1,    -1,    -1,    -1,   390,    -1,   392,    -1,
 
2618
      -1,   885,    -1,    -1,   888,    -1,   719,   720,   721,   893,
 
2619
      -1,   544,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2620
      -1,    -1,    50,    51,    -1,   707,    54,    -1,    -1,    -1,
 
2621
     563,    -1,    -1,   427,    62,    63,    64,    65,    66,    67,
 
2622
     753,    69,    70,    -1,    -1,    73,    -1,    -1,   310,    77,
 
2623
      78,    79,    80,   315,    -1,   768,   769,    -1,   771,    -1,
 
2624
      -1,    -1,    -1,    91,    -1,    -1,    -1,    -1,    -1,    -1,
 
2625
      -1,    -1,    -1,   786,    -1,    -1,    -1,   790,   106,   107,
 
2626
     108,   109,   110,   111,   112,   113,   114,   115,    -1,    -1,
 
2627
     118,    64,    65,    66,    67,    68,    69,    70,    71,   127,
 
2628
      73,    74,    -1,    -1,    -1,    -1,    79,    80,    -1,    -1,
 
2629
     823,    -1,   645,   646,    -1,    -1,    -1,   830,    -1,    -1,
 
2630
     653,    -1,    -1,   836,    -1,   838,    -1,    -1,    -1,    -1,
 
2631
      -1,   393,   845,   106,   107,   108,   109,   110,   111,   112,
 
2632
     113,   114,   115,   405,   406,    -1,    -1,   409,    -1,    -1,
 
2633
     544,   413,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2634
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   563,
 
2635
      -1,   704,    -1,    -1,    -1,    -1,    -1,   439,    43,    -1,
 
2636
     442,    -1,   444,    -1,    -1,    -1,   719,   720,   721,    -1,
 
2637
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
 
2638
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
 
2639
      75,    76,    -1,    -1,    79,    80,    -1,   479,    -1,    -1,
 
2640
     753,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2641
      -1,    -1,    -1,    -1,    -1,   768,   769,    -1,   771,   104,
 
2642
      -1,   106,   107,   108,   109,   110,   111,   112,   113,   114,
 
2643
     115,   645,    -1,   786,    -1,    -1,    -1,   790,    -1,     0,
 
2644
      -1,   126,    -1,    -1,    -1,    -1,    -1,     8,     9,    10,
 
2645
      -1,    -1,    13,    14,    15,    -1,    17,    -1,    -1,    -1,
 
2646
      -1,    -1,    -1,    -1,    -1,    -1,    27,    -1,    -1,    -1,
 
2647
     823,    -1,    -1,    -1,    -1,    36,    37,   830,    39,    40,
 
2648
      41,    42,    43,   836,    -1,   838,    -1,    -1,    -1,    -1,
 
2649
     704,    -1,   845,    -1,   576,    -1,    -1,    -1,    -1,    -1,
 
2650
      -1,    -1,    -1,    -1,    -1,   719,   720,   721,   590,    -1,
 
2651
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2652
      81,    -1,    -1,    -1,    -1,    -1,   608,    -1,    -1,    -1,
 
2653
     612,    -1,    -1,    -1,   616,    -1,    -1,    -1,    -1,   753,
 
2654
      -1,    -1,   624,    -1,   105,    -1,    -1,    -1,    -1,    -1,
 
2655
      -1,    -1,    -1,    -1,   768,   769,    -1,   771,    -1,    -1,
 
2656
     121,    -1,    -1,   124,   125,    -1,    -1,   128,    -1,   130,
 
2657
     131,    -1,    -1,    -1,    -1,   657,   790,    -1,    -1,    -1,
 
2658
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2659
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2660
      -1,    -1,    -1,   685,    -1,    -1,    -1,    -1,    -1,   823,
 
2661
      -1,    -1,    -1,    -1,    -1,    -1,   830,    -1,    -1,    -1,
 
2662
      -1,    -1,   836,    -1,   838,    -1,    -1,    -1,    -1,    -1,
 
2663
      -1,   845,    -1,    -1,    -1,    -1,   718,    -1,    -1,    -1,
 
2664
      -1,    -1,    -1,   725,    -1,    -1,    -1,    -1,    -1,    -1,
 
2665
     732,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2666
       3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,
 
2667
      -1,    -1,   754,    16,    -1,    18,    19,    20,    21,    22,
 
2668
      23,    24,    -1,    26,    -1,    -1,    29,    30,    31,    32,
 
2669
      33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2670
      -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,    52,
 
2671
      53,    54,    55,    56,    57,   797,    59,    60,    -1,    62,
 
2672
      63,    -1,    -1,    -1,   806,    -1,    -1,    -1,    -1,   811,
 
2673
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
 
2674
      -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,    92,
 
2675
      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
 
2676
      -1,    -1,    -1,    -1,    -1,    -1,   848,    -1,   850,    -1,
 
2677
      -1,    -1,    -1,   116,   117,   118,    -1,   120,    -1,    -1,
 
2678
      -1,    -1,    -1,    -1,    -1,   128,    -1,    -1,   870,    -1,
 
2679
     872,    -1,    -1,    -1,     0,     1,    -1,     3,     4,     5,
 
2680
       6,     7,    -1,    -1,   886,    11,    12,    -1,    -1,   891,
 
2681
      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
 
2682
      -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    35,
 
2683
      -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,    44,    45,
 
2684
      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
 
2685
      56,    57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,
 
2686
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2687
      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
 
2688
      86,    -1,    88,    89,    -1,    91,    -1,    93,    94,    95,
 
2689
      96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2690
      -1,    -1,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
 
2691
     116,   117,   118,     8,     9,    10,    -1,    -1,    -1,    14,
 
2692
      15,    -1,    17,    -1,   130,   131,    -1,    -1,    43,    -1,
 
2693
      -1,    26,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2694
      -1,    36,    37,    -1,    39,    40,    41,    42,    43,    64,
 
2695
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
 
2696
      75,    76,    -1,    -1,    79,    80,    -1,    -1,    -1,    64,
 
2697
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
 
2698
      75,    76,    -1,    -1,    79,    80,    81,    -1,    83,   104,
 
2699
      -1,   106,   107,   108,   109,   110,   111,   112,   113,   114,
 
2700
     115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,   104,
 
2701
      -1,   106,   107,   108,   109,   110,   111,   112,   113,   114,
 
2702
     115,    -1,    -1,    -1,     0,   120,   121,   122,    -1,   124,
 
2703
     125,   126,     8,     9,    10,   130,   131,    -1,    14,    15,
 
2704
      -1,    17,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2705
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2706
      36,    37,    -1,    39,    40,    41,    42,    43,    64,    65,
 
2707
      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
 
2708
      76,    -1,    -1,    79,    80,    -1,    -1,    -1,    64,    65,
 
2709
      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
 
2710
      76,    -1,    -1,    79,    80,    81,    -1,    83,   104,   105,
 
2711
     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
 
2712
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,   104,    -1,
 
2713
     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
 
2714
      -1,    -1,    -1,    -1,    -1,   121,   122,    -1,   124,   125,
 
2715
     126,    -1,    -1,    -1,   130,   131,     1,    -1,     3,     4,
 
2716
       5,     6,     7,     8,     9,    10,    11,    12,    -1,    -1,
 
2717
      15,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
 
2718
      -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
 
2719
      35,    -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,    44,
 
2720
      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
 
2721
      55,    56,    57,    -1,    59,    60,    -1,    62,    63,    -1,
 
2722
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2723
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
 
2724
      85,    86,    -1,    88,    89,    -1,    91,    -1,    93,    94,
 
2725
      95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,
 
2726
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2727
      -1,   116,   117,   118,    -1,    -1,    -1,    -1,     1,    -1,
 
2728
       3,     4,     5,     6,     7,   130,   131,    10,    11,    12,
 
2729
      -1,    14,    15,    16,    -1,    18,    19,    20,    21,    22,
 
2730
      23,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
 
2731
      33,    34,    35,    -1,    -1,    38,    -1,    -1,    -1,    -1,
 
2732
      -1,    44,    45,    46,    47,    48,    49,    50,    51,    52,
 
2733
      53,    54,    55,    56,    57,    -1,    59,    60,    -1,    62,
 
2734
      63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2735
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
 
2736
      -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,    -1,
 
2737
      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
 
2738
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2739
      -1,    -1,    -1,   116,   117,   118,    -1,    -1,    -1,    -1,
 
2740
       1,    -1,     3,     4,     5,     6,     7,   130,   131,    10,
 
2741
      11,    12,    -1,    -1,    15,    16,    17,    18,    19,    20,
 
2742
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,
 
2743
      31,    32,    33,    34,    35,    -1,    -1,    38,    -1,    -1,
 
2744
      -1,    -1,    -1,    44,    45,    46,    47,    48,    49,    50,
 
2745
      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
 
2746
      -1,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2747
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2748
      -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,
 
2749
      91,    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,
 
2750
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2751
      -1,    -1,    -1,    -1,    -1,   116,   117,   118,    -1,    -1,
 
2752
      -1,    -1,     1,    -1,     3,     4,     5,     6,     7,   130,
 
2753
     131,    10,    11,    12,    -1,    -1,    15,    16,    -1,    18,
 
2754
      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
 
2755
      29,    30,    31,    32,    33,    34,    35,    -1,    -1,    38,
 
2756
      -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,    48,
 
2757
      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
 
2758
      59,    60,    -1,    62,    63,    -1,    -1,    -1,    -1,    -1,
 
2759
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2760
      -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,
 
2761
      89,    -1,    91,    -1,    93,    94,    95,    96,    97,    98,
 
2762
      -1,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,
 
2763
       6,     7,    -1,     9,    10,    11,    12,   116,   117,   118,
 
2764
      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
 
2765
      -1,   130,   131,    29,    30,    31,    32,    33,    34,    35,
 
2766
      -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,    44,    45,
 
2767
      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
 
2768
      56,    57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,
 
2769
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2770
      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
 
2771
      86,    -1,    88,    89,    -1,    91,    -1,    93,    94,    95,
 
2772
      96,    97,    98,    -1,    -1,    -1,    -1,    -1,     1,    -1,
 
2773
       3,     4,     5,     6,     7,    -1,    -1,    -1,    11,    12,
 
2774
     116,   117,   118,    16,    -1,    18,    19,    20,    21,    22,
 
2775
      23,    24,    -1,    -1,   130,   131,    29,    30,    31,    32,
 
2776
      33,    34,    35,    -1,    -1,    38,    -1,    -1,    -1,    -1,
 
2777
      -1,    44,    45,    46,    47,    48,    49,    50,    51,    52,
 
2778
      53,    54,    55,    56,    57,    -1,    59,    60,    -1,    62,
 
2779
      63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2780
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
 
2781
      -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,    -1,
 
2782
      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
 
2783
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2784
      -1,    -1,    -1,   116,   117,   118,    -1,    -1,    -1,    -1,
 
2785
      -1,    -1,   125,    -1,    -1,    -1,    -1,   130,   131,     1,
 
2786
      -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,    11,
 
2787
      12,    -1,    -1,    -1,    16,    -1,    18,    19,    20,    21,
 
2788
      22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
 
2789
      32,    33,    34,    35,    -1,    -1,    38,    -1,    -1,    -1,
 
2790
      -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
 
2791
      52,    53,    54,    55,    56,    57,    -1,    59,    60,    -1,
 
2792
      62,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2793
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2794
      82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,
 
2795
      -1,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
 
2796
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2797
      -1,    -1,    -1,    -1,   116,   117,   118,    -1,    -1,    -1,
 
2798
      -1,    -1,    -1,   125,    -1,    -1,    -1,    -1,   130,   131,
 
2799
       1,    -1,     3,     4,     5,     6,     7,    -1,    -1,    -1,
 
2800
      11,    12,    -1,    -1,    -1,    16,    -1,    18,    19,    20,
 
2801
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,
 
2802
      31,    32,    33,    34,    35,    -1,    -1,    38,    -1,    -1,
 
2803
      -1,    -1,    -1,    44,    45,    46,    47,    48,    49,    50,
 
2804
      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
 
2805
      -1,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2806
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2807
      -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,
 
2808
      91,    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,
 
2809
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2810
      -1,    -1,    -1,    -1,    -1,   116,   117,   118,    -1,    -1,
 
2811
     121,    -1,     1,    -1,     3,     4,     5,     6,     7,   130,
 
2812
     131,    10,    11,    12,    -1,    -1,    -1,    16,    -1,    18,
 
2813
      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
 
2814
      29,    30,    31,    32,    33,    34,    35,    -1,    -1,    38,
 
2815
      -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,    48,
 
2816
      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
 
2817
      59,    60,    -1,    62,    63,    -1,    -1,    -1,    -1,    -1,
 
2818
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2819
      -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,
 
2820
      89,    -1,    91,    -1,    93,    94,    95,    96,    97,    98,
 
2821
      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
 
2822
       6,     7,    -1,    -1,    -1,    11,    12,   116,   117,   118,
 
2823
      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
 
2824
      -1,   130,   131,    29,    30,    31,    32,    33,    34,    35,
 
2825
      -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,    44,    45,
 
2826
      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
 
2827
      56,    57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,
 
2828
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2829
      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
 
2830
      86,    -1,    88,    89,    -1,    91,    -1,    93,    94,    95,
 
2831
      96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2832
       3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,
 
2833
     116,   117,   118,    16,    -1,    18,    19,    20,    21,    22,
 
2834
      23,    24,    -1,    -1,    -1,   131,    29,    30,    31,    32,
 
2835
      33,    34,    35,    -1,    -1,    38,    -1,    -1,    -1,    -1,
 
2836
      -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,    52,
 
2837
      53,    54,    55,    56,    57,    -1,    59,    60,    -1,    62,
 
2838
      63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2839
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
 
2840
      -1,    -1,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
 
2841
      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
 
2842
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2843
      -1,    -1,    -1,   116,   117,   118,    -1,    -1,    -1,    -1,
 
2844
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   130,   131,     3,
 
2845
       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
 
2846
      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
 
2847
      24,    25,    26,    -1,    -1,    29,    30,    31,    32,    33,
 
2848
      34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
 
2849
      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
 
2850
      54,    55,    -1,    -1,    -1,    -1,    -1,    -1,    62,    63,
 
2851
      64,    65,    66,    67,    -1,    69,    70,    -1,    -1,    73,
 
2852
      -1,    -1,    -1,    77,    78,    79,    80,    -1,    -1,    -1,
 
2853
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
 
2854
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2855
      -1,    -1,   106,   107,   108,   109,   110,   111,   112,   113,
 
2856
     114,   115,    -1,    -1,   118,    -1,    -1,     3,     4,     5,
 
2857
      -1,     7,    -1,   127,   128,    11,    12,    -1,    -1,    -1,
 
2858
      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
 
2859
      26,    -1,    -1,    29,    30,    31,    32,    33,    34,    35,
 
2860
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,
 
2861
      -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
 
2862
      56,    57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,
 
2863
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2864
      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
 
2865
      86,    -1,    88,    89,    -1,    91,    92,    93,    94,    95,
 
2866
      96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2867
       3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,
 
2868
     116,   117,   118,    16,   120,    18,    19,    20,    21,    22,
 
2869
      23,    24,   128,    26,    -1,    -1,    29,    30,    31,    32,
 
2870
      33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2871
      -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,    52,
 
2872
      53,    54,    55,    56,    57,    -1,    59,    60,    -1,    62,
 
2873
      63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2874
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
 
2875
      -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,    92,
 
2876
      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
 
2877
      -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,    -1,
 
2878
      -1,    11,    12,   116,   117,   118,    16,   120,    18,    19,
 
2879
      20,    21,    22,    23,    24,   128,    -1,    -1,    -1,    29,
 
2880
      30,    31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,
 
2881
      -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,
 
2882
      50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
 
2883
      60,    -1,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,
 
2884
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2885
      -1,    -1,    82,    83,    -1,    85,    86,    -1,    88,    89,
 
2886
      -1,    91,    92,    93,    94,    95,    96,    97,    98,    -1,
 
2887
      -1,    -1,    -1,   103,    -1,    -1,     3,     4,     5,    -1,
 
2888
       7,    -1,    -1,    -1,    11,    12,   116,   117,   118,    16,
 
2889
      -1,    18,    19,    20,    21,    22,    23,    24,   128,    -1,
 
2890
      -1,    -1,    29,    30,    31,    32,    33,    34,    35,    -1,
 
2891
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,
 
2892
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
 
2893
      57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,    -1,
 
2894
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2895
      -1,    -1,    -1,    -1,    -1,    82,    83,    -1,    85,    86,
 
2896
      -1,    88,    89,    -1,    91,    92,    93,    94,    95,    96,
 
2897
      97,    98,    -1,    -1,    -1,    -1,   103,    -1,    -1,     3,
 
2898
       4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,   116,
 
2899
     117,   118,    16,    -1,    18,    19,    20,    21,    22,    23,
 
2900
      24,   128,    -1,    -1,    -1,    29,    30,    31,    32,    33,
 
2901
      34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2902
      -1,    45,    -1,    -1,    48,    49,    50,    51,    52,    53,
 
2903
      54,    55,    56,    57,    -1,    59,    60,    -1,    62,    63,
 
2904
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2905
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
 
2906
      -1,    85,    86,    -1,    88,    89,    -1,    91,    92,    93,
 
2907
      94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
 
2908
      -1,    -1,     3,     4,     5,    -1,     7,    -1,    -1,    -1,
 
2909
      11,    12,   116,   117,   118,    16,    -1,    18,    19,    20,
 
2910
      21,    22,    23,    24,   128,    -1,    -1,    -1,    29,    30,
 
2911
      31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
 
2912
      -1,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,    50,
 
2913
      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
 
2914
      -1,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2915
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2916
      -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,
 
2917
      91,    92,    93,    94,    95,    96,    97,    98,    -1,    -1,
 
2918
      -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,
 
2919
      -1,    -1,    -1,    11,    12,   116,   117,   118,    16,    -1,
 
2920
      18,    19,    20,    21,    22,    23,    24,   128,    -1,    -1,
 
2921
      -1,    29,    30,    31,    32,    33,    34,    35,    -1,    -1,
 
2922
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,
 
2923
      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
 
2924
      -1,    59,    60,    -1,    62,    63,    -1,    -1,    -1,    -1,
 
2925
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2926
      -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
 
2927
      88,    89,    -1,    91,    92,    93,    94,    95,    96,    97,
 
2928
      98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
 
2929
       5,    -1,     7,    -1,    -1,    -1,    11,    12,   116,   117,
 
2930
     118,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
 
2931
     128,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
 
2932
      35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2933
      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
 
2934
      55,    56,    57,    -1,    59,    60,    -1,    62,    63,    -1,
 
2935
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2936
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
 
2937
      85,    86,    -1,    88,    89,    -1,    91,    92,    93,    94,
 
2938
      95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,
 
2939
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2940
      -1,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
 
2941
      -1,    -1,    -1,   128,     3,     4,     5,     6,     7,     8,
 
2942
       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
 
2943
      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
 
2944
      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
 
2945
      -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,    48,
 
2946
      49,    50,    51,    52,    53,    54,    55,    -1,    -1,    -1,
 
2947
      -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    -1,
 
2948
      69,    70,    -1,    -1,    73,    -1,    -1,    -1,    77,    78,
 
2949
      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2950
      -1,    -1,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2951
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
 
2952
     109,   110,   111,   112,   113,   114,   115,    -1,    -1,   118,
 
2953
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,     3,
 
2954
       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
 
2955
      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
 
2956
      24,    25,    26,    -1,    -1,    29,    30,    31,    32,    33,
 
2957
      34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
 
2958
      44,    45,    46,    47,    48,    49,    50,    51,    52,    -1,
 
2959
      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    63,
 
2960
      64,    65,    66,    67,    -1,    69,    70,    -1,    -1,    73,
 
2961
      -1,    -1,    -1,    77,    78,    79,    80,    -1,    -1,    -1,
 
2962
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    93,
 
2963
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2964
      -1,    -1,   106,   107,   108,   109,   110,   111,   112,   113,
 
2965
     114,   115,    -1,    -1,   118,    -1,    -1,    -1,    -1,    -1,
 
2966
      -1,    -1,    -1,   127,     3,     4,     5,     6,     7,     8,
 
2967
       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
 
2968
      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
 
2969
      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
 
2970
      -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,    48,
 
2971
      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    -1,
 
2972
      -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    -1,
 
2973
      69,    70,    -1,    -1,    73,    -1,    -1,    -1,    77,    78,
 
2974
      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2975
      -1,    -1,    91,    -1,    93,    -1,    -1,    -1,    -1,    -1,
 
2976
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
 
2977
     109,   110,   111,   112,   113,   114,   115,    -1,    -1,   118,
 
2978
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   127,     3,
 
2979
       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
 
2980
      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
 
2981
      24,    25,    26,    -1,    -1,    29,    30,    31,    32,    33,
 
2982
      34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
 
2983
      44,    45,    46,    47,    48,    49,    50,    51,    -1,    -1,
 
2984
      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    63,
 
2985
      64,    65,    66,    67,    -1,    69,    70,    -1,    -1,    73,
 
2986
      -1,    -1,    -1,    77,    78,    79,    80,    -1,    -1,    -1,
 
2987
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
 
2988
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2989
      -1,    -1,   106,   107,   108,   109,   110,   111,   112,   113,
 
2990
     114,   115,    -1,    -1,   118,    -1,     3,     4,     5,    -1,
 
2991
       7,    -1,    -1,   127,    11,    12,    -1,    -1,    -1,    16,
 
2992
      -1,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
 
2993
      -1,    -1,    29,    30,    31,    32,    33,    34,    35,    -1,
 
2994
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,
 
2995
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
 
2996
      57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,    -1,
 
2997
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
2998
      -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
 
2999
      -1,    88,    89,    -1,    91,    92,    93,    94,    95,    96,
 
3000
      97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3001
      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,   116,
 
3002
     117,   118,    11,    12,    -1,    -1,    -1,    16,   125,    18,
 
3003
      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
 
3004
      29,    30,    31,    32,    33,    34,    35,    -1,    -1,    38,
 
3005
      -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,    48,
 
3006
      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
 
3007
      59,    60,    -1,    62,    63,    -1,    -1,    -1,    -1,    -1,
 
3008
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3009
      -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,
 
3010
      89,    -1,    91,    -1,    93,    94,    95,    96,    97,    98,
 
3011
      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
 
3012
      -1,     7,    -1,    -1,    -1,    11,    12,   116,   117,   118,
 
3013
      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
 
3014
      -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    35,
 
3015
      -1,    -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,    45,
 
3016
      -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
 
3017
      56,    57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,
 
3018
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3019
      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
 
3020
      86,    -1,    88,    89,    -1,    91,    92,    93,    94,    95,
 
3021
      96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3022
       3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,
 
3023
     116,   117,   118,    16,    -1,    18,    19,    20,    21,    22,
 
3024
      23,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
 
3025
      33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3026
      -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,    52,
 
3027
      53,    54,    55,    56,    57,    -1,    59,    60,    -1,    62,
 
3028
      63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3029
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
 
3030
      -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,    92,
 
3031
      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
 
3032
      -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,    -1,
 
3033
      -1,    11,    12,   116,   117,   118,    16,    -1,    18,    19,
 
3034
      20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    29,
 
3035
      30,    31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,
 
3036
      -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,
 
3037
      50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
 
3038
      60,    -1,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,
 
3039
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3040
      -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,
 
3041
      -1,    91,    92,    93,    94,    95,    96,    97,    98,    -1,
 
3042
      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,
 
3043
       7,    -1,    -1,    -1,    11,    12,   116,   117,   118,    16,
 
3044
      -1,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
 
3045
      -1,    -1,    29,    30,    31,    32,    33,    34,    35,    -1,
 
3046
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,
 
3047
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
 
3048
      57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,    -1,
 
3049
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3050
      -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
 
3051
      -1,    88,    89,    -1,    91,    92,    93,    94,    95,    96,
 
3052
      97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
 
3053
       4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,   116,
 
3054
     117,   118,    16,    -1,    18,    19,    20,    21,    22,    23,
 
3055
      24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
 
3056
      34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3057
      -1,    45,    -1,    -1,    48,    49,    50,    51,    52,    53,
 
3058
      54,    55,    56,    57,    -1,    59,    60,    -1,    62,    63,
 
3059
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3060
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
 
3061
      -1,    85,    86,    -1,    88,    89,    -1,    91,    92,    93,
 
3062
      94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
 
3063
      -1,    -1,     3,     4,     5,    -1,     7,    -1,    -1,    -1,
 
3064
      11,    12,   116,   117,   118,    16,    -1,    18,    19,    20,
 
3065
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,
 
3066
      31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
 
3067
      -1,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,    50,
 
3068
      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
 
3069
      -1,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3070
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3071
      -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,
 
3072
      91,    92,    93,    94,    95,    96,    97,    98,    -1,    -1,
 
3073
      -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,
 
3074
      -1,    -1,    -1,    11,    12,   116,   117,   118,    16,    -1,
 
3075
      18,    19,    20,    21,    22,    23,    24,    -1,    -1,    -1,
 
3076
      -1,    29,    30,    31,    32,    33,    34,    35,    -1,    -1,
 
3077
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,
 
3078
      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
 
3079
      -1,    59,    60,    -1,    62,    63,    -1,    -1,    -1,    -1,
 
3080
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3081
      -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
 
3082
      88,    89,    -1,    91,    92,    93,    94,    95,    96,    97,
 
3083
      98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
 
3084
       5,    -1,     7,    -1,    -1,    -1,    11,    12,   116,   117,
 
3085
     118,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
 
3086
      -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
 
3087
      35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3088
      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
 
3089
      55,    56,    57,    -1,    59,    60,    -1,    62,    63,    -1,
 
3090
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3091
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
 
3092
      85,    86,    -1,    88,    89,    -1,    91,    92,    93,    94,
 
3093
      95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,
 
3094
      -1,     3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,
 
3095
      12,   116,   117,   118,    16,    -1,    18,    19,    20,    21,
 
3096
      22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
 
3097
      32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,
 
3098
      -1,    -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,
 
3099
      52,    53,    54,    55,    56,    57,    -1,    59,    60,    -1,
 
3100
      62,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3101
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3102
      82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,
 
3103
      92,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
 
3104
      -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,
 
3105
      -1,    -1,    11,    12,   116,   117,   118,    16,    -1,    18,
 
3106
      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
 
3107
      29,    30,    31,    32,    33,    34,    35,    -1,    -1,    -1,
 
3108
      -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    48,
 
3109
      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
 
3110
      59,    60,    -1,    62,    63,    -1,    -1,    -1,    -1,    -1,
 
3111
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3112
      -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,
 
3113
      89,    -1,    91,    92,    93,    94,    95,    96,    97,    98,
 
3114
      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
 
3115
      -1,     7,    -1,    -1,    -1,    11,    12,   116,   117,   118,
 
3116
      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
 
3117
      -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    35,
 
3118
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,
 
3119
      -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
 
3120
      56,    57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,
 
3121
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3122
      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
 
3123
      86,    -1,    88,    89,    -1,    91,    92,    93,    94,    95,
 
3124
      96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3125
       3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,
 
3126
     116,   117,   118,    16,    -1,    18,    19,    20,    21,    22,
 
3127
      23,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
 
3128
      33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3129
      -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,    52,
 
3130
      53,    54,    55,    56,    57,    -1,    59,    60,    -1,    62,
 
3131
      63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3132
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
 
3133
      -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,    92,
 
3134
      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
 
3135
      -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,    -1,
 
3136
      -1,    11,    12,   116,   117,   118,    16,    -1,    18,    19,
 
3137
      20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    29,
 
3138
      30,    31,    32,    33,    34,    35,    -1,    -1,    38,    -1,
 
3139
      -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,
 
3140
      50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
 
3141
      60,    -1,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,
 
3142
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3143
      -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,
 
3144
      -1,    -1,    -1,    93,    94,    95,    96,    97,    98,    -1,
 
3145
      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,
 
3146
       7,    -1,    -1,    -1,    11,    12,   116,   117,   118,    16,
 
3147
      -1,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
 
3148
      -1,    -1,    29,    30,    31,    32,    33,    34,    35,    -1,
 
3149
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,
 
3150
      -1,    48,    49,    50,    51,    52,    53,    54,    55,    56,
 
3151
      57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,    -1,
 
3152
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3153
      -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,
 
3154
      -1,    88,    89,    -1,    91,    -1,    93,    94,    95,    96,
 
3155
      97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
 
3156
       4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,   116,
 
3157
     117,   118,    16,    -1,    18,    19,    20,    21,    22,    23,
 
3158
      24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
 
3159
      34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3160
      -1,    45,    -1,    -1,    48,    49,    50,    51,    52,    53,
 
3161
      54,    55,    56,    57,    -1,    59,    60,    -1,    62,    63,
 
3162
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3163
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
 
3164
      -1,    85,    86,    -1,    88,    89,    -1,    91,    -1,    93,
 
3165
      94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
 
3166
      -1,    -1,     3,     4,     5,    -1,     7,    -1,    -1,    -1,
 
3167
      11,    12,   116,   117,   118,    16,    -1,    18,    19,    20,
 
3168
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,
 
3169
      31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
 
3170
      -1,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,    50,
 
3171
      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
 
3172
      -1,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3173
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3174
      -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,
 
3175
      91,    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,
 
3176
      -1,    -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,
 
3177
      -1,    -1,    -1,    11,    12,   116,   117,   118,    16,    -1,
 
3178
      18,    19,    20,    21,    22,    23,    24,    -1,    -1,    -1,
 
3179
      -1,    29,    30,    31,    32,    33,    34,    35,    -1,    -1,
 
3180
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,
 
3181
      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
 
3182
      -1,    59,    60,    -1,    62,    63,    -1,    -1,    -1,    -1,
 
3183
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3184
      -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
 
3185
      88,    89,    -1,    91,    -1,    93,    94,    95,    96,    97,
 
3186
      98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
 
3187
       5,    -1,     7,    -1,    -1,    -1,    11,    12,   116,   117,
 
3188
     118,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
 
3189
      -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
 
3190
      35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3191
      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
 
3192
      55,    56,    57,    -1,    59,    60,    -1,    62,    63,    -1,
 
3193
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3194
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
 
3195
      85,    86,    -1,    88,    89,    -1,    91,    -1,    93,    94,
 
3196
      95,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,
 
3197
      -1,     3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,
 
3198
      12,   116,   117,   118,    16,    -1,    18,    19,    20,    21,
 
3199
      22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
 
3200
      32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,
 
3201
      -1,    -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,
 
3202
      52,    53,    54,    55,    56,    57,    -1,    59,    60,    -1,
 
3203
      62,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3204
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3205
      82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,
 
3206
      -1,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
 
3207
      -1,    -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,
 
3208
      -1,    -1,    11,    12,   116,   117,   118,    16,    -1,    18,
 
3209
      19,    20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
 
3210
      29,    30,    31,    32,    33,    34,    35,    -1,    -1,    -1,
 
3211
      -1,    -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    48,
 
3212
      49,    50,    51,    52,    53,    54,    55,    56,    57,    -1,
 
3213
      59,    60,    -1,    62,    63,    -1,    -1,    -1,    -1,    -1,
 
3214
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3215
      -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,
 
3216
      89,    -1,    91,    -1,    93,    94,    95,    96,    97,    98,
 
3217
      -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
 
3218
      -1,     7,    -1,    -1,    -1,    11,    12,   116,   117,   118,
 
3219
      16,    -1,    18,    19,    20,    21,    22,    23,    24,    -1,
 
3220
      -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    35,
 
3221
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,
 
3222
      -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
 
3223
      56,    57,    -1,    59,    60,    -1,    62,    63,    -1,    -1,
 
3224
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3225
      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
 
3226
      86,    -1,    88,    89,    -1,    -1,    -1,    93,    94,    95,
 
3227
      96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3228
       3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,
 
3229
     116,   117,   118,    16,    -1,    18,    19,    20,    21,    22,
 
3230
      23,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
 
3231
      33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3232
      -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,    52,
 
3233
      53,    54,    55,    56,    57,    -1,    59,    60,    -1,    62,
 
3234
      63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3235
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
 
3236
      -1,    -1,    85,    86,    -1,    88,    89,    -1,    -1,    -1,
 
3237
      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
 
3238
      -1,    -1,    -1,     3,     4,     5,    -1,     7,    -1,    -1,
 
3239
      -1,    11,    12,   116,   117,   118,    16,    -1,    18,    19,
 
3240
      20,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    29,
 
3241
      30,    31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,
 
3242
      -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,
 
3243
      50,    51,    52,    53,    54,    55,    56,    57,    -1,    59,
 
3244
      60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3245
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3246
      -1,    -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,
 
3247
      -1,    91,    -1,    93,    94,    95,    96,    97,    98,    -1,
 
3248
      -1,    -1,     3,     4,     5,    -1,     7,    -1,   108,    -1,
 
3249
      11,    12,    -1,    -1,    -1,    16,   116,    18,    19,    20,
 
3250
      21,    22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,
 
3251
      31,    32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,
 
3252
      -1,    -1,    -1,    -1,    45,    -1,    -1,    48,    49,    50,
 
3253
      51,    52,    53,    54,    55,    56,    57,    -1,    59,    60,
 
3254
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3255
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    -1,
 
3256
      -1,    82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,
 
3257
      -1,    -1,    93,    94,    95,    96,    97,    98,    -1,    -1,
 
3258
      -1,     3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,
 
3259
      12,    -1,    -1,    -1,    16,   116,    18,    19,    20,    21,
 
3260
      22,    23,    24,    -1,    -1,    -1,    -1,    29,    30,    31,
 
3261
      32,    33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,
 
3262
      -1,    -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,
 
3263
      52,    53,    54,    55,    56,    57,    -1,    59,    60,    -1,
 
3264
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3265
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3266
      82,    -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,
 
3267
      -1,    93,    94,    95,    96,    97,    98,    -1,    -1,    -1,
 
3268
       3,     4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,
 
3269
      -1,    -1,    -1,    16,   116,    18,    19,    20,    21,    22,
 
3270
      23,    24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
 
3271
      33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3272
      -1,    -1,    45,    -1,    -1,    48,    49,    50,    51,    52,
 
3273
      53,    54,    55,    56,    57,    -1,    59,    60,    -1,    -1,
 
3274
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3275
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,
 
3276
      -1,    -1,    85,    86,    -1,    88,    89,    -1,    91,    -1,
 
3277
      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,     3,
 
3278
       4,     5,    -1,     7,    -1,    -1,    -1,    11,    12,    -1,
 
3279
      -1,    -1,    16,   116,    18,    19,    20,    21,    22,    23,
 
3280
      24,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
 
3281
      34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3282
      -1,    45,    -1,    -1,    48,    49,    50,    51,    52,    53,
 
3283
      54,    55,    56,    57,    -1,    59,    60,    -1,    -1,    -1,
 
3284
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3285
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
 
3286
      -1,    85,    86,    -1,    88,    89,    -1,    -1,    -1,    93,
 
3287
      94,    95,    96,    97,    98,    -1,    -1,    -1,     3,     4,
 
3288
       5,    -1,     7,    -1,    -1,    -1,    11,    12,    -1,    -1,
 
3289
      -1,    16,   116,    18,    19,    20,    21,    22,    23,    24,
 
3290
      -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,    34,
 
3291
      35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3292
      45,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
 
3293
      55,    56,    57,    -1,    59,    60,    -1,    -1,    -1,    -1,
 
3294
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3295
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,
 
3296
      85,    86,    -1,    88,    89,    -1,    -1,    -1,    93,    94,
 
3297
      95,    96,    97,    98,    -1,    -1,    -1,     3,     4,     5,
 
3298
      -1,     7,    -1,    -1,    -1,    11,    12,    -1,    -1,    -1,
 
3299
      16,   116,    18,    19,    20,    21,    22,    23,    24,    -1,
 
3300
      -1,    -1,    -1,    29,    30,    31,    32,    33,    34,    35,
 
3301
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,
 
3302
      -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
 
3303
      56,    57,    -1,    59,    60,    -1,    -1,    -1,    -1,    -1,
 
3304
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3305
      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85,
 
3306
      86,    -1,    88,    89,    -1,    -1,    -1,    93,    94,    95,
 
3307
      96,    97,    98,    -1,    -1,    -1,    -1,    -1,    -1,    50,
 
3308
      51,    -1,    -1,    54,    -1,    -1,    -1,    -1,    -1,    -1,
 
3309
     116,    62,    63,    64,    65,    66,    67,    -1,    69,    70,
 
3310
      -1,    -1,    73,    -1,    -1,    -1,    77,    78,    79,    80,
 
3311
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3312
      91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3313
      -1,    -1,    -1,    -1,    -1,   106,   107,   108,   109,   110,
 
3314
     111,   112,   113,   114,   115,    50,    51,   118,    -1,    54,
 
3315
      -1,    -1,    -1,    -1,    -1,    -1,   127,    62,    63,    64,
 
3316
      65,    66,    67,    -1,    69,    70,    -1,    -1,    73,    -1,
 
3317
      -1,    -1,    77,    78,    79,    80,    -1,    -1,    -1,    -1,
 
3318
      -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    -1,
 
3319
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3320
      -1,   106,   107,   108,   109,   110,   111,   112,   113,   114,
 
3321
     115,    50,    51,   118,    -1,    54,    -1,    -1,    -1,    -1,
 
3322
      -1,    -1,   127,    62,    63,    64,    65,    66,    67,    -1,
 
3323
      69,    70,    -1,    -1,    73,    -1,    -1,    -1,    77,    78,
 
3324
      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3325
      -1,    -1,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3326
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
 
3327
     109,   110,   111,   112,   113,   114,   115,    50,    51,   118,
 
3328
      -1,    54,    -1,    -1,    -1,    -1,    -1,    -1,   127,    62,
 
3329
      63,    64,    65,    66,    67,    -1,    69,    70,    -1,    -1,
 
3330
      73,    -1,    -1,    -1,    77,    78,    79,    80,    -1,    -1,
 
3331
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
 
3332
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3333
      -1,    -1,    -1,   106,   107,   108,   109,   110,   111,   112,
 
3334
     113,   114,   115,    50,    51,   118,    -1,    54,    -1,    -1,
 
3335
      -1,    -1,    -1,    -1,   127,    62,    63,    64,    65,    66,
 
3336
      67,    -1,    69,    70,    -1,    -1,    73,    -1,    -1,    -1,
 
3337
      77,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
 
3338
      -1,    -1,    -1,    -1,    91,    -1,    -1,    -1,    -1,    -1,
 
3339
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
 
3340
     107,   108,   109,   110,   111,   112,   113,   114,   115,    50,
 
3341
      51,   118,    -1,    54,    -1,    -1,    -1,    -1,    -1,    -1,
 
3342
     127,    62,    63,    64,    65,    66,    67,    -1,    69,    70,
 
3343
      -1,    -1,    73,    -1,    -1,    -1,    77,    78,    79,    80,
 
3344
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3345
      91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3346
      -1,    -1,    -1,    -1,    -1,   106,   107,   108,   109,   110,
 
3347
     111,   112,   113,   114,   115,    50,    51,   118,    -1,    54,
 
3348
      -1,    -1,    -1,    -1,    -1,    -1,   127,    62,    63,    64,
 
3349
      65,    66,    67,    -1,    69,    70,    -1,    -1,    73,    -1,
 
3350
      -1,    -1,    77,    78,    79,    80,    -1,    -1,    -1,    -1,
 
3351
      -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,    -1,
 
3352
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3353
      -1,   106,   107,   108,   109,   110,   111,   112,   113,   114,
 
3354
     115,    50,    51,   118,    -1,    54,    -1,    -1,    -1,    -1,
 
3355
      -1,    -1,   127,    62,    63,    64,    65,    66,    67,    -1,
 
3356
      69,    70,    -1,    -1,    73,    -1,    -1,    -1,    77,    78,
 
3357
      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3358
      -1,    -1,    91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3359
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
 
3360
     109,   110,   111,   112,   113,   114,   115,    50,    51,   118,
 
3361
      -1,    54,    -1,    -1,    -1,    -1,    -1,    -1,   127,    62,
 
3362
      63,    64,    65,    66,    67,    -1,    69,    70,    -1,    -1,
 
3363
      73,    -1,    -1,    -1,    77,    78,    79,    80,    -1,    -1,
 
3364
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
 
3365
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3366
      -1,    -1,    -1,   106,   107,   108,   109,   110,   111,   112,
 
3367
     113,   114,   115,    50,    51,   118,    -1,    54,    -1,    -1,
 
3368
      -1,    -1,    -1,    -1,   127,    62,    63,    64,    65,    66,
 
3369
      67,    -1,    69,    70,    -1,    -1,    73,    -1,    -1,    -1,
 
3370
      77,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
 
3371
      -1,    -1,    -1,    -1,    91,    -1,    -1,    -1,    -1,    -1,
 
3372
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
 
3373
     107,   108,   109,   110,   111,   112,   113,   114,   115,    50,
 
3374
      51,   118,    -1,    54,    -1,    -1,    -1,    -1,    -1,    -1,
 
3375
     127,    62,    63,    64,    65,    66,    67,    -1,    69,    70,
 
3376
      -1,    -1,    73,    -1,    -1,    -1,    77,    78,    79,    80,
 
3377
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3378
      91,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3379
      -1,    -1,    -1,    -1,    -1,   106,   107,   108,   109,   110,
 
3380
     111,   112,   113,   114,   115,    -1,    -1,   118,    -1,    -1,
 
3381
      -1,    -1,    -1,    -1,    -1,    -1,   127,    64,    65,    66,
 
3382
      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
 
3383
      -1,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
 
3384
      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3385
      -1,    -1,    -1,    -1,    -1,    -1,    -1,   104,    -1,   106,
 
3386
     107,   108,   109,   110,   111,   112,   113,   114,   115,    64,
 
3387
      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
 
3388
      75,    76,    -1,   130,    79,    80,    -1,    -1,    -1,    84,
 
3389
      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
 
3390
      74,    75,    76,    -1,    -1,    79,    80,    -1,    -1,   104,
 
3391
      -1,   106,   107,   108,   109,   110,   111,   112,   113,   114,
 
3392
     115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3393
     104,   126,   106,   107,   108,   109,   110,   111,   112,   113,
 
3394
     114,   115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
 
3395
      -1,    -1,   126,    64,    65,    66,    67,    68,    69,    70,
 
3396
      71,    72,    73,    74,    75,    76,    -1,    -1,    79,    80,
 
3397
      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
 
3398
      74,    75,    76,    -1,    -1,    79,    80,    -1,    -1,    -1,
 
3399
      -1,    -1,    -1,   104,    -1,   106,   107,   108,   109,   110,
 
3400
     111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,
 
3401
      -1,    -1,   106,   107,   108,   109,   110,   111,   112,   113,
 
3402
     114,   115,    64,    65,    66,    67,    68,    69,    70,    -1,
 
3403
      -1,    73,    74,    -1,    -1,    -1,    -1,    79,    80,    64,
 
3404
      65,    66,    67,    68,    69,    70,    -1,    -1,    73,    74,
 
3405
      -1,    -1,    -1,    -1,    79,    80,    -1,    -1,    -1,    -1,
 
3406
      -1,    -1,    -1,    -1,   106,   107,   108,   109,   110,   111,
 
3407
     112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,    -1,
 
3408
      -1,   106,   107,   108,   109,   110,   111,   112,   113,   114,
 
3409
     115
 
3410
};
 
3411
 
 
3412
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
 
3413
   symbol of state STATE-NUM.  */
 
3414
static const yytype_uint16 yystos[] =
 
3415
{
 
3416
       0,   133,   134,     0,     1,     3,     4,     5,     6,     7,
 
3417
      11,    12,    16,    18,    19,    20,    21,    22,    23,    24,
 
3418
      29,    30,    31,    32,    33,    34,    35,    38,    44,    45,
 
3419
      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
 
3420
      56,    57,    59,    60,    62,    63,    82,    85,    86,    88,
 
3421
      89,    91,    93,    94,    95,    96,    97,    98,   116,   117,
 
3422
     118,   136,   137,   138,   141,   143,   144,   148,   149,   151,
 
3423
     152,   153,   154,   155,   165,   182,   199,   209,   210,   223,
 
3424
     224,   225,   226,   227,   228,   229,   232,   240,   242,   243,
 
3425
     244,   245,   246,   247,   266,   275,   138,    21,    22,    29,
 
3426
      30,    31,    45,    50,    54,    79,    82,    85,   116,   156,
 
3427
     157,   182,   199,   244,   247,   266,   157,     3,     4,     5,
 
3428
       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
 
3429
      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
 
3430
      26,    29,    30,    31,    32,    33,    34,    35,    36,    37,
 
3431
      38,    44,    45,    46,    47,    48,    49,    50,    51,    54,
 
3432
      62,    63,    64,    65,    66,    67,    69,    70,    73,    77,
 
3433
      78,    79,    80,    91,   106,   107,   108,   109,   110,   111,
 
3434
     112,   113,   114,   115,   118,   127,   128,   158,   163,   164,
 
3435
     245,   261,    32,    33,    34,    35,    48,    49,    50,    54,
 
3436
     158,   159,   160,   161,   240,   242,   183,    82,   141,   142,
 
3437
     155,   199,   244,   246,   247,   142,   130,   131,   142,   270,
 
3438
     273,   274,   186,   188,    82,   149,   155,   199,   204,   244,
 
3439
     247,    91,    92,   117,   148,   165,   167,   171,   178,   180,
 
3440
     264,   265,   171,   171,   128,   173,   174,   128,   169,   173,
 
3441
     141,    52,   160,   130,   271,   140,   120,   165,   199,   165,
 
3442
      54,    85,   136,   150,   151,   141,    91,   148,   168,   180,
 
3443
     264,   275,   180,   263,   264,   275,    82,   154,   199,   244,
 
3444
     247,    52,    53,    55,   158,   235,   241,   234,   235,   235,
 
3445
     129,   230,   129,   233,    56,    57,   143,   165,   165,   270,
 
3446
     274,    39,    40,    41,    42,    43,    36,    37,    28,   206,
 
3447
     103,   126,    85,    91,   152,   103,    64,    65,    66,    67,
 
3448
      68,    69,    70,    71,    72,    73,    74,    75,    76,    79,
 
3449
      80,   104,   106,   107,   108,   109,   110,   111,   112,   113,
 
3450
     114,   115,    81,   122,   124,    81,   124,    26,   120,   211,
 
3451
     226,    83,    83,   169,   173,   211,   271,   141,    50,    54,
 
3452
     156,    56,    57,     1,   107,   248,   273,    81,   122,   124,
 
3453
     195,   262,   196,    81,   124,   269,   126,   135,   136,    54,
 
3454
      13,   105,   200,   273,   103,    81,   122,   124,    83,    83,
 
3455
     200,   270,    15,    17,   216,   131,   142,   142,    54,    81,
 
3456
     122,   124,    25,   167,   167,    84,   126,   179,   275,   126,
 
3457
     179,   125,   171,    86,   171,   175,   148,   171,   180,   209,
 
3458
     275,    52,    59,    60,   139,   128,   166,   120,   136,    81,
 
3459
     124,    83,   150,   125,   125,   184,   165,   271,   123,   126,
 
3460
     130,   272,   126,   272,   126,   272,   121,   272,    54,    81,
 
3461
     122,   124,    58,    99,   100,   101,   236,   101,   236,   101,
 
3462
      61,   101,   101,   231,   236,   101,    58,   101,    64,    64,
 
3463
     138,   142,   142,   142,   142,   138,   141,   141,   207,    91,
 
3464
     143,   167,   180,   181,   150,   154,   126,   143,   165,   167,
 
3465
     181,   165,   165,   165,   165,   165,   165,   165,   165,   165,
 
3466
     165,   165,   165,   165,   165,   165,   165,   165,   165,   165,
 
3467
     165,   165,   165,   165,   165,   165,   165,    50,    51,    54,
 
3468
     163,   267,   268,   168,    50,    51,    54,   163,   267,    50,
 
3469
      54,   267,   267,   214,   212,   143,   165,   143,   165,    90,
 
3470
     145,   193,   273,   249,   192,    50,    54,   156,   267,   168,
 
3471
     267,   135,   141,    50,    52,    53,    54,    55,    91,    92,
 
3472
     110,   113,   128,   250,   251,   252,   253,   254,   255,   256,
 
3473
     257,   258,   259,   197,   162,    10,     8,   219,   275,   136,
 
3474
      13,   165,    50,    54,   168,    50,    54,   136,   216,   136,
 
3475
      91,   180,   217,    10,    27,   105,   201,   273,   201,    50,
 
3476
      54,   168,    50,    54,   190,   126,   179,   167,    91,   167,
 
3477
     178,   264,    91,   167,   265,   125,    91,   165,   167,   172,
 
3478
     176,   178,   264,   271,   126,    81,   124,   271,   125,   160,
 
3479
     185,   165,   136,   121,   165,   125,   271,   271,    91,   167,
 
3480
      50,    54,   168,    50,    54,   238,   237,   129,   236,   129,
 
3481
     165,   165,    72,   108,   205,   275,   167,   126,   125,    43,
 
3482
     105,    83,    83,   169,   173,   123,    83,    83,   169,   170,
 
3483
     173,   275,   170,   173,   170,   173,   205,   205,   146,   273,
 
3484
     142,   135,   123,    10,   271,   103,   251,   135,   273,   126,
 
3485
     260,   275,   126,   260,    50,   126,   260,    50,   158,   160,
 
3486
     167,   181,   220,   275,    15,   203,   275,    14,   202,   203,
 
3487
      83,   123,    83,    83,   203,    10,    10,   167,   126,   200,
 
3488
     187,   189,   123,   142,   167,   126,   179,   167,   167,   126,
 
3489
     177,   125,   126,   179,   125,   148,   209,   267,   267,   125,
 
3490
     141,   121,   125,   165,   123,   136,    52,    53,    55,   239,
 
3491
     247,   108,   204,   208,    91,   167,   165,   165,   143,   165,
 
3492
     165,   145,    83,   143,   165,   143,   165,   145,   215,   213,
 
3493
     205,   194,   273,    10,   125,   167,   271,    10,   252,   255,
 
3494
     257,   259,    50,   254,   257,   198,    84,   221,   275,   136,
 
3495
       9,   222,   275,   142,    10,    83,    10,    91,   136,   136,
 
3496
     136,   201,   179,    91,   179,   179,    91,   178,   180,   264,
 
3497
     125,    91,   271,   125,   271,   121,   108,   136,   167,   143,
 
3498
     165,   136,   136,   147,   135,   125,   126,   260,   260,   260,
 
3499
     250,    82,   155,   199,   244,   247,   200,   136,   200,   167,
 
3500
     203,   216,   218,    10,    10,   191,   165,   167,   126,   179,
 
3501
     126,   179,   167,   125,    10,    10,   121,   136,    10,   257,
 
3502
     135,    54,    81,   122,   124,   136,   136,   136,   179,   179,
 
3503
      91,   264,    91,   179,   121,   260,    10,    50,    54,   168,
 
3504
      50,    54,   219,   202,    10,   167,   126,   179,   167,   123,
 
3505
     179,    91,   179,   167,   179
 
3506
};
 
3507
 
 
3508
#define yyerrok         (yyerrstatus = 0)
 
3509
#define yyclearin       (yychar = YYEMPTY)
 
3510
#define YYEMPTY         (-2)
 
3511
#define YYEOF           0
 
3512
 
 
3513
#define YYACCEPT        goto yyacceptlab
 
3514
#define YYABORT         goto yyabortlab
 
3515
#define YYERROR         goto yyerrorlab
 
3516
 
 
3517
 
 
3518
/* Like YYERROR except do call yyerror.  This remains here temporarily
 
3519
   to ease the transition to the new meaning of YYERROR, for GCC.
 
3520
   Once GCC version 2 has supplanted version 1, this can go.  */
 
3521
 
 
3522
#define YYFAIL          goto yyerrlab
 
3523
 
 
3524
#define YYRECOVERING()  (!!yyerrstatus)
 
3525
 
 
3526
#define YYBACKUP(Token, Value)                                  \
 
3527
do                                                              \
 
3528
  if (yychar == YYEMPTY && yylen == 1)                          \
 
3529
    {                                                           \
 
3530
      yychar = (Token);                                         \
 
3531
      yylval = (Value);                                         \
 
3532
      yytoken = YYTRANSLATE (yychar);                           \
 
3533
      YYPOPSTACK (1);                                           \
 
3534
      goto yybackup;                                            \
 
3535
    }                                                           \
 
3536
  else                                                          \
 
3537
    {                                                           \
 
3538
      yyerror (YY_("syntax error: cannot back up")); \
 
3539
      YYERROR;                                                  \
 
3540
    }                                                           \
 
3541
while (YYID (0))
 
3542
 
 
3543
 
 
3544
#define YYTERROR        1
 
3545
#define YYERRCODE       256
 
3546
 
 
3547
 
 
3548
/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
 
3549
   If N is 0, then set CURRENT to the empty location which ends
 
3550
   the previous symbol: RHS[0] (always defined).  */
 
3551
 
 
3552
#define YYRHSLOC(Rhs, K) ((Rhs)[K])
 
3553
#ifndef YYLLOC_DEFAULT
 
3554
# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
 
3555
    do                                                                  \
 
3556
      if (YYID (N))                                                    \
 
3557
        {                                                               \
 
3558
          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
 
3559
          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
 
3560
          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
 
3561
          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
 
3562
        }                                                               \
 
3563
      else                                                              \
 
3564
        {                                                               \
 
3565
          (Current).first_line   = (Current).last_line   =              \
 
3566
            YYRHSLOC (Rhs, 0).last_line;                                \
 
3567
          (Current).first_column = (Current).last_column =              \
 
3568
            YYRHSLOC (Rhs, 0).last_column;                              \
 
3569
        }                                                               \
 
3570
    while (YYID (0))
 
3571
#endif
 
3572
 
 
3573
 
 
3574
/* YY_LOCATION_PRINT -- Print the location on the stream.
 
3575
   This macro was not mandated originally: define only if we know
 
3576
   we won't break user code: when these are the locations we know.  */
 
3577
 
 
3578
#ifndef YY_LOCATION_PRINT
 
3579
# if YYLTYPE_IS_TRIVIAL
 
3580
#  define YY_LOCATION_PRINT(File, Loc)                  \
 
3581
     fprintf (File, "%d.%d-%d.%d",                      \
 
3582
              (Loc).first_line, (Loc).first_column,     \
 
3583
              (Loc).last_line,  (Loc).last_column)
 
3584
# else
 
3585
#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
 
3586
# endif
 
3587
#endif
 
3588
 
 
3589
 
 
3590
/* YYLEX -- calling `yylex' with the right arguments.  */
 
3591
 
 
3592
#ifdef YYLEX_PARAM
 
3593
# define YYLEX yylex (YYLEX_PARAM)
 
3594
#else
 
3595
# define YYLEX yylex ()
 
3596
#endif
 
3597
 
 
3598
/* Enable debugging if requested.  */
 
3599
#if YYDEBUG
 
3600
 
 
3601
# ifndef YYFPRINTF
 
3602
#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
 
3603
#  define YYFPRINTF fprintf
 
3604
# endif
 
3605
 
 
3606
# define YYDPRINTF(Args)                        \
 
3607
do {                                            \
 
3608
  if (yydebug)                                  \
 
3609
    YYFPRINTF Args;                             \
 
3610
} while (YYID (0))
 
3611
 
 
3612
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
 
3613
do {                                                                      \
 
3614
  if (yydebug)                                                            \
 
3615
    {                                                                     \
 
3616
      YYFPRINTF (stderr, "%s ", Title);                                   \
 
3617
      yy_symbol_print (stderr,                                            \
 
3618
                  Type, Value); \
 
3619
      YYFPRINTF (stderr, "\n");                                           \
 
3620
    }                                                                     \
 
3621
} while (YYID (0))
 
3622
 
 
3623
 
 
3624
/*--------------------------------.
 
3625
| Print this symbol on YYOUTPUT.  |
 
3626
`--------------------------------*/
 
3627
 
 
3628
/*ARGSUSED*/
 
3629
#if (defined __STDC__ || defined __C99__FUNC__ \
 
3630
     || defined __cplusplus || defined _MSC_VER)
 
3631
static void
 
3632
yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
 
3633
#else
 
3634
static void
 
3635
yy_symbol_value_print (yyoutput, yytype, yyvaluep)
 
3636
    FILE *yyoutput;
 
3637
    int yytype;
 
3638
    YYSTYPE const * const yyvaluep;
 
3639
#endif
 
3640
{
 
3641
  if (!yyvaluep)
 
3642
    return;
 
3643
# ifdef YYPRINT
 
3644
  if (yytype < YYNTOKENS)
 
3645
    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
 
3646
# else
 
3647
  YYUSE (yyoutput);
 
3648
# endif
 
3649
  switch (yytype)
 
3650
    {
 
3651
      default:
 
3652
        break;
 
3653
    }
 
3654
}
 
3655
 
 
3656
 
 
3657
/*--------------------------------.
 
3658
| Print this symbol on YYOUTPUT.  |
 
3659
`--------------------------------*/
 
3660
 
 
3661
#if (defined __STDC__ || defined __C99__FUNC__ \
 
3662
     || defined __cplusplus || defined _MSC_VER)
 
3663
static void
 
3664
yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
 
3665
#else
 
3666
static void
 
3667
yy_symbol_print (yyoutput, yytype, yyvaluep)
 
3668
    FILE *yyoutput;
 
3669
    int yytype;
 
3670
    YYSTYPE const * const yyvaluep;
 
3671
#endif
 
3672
{
 
3673
  if (yytype < YYNTOKENS)
 
3674
    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
 
3675
  else
 
3676
    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
 
3677
 
 
3678
  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
 
3679
  YYFPRINTF (yyoutput, ")");
 
3680
}
 
3681
 
 
3682
/*------------------------------------------------------------------.
 
3683
| yy_stack_print -- Print the state stack from its BOTTOM up to its |
 
3684
| TOP (included).                                                   |
 
3685
`------------------------------------------------------------------*/
 
3686
 
 
3687
#if (defined __STDC__ || defined __C99__FUNC__ \
 
3688
     || defined __cplusplus || defined _MSC_VER)
 
3689
static void
 
3690
yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
 
3691
#else
 
3692
static void
 
3693
yy_stack_print (bottom, top)
 
3694
    yytype_int16 *bottom;
 
3695
    yytype_int16 *top;
 
3696
#endif
 
3697
{
 
3698
  YYFPRINTF (stderr, "Stack now");
 
3699
  for (; bottom <= top; ++bottom)
 
3700
    YYFPRINTF (stderr, " %d", *bottom);
 
3701
  YYFPRINTF (stderr, "\n");
 
3702
}
 
3703
 
 
3704
# define YY_STACK_PRINT(Bottom, Top)                            \
 
3705
do {                                                            \
 
3706
  if (yydebug)                                                  \
 
3707
    yy_stack_print ((Bottom), (Top));                           \
 
3708
} while (YYID (0))
 
3709
 
 
3710
 
 
3711
/*------------------------------------------------.
 
3712
| Report that the YYRULE is going to be reduced.  |
 
3713
`------------------------------------------------*/
 
3714
 
 
3715
#if (defined __STDC__ || defined __C99__FUNC__ \
 
3716
     || defined __cplusplus || defined _MSC_VER)
 
3717
static void
 
3718
yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
 
3719
#else
 
3720
static void
 
3721
yy_reduce_print (yyvsp, yyrule)
 
3722
    YYSTYPE *yyvsp;
 
3723
    int yyrule;
 
3724
#endif
 
3725
{
 
3726
  int yynrhs = yyr2[yyrule];
 
3727
  int yyi;
 
3728
  unsigned long int yylno = yyrline[yyrule];
 
3729
  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
 
3730
             yyrule - 1, yylno);
 
3731
  /* The symbols being reduced.  */
 
3732
  for (yyi = 0; yyi < yynrhs; yyi++)
 
3733
    {
 
3734
      fprintf (stderr, "   $%d = ", yyi + 1);
 
3735
      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
 
3736
                       &(yyvsp[(yyi + 1) - (yynrhs)])
 
3737
                                       );
 
3738
      fprintf (stderr, "\n");
 
3739
    }
 
3740
}
 
3741
 
 
3742
# define YY_REDUCE_PRINT(Rule)          \
 
3743
do {                                    \
 
3744
  if (yydebug)                          \
 
3745
    yy_reduce_print (yyvsp, Rule); \
 
3746
} while (YYID (0))
 
3747
 
 
3748
/* Nonzero means print parse trace.  It is left uninitialized so that
 
3749
   multiple parsers can coexist.  */
 
3750
int yydebug;
 
3751
#else /* !YYDEBUG */
 
3752
# define YYDPRINTF(Args)
 
3753
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
 
3754
# define YY_STACK_PRINT(Bottom, Top)
 
3755
# define YY_REDUCE_PRINT(Rule)
 
3756
#endif /* !YYDEBUG */
 
3757
 
 
3758
 
 
3759
/* YYINITDEPTH -- initial size of the parser's stacks.  */
 
3760
#ifndef YYINITDEPTH
 
3761
# define YYINITDEPTH 200
 
3762
#endif
 
3763
 
 
3764
/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
 
3765
   if the built-in stack extension method is used).
 
3766
 
 
3767
   Do not make this value too large; the results are undefined if
 
3768
   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
 
3769
   evaluated with infinite-precision integer arithmetic.  */
 
3770
 
 
3771
#ifndef YYMAXDEPTH
 
3772
# define YYMAXDEPTH 10000
 
3773
#endif
 
3774
 
 
3775
 
 
3776
 
 
3777
#if YYERROR_VERBOSE
 
3778
 
 
3779
# ifndef yystrlen
 
3780
#  if defined __GLIBC__ && defined _STRING_H
 
3781
#   define yystrlen strlen
 
3782
#  else
 
3783
/* Return the length of YYSTR.  */
 
3784
#if (defined __STDC__ || defined __C99__FUNC__ \
 
3785
     || defined __cplusplus || defined _MSC_VER)
 
3786
static YYSIZE_T
 
3787
yystrlen (const char *yystr)
 
3788
#else
 
3789
static YYSIZE_T
 
3790
yystrlen (yystr)
 
3791
    const char *yystr;
 
3792
#endif
 
3793
{
 
3794
  YYSIZE_T yylen;
 
3795
  for (yylen = 0; yystr[yylen]; yylen++)
 
3796
    continue;
 
3797
  return yylen;
 
3798
}
 
3799
#  endif
 
3800
# endif
 
3801
 
 
3802
# ifndef yystpcpy
 
3803
#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
 
3804
#   define yystpcpy stpcpy
 
3805
#  else
 
3806
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
 
3807
   YYDEST.  */
 
3808
#if (defined __STDC__ || defined __C99__FUNC__ \
 
3809
     || defined __cplusplus || defined _MSC_VER)
 
3810
static char *
 
3811
yystpcpy (char *yydest, const char *yysrc)
 
3812
#else
 
3813
static char *
 
3814
yystpcpy (yydest, yysrc)
 
3815
    char *yydest;
 
3816
    const char *yysrc;
 
3817
#endif
 
3818
{
 
3819
  char *yyd = yydest;
 
3820
  const char *yys = yysrc;
 
3821
 
 
3822
  while ((*yyd++ = *yys++) != '\0')
 
3823
    continue;
 
3824
 
 
3825
  return yyd - 1;
 
3826
}
 
3827
#  endif
 
3828
# endif
 
3829
 
 
3830
# ifndef yytnamerr
 
3831
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
 
3832
   quotes and backslashes, so that it's suitable for yyerror.  The
 
3833
   heuristic is that double-quoting is unnecessary unless the string
 
3834
   contains an apostrophe, a comma, or backslash (other than
 
3835
   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
 
3836
   null, do not copy; instead, return the length of what the result
 
3837
   would have been.  */
 
3838
static YYSIZE_T
 
3839
yytnamerr (char *yyres, const char *yystr)
 
3840
{
 
3841
  if (*yystr == '"')
 
3842
    {
 
3843
      YYSIZE_T yyn = 0;
 
3844
      char const *yyp = yystr;
 
3845
 
 
3846
      for (;;)
 
3847
        switch (*++yyp)
 
3848
          {
 
3849
          case '\'':
 
3850
          case ',':
 
3851
            goto do_not_strip_quotes;
 
3852
 
 
3853
          case '\\':
 
3854
            if (*++yyp != '\\')
 
3855
              goto do_not_strip_quotes;
 
3856
            /* Fall through.  */
 
3857
          default:
 
3858
            if (yyres)
 
3859
              yyres[yyn] = *yyp;
 
3860
            yyn++;
 
3861
            break;
 
3862
 
 
3863
          case '"':
 
3864
            if (yyres)
 
3865
              yyres[yyn] = '\0';
 
3866
            return yyn;
 
3867
          }
 
3868
    do_not_strip_quotes: ;
 
3869
    }
 
3870
 
 
3871
  if (! yyres)
 
3872
    return yystrlen (yystr);
 
3873
 
 
3874
  return yystpcpy (yyres, yystr) - yyres;
 
3875
}
 
3876
# endif
 
3877
 
 
3878
/* Copy into YYRESULT an error message about the unexpected token
 
3879
   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
 
3880
   including the terminating null byte.  If YYRESULT is null, do not
 
3881
   copy anything; just return the number of bytes that would be
 
3882
   copied.  As a special case, return 0 if an ordinary "syntax error"
 
3883
   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
 
3884
   size calculation.  */
 
3885
static YYSIZE_T
 
3886
yysyntax_error (char *yyresult, int yystate, int yychar)
 
3887
{
 
3888
  int yyn = yypact[yystate];
 
3889
 
 
3890
  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
 
3891
    return 0;
 
3892
  else
 
3893
    {
 
3894
      int yytype = YYTRANSLATE (yychar);
 
3895
      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
 
3896
      YYSIZE_T yysize = yysize0;
 
3897
      YYSIZE_T yysize1;
 
3898
      int yysize_overflow = 0;
 
3899
      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
 
3900
      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
 
3901
      int yyx;
 
3902
 
 
3903
# if 0
 
3904
      /* This is so xgettext sees the translatable formats that are
 
3905
         constructed on the fly.  */
 
3906
      YY_("syntax error, unexpected %s");
 
3907
      YY_("syntax error, unexpected %s, expecting %s");
 
3908
      YY_("syntax error, unexpected %s, expecting %s or %s");
 
3909
      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
 
3910
      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
 
3911
# endif
 
3912
      char *yyfmt;
 
3913
      char const *yyf;
 
3914
      static char const yyunexpected[] = "syntax error, unexpected %s";
 
3915
      static char const yyexpecting[] = ", expecting %s";
 
3916
      static char const yyor[] = " or %s";
 
3917
      char yyformat[sizeof yyunexpected
 
3918
                    + sizeof yyexpecting - 1
 
3919
                    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
 
3920
                       * (sizeof yyor - 1))];
 
3921
      char const *yyprefix = yyexpecting;
 
3922
 
 
3923
      /* Start YYX at -YYN if negative to avoid negative indexes in
 
3924
         YYCHECK.  */
 
3925
      int yyxbegin = yyn < 0 ? -yyn : 0;
 
3926
 
 
3927
      /* Stay within bounds of both yycheck and yytname.  */
 
3928
      int yychecklim = YYLAST - yyn + 1;
 
3929
      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
 
3930
      int yycount = 1;
 
3931
 
 
3932
      yyarg[0] = yytname[yytype];
 
3933
      yyfmt = yystpcpy (yyformat, yyunexpected);
 
3934
 
 
3935
      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
 
3936
        if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
 
3937
          {
 
3938
            if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
 
3939
              {
 
3940
                yycount = 1;
 
3941
                yysize = yysize0;
 
3942
                yyformat[sizeof yyunexpected - 1] = '\0';
 
3943
                break;
 
3944
              }
 
3945
            yyarg[yycount++] = yytname[yyx];
 
3946
            yysize1 = yysize + yytnamerr (0, yytname[yyx]);
 
3947
            yysize_overflow |= (yysize1 < yysize);
 
3948
            yysize = yysize1;
 
3949
            yyfmt = yystpcpy (yyfmt, yyprefix);
 
3950
            yyprefix = yyor;
 
3951
          }
 
3952
 
 
3953
      yyf = YY_(yyformat);
 
3954
      yysize1 = yysize + yystrlen (yyf);
 
3955
      yysize_overflow |= (yysize1 < yysize);
 
3956
      yysize = yysize1;
 
3957
 
 
3958
      if (yysize_overflow)
 
3959
        return YYSIZE_MAXIMUM;
 
3960
 
 
3961
      if (yyresult)
 
3962
        {
 
3963
          /* Avoid sprintf, as that infringes on the user's name space.
 
3964
             Don't have undefined behavior even if the translation
 
3965
             produced a string with the wrong number of "%s"s.  */
 
3966
          char *yyp = yyresult;
 
3967
          int yyi = 0;
 
3968
          while ((*yyp = *yyf) != '\0')
 
3969
            {
 
3970
              if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
 
3971
                {
 
3972
                  yyp += yytnamerr (yyp, yyarg[yyi++]);
 
3973
                  yyf += 2;
 
3974
                }
 
3975
              else
 
3976
                {
 
3977
                  yyp++;
 
3978
                  yyf++;
 
3979
                }
 
3980
            }
 
3981
        }
 
3982
      return yysize;
 
3983
    }
 
3984
}
 
3985
#endif /* YYERROR_VERBOSE */
 
3986
 
 
3987
 
 
3988
/*-----------------------------------------------.
 
3989
| Release the memory associated to this symbol.  |
 
3990
`-----------------------------------------------*/
 
3991
 
 
3992
/*ARGSUSED*/
 
3993
#if (defined __STDC__ || defined __C99__FUNC__ \
 
3994
     || defined __cplusplus || defined _MSC_VER)
 
3995
static void
 
3996
yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
 
3997
#else
 
3998
static void
 
3999
yydestruct (yymsg, yytype, yyvaluep)
 
4000
    const char *yymsg;
 
4001
    int yytype;
 
4002
    YYSTYPE *yyvaluep;
 
4003
#endif
 
4004
{
 
4005
  YYUSE (yyvaluep);
 
4006
 
 
4007
  if (!yymsg)
 
4008
    yymsg = "Deleting";
 
4009
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
4010
 
 
4011
  switch (yytype)
 
4012
    {
 
4013
 
 
4014
      default:
 
4015
        break;
 
4016
    }
 
4017
}
 
4018
 
 
4019
 
 
4020
/* Prevent warnings from -Wmissing-prototypes.  */
 
4021
 
 
4022
#ifdef YYPARSE_PARAM
 
4023
#if defined __STDC__ || defined __cplusplus
 
4024
int yyparse (void *YYPARSE_PARAM);
 
4025
#else
 
4026
int yyparse ();
 
4027
#endif
 
4028
#else /* ! YYPARSE_PARAM */
 
4029
#if defined __STDC__ || defined __cplusplus
 
4030
int yyparse (void);
 
4031
#else
 
4032
int yyparse ();
 
4033
#endif
 
4034
#endif /* ! YYPARSE_PARAM */
 
4035
 
 
4036
 
 
4037
 
 
4038
/* The look-ahead symbol.  */
 
4039
int yychar;
 
4040
 
 
4041
/* The semantic value of the look-ahead symbol.  */
 
4042
YYSTYPE yylval;
 
4043
 
 
4044
/* Number of syntax errors so far.  */
 
4045
int yynerrs;
 
4046
 
 
4047
 
 
4048
 
 
4049
/*----------.
 
4050
| yyparse.  |
 
4051
`----------*/
 
4052
 
 
4053
#ifdef YYPARSE_PARAM
 
4054
#if (defined __STDC__ || defined __C99__FUNC__ \
 
4055
     || defined __cplusplus || defined _MSC_VER)
 
4056
int
 
4057
yyparse (void *YYPARSE_PARAM)
 
4058
#else
 
4059
int
 
4060
yyparse (YYPARSE_PARAM)
 
4061
    void *YYPARSE_PARAM;
 
4062
#endif
 
4063
#else /* ! YYPARSE_PARAM */
 
4064
#if (defined __STDC__ || defined __C99__FUNC__ \
 
4065
     || defined __cplusplus || defined _MSC_VER)
 
4066
int
 
4067
yyparse (void)
 
4068
#else
 
4069
int
 
4070
yyparse ()
 
4071
 
 
4072
#endif
 
4073
#endif
 
4074
{
 
4075
  
 
4076
  int yystate;
 
4077
  int yyn;
 
4078
  int yyresult;
 
4079
  /* Number of tokens to shift before error messages enabled.  */
 
4080
  int yyerrstatus;
 
4081
  /* Look-ahead token as an internal (translated) token number.  */
 
4082
  int yytoken = 0;
 
4083
#if YYERROR_VERBOSE
 
4084
  /* Buffer for error messages, and its allocated size.  */
 
4085
  char yymsgbuf[128];
 
4086
  char *yymsg = yymsgbuf;
 
4087
  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
 
4088
#endif
 
4089
 
 
4090
  /* Three stacks and their tools:
 
4091
     `yyss': related to states,
 
4092
     `yyvs': related to semantic values,
 
4093
     `yyls': related to locations.
 
4094
 
 
4095
     Refer to the stacks thru separate pointers, to allow yyoverflow
 
4096
     to reallocate them elsewhere.  */
 
4097
 
 
4098
  /* The state stack.  */
 
4099
  yytype_int16 yyssa[YYINITDEPTH];
 
4100
  yytype_int16 *yyss = yyssa;
 
4101
  yytype_int16 *yyssp;
 
4102
 
 
4103
  /* The semantic value stack.  */
 
4104
  YYSTYPE yyvsa[YYINITDEPTH];
 
4105
  YYSTYPE *yyvs = yyvsa;
 
4106
  YYSTYPE *yyvsp;
 
4107
 
 
4108
 
 
4109
 
 
4110
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
4111
 
 
4112
  YYSIZE_T yystacksize = YYINITDEPTH;
 
4113
 
 
4114
  /* The variables used to return semantic value and location from the
 
4115
     action routines.  */
 
4116
  YYSTYPE yyval;
 
4117
 
 
4118
 
 
4119
  /* The number of symbols on the RHS of the reduced rule.
 
4120
     Keep to zero when no symbol should be popped.  */
 
4121
  int yylen = 0;
 
4122
 
 
4123
  YYDPRINTF ((stderr, "Starting parse\n"));
 
4124
 
 
4125
  yystate = 0;
 
4126
  yyerrstatus = 0;
 
4127
  yynerrs = 0;
 
4128
  yychar = YYEMPTY;             /* Cause a token to be read.  */
 
4129
 
 
4130
  /* Initialize stack pointers.
 
4131
     Waste one element of value and location stack
 
4132
     so that they stay on the same level as the state stack.
 
4133
     The wasted elements are never initialized.  */
 
4134
 
 
4135
  yyssp = yyss;
 
4136
  yyvsp = yyvs;
 
4137
 
 
4138
  goto yysetstate;
 
4139
 
 
4140
/*------------------------------------------------------------.
 
4141
| yynewstate -- Push a new state, which is found in yystate.  |
 
4142
`------------------------------------------------------------*/
 
4143
 yynewstate:
 
4144
  /* In all cases, when you get here, the value and location stacks
 
4145
     have just been pushed.  So pushing a state here evens the stacks.  */
 
4146
  yyssp++;
 
4147
 
 
4148
 yysetstate:
 
4149
  *yyssp = yystate;
 
4150
 
 
4151
  if (yyss + yystacksize - 1 <= yyssp)
 
4152
    {
 
4153
      /* Get the current used size of the three stacks, in elements.  */
 
4154
      YYSIZE_T yysize = yyssp - yyss + 1;
 
4155
 
 
4156
#ifdef yyoverflow
 
4157
      {
 
4158
        /* Give user a chance to reallocate the stack.  Use copies of
 
4159
           these so that the &'s don't force the real ones into
 
4160
           memory.  */
 
4161
        YYSTYPE *yyvs1 = yyvs;
 
4162
        yytype_int16 *yyss1 = yyss;
 
4163
 
 
4164
 
 
4165
        /* Each stack pointer address is followed by the size of the
 
4166
           data in use in that stack, in bytes.  This used to be a
 
4167
           conditional around just the two extra args, but that might
 
4168
           be undefined if yyoverflow is a macro.  */
 
4169
        yyoverflow (YY_("memory exhausted"),
 
4170
                    &yyss1, yysize * sizeof (*yyssp),
 
4171
                    &yyvs1, yysize * sizeof (*yyvsp),
 
4172
 
 
4173
                    &yystacksize);
 
4174
 
 
4175
        yyss = yyss1;
 
4176
        yyvs = yyvs1;
 
4177
      }
 
4178
#else /* no yyoverflow */
 
4179
# ifndef YYSTACK_RELOCATE
 
4180
      goto yyexhaustedlab;
 
4181
# else
 
4182
      /* Extend the stack our own way.  */
 
4183
      if (YYMAXDEPTH <= yystacksize)
 
4184
        goto yyexhaustedlab;
 
4185
      yystacksize *= 2;
 
4186
      if (YYMAXDEPTH < yystacksize)
 
4187
        yystacksize = YYMAXDEPTH;
 
4188
 
 
4189
      {
 
4190
        yytype_int16 *yyss1 = yyss;
 
4191
        union yyalloc *yyptr =
 
4192
          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 
4193
        if (! yyptr)
 
4194
          goto yyexhaustedlab;
 
4195
        YYSTACK_RELOCATE (yyss);
 
4196
        YYSTACK_RELOCATE (yyvs);
 
4197
 
 
4198
#  undef YYSTACK_RELOCATE
 
4199
        if (yyss1 != yyssa)
 
4200
          YYSTACK_FREE (yyss1);
 
4201
      }
 
4202
# endif
 
4203
#endif /* no yyoverflow */
 
4204
 
 
4205
      yyssp = yyss + yysize - 1;
 
4206
      yyvsp = yyvs + yysize - 1;
 
4207
 
 
4208
 
 
4209
      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
 
4210
                  (unsigned long int) yystacksize));
 
4211
 
 
4212
      if (yyss + yystacksize - 1 <= yyssp)
 
4213
        YYABORT;
 
4214
    }
 
4215
 
 
4216
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
4217
 
 
4218
  goto yybackup;
 
4219
 
 
4220
/*-----------.
 
4221
| yybackup.  |
 
4222
`-----------*/
 
4223
yybackup:
 
4224
 
 
4225
  /* Do appropriate processing given the current state.  Read a
 
4226
     look-ahead token if we need one and don't already have one.  */
 
4227
 
 
4228
  /* First try to decide what to do without reference to look-ahead token.  */
 
4229
  yyn = yypact[yystate];
 
4230
  if (yyn == YYPACT_NINF)
 
4231
    goto yydefault;
 
4232
 
 
4233
  /* Not known => get a look-ahead token if don't already have one.  */
 
4234
 
 
4235
  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
 
4236
  if (yychar == YYEMPTY)
 
4237
    {
 
4238
      YYDPRINTF ((stderr, "Reading a token: "));
 
4239
      yychar = YYLEX;
 
4240
    }
 
4241
 
 
4242
  if (yychar <= YYEOF)
 
4243
    {
 
4244
      yychar = yytoken = YYEOF;
 
4245
      YYDPRINTF ((stderr, "Now at end of input.\n"));
 
4246
    }
 
4247
  else
 
4248
    {
 
4249
      yytoken = YYTRANSLATE (yychar);
 
4250
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
 
4251
    }
 
4252
 
 
4253
  /* If the proper action on seeing token YYTOKEN is to reduce or to
 
4254
     detect an error, take that action.  */
 
4255
  yyn += yytoken;
 
4256
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
 
4257
    goto yydefault;
 
4258
  yyn = yytable[yyn];
 
4259
  if (yyn <= 0)
 
4260
    {
 
4261
      if (yyn == 0 || yyn == YYTABLE_NINF)
 
4262
        goto yyerrlab;
 
4263
      yyn = -yyn;
 
4264
      goto yyreduce;
 
4265
    }
 
4266
 
 
4267
  if (yyn == YYFINAL)
 
4268
    YYACCEPT;
 
4269
 
 
4270
  /* Count tokens shifted since error; after three, turn off error
 
4271
     status.  */
 
4272
  if (yyerrstatus)
 
4273
    yyerrstatus--;
 
4274
 
 
4275
  /* Shift the look-ahead token.  */
 
4276
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
4277
 
 
4278
  /* Discard the shifted token unless it is eof.  */
 
4279
  if (yychar != YYEOF)
 
4280
    yychar = YYEMPTY;
 
4281
 
 
4282
  yystate = yyn;
 
4283
  *++yyvsp = yylval;
 
4284
 
 
4285
  goto yynewstate;
 
4286
 
 
4287
 
 
4288
/*-----------------------------------------------------------.
 
4289
| yydefault -- do the default action for the current state.  |
 
4290
`-----------------------------------------------------------*/
 
4291
yydefault:
 
4292
  yyn = yydefact[yystate];
 
4293
  if (yyn == 0)
 
4294
    goto yyerrlab;
 
4295
  goto yyreduce;
 
4296
 
 
4297
 
 
4298
/*-----------------------------.
 
4299
| yyreduce -- Do a reduction.  |
 
4300
`-----------------------------*/
 
4301
yyreduce:
 
4302
  /* yyn is the number of a rule to reduce with.  */
 
4303
  yylen = yyr2[yyn];
 
4304
 
 
4305
  /* If YYLEN is nonzero, implement the default value of the action:
 
4306
     `$$ = $1'.
 
4307
 
 
4308
     Otherwise, the following line sets YYVAL to garbage.
 
4309
     This behavior is undocumented and Bison
 
4310
     users should not rely upon it.  Assigning to YYVAL
 
4311
     unconditionally makes the parser a bit smaller, and it avoids a
 
4312
     GCC warning that YYVAL may be used uninitialized.  */
 
4313
  yyval = yyvsp[1-yylen];
 
4314
 
 
4315
 
 
4316
  YY_REDUCE_PRINT (yyn);
 
4317
  switch (yyn)
 
4318
    {
 
4319
        case 2:
 
4320
#line 346 "parse.y"
 
4321
    {
 
4322
                        lex_state = EXPR_BEG;
 
4323
                        top_local_init();
 
4324
                        if (ruby_class == rb_cObject) class_nest = 0;
 
4325
                        else class_nest = 1;
 
4326
                    }
 
4327
    break;
 
4328
 
 
4329
  case 3:
 
4330
#line 353 "parse.y"
 
4331
    {
 
4332
                        if ((yyvsp[(2) - (2)].node) && !compile_for_eval) {
 
4333
                            /* last expression should not be void */
 
4334
                            if (nd_type((yyvsp[(2) - (2)].node)) != NODE_BLOCK) void_expr((yyvsp[(2) - (2)].node));
 
4335
                            else {
 
4336
                                NODE *node = (yyvsp[(2) - (2)].node);
 
4337
                                while (node->nd_next) {
 
4338
                                    node = node->nd_next;
 
4339
                                }
 
4340
                                void_expr(node->nd_head);
 
4341
                            }
 
4342
                        }
 
4343
                        ruby_eval_tree = block_append(ruby_eval_tree, (yyvsp[(2) - (2)].node));
 
4344
                        top_local_setup();
 
4345
                        class_nest = 0;
 
4346
                    }
 
4347
    break;
 
4348
 
 
4349
  case 4:
 
4350
#line 375 "parse.y"
 
4351
    {
 
4352
                        (yyval.node) = (yyvsp[(1) - (4)].node);
 
4353
                        if ((yyvsp[(2) - (4)].node)) {
 
4354
                            (yyval.node) = NEW_RESCUE((yyvsp[(1) - (4)].node), (yyvsp[(2) - (4)].node), (yyvsp[(3) - (4)].node));
 
4355
                        }
 
4356
                        else if ((yyvsp[(3) - (4)].node)) {
 
4357
                            rb_warn("else without rescue is useless");
 
4358
                            (yyval.node) = block_append((yyval.node), (yyvsp[(3) - (4)].node));
 
4359
                        }
 
4360
                        if ((yyvsp[(4) - (4)].node)) {
 
4361
                            (yyval.node) = NEW_ENSURE((yyval.node), (yyvsp[(4) - (4)].node));
 
4362
                        }
 
4363
                        fixpos((yyval.node), (yyvsp[(1) - (4)].node));
 
4364
                    }
 
4365
    break;
 
4366
 
 
4367
  case 5:
 
4368
#line 392 "parse.y"
 
4369
    {
 
4370
                        void_stmts((yyvsp[(1) - (2)].node));
 
4371
                        (yyval.node) = (yyvsp[(1) - (2)].node);
 
4372
                    }
 
4373
    break;
 
4374
 
 
4375
  case 7:
 
4376
#line 400 "parse.y"
 
4377
    {
 
4378
                        (yyval.node) = newline_node((yyvsp[(1) - (1)].node));
 
4379
                    }
 
4380
    break;
 
4381
 
 
4382
  case 8:
 
4383
#line 404 "parse.y"
 
4384
    {
 
4385
                        (yyval.node) = block_append((yyvsp[(1) - (3)].node), newline_node((yyvsp[(3) - (3)].node)));
 
4386
                    }
 
4387
    break;
 
4388
 
 
4389
  case 9:
 
4390
#line 408 "parse.y"
 
4391
    {
 
4392
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
4393
                    }
 
4394
    break;
 
4395
 
 
4396
  case 10:
 
4397
#line 413 "parse.y"
 
4398
    {lex_state = EXPR_FNAME;}
 
4399
    break;
 
4400
 
 
4401
  case 11:
 
4402
#line 414 "parse.y"
 
4403
    {
 
4404
                        (yyval.node) = NEW_ALIAS((yyvsp[(2) - (4)].node), (yyvsp[(4) - (4)].node));
 
4405
                    }
 
4406
    break;
 
4407
 
 
4408
  case 12:
 
4409
#line 418 "parse.y"
 
4410
    {
 
4411
                        (yyval.node) = NEW_VALIAS((yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].id));
 
4412
                    }
 
4413
    break;
 
4414
 
 
4415
  case 13:
 
4416
#line 422 "parse.y"
 
4417
    {
 
4418
                        char buf[3];
 
4419
 
 
4420
                        sprintf(buf, "$%c", (char)(yyvsp[(3) - (3)].node)->nd_nth);
 
4421
                        (yyval.node) = NEW_VALIAS((yyvsp[(2) - (3)].id), rb_intern(buf));
 
4422
                    }
 
4423
    break;
 
4424
 
 
4425
  case 14:
 
4426
#line 429 "parse.y"
 
4427
    {
 
4428
                        yyerror("can't make alias for the number variables");
 
4429
                        (yyval.node) = 0;
 
4430
                    }
 
4431
    break;
 
4432
 
 
4433
  case 15:
 
4434
#line 434 "parse.y"
 
4435
    {
 
4436
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
4437
                    }
 
4438
    break;
 
4439
 
 
4440
  case 16:
 
4441
#line 438 "parse.y"
 
4442
    {
 
4443
                        (yyval.node) = NEW_IF(cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node), 0);
 
4444
                        fixpos((yyval.node), (yyvsp[(3) - (3)].node));
 
4445
                        if (cond_negative(&(yyval.node)->nd_cond)) {
 
4446
                            (yyval.node)->nd_else = (yyval.node)->nd_body;
 
4447
                            (yyval.node)->nd_body = 0;
 
4448
                        }
 
4449
                    }
 
4450
    break;
 
4451
 
 
4452
  case 17:
 
4453
#line 447 "parse.y"
 
4454
    {
 
4455
                        (yyval.node) = NEW_UNLESS(cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node), 0);
 
4456
                        fixpos((yyval.node), (yyvsp[(3) - (3)].node));
 
4457
                        if (cond_negative(&(yyval.node)->nd_cond)) {
 
4458
                            (yyval.node)->nd_body = (yyval.node)->nd_else;
 
4459
                            (yyval.node)->nd_else = 0;
 
4460
                        }
 
4461
                    }
 
4462
    break;
 
4463
 
 
4464
  case 18:
 
4465
#line 456 "parse.y"
 
4466
    {
 
4467
                        if ((yyvsp[(1) - (3)].node) && nd_type((yyvsp[(1) - (3)].node)) == NODE_BEGIN) {
 
4468
                            (yyval.node) = NEW_WHILE(cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node)->nd_body, 0);
 
4469
                        }
 
4470
                        else {
 
4471
                            (yyval.node) = NEW_WHILE(cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node), 1);
 
4472
                        }
 
4473
                        if (cond_negative(&(yyval.node)->nd_cond)) {
 
4474
                            nd_set_type((yyval.node), NODE_UNTIL);
 
4475
                        }
 
4476
                    }
 
4477
    break;
 
4478
 
 
4479
  case 19:
 
4480
#line 468 "parse.y"
 
4481
    {
 
4482
                        if ((yyvsp[(1) - (3)].node) && nd_type((yyvsp[(1) - (3)].node)) == NODE_BEGIN) {
 
4483
                            (yyval.node) = NEW_UNTIL(cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node)->nd_body, 0);
 
4484
                        }
 
4485
                        else {
 
4486
                            (yyval.node) = NEW_UNTIL(cond((yyvsp[(3) - (3)].node)), (yyvsp[(1) - (3)].node), 1);
 
4487
                        }
 
4488
                        if (cond_negative(&(yyval.node)->nd_cond)) {
 
4489
                            nd_set_type((yyval.node), NODE_WHILE);
 
4490
                        }
 
4491
                    }
 
4492
    break;
 
4493
 
 
4494
  case 20:
 
4495
#line 480 "parse.y"
 
4496
    {
 
4497
                        (yyval.node) = NEW_RESCUE((yyvsp[(1) - (3)].node), NEW_RESBODY(0,(yyvsp[(3) - (3)].node),0), 0);
 
4498
                    }
 
4499
    break;
 
4500
 
 
4501
  case 21:
 
4502
#line 484 "parse.y"
 
4503
    {
 
4504
                        if (in_def || in_single) {
 
4505
                            yyerror("BEGIN in method");
 
4506
                        }
 
4507
                        local_push(0);
 
4508
                    }
 
4509
    break;
 
4510
 
 
4511
  case 22:
 
4512
#line 491 "parse.y"
 
4513
    {
 
4514
                        ruby_eval_tree_begin = block_append(ruby_eval_tree_begin,
 
4515
                                                            NEW_PREEXE((yyvsp[(4) - (5)].node)));
 
4516
                        local_pop();
 
4517
                        (yyval.node) = 0;
 
4518
                    }
 
4519
    break;
 
4520
 
 
4521
  case 23:
 
4522
#line 498 "parse.y"
 
4523
    {
 
4524
                        if (in_def || in_single) {
 
4525
                            rb_warn("END in method; use at_exit");
 
4526
                        }
 
4527
 
 
4528
                        (yyval.node) = NEW_ITER(0, NEW_POSTEXE(), (yyvsp[(3) - (4)].node));
 
4529
                    }
 
4530
    break;
 
4531
 
 
4532
  case 24:
 
4533
#line 506 "parse.y"
 
4534
    {
 
4535
                        (yyval.node) = node_assign((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
4536
                    }
 
4537
    break;
 
4538
 
 
4539
  case 25:
 
4540
#line 510 "parse.y"
 
4541
    {
 
4542
                        value_expr((yyvsp[(3) - (3)].node));
 
4543
                        (yyvsp[(1) - (3)].node)->nd_value = ((yyvsp[(1) - (3)].node)->nd_head) ? NEW_TO_ARY((yyvsp[(3) - (3)].node)) : NEW_ARRAY((yyvsp[(3) - (3)].node));
 
4544
                        (yyval.node) = (yyvsp[(1) - (3)].node);
 
4545
                    }
 
4546
    break;
 
4547
 
 
4548
  case 26:
 
4549
#line 516 "parse.y"
 
4550
    {
 
4551
                        value_expr((yyvsp[(3) - (3)].node));
 
4552
                        if ((yyvsp[(1) - (3)].node)) {
 
4553
                            ID vid = (yyvsp[(1) - (3)].node)->nd_vid;
 
4554
                            if ((yyvsp[(2) - (3)].id) == tOROP) {
 
4555
                                (yyvsp[(1) - (3)].node)->nd_value = (yyvsp[(3) - (3)].node);
 
4556
                                (yyval.node) = NEW_OP_ASGN_OR(gettable(vid), (yyvsp[(1) - (3)].node));
 
4557
                                if (is_asgn_or_id(vid)) {
 
4558
                                    (yyval.node)->nd_aid = vid;
 
4559
                                }
 
4560
                            }
 
4561
                            else if ((yyvsp[(2) - (3)].id) == tANDOP) {
 
4562
                                (yyvsp[(1) - (3)].node)->nd_value = (yyvsp[(3) - (3)].node);
 
4563
                                (yyval.node) = NEW_OP_ASGN_AND(gettable(vid), (yyvsp[(1) - (3)].node));
 
4564
                            }
 
4565
                            else {
 
4566
                                (yyval.node) = (yyvsp[(1) - (3)].node);
 
4567
                                (yyval.node)->nd_value = call_op(gettable(vid),(yyvsp[(2) - (3)].id),1,(yyvsp[(3) - (3)].node));
 
4568
                            }
 
4569
                        }
 
4570
                        else {
 
4571
                            (yyval.node) = 0;
 
4572
                        }
 
4573
                    }
 
4574
    break;
 
4575
 
 
4576
  case 27:
 
4577
#line 541 "parse.y"
 
4578
    {
 
4579
                        NODE *args;
 
4580
 
 
4581
                        value_expr((yyvsp[(6) - (6)].node));
 
4582
                        if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = NEW_ZARRAY();
 
4583
                        args = arg_concat((yyvsp[(6) - (6)].node), (yyvsp[(3) - (6)].node));
 
4584
                        if ((yyvsp[(5) - (6)].id) == tOROP) {
 
4585
                            (yyvsp[(5) - (6)].id) = 0;
 
4586
                        }
 
4587
                        else if ((yyvsp[(5) - (6)].id) == tANDOP) {
 
4588
                            (yyvsp[(5) - (6)].id) = 1;
 
4589
                        }
 
4590
                        (yyval.node) = NEW_OP_ASGN1((yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].id), args);
 
4591
                        fixpos((yyval.node), (yyvsp[(1) - (6)].node));
 
4592
                    }
 
4593
    break;
 
4594
 
 
4595
  case 28:
 
4596
#line 557 "parse.y"
 
4597
    {
 
4598
                        value_expr((yyvsp[(5) - (5)].node));
 
4599
                        if ((yyvsp[(4) - (5)].id) == tOROP) {
 
4600
                            (yyvsp[(4) - (5)].id) = 0;
 
4601
                        }
 
4602
                        else if ((yyvsp[(4) - (5)].id) == tANDOP) {
 
4603
                            (yyvsp[(4) - (5)].id) = 1;
 
4604
                        }
 
4605
                        (yyval.node) = NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].node));
 
4606
                        fixpos((yyval.node), (yyvsp[(1) - (5)].node));
 
4607
                    }
 
4608
    break;
 
4609
 
 
4610
  case 29:
 
4611
#line 569 "parse.y"
 
4612
    {
 
4613
                        value_expr((yyvsp[(5) - (5)].node));
 
4614
                        if ((yyvsp[(4) - (5)].id) == tOROP) {
 
4615
                            (yyvsp[(4) - (5)].id) = 0;
 
4616
                        }
 
4617
                        else if ((yyvsp[(4) - (5)].id) == tANDOP) {
 
4618
                            (yyvsp[(4) - (5)].id) = 1;
 
4619
                        }
 
4620
                        (yyval.node) = NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].node));
 
4621
                        fixpos((yyval.node), (yyvsp[(1) - (5)].node));
 
4622
                    }
 
4623
    break;
 
4624
 
 
4625
  case 30:
 
4626
#line 581 "parse.y"
 
4627
    {
 
4628
                        value_expr((yyvsp[(5) - (5)].node));
 
4629
                        if ((yyvsp[(4) - (5)].id) == tOROP) {
 
4630
                            (yyvsp[(4) - (5)].id) = 0;
 
4631
                        }
 
4632
                        else if ((yyvsp[(4) - (5)].id) == tANDOP) {
 
4633
                            (yyvsp[(4) - (5)].id) = 1;
 
4634
                        }
 
4635
                        (yyval.node) = NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].node));
 
4636
                        fixpos((yyval.node), (yyvsp[(1) - (5)].node));
 
4637
                    }
 
4638
    break;
 
4639
 
 
4640
  case 31:
 
4641
#line 593 "parse.y"
 
4642
    {
 
4643
                        rb_backref_error((yyvsp[(1) - (3)].node));
 
4644
                        (yyval.node) = 0;
 
4645
                    }
 
4646
    break;
 
4647
 
 
4648
  case 32:
 
4649
#line 598 "parse.y"
 
4650
    {
 
4651
                        (yyval.node) = node_assign((yyvsp[(1) - (3)].node), NEW_SVALUE((yyvsp[(3) - (3)].node)));
 
4652
                    }
 
4653
    break;
 
4654
 
 
4655
  case 33:
 
4656
#line 602 "parse.y"
 
4657
    {
 
4658
                        (yyvsp[(1) - (3)].node)->nd_value = ((yyvsp[(1) - (3)].node)->nd_head) ? NEW_TO_ARY((yyvsp[(3) - (3)].node)) : NEW_ARRAY((yyvsp[(3) - (3)].node));
 
4659
                        (yyval.node) = (yyvsp[(1) - (3)].node);
 
4660
                    }
 
4661
    break;
 
4662
 
 
4663
  case 34:
 
4664
#line 607 "parse.y"
 
4665
    {
 
4666
                        (yyvsp[(1) - (3)].node)->nd_value = (yyvsp[(3) - (3)].node);
 
4667
                        (yyval.node) = (yyvsp[(1) - (3)].node);
 
4668
                    }
 
4669
    break;
 
4670
 
 
4671
  case 37:
 
4672
#line 616 "parse.y"
 
4673
    {
 
4674
                        (yyval.node) = logop(NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
4675
                    }
 
4676
    break;
 
4677
 
 
4678
  case 38:
 
4679
#line 620 "parse.y"
 
4680
    {
 
4681
                        (yyval.node) = logop(NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
4682
                    }
 
4683
    break;
 
4684
 
 
4685
  case 39:
 
4686
#line 624 "parse.y"
 
4687
    {
 
4688
                        (yyval.node) = NEW_NOT(cond((yyvsp[(2) - (2)].node)));
 
4689
                    }
 
4690
    break;
 
4691
 
 
4692
  case 40:
 
4693
#line 628 "parse.y"
 
4694
    {
 
4695
                        (yyval.node) = NEW_NOT(cond((yyvsp[(2) - (2)].node)));
 
4696
                    }
 
4697
    break;
 
4698
 
 
4699
  case 42:
 
4700
#line 635 "parse.y"
 
4701
    {
 
4702
                        value_expr((yyval.node));
 
4703
                        (yyval.node) = (yyvsp[(1) - (1)].node);
 
4704
                    }
 
4705
    break;
 
4706
 
 
4707
  case 45:
 
4708
#line 644 "parse.y"
 
4709
    {
 
4710
                        (yyval.node) = NEW_RETURN(ret_args((yyvsp[(2) - (2)].node)));
 
4711
                    }
 
4712
    break;
 
4713
 
 
4714
  case 46:
 
4715
#line 648 "parse.y"
 
4716
    {
 
4717
                        (yyval.node) = NEW_BREAK(ret_args((yyvsp[(2) - (2)].node)));
 
4718
                    }
 
4719
    break;
 
4720
 
 
4721
  case 47:
 
4722
#line 652 "parse.y"
 
4723
    {
 
4724
                        (yyval.node) = NEW_NEXT(ret_args((yyvsp[(2) - (2)].node)));
 
4725
                    }
 
4726
    break;
 
4727
 
 
4728
  case 49:
 
4729
#line 659 "parse.y"
 
4730
    {
 
4731
                        (yyval.node) = new_call((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].node));
 
4732
                    }
 
4733
    break;
 
4734
 
 
4735
  case 50:
 
4736
#line 663 "parse.y"
 
4737
    {
 
4738
                        (yyval.node) = new_call((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].node));
 
4739
                    }
 
4740
    break;
 
4741
 
 
4742
  case 51:
 
4743
#line 669 "parse.y"
 
4744
    {
 
4745
                        (yyval.vars) = dyna_push();
 
4746
                        (yyvsp[(1) - (1)].num) = ruby_sourceline;
 
4747
                    }
 
4748
    break;
 
4749
 
 
4750
  case 52:
 
4751
#line 673 "parse.y"
 
4752
    {(yyval.vars) = ruby_dyna_vars;}
 
4753
    break;
 
4754
 
 
4755
  case 53:
 
4756
#line 676 "parse.y"
 
4757
    {
 
4758
                        (yyval.node) = NEW_ITER((yyvsp[(3) - (6)].node), 0, dyna_init((yyvsp[(5) - (6)].node), (yyvsp[(4) - (6)].vars)));
 
4759
                        nd_set_line((yyval.node), (yyvsp[(1) - (6)].num));
 
4760
                        dyna_pop((yyvsp[(2) - (6)].vars));
 
4761
                    }
 
4762
    break;
 
4763
 
 
4764
  case 54:
 
4765
#line 684 "parse.y"
 
4766
    {
 
4767
                        (yyval.node) = new_fcall((yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].node));
 
4768
                        fixpos((yyval.node), (yyvsp[(2) - (2)].node));
 
4769
                   }
 
4770
    break;
 
4771
 
 
4772
  case 55:
 
4773
#line 689 "parse.y"
 
4774
    {
 
4775
                        (yyval.node) = new_fcall((yyvsp[(1) - (3)].id), (yyvsp[(2) - (3)].node));
 
4776
                        if ((yyvsp[(3) - (3)].node)) {
 
4777
                            if (nd_type((yyval.node)) == NODE_BLOCK_PASS) {
 
4778
                                rb_compile_error("both block arg and actual block given");
 
4779
                            }
 
4780
                            (yyvsp[(3) - (3)].node)->nd_iter = (yyval.node);
 
4781
                            (yyval.node) = (yyvsp[(3) - (3)].node);
 
4782
                        }
 
4783
                        fixpos((yyval.node), (yyvsp[(2) - (3)].node));
 
4784
                   }
 
4785
    break;
 
4786
 
 
4787
  case 56:
 
4788
#line 701 "parse.y"
 
4789
    {
 
4790
                        (yyval.node) = new_call((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].node));
 
4791
                        fixpos((yyval.node), (yyvsp[(1) - (4)].node));
 
4792
                    }
 
4793
    break;
 
4794
 
 
4795
  case 57:
 
4796
#line 706 "parse.y"
 
4797
    {
 
4798
                        (yyval.node) = new_call((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].node));
 
4799
                        if ((yyvsp[(5) - (5)].node)) {
 
4800
                            if (nd_type((yyval.node)) == NODE_BLOCK_PASS) {
 
4801
                                rb_compile_error("both block arg and actual block given");
 
4802
                            }
 
4803
                            (yyvsp[(5) - (5)].node)->nd_iter = (yyval.node);
 
4804
                            (yyval.node) = (yyvsp[(5) - (5)].node);
 
4805
                        }
 
4806
                        fixpos((yyval.node), (yyvsp[(1) - (5)].node));
 
4807
                   }
 
4808
    break;
 
4809
 
 
4810
  case 58:
 
4811
#line 718 "parse.y"
 
4812
    {
 
4813
                        (yyval.node) = new_call((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].node));
 
4814
                        fixpos((yyval.node), (yyvsp[(1) - (4)].node));
 
4815
                    }
 
4816
    break;
 
4817
 
 
4818
  case 59:
 
4819
#line 723 "parse.y"
 
4820
    {
 
4821
                        (yyval.node) = new_call((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].node));
 
4822
                        if ((yyvsp[(5) - (5)].node)) {
 
4823
                            if (nd_type((yyval.node)) == NODE_BLOCK_PASS) {
 
4824
                                rb_compile_error("both block arg and actual block given");
 
4825
                            }
 
4826
                            (yyvsp[(5) - (5)].node)->nd_iter = (yyval.node);
 
4827
                            (yyval.node) = (yyvsp[(5) - (5)].node);
 
4828
                        }
 
4829
                        fixpos((yyval.node), (yyvsp[(1) - (5)].node));
 
4830
                   }
 
4831
    break;
 
4832
 
 
4833
  case 60:
 
4834
#line 735 "parse.y"
 
4835
    {
 
4836
                        (yyval.node) = new_super((yyvsp[(2) - (2)].node));
 
4837
                        fixpos((yyval.node), (yyvsp[(2) - (2)].node));
 
4838
                    }
 
4839
    break;
 
4840
 
 
4841
  case 61:
 
4842
#line 740 "parse.y"
 
4843
    {
 
4844
                        (yyval.node) = new_yield((yyvsp[(2) - (2)].node));
 
4845
                        fixpos((yyval.node), (yyvsp[(2) - (2)].node));
 
4846
                    }
 
4847
    break;
 
4848
 
 
4849
  case 63:
 
4850
#line 748 "parse.y"
 
4851
    {
 
4852
                        (yyval.node) = (yyvsp[(2) - (3)].node);
 
4853
                    }
 
4854
    break;
 
4855
 
 
4856
  case 65:
 
4857
#line 755 "parse.y"
 
4858
    {
 
4859
                        (yyval.node) = NEW_MASGN(NEW_LIST((yyvsp[(2) - (3)].node)), 0);
 
4860
                    }
 
4861
    break;
 
4862
 
 
4863
  case 66:
 
4864
#line 761 "parse.y"
 
4865
    {
 
4866
                        (yyval.node) = NEW_MASGN((yyvsp[(1) - (1)].node), 0);
 
4867
                    }
 
4868
    break;
 
4869
 
 
4870
  case 67:
 
4871
#line 765 "parse.y"
 
4872
    {
 
4873
                        (yyval.node) = NEW_MASGN(list_append((yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node)), 0);
 
4874
                    }
 
4875
    break;
 
4876
 
 
4877
  case 68:
 
4878
#line 769 "parse.y"
 
4879
    {
 
4880
                        (yyval.node) = NEW_MASGN((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
4881
                    }
 
4882
    break;
 
4883
 
 
4884
  case 69:
 
4885
#line 773 "parse.y"
 
4886
    {
 
4887
                        (yyval.node) = NEW_MASGN((yyvsp[(1) - (2)].node), -1);
 
4888
                    }
 
4889
    break;
 
4890
 
 
4891
  case 70:
 
4892
#line 777 "parse.y"
 
4893
    {
 
4894
                        (yyval.node) = NEW_MASGN(0, (yyvsp[(2) - (2)].node));
 
4895
                    }
 
4896
    break;
 
4897
 
 
4898
  case 71:
 
4899
#line 781 "parse.y"
 
4900
    {
 
4901
                        (yyval.node) = NEW_MASGN(0, -1);
 
4902
                    }
 
4903
    break;
 
4904
 
 
4905
  case 73:
 
4906
#line 788 "parse.y"
 
4907
    {
 
4908
                        (yyval.node) = (yyvsp[(2) - (3)].node);
 
4909
                    }
 
4910
    break;
 
4911
 
 
4912
  case 74:
 
4913
#line 794 "parse.y"
 
4914
    {
 
4915
                        (yyval.node) = NEW_LIST((yyvsp[(1) - (2)].node));
 
4916
                    }
 
4917
    break;
 
4918
 
 
4919
  case 75:
 
4920
#line 798 "parse.y"
 
4921
    {
 
4922
                        (yyval.node) = list_append((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node));
 
4923
                    }
 
4924
    break;
 
4925
 
 
4926
  case 76:
 
4927
#line 804 "parse.y"
 
4928
    {
 
4929
                        (yyval.node) = assignable((yyvsp[(1) - (1)].id), 0);
 
4930
                    }
 
4931
    break;
 
4932
 
 
4933
  case 77:
 
4934
#line 808 "parse.y"
 
4935
    {
 
4936
                        (yyval.node) = aryset((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
 
4937
                    }
 
4938
    break;
 
4939
 
 
4940
  case 78:
 
4941
#line 812 "parse.y"
 
4942
    {
 
4943
                        (yyval.node) = attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
 
4944
                    }
 
4945
    break;
 
4946
 
 
4947
  case 79:
 
4948
#line 816 "parse.y"
 
4949
    {
 
4950
                        (yyval.node) = attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
 
4951
                    }
 
4952
    break;
 
4953
 
 
4954
  case 80:
 
4955
#line 820 "parse.y"
 
4956
    {
 
4957
                        (yyval.node) = attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
 
4958
                    }
 
4959
    break;
 
4960
 
 
4961
  case 81:
 
4962
#line 824 "parse.y"
 
4963
    {
 
4964
                        if (in_def || in_single)
 
4965
                            yyerror("dynamic constant assignment");
 
4966
                        (yyval.node) = NEW_CDECL(0, 0, NEW_COLON2((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id)));
 
4967
                    }
 
4968
    break;
 
4969
 
 
4970
  case 82:
 
4971
#line 830 "parse.y"
 
4972
    {
 
4973
                        if (in_def || in_single)
 
4974
                            yyerror("dynamic constant assignment");
 
4975
                        (yyval.node) = NEW_CDECL(0, 0, NEW_COLON3((yyvsp[(2) - (2)].id)));
 
4976
                    }
 
4977
    break;
 
4978
 
 
4979
  case 83:
 
4980
#line 836 "parse.y"
 
4981
    {
 
4982
                        rb_backref_error((yyvsp[(1) - (1)].node));
 
4983
                        (yyval.node) = 0;
 
4984
                    }
 
4985
    break;
 
4986
 
 
4987
  case 84:
 
4988
#line 843 "parse.y"
 
4989
    {
 
4990
                        (yyval.node) = assignable((yyvsp[(1) - (1)].id), 0);
 
4991
                    }
 
4992
    break;
 
4993
 
 
4994
  case 85:
 
4995
#line 847 "parse.y"
 
4996
    {
 
4997
                        (yyval.node) = aryset((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
 
4998
                    }
 
4999
    break;
 
5000
 
 
5001
  case 86:
 
5002
#line 851 "parse.y"
 
5003
    {
 
5004
                        (yyval.node) = attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
 
5005
                    }
 
5006
    break;
 
5007
 
 
5008
  case 87:
 
5009
#line 855 "parse.y"
 
5010
    {
 
5011
                        (yyval.node) = attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
 
5012
                    }
 
5013
    break;
 
5014
 
 
5015
  case 88:
 
5016
#line 859 "parse.y"
 
5017
    {
 
5018
                        (yyval.node) = attrset((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
 
5019
                    }
 
5020
    break;
 
5021
 
 
5022
  case 89:
 
5023
#line 863 "parse.y"
 
5024
    {
 
5025
                        if (in_def || in_single)
 
5026
                            yyerror("dynamic constant assignment");
 
5027
                        (yyval.node) = NEW_CDECL(0, 0, NEW_COLON2((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id)));
 
5028
                    }
 
5029
    break;
 
5030
 
 
5031
  case 90:
 
5032
#line 869 "parse.y"
 
5033
    {
 
5034
                        if (in_def || in_single)
 
5035
                            yyerror("dynamic constant assignment");
 
5036
                        (yyval.node) = NEW_CDECL(0, 0, NEW_COLON3((yyvsp[(2) - (2)].id)));
 
5037
                    }
 
5038
    break;
 
5039
 
 
5040
  case 91:
 
5041
#line 875 "parse.y"
 
5042
    {
 
5043
                        rb_backref_error((yyvsp[(1) - (1)].node));
 
5044
                        (yyval.node) = 0;
 
5045
                    }
 
5046
    break;
 
5047
 
 
5048
  case 92:
 
5049
#line 882 "parse.y"
 
5050
    {
 
5051
                        yyerror("class/module name must be CONSTANT");
 
5052
                    }
 
5053
    break;
 
5054
 
 
5055
  case 94:
 
5056
#line 889 "parse.y"
 
5057
    {
 
5058
                        (yyval.node) = NEW_COLON3((yyvsp[(2) - (2)].id));
 
5059
                    }
 
5060
    break;
 
5061
 
 
5062
  case 95:
 
5063
#line 893 "parse.y"
 
5064
    {
 
5065
                        (yyval.node) = NEW_COLON2(0, (yyval.node));
 
5066
                    }
 
5067
    break;
 
5068
 
 
5069
  case 96:
 
5070
#line 897 "parse.y"
 
5071
    {
 
5072
                        (yyval.node) = NEW_COLON2((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
 
5073
                    }
 
5074
    break;
 
5075
 
 
5076
  case 100:
 
5077
#line 906 "parse.y"
 
5078
    {
 
5079
                        lex_state = EXPR_END;
 
5080
                        (yyval.id) = (yyvsp[(1) - (1)].id);
 
5081
                    }
 
5082
    break;
 
5083
 
 
5084
  case 101:
 
5085
#line 911 "parse.y"
 
5086
    {
 
5087
                        lex_state = EXPR_END;
 
5088
                        (yyval.id) = (yyvsp[(1) - (1)].id);
 
5089
                    }
 
5090
    break;
 
5091
 
 
5092
  case 104:
 
5093
#line 922 "parse.y"
 
5094
    {
 
5095
                        (yyval.node) = NEW_LIT(ID2SYM((yyvsp[(1) - (1)].id)));
 
5096
                    }
 
5097
    break;
 
5098
 
 
5099
  case 106:
 
5100
#line 929 "parse.y"
 
5101
    {
 
5102
                        (yyval.node) = NEW_UNDEF((yyvsp[(1) - (1)].node));
 
5103
                    }
 
5104
    break;
 
5105
 
 
5106
  case 107:
 
5107
#line 932 "parse.y"
 
5108
    {lex_state = EXPR_FNAME;}
 
5109
    break;
 
5110
 
 
5111
  case 108:
 
5112
#line 933 "parse.y"
 
5113
    {
 
5114
                        (yyval.node) = block_append((yyvsp[(1) - (4)].node), NEW_UNDEF((yyvsp[(4) - (4)].node)));
 
5115
                    }
 
5116
    break;
 
5117
 
 
5118
  case 109:
 
5119
#line 938 "parse.y"
 
5120
    { (yyval.id) = '|'; }
 
5121
    break;
 
5122
 
 
5123
  case 110:
 
5124
#line 939 "parse.y"
 
5125
    { (yyval.id) = '^'; }
 
5126
    break;
 
5127
 
 
5128
  case 111:
 
5129
#line 940 "parse.y"
 
5130
    { (yyval.id) = '&'; }
 
5131
    break;
 
5132
 
 
5133
  case 112:
 
5134
#line 941 "parse.y"
 
5135
    { (yyval.id) = tCMP; }
 
5136
    break;
 
5137
 
 
5138
  case 113:
 
5139
#line 942 "parse.y"
 
5140
    { (yyval.id) = tEQ; }
 
5141
    break;
 
5142
 
 
5143
  case 114:
 
5144
#line 943 "parse.y"
 
5145
    { (yyval.id) = tEQQ; }
 
5146
    break;
 
5147
 
 
5148
  case 115:
 
5149
#line 944 "parse.y"
 
5150
    { (yyval.id) = tMATCH; }
 
5151
    break;
 
5152
 
 
5153
  case 116:
 
5154
#line 945 "parse.y"
 
5155
    { (yyval.id) = '>'; }
 
5156
    break;
 
5157
 
 
5158
  case 117:
 
5159
#line 946 "parse.y"
 
5160
    { (yyval.id) = tGEQ; }
 
5161
    break;
 
5162
 
 
5163
  case 118:
 
5164
#line 947 "parse.y"
 
5165
    { (yyval.id) = '<'; }
 
5166
    break;
 
5167
 
 
5168
  case 119:
 
5169
#line 948 "parse.y"
 
5170
    { (yyval.id) = tLEQ; }
 
5171
    break;
 
5172
 
 
5173
  case 120:
 
5174
#line 949 "parse.y"
 
5175
    { (yyval.id) = tLSHFT; }
 
5176
    break;
 
5177
 
 
5178
  case 121:
 
5179
#line 950 "parse.y"
 
5180
    { (yyval.id) = tRSHFT; }
 
5181
    break;
 
5182
 
 
5183
  case 122:
 
5184
#line 951 "parse.y"
 
5185
    { (yyval.id) = '+'; }
 
5186
    break;
 
5187
 
 
5188
  case 123:
 
5189
#line 952 "parse.y"
 
5190
    { (yyval.id) = '-'; }
 
5191
    break;
 
5192
 
 
5193
  case 124:
 
5194
#line 953 "parse.y"
 
5195
    { (yyval.id) = '*'; }
 
5196
    break;
 
5197
 
 
5198
  case 125:
 
5199
#line 954 "parse.y"
 
5200
    { (yyval.id) = '*'; }
 
5201
    break;
 
5202
 
 
5203
  case 126:
 
5204
#line 955 "parse.y"
 
5205
    { (yyval.id) = '/'; }
 
5206
    break;
 
5207
 
 
5208
  case 127:
 
5209
#line 956 "parse.y"
 
5210
    { (yyval.id) = '%'; }
 
5211
    break;
 
5212
 
 
5213
  case 128:
 
5214
#line 957 "parse.y"
 
5215
    { (yyval.id) = tPOW; }
 
5216
    break;
 
5217
 
 
5218
  case 129:
 
5219
#line 958 "parse.y"
 
5220
    { (yyval.id) = '~'; }
 
5221
    break;
 
5222
 
 
5223
  case 130:
 
5224
#line 959 "parse.y"
 
5225
    { (yyval.id) = tUPLUS; }
 
5226
    break;
 
5227
 
 
5228
  case 131:
 
5229
#line 960 "parse.y"
 
5230
    { (yyval.id) = tUMINUS; }
 
5231
    break;
 
5232
 
 
5233
  case 132:
 
5234
#line 961 "parse.y"
 
5235
    { (yyval.id) = tAREF; }
 
5236
    break;
 
5237
 
 
5238
  case 133:
 
5239
#line 962 "parse.y"
 
5240
    { (yyval.id) = tASET; }
 
5241
    break;
 
5242
 
 
5243
  case 134:
 
5244
#line 963 "parse.y"
 
5245
    { (yyval.id) = '`'; }
 
5246
    break;
 
5247
 
 
5248
  case 175:
 
5249
#line 976 "parse.y"
 
5250
    {
 
5251
                        (yyval.node) = node_assign((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
5252
                    }
 
5253
    break;
 
5254
 
 
5255
  case 176:
 
5256
#line 980 "parse.y"
 
5257
    {
 
5258
                        (yyval.node) = node_assign((yyvsp[(1) - (5)].node), NEW_RESCUE((yyvsp[(3) - (5)].node), NEW_RESBODY(0,(yyvsp[(5) - (5)].node),0), 0));
 
5259
                    }
 
5260
    break;
 
5261
 
 
5262
  case 177:
 
5263
#line 984 "parse.y"
 
5264
    {
 
5265
                        value_expr((yyvsp[(3) - (3)].node));
 
5266
                        if ((yyvsp[(1) - (3)].node)) {
 
5267
                            ID vid = (yyvsp[(1) - (3)].node)->nd_vid;
 
5268
                            if ((yyvsp[(2) - (3)].id) == tOROP) {
 
5269
                                (yyvsp[(1) - (3)].node)->nd_value = (yyvsp[(3) - (3)].node);
 
5270
                                (yyval.node) = NEW_OP_ASGN_OR(gettable(vid), (yyvsp[(1) - (3)].node));
 
5271
                                if (is_asgn_or_id(vid)) {
 
5272
                                    (yyval.node)->nd_aid = vid;
 
5273
                                }
 
5274
                            }
 
5275
                            else if ((yyvsp[(2) - (3)].id) == tANDOP) {
 
5276
                                (yyvsp[(1) - (3)].node)->nd_value = (yyvsp[(3) - (3)].node);
 
5277
                                (yyval.node) = NEW_OP_ASGN_AND(gettable(vid), (yyvsp[(1) - (3)].node));
 
5278
                            }
 
5279
                            else {
 
5280
                                (yyval.node) = (yyvsp[(1) - (3)].node);
 
5281
                                (yyval.node)->nd_value = call_op(gettable(vid),(yyvsp[(2) - (3)].id),1,(yyvsp[(3) - (3)].node));
 
5282
                            }
 
5283
                        }
 
5284
                        else {
 
5285
                            (yyval.node) = 0;
 
5286
                        }
 
5287
                    }
 
5288
    break;
 
5289
 
 
5290
  case 178:
 
5291
#line 1009 "parse.y"
 
5292
    {
 
5293
                        NODE *args;
 
5294
 
 
5295
                        value_expr((yyvsp[(6) - (6)].node));
 
5296
                        if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = NEW_ZARRAY();
 
5297
                        args = arg_concat((yyvsp[(6) - (6)].node), (yyvsp[(3) - (6)].node));
 
5298
                        if ((yyvsp[(5) - (6)].id) == tOROP) {
 
5299
                            (yyvsp[(5) - (6)].id) = 0;
 
5300
                        }
 
5301
                        else if ((yyvsp[(5) - (6)].id) == tANDOP) {
 
5302
                            (yyvsp[(5) - (6)].id) = 1;
 
5303
                        }
 
5304
                        (yyval.node) = NEW_OP_ASGN1((yyvsp[(1) - (6)].node), (yyvsp[(5) - (6)].id), args);
 
5305
                        fixpos((yyval.node), (yyvsp[(1) - (6)].node));
 
5306
                    }
 
5307
    break;
 
5308
 
 
5309
  case 179:
 
5310
#line 1025 "parse.y"
 
5311
    {
 
5312
                        value_expr((yyvsp[(5) - (5)].node));
 
5313
                        if ((yyvsp[(4) - (5)].id) == tOROP) {
 
5314
                            (yyvsp[(4) - (5)].id) = 0;
 
5315
                        }
 
5316
                        else if ((yyvsp[(4) - (5)].id) == tANDOP) {
 
5317
                            (yyvsp[(4) - (5)].id) = 1;
 
5318
                        }
 
5319
                        (yyval.node) = NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].node));
 
5320
                        fixpos((yyval.node), (yyvsp[(1) - (5)].node));
 
5321
                    }
 
5322
    break;
 
5323
 
 
5324
  case 180:
 
5325
#line 1037 "parse.y"
 
5326
    {
 
5327
                        value_expr((yyvsp[(5) - (5)].node));
 
5328
                        if ((yyvsp[(4) - (5)].id) == tOROP) {
 
5329
                            (yyvsp[(4) - (5)].id) = 0;
 
5330
                        }
 
5331
                        else if ((yyvsp[(4) - (5)].id) == tANDOP) {
 
5332
                            (yyvsp[(4) - (5)].id) = 1;
 
5333
                        }
 
5334
                        (yyval.node) = NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].node));
 
5335
                        fixpos((yyval.node), (yyvsp[(1) - (5)].node));
 
5336
                    }
 
5337
    break;
 
5338
 
 
5339
  case 181:
 
5340
#line 1049 "parse.y"
 
5341
    {
 
5342
                        value_expr((yyvsp[(5) - (5)].node));
 
5343
                        if ((yyvsp[(4) - (5)].id) == tOROP) {
 
5344
                            (yyvsp[(4) - (5)].id) = 0;
 
5345
                        }
 
5346
                        else if ((yyvsp[(4) - (5)].id) == tANDOP) {
 
5347
                            (yyvsp[(4) - (5)].id) = 1;
 
5348
                        }
 
5349
                        (yyval.node) = NEW_OP_ASGN2((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].node));
 
5350
                        fixpos((yyval.node), (yyvsp[(1) - (5)].node));
 
5351
                    }
 
5352
    break;
 
5353
 
 
5354
  case 182:
 
5355
#line 1061 "parse.y"
 
5356
    {
 
5357
                        yyerror("constant re-assignment");
 
5358
                        (yyval.node) = 0;
 
5359
                    }
 
5360
    break;
 
5361
 
 
5362
  case 183:
 
5363
#line 1066 "parse.y"
 
5364
    {
 
5365
                        yyerror("constant re-assignment");
 
5366
                        (yyval.node) = 0;
 
5367
                    }
 
5368
    break;
 
5369
 
 
5370
  case 184:
 
5371
#line 1071 "parse.y"
 
5372
    {
 
5373
                        rb_backref_error((yyvsp[(1) - (3)].node));
 
5374
                        (yyval.node) = 0;
 
5375
                    }
 
5376
    break;
 
5377
 
 
5378
  case 185:
 
5379
#line 1076 "parse.y"
 
5380
    {
 
5381
                        value_expr((yyvsp[(1) - (3)].node));
 
5382
                        value_expr((yyvsp[(3) - (3)].node));
 
5383
                        if (nd_type((yyvsp[(1) - (3)].node)) == NODE_LIT && FIXNUM_P((yyvsp[(1) - (3)].node)->nd_lit) &&
 
5384
                            nd_type((yyvsp[(3) - (3)].node)) == NODE_LIT && FIXNUM_P((yyvsp[(3) - (3)].node)->nd_lit)) {
 
5385
                            (yyvsp[(1) - (3)].node)->nd_lit = rb_range_new((yyvsp[(1) - (3)].node)->nd_lit, (yyvsp[(3) - (3)].node)->nd_lit, Qfalse);
 
5386
                            (yyval.node) = (yyvsp[(1) - (3)].node);
 
5387
                        }
 
5388
                        else {
 
5389
                            (yyval.node) = NEW_DOT2((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
5390
                        }
 
5391
                    }
 
5392
    break;
 
5393
 
 
5394
  case 186:
 
5395
#line 1089 "parse.y"
 
5396
    {
 
5397
                        value_expr((yyvsp[(1) - (3)].node));
 
5398
                        value_expr((yyvsp[(3) - (3)].node));
 
5399
                        if (nd_type((yyvsp[(1) - (3)].node)) == NODE_LIT && FIXNUM_P((yyvsp[(1) - (3)].node)->nd_lit) &&
 
5400
                            nd_type((yyvsp[(3) - (3)].node)) == NODE_LIT && FIXNUM_P((yyvsp[(3) - (3)].node)->nd_lit)) {
 
5401
                            (yyvsp[(1) - (3)].node)->nd_lit = rb_range_new((yyvsp[(1) - (3)].node)->nd_lit, (yyvsp[(3) - (3)].node)->nd_lit, Qtrue);
 
5402
                            (yyval.node) = (yyvsp[(1) - (3)].node);
 
5403
                        }
 
5404
                        else {
 
5405
                            (yyval.node) = NEW_DOT3((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
5406
                        }
 
5407
                    }
 
5408
    break;
 
5409
 
 
5410
  case 187:
 
5411
#line 1102 "parse.y"
 
5412
    {
 
5413
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '+', 1, (yyvsp[(3) - (3)].node));
 
5414
                    }
 
5415
    break;
 
5416
 
 
5417
  case 188:
 
5418
#line 1106 "parse.y"
 
5419
    {
 
5420
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '-', 1, (yyvsp[(3) - (3)].node));
 
5421
                    }
 
5422
    break;
 
5423
 
 
5424
  case 189:
 
5425
#line 1110 "parse.y"
 
5426
    {
 
5427
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '*', 1, (yyvsp[(3) - (3)].node));
 
5428
                    }
 
5429
    break;
 
5430
 
 
5431
  case 190:
 
5432
#line 1114 "parse.y"
 
5433
    {
 
5434
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '/', 1, (yyvsp[(3) - (3)].node));
 
5435
                    }
 
5436
    break;
 
5437
 
 
5438
  case 191:
 
5439
#line 1118 "parse.y"
 
5440
    {
 
5441
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '%', 1, (yyvsp[(3) - (3)].node));
 
5442
                    }
 
5443
    break;
 
5444
 
 
5445
  case 192:
 
5446
#line 1122 "parse.y"
 
5447
    {
 
5448
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), tPOW, 1, (yyvsp[(3) - (3)].node));
 
5449
                    }
 
5450
    break;
 
5451
 
 
5452
  case 193:
 
5453
#line 1126 "parse.y"
 
5454
    {
 
5455
                        (yyval.node) = call_op(call_op((yyvsp[(2) - (4)].node), tPOW, 1, (yyvsp[(4) - (4)].node)), tUMINUS, 0, 0);
 
5456
                    }
 
5457
    break;
 
5458
 
 
5459
  case 194:
 
5460
#line 1130 "parse.y"
 
5461
    {
 
5462
                        (yyval.node) = call_op(call_op((yyvsp[(2) - (4)].node), tPOW, 1, (yyvsp[(4) - (4)].node)), tUMINUS, 0, 0);
 
5463
                    }
 
5464
    break;
 
5465
 
 
5466
  case 195:
 
5467
#line 1134 "parse.y"
 
5468
    {
 
5469
                        if ((yyvsp[(2) - (2)].node) && nd_type((yyvsp[(2) - (2)].node)) == NODE_LIT) {
 
5470
                            (yyval.node) = (yyvsp[(2) - (2)].node);
 
5471
                        }
 
5472
                        else {
 
5473
                            (yyval.node) = call_op((yyvsp[(2) - (2)].node), tUPLUS, 0, 0);
 
5474
                        }
 
5475
                    }
 
5476
    break;
 
5477
 
 
5478
  case 196:
 
5479
#line 1143 "parse.y"
 
5480
    {
 
5481
                        (yyval.node) = call_op((yyvsp[(2) - (2)].node), tUMINUS, 0, 0);
 
5482
                    }
 
5483
    break;
 
5484
 
 
5485
  case 197:
 
5486
#line 1147 "parse.y"
 
5487
    {
 
5488
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '|', 1, (yyvsp[(3) - (3)].node));
 
5489
                    }
 
5490
    break;
 
5491
 
 
5492
  case 198:
 
5493
#line 1151 "parse.y"
 
5494
    {
 
5495
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '^', 1, (yyvsp[(3) - (3)].node));
 
5496
                    }
 
5497
    break;
 
5498
 
 
5499
  case 199:
 
5500
#line 1155 "parse.y"
 
5501
    {
 
5502
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '&', 1, (yyvsp[(3) - (3)].node));
 
5503
                    }
 
5504
    break;
 
5505
 
 
5506
  case 200:
 
5507
#line 1159 "parse.y"
 
5508
    {
 
5509
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), tCMP, 1, (yyvsp[(3) - (3)].node));
 
5510
                    }
 
5511
    break;
 
5512
 
 
5513
  case 201:
 
5514
#line 1163 "parse.y"
 
5515
    {
 
5516
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '>', 1, (yyvsp[(3) - (3)].node));
 
5517
                    }
 
5518
    break;
 
5519
 
 
5520
  case 202:
 
5521
#line 1167 "parse.y"
 
5522
    {
 
5523
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), tGEQ, 1, (yyvsp[(3) - (3)].node));
 
5524
                    }
 
5525
    break;
 
5526
 
 
5527
  case 203:
 
5528
#line 1171 "parse.y"
 
5529
    {
 
5530
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), '<', 1, (yyvsp[(3) - (3)].node));
 
5531
                    }
 
5532
    break;
 
5533
 
 
5534
  case 204:
 
5535
#line 1175 "parse.y"
 
5536
    {
 
5537
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), tLEQ, 1, (yyvsp[(3) - (3)].node));
 
5538
                    }
 
5539
    break;
 
5540
 
 
5541
  case 205:
 
5542
#line 1179 "parse.y"
 
5543
    {
 
5544
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), tEQ, 1, (yyvsp[(3) - (3)].node));
 
5545
                    }
 
5546
    break;
 
5547
 
 
5548
  case 206:
 
5549
#line 1183 "parse.y"
 
5550
    {
 
5551
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), tEQQ, 1, (yyvsp[(3) - (3)].node));
 
5552
                    }
 
5553
    break;
 
5554
 
 
5555
  case 207:
 
5556
#line 1187 "parse.y"
 
5557
    {
 
5558
                        (yyval.node) = NEW_NOT(call_op((yyvsp[(1) - (3)].node), tEQ, 1, (yyvsp[(3) - (3)].node)));
 
5559
                    }
 
5560
    break;
 
5561
 
 
5562
  case 208:
 
5563
#line 1191 "parse.y"
 
5564
    {
 
5565
                        (yyval.node) = match_gen((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
5566
                    }
 
5567
    break;
 
5568
 
 
5569
  case 209:
 
5570
#line 1195 "parse.y"
 
5571
    {
 
5572
                        (yyval.node) = NEW_NOT(match_gen((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node)));
 
5573
                    }
 
5574
    break;
 
5575
 
 
5576
  case 210:
 
5577
#line 1199 "parse.y"
 
5578
    {
 
5579
                        (yyval.node) = NEW_NOT(cond((yyvsp[(2) - (2)].node)));
 
5580
                    }
 
5581
    break;
 
5582
 
 
5583
  case 211:
 
5584
#line 1203 "parse.y"
 
5585
    {
 
5586
                        (yyval.node) = call_op((yyvsp[(2) - (2)].node), '~', 0, 0);
 
5587
                    }
 
5588
    break;
 
5589
 
 
5590
  case 212:
 
5591
#line 1207 "parse.y"
 
5592
    {
 
5593
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), tLSHFT, 1, (yyvsp[(3) - (3)].node));
 
5594
                    }
 
5595
    break;
 
5596
 
 
5597
  case 213:
 
5598
#line 1211 "parse.y"
 
5599
    {
 
5600
                        (yyval.node) = call_op((yyvsp[(1) - (3)].node), tRSHFT, 1, (yyvsp[(3) - (3)].node));
 
5601
                    }
 
5602
    break;
 
5603
 
 
5604
  case 214:
 
5605
#line 1215 "parse.y"
 
5606
    {
 
5607
                        (yyval.node) = logop(NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
5608
                    }
 
5609
    break;
 
5610
 
 
5611
  case 215:
 
5612
#line 1219 "parse.y"
 
5613
    {
 
5614
                        (yyval.node) = logop(NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
5615
                    }
 
5616
    break;
 
5617
 
 
5618
  case 216:
 
5619
#line 1222 "parse.y"
 
5620
    {in_defined = 1;}
 
5621
    break;
 
5622
 
 
5623
  case 217:
 
5624
#line 1223 "parse.y"
 
5625
    {
 
5626
                        in_defined = 0;
 
5627
                        (yyval.node) = NEW_DEFINED((yyvsp[(4) - (4)].node));
 
5628
                    }
 
5629
    break;
 
5630
 
 
5631
  case 218:
 
5632
#line 1228 "parse.y"
 
5633
    {
 
5634
                        (yyval.node) = NEW_IF(cond((yyvsp[(1) - (5)].node)), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node));
 
5635
                        fixpos((yyval.node), (yyvsp[(1) - (5)].node));
 
5636
                    }
 
5637
    break;
 
5638
 
 
5639
  case 219:
 
5640
#line 1233 "parse.y"
 
5641
    {
 
5642
                        (yyval.node) = (yyvsp[(1) - (1)].node);
 
5643
                    }
 
5644
    break;
 
5645
 
 
5646
  case 220:
 
5647
#line 1239 "parse.y"
 
5648
    {
 
5649
                        value_expr((yyvsp[(1) - (1)].node));
 
5650
                        (yyval.node) = (yyvsp[(1) - (1)].node);
 
5651
                    }
 
5652
    break;
 
5653
 
 
5654
  case 222:
 
5655
#line 1247 "parse.y"
 
5656
    {
 
5657
                        rb_warn("parenthesize argument(s) for future version");
 
5658
                        (yyval.node) = NEW_LIST((yyvsp[(1) - (2)].node));
 
5659
                    }
 
5660
    break;
 
5661
 
 
5662
  case 223:
 
5663
#line 1252 "parse.y"
 
5664
    {
 
5665
                        (yyval.node) = (yyvsp[(1) - (2)].node);
 
5666
                    }
 
5667
    break;
 
5668
 
 
5669
  case 224:
 
5670
#line 1256 "parse.y"
 
5671
    {
 
5672
                        value_expr((yyvsp[(4) - (5)].node));
 
5673
                        (yyval.node) = arg_concat((yyvsp[(1) - (5)].node), (yyvsp[(4) - (5)].node));
 
5674
                    }
 
5675
    break;
 
5676
 
 
5677
  case 225:
 
5678
#line 1261 "parse.y"
 
5679
    {
 
5680
                        (yyval.node) = NEW_LIST(NEW_HASH((yyvsp[(1) - (2)].node)));
 
5681
                    }
 
5682
    break;
 
5683
 
 
5684
  case 226:
 
5685
#line 1265 "parse.y"
 
5686
    {
 
5687
                        value_expr((yyvsp[(2) - (3)].node));
 
5688
                        (yyval.node) = NEW_NEWLINE(NEW_SPLAT((yyvsp[(2) - (3)].node)));
 
5689
                    }
 
5690
    break;
 
5691
 
 
5692
  case 227:
 
5693
#line 1272 "parse.y"
 
5694
    {
 
5695
                        (yyval.node) = (yyvsp[(2) - (3)].node);
 
5696
                    }
 
5697
    break;
 
5698
 
 
5699
  case 228:
 
5700
#line 1276 "parse.y"
 
5701
    {
 
5702
                        (yyval.node) = (yyvsp[(2) - (4)].node);
 
5703
                    }
 
5704
    break;
 
5705
 
 
5706
  case 229:
 
5707
#line 1280 "parse.y"
 
5708
    {
 
5709
                        rb_warn("parenthesize argument for future version");
 
5710
                        (yyval.node) = NEW_LIST((yyvsp[(2) - (4)].node));
 
5711
                    }
 
5712
    break;
 
5713
 
 
5714
  case 230:
 
5715
#line 1285 "parse.y"
 
5716
    {
 
5717
                        rb_warn("parenthesize argument for future version");
 
5718
                        (yyval.node) = list_append((yyvsp[(2) - (6)].node), (yyvsp[(4) - (6)].node));
 
5719
                    }
 
5720
    break;
 
5721
 
 
5722
  case 233:
 
5723
#line 1296 "parse.y"
 
5724
    {
 
5725
                        rb_warn("parenthesize argument(s) for future version");
 
5726
                        (yyval.node) = NEW_LIST((yyvsp[(1) - (1)].node));
 
5727
                    }
 
5728
    break;
 
5729
 
 
5730
  case 234:
 
5731
#line 1301 "parse.y"
 
5732
    {
 
5733
                        (yyval.node) = arg_blk_pass((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
 
5734
                    }
 
5735
    break;
 
5736
 
 
5737
  case 235:
 
5738
#line 1305 "parse.y"
 
5739
    {
 
5740
                        (yyval.node) = arg_concat((yyvsp[(1) - (5)].node), (yyvsp[(4) - (5)].node));
 
5741
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(5) - (5)].node));
 
5742
                    }
 
5743
    break;
 
5744
 
 
5745
  case 236:
 
5746
#line 1310 "parse.y"
 
5747
    {
 
5748
                        (yyval.node) = NEW_LIST(NEW_HASH((yyvsp[(1) - (2)].node)));
 
5749
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(2) - (2)].node));
 
5750
                    }
 
5751
    break;
 
5752
 
 
5753
  case 237:
 
5754
#line 1315 "parse.y"
 
5755
    {
 
5756
                        (yyval.node) = arg_concat(NEW_LIST(NEW_HASH((yyvsp[(1) - (5)].node))), (yyvsp[(4) - (5)].node));
 
5757
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(5) - (5)].node));
 
5758
                    }
 
5759
    break;
 
5760
 
 
5761
  case 238:
 
5762
#line 1320 "parse.y"
 
5763
    {
 
5764
                        (yyval.node) = list_append((yyvsp[(1) - (4)].node), NEW_HASH((yyvsp[(3) - (4)].node)));
 
5765
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(4) - (4)].node));
 
5766
                    }
 
5767
    break;
 
5768
 
 
5769
  case 239:
 
5770
#line 1325 "parse.y"
 
5771
    {
 
5772
                        value_expr((yyvsp[(6) - (7)].node));
 
5773
                        (yyval.node) = arg_concat(list_append((yyvsp[(1) - (7)].node), NEW_HASH((yyvsp[(3) - (7)].node))), (yyvsp[(6) - (7)].node));
 
5774
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(7) - (7)].node));
 
5775
                    }
 
5776
    break;
 
5777
 
 
5778
  case 240:
 
5779
#line 1331 "parse.y"
 
5780
    {
 
5781
                        (yyval.node) = arg_blk_pass(NEW_SPLAT((yyvsp[(2) - (3)].node)), (yyvsp[(3) - (3)].node));
 
5782
                    }
 
5783
    break;
 
5784
 
 
5785
  case 242:
 
5786
#line 1338 "parse.y"
 
5787
    {
 
5788
                        (yyval.node) = arg_blk_pass(list_concat(NEW_LIST((yyvsp[(1) - (4)].node)),(yyvsp[(3) - (4)].node)), (yyvsp[(4) - (4)].node));
 
5789
                    }
 
5790
    break;
 
5791
 
 
5792
  case 243:
 
5793
#line 1342 "parse.y"
 
5794
    {
 
5795
                        (yyval.node) = arg_blk_pass((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
5796
                    }
 
5797
    break;
 
5798
 
 
5799
  case 244:
 
5800
#line 1346 "parse.y"
 
5801
    {
 
5802
                        (yyval.node) = arg_concat(NEW_LIST((yyvsp[(1) - (5)].node)), (yyvsp[(4) - (5)].node));
 
5803
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(5) - (5)].node));
 
5804
                    }
 
5805
    break;
 
5806
 
 
5807
  case 245:
 
5808
#line 1351 "parse.y"
 
5809
    {
 
5810
                       (yyval.node) = arg_concat(list_concat(NEW_LIST((yyvsp[(1) - (7)].node)),(yyvsp[(3) - (7)].node)), (yyvsp[(6) - (7)].node));
 
5811
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(7) - (7)].node));
 
5812
                    }
 
5813
    break;
 
5814
 
 
5815
  case 246:
 
5816
#line 1356 "parse.y"
 
5817
    {
 
5818
                        (yyval.node) = NEW_LIST(NEW_HASH((yyvsp[(1) - (2)].node)));
 
5819
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(2) - (2)].node));
 
5820
                    }
 
5821
    break;
 
5822
 
 
5823
  case 247:
 
5824
#line 1361 "parse.y"
 
5825
    {
 
5826
                        (yyval.node) = arg_concat(NEW_LIST(NEW_HASH((yyvsp[(1) - (5)].node))), (yyvsp[(4) - (5)].node));
 
5827
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(5) - (5)].node));
 
5828
                    }
 
5829
    break;
 
5830
 
 
5831
  case 248:
 
5832
#line 1366 "parse.y"
 
5833
    {
 
5834
                        (yyval.node) = list_append(NEW_LIST((yyvsp[(1) - (4)].node)), NEW_HASH((yyvsp[(3) - (4)].node)));
 
5835
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(4) - (4)].node));
 
5836
                    }
 
5837
    break;
 
5838
 
 
5839
  case 249:
 
5840
#line 1371 "parse.y"
 
5841
    {
 
5842
                        (yyval.node) = list_append(list_concat(NEW_LIST((yyvsp[(1) - (6)].node)),(yyvsp[(3) - (6)].node)), NEW_HASH((yyvsp[(5) - (6)].node)));
 
5843
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(6) - (6)].node));
 
5844
                    }
 
5845
    break;
 
5846
 
 
5847
  case 250:
 
5848
#line 1376 "parse.y"
 
5849
    {
 
5850
                        (yyval.node) = arg_concat(list_append(NEW_LIST((yyvsp[(1) - (7)].node)), NEW_HASH((yyvsp[(3) - (7)].node))), (yyvsp[(6) - (7)].node));
 
5851
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(7) - (7)].node));
 
5852
                    }
 
5853
    break;
 
5854
 
 
5855
  case 251:
 
5856
#line 1381 "parse.y"
 
5857
    {
 
5858
                        (yyval.node) = arg_concat(list_append(list_concat(NEW_LIST((yyvsp[(1) - (9)].node)), (yyvsp[(3) - (9)].node)), NEW_HASH((yyvsp[(5) - (9)].node))), (yyvsp[(8) - (9)].node));
 
5859
                        (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(9) - (9)].node));
 
5860
                    }
 
5861
    break;
 
5862
 
 
5863
  case 252:
 
5864
#line 1386 "parse.y"
 
5865
    {
 
5866
                        (yyval.node) = arg_blk_pass(NEW_SPLAT((yyvsp[(2) - (3)].node)), (yyvsp[(3) - (3)].node));
 
5867
                    }
 
5868
    break;
 
5869
 
 
5870
  case 254:
 
5871
#line 1392 "parse.y"
 
5872
    {
 
5873
                        (yyval.num) = cmdarg_stack;
 
5874
                        CMDARG_PUSH(1);
 
5875
                    }
 
5876
    break;
 
5877
 
 
5878
  case 255:
 
5879
#line 1397 "parse.y"
 
5880
    {
 
5881
                        /* CMDARG_POP() */
 
5882
                        cmdarg_stack = (yyvsp[(1) - (2)].num);
 
5883
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
5884
                    }
 
5885
    break;
 
5886
 
 
5887
  case 257:
 
5888
#line 1405 "parse.y"
 
5889
    {lex_state = EXPR_ENDARG;}
 
5890
    break;
 
5891
 
 
5892
  case 258:
 
5893
#line 1406 "parse.y"
 
5894
    {
 
5895
                        rb_warn("don't put space before argument parentheses");
 
5896
                        (yyval.node) = 0;
 
5897
                    }
 
5898
    break;
 
5899
 
 
5900
  case 259:
 
5901
#line 1410 "parse.y"
 
5902
    {lex_state = EXPR_ENDARG;}
 
5903
    break;
 
5904
 
 
5905
  case 260:
 
5906
#line 1411 "parse.y"
 
5907
    {
 
5908
                        rb_warn("don't put space before argument parentheses");
 
5909
                        (yyval.node) = (yyvsp[(2) - (4)].node);
 
5910
                    }
 
5911
    break;
 
5912
 
 
5913
  case 261:
 
5914
#line 1418 "parse.y"
 
5915
    {
 
5916
                        (yyval.node) = NEW_BLOCK_PASS((yyvsp[(2) - (2)].node));
 
5917
                    }
 
5918
    break;
 
5919
 
 
5920
  case 262:
 
5921
#line 1424 "parse.y"
 
5922
    {
 
5923
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
5924
                    }
 
5925
    break;
 
5926
 
 
5927
  case 264:
 
5928
#line 1431 "parse.y"
 
5929
    {
 
5930
                        (yyval.node) = NEW_LIST((yyvsp[(1) - (1)].node));
 
5931
                    }
 
5932
    break;
 
5933
 
 
5934
  case 265:
 
5935
#line 1435 "parse.y"
 
5936
    {
 
5937
                        (yyval.node) = list_append((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
5938
                    }
 
5939
    break;
 
5940
 
 
5941
  case 266:
 
5942
#line 1441 "parse.y"
 
5943
    {
 
5944
                        (yyval.node) = list_append((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
5945
                    }
 
5946
    break;
 
5947
 
 
5948
  case 267:
 
5949
#line 1445 "parse.y"
 
5950
    {
 
5951
                        (yyval.node) = arg_concat((yyvsp[(1) - (4)].node), (yyvsp[(4) - (4)].node));
 
5952
                    }
 
5953
    break;
 
5954
 
 
5955
  case 268:
 
5956
#line 1449 "parse.y"
 
5957
    {
 
5958
                        (yyval.node) = NEW_SPLAT((yyvsp[(2) - (2)].node));
 
5959
                    }
 
5960
    break;
 
5961
 
 
5962
  case 277:
 
5963
#line 1463 "parse.y"
 
5964
    {
 
5965
                        (yyval.node) = NEW_FCALL((yyvsp[(1) - (1)].id), 0);
 
5966
                    }
 
5967
    break;
 
5968
 
 
5969
  case 278:
 
5970
#line 1467 "parse.y"
 
5971
    {
 
5972
                        (yyvsp[(1) - (1)].num) = ruby_sourceline;
 
5973
                    }
 
5974
    break;
 
5975
 
 
5976
  case 279:
 
5977
#line 1472 "parse.y"
 
5978
    {
 
5979
                        if ((yyvsp[(3) - (4)].node) == NULL)
 
5980
                            (yyval.node) = NEW_NIL();
 
5981
                        else
 
5982
                            (yyval.node) = NEW_BEGIN((yyvsp[(3) - (4)].node));
 
5983
                        nd_set_line((yyval.node), (yyvsp[(1) - (4)].num));
 
5984
                    }
 
5985
    break;
 
5986
 
 
5987
  case 280:
 
5988
#line 1479 "parse.y"
 
5989
    {lex_state = EXPR_ENDARG;}
 
5990
    break;
 
5991
 
 
5992
  case 281:
 
5993
#line 1480 "parse.y"
 
5994
    {
 
5995
                        rb_warning("(...) interpreted as grouped expression");
 
5996
                        (yyval.node) = (yyvsp[(2) - (5)].node);
 
5997
                    }
 
5998
    break;
 
5999
 
 
6000
  case 282:
 
6001
#line 1485 "parse.y"
 
6002
    {
 
6003
                        if (!(yyvsp[(2) - (3)].node)) (yyval.node) = NEW_NIL();
 
6004
                        else (yyval.node) = (yyvsp[(2) - (3)].node);
 
6005
                    }
 
6006
    break;
 
6007
 
 
6008
  case 283:
 
6009
#line 1490 "parse.y"
 
6010
    {
 
6011
                        (yyval.node) = NEW_COLON2((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
 
6012
                    }
 
6013
    break;
 
6014
 
 
6015
  case 284:
 
6016
#line 1494 "parse.y"
 
6017
    {
 
6018
                        (yyval.node) = NEW_COLON3((yyvsp[(2) - (2)].id));
 
6019
                    }
 
6020
    break;
 
6021
 
 
6022
  case 285:
 
6023
#line 1498 "parse.y"
 
6024
    {
 
6025
                        if ((yyvsp[(1) - (4)].node) && nd_type((yyvsp[(1) - (4)].node)) == NODE_SELF)
 
6026
                            (yyval.node) = NEW_FCALL(tAREF, (yyvsp[(3) - (4)].node));
 
6027
                        else
 
6028
                            (yyval.node) = NEW_CALL((yyvsp[(1) - (4)].node), tAREF, (yyvsp[(3) - (4)].node));
 
6029
                        fixpos((yyval.node), (yyvsp[(1) - (4)].node));
 
6030
                    }
 
6031
    break;
 
6032
 
 
6033
  case 286:
 
6034
#line 1506 "parse.y"
 
6035
    {
 
6036
                        if ((yyvsp[(2) - (3)].node) == 0) {
 
6037
                            (yyval.node) = NEW_ZARRAY(); /* zero length array*/
 
6038
                        }
 
6039
                        else {
 
6040
                            (yyval.node) = (yyvsp[(2) - (3)].node);
 
6041
                        }
 
6042
                    }
 
6043
    break;
 
6044
 
 
6045
  case 287:
 
6046
#line 1515 "parse.y"
 
6047
    {
 
6048
                        (yyval.node) = NEW_HASH((yyvsp[(2) - (3)].node));
 
6049
                    }
 
6050
    break;
 
6051
 
 
6052
  case 288:
 
6053
#line 1519 "parse.y"
 
6054
    {
 
6055
                        (yyval.node) = NEW_RETURN(0);
 
6056
                    }
 
6057
    break;
 
6058
 
 
6059
  case 289:
 
6060
#line 1523 "parse.y"
 
6061
    {
 
6062
                        (yyval.node) = new_yield((yyvsp[(3) - (4)].node));
 
6063
                    }
 
6064
    break;
 
6065
 
 
6066
  case 290:
 
6067
#line 1527 "parse.y"
 
6068
    {
 
6069
                        (yyval.node) = NEW_YIELD(0, Qfalse);
 
6070
                    }
 
6071
    break;
 
6072
 
 
6073
  case 291:
 
6074
#line 1531 "parse.y"
 
6075
    {
 
6076
                        (yyval.node) = NEW_YIELD(0, Qfalse);
 
6077
                    }
 
6078
    break;
 
6079
 
 
6080
  case 292:
 
6081
#line 1534 "parse.y"
 
6082
    {in_defined = 1;}
 
6083
    break;
 
6084
 
 
6085
  case 293:
 
6086
#line 1535 "parse.y"
 
6087
    {
 
6088
                        in_defined = 0;
 
6089
                        (yyval.node) = NEW_DEFINED((yyvsp[(5) - (6)].node));
 
6090
                    }
 
6091
    break;
 
6092
 
 
6093
  case 294:
 
6094
#line 1540 "parse.y"
 
6095
    {
 
6096
                        (yyvsp[(2) - (2)].node)->nd_iter = NEW_FCALL((yyvsp[(1) - (2)].id), 0);
 
6097
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
6098
                        fixpos((yyvsp[(2) - (2)].node)->nd_iter, (yyvsp[(2) - (2)].node));
 
6099
                    }
 
6100
    break;
 
6101
 
 
6102
  case 296:
 
6103
#line 1547 "parse.y"
 
6104
    {
 
6105
                        if ((yyvsp[(1) - (2)].node) && nd_type((yyvsp[(1) - (2)].node)) == NODE_BLOCK_PASS) {
 
6106
                            rb_compile_error("both block arg and actual block given");
 
6107
                        }
 
6108
                        (yyvsp[(2) - (2)].node)->nd_iter = (yyvsp[(1) - (2)].node);
 
6109
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
6110
                        fixpos((yyval.node), (yyvsp[(1) - (2)].node));
 
6111
                    }
 
6112
    break;
 
6113
 
 
6114
  case 297:
 
6115
#line 1559 "parse.y"
 
6116
    {
 
6117
                        (yyval.node) = NEW_IF(cond((yyvsp[(2) - (6)].node)), (yyvsp[(4) - (6)].node), (yyvsp[(5) - (6)].node));
 
6118
                        fixpos((yyval.node), (yyvsp[(2) - (6)].node));
 
6119
                        if (cond_negative(&(yyval.node)->nd_cond)) {
 
6120
                            NODE *tmp = (yyval.node)->nd_body;
 
6121
                            (yyval.node)->nd_body = (yyval.node)->nd_else;
 
6122
                            (yyval.node)->nd_else = tmp;
 
6123
                        }
 
6124
                    }
 
6125
    break;
 
6126
 
 
6127
  case 298:
 
6128
#line 1572 "parse.y"
 
6129
    {
 
6130
                        (yyval.node) = NEW_UNLESS(cond((yyvsp[(2) - (6)].node)), (yyvsp[(4) - (6)].node), (yyvsp[(5) - (6)].node));
 
6131
                        fixpos((yyval.node), (yyvsp[(2) - (6)].node));
 
6132
                        if (cond_negative(&(yyval.node)->nd_cond)) {
 
6133
                            NODE *tmp = (yyval.node)->nd_body;
 
6134
                            (yyval.node)->nd_body = (yyval.node)->nd_else;
 
6135
                            (yyval.node)->nd_else = tmp;
 
6136
                        }
 
6137
                    }
 
6138
    break;
 
6139
 
 
6140
  case 299:
 
6141
#line 1581 "parse.y"
 
6142
    {COND_PUSH(1);}
 
6143
    break;
 
6144
 
 
6145
  case 300:
 
6146
#line 1581 "parse.y"
 
6147
    {COND_POP();}
 
6148
    break;
 
6149
 
 
6150
  case 301:
 
6151
#line 1584 "parse.y"
 
6152
    {
 
6153
                        (yyval.node) = NEW_WHILE(cond((yyvsp[(3) - (7)].node)), (yyvsp[(6) - (7)].node), 1);
 
6154
                        fixpos((yyval.node), (yyvsp[(3) - (7)].node));
 
6155
                        if (cond_negative(&(yyval.node)->nd_cond)) {
 
6156
                            nd_set_type((yyval.node), NODE_UNTIL);
 
6157
                        }
 
6158
                    }
 
6159
    break;
 
6160
 
 
6161
  case 302:
 
6162
#line 1591 "parse.y"
 
6163
    {COND_PUSH(1);}
 
6164
    break;
 
6165
 
 
6166
  case 303:
 
6167
#line 1591 "parse.y"
 
6168
    {COND_POP();}
 
6169
    break;
 
6170
 
 
6171
  case 304:
 
6172
#line 1594 "parse.y"
 
6173
    {
 
6174
                        (yyval.node) = NEW_UNTIL(cond((yyvsp[(3) - (7)].node)), (yyvsp[(6) - (7)].node), 1);
 
6175
                        fixpos((yyval.node), (yyvsp[(3) - (7)].node));
 
6176
                        if (cond_negative(&(yyval.node)->nd_cond)) {
 
6177
                            nd_set_type((yyval.node), NODE_WHILE);
 
6178
                        }
 
6179
                    }
 
6180
    break;
 
6181
 
 
6182
  case 305:
 
6183
#line 1604 "parse.y"
 
6184
    {
 
6185
                        (yyval.node) = NEW_CASE((yyvsp[(2) - (5)].node), (yyvsp[(4) - (5)].node));
 
6186
                        fixpos((yyval.node), (yyvsp[(2) - (5)].node));
 
6187
                    }
 
6188
    break;
 
6189
 
 
6190
  case 306:
 
6191
#line 1609 "parse.y"
 
6192
    {
 
6193
                        (yyval.node) = (yyvsp[(3) - (4)].node);
 
6194
                    }
 
6195
    break;
 
6196
 
 
6197
  case 307:
 
6198
#line 1613 "parse.y"
 
6199
    {
 
6200
                        (yyval.node) = (yyvsp[(4) - (5)].node);
 
6201
                    }
 
6202
    break;
 
6203
 
 
6204
  case 308:
 
6205
#line 1616 "parse.y"
 
6206
    {COND_PUSH(1);}
 
6207
    break;
 
6208
 
 
6209
  case 309:
 
6210
#line 1616 "parse.y"
 
6211
    {COND_POP();}
 
6212
    break;
 
6213
 
 
6214
  case 310:
 
6215
#line 1619 "parse.y"
 
6216
    {
 
6217
                        (yyval.node) = NEW_FOR((yyvsp[(2) - (9)].node), (yyvsp[(5) - (9)].node), (yyvsp[(8) - (9)].node));
 
6218
                        fixpos((yyval.node), (yyvsp[(2) - (9)].node));
 
6219
                    }
 
6220
    break;
 
6221
 
 
6222
  case 311:
 
6223
#line 1624 "parse.y"
 
6224
    {
 
6225
                        if (in_def || in_single)
 
6226
                            yyerror("class definition in method body");
 
6227
                        class_nest++;
 
6228
                        local_push(0);
 
6229
                        (yyval.num) = ruby_sourceline;
 
6230
                    }
 
6231
    break;
 
6232
 
 
6233
  case 312:
 
6234
#line 1633 "parse.y"
 
6235
    {
 
6236
                        (yyval.node) = NEW_CLASS((yyvsp[(2) - (6)].node), (yyvsp[(5) - (6)].node), (yyvsp[(3) - (6)].node));
 
6237
                        nd_set_line((yyval.node), (yyvsp[(4) - (6)].num));
 
6238
                        local_pop();
 
6239
                        class_nest--;
 
6240
                    }
 
6241
    break;
 
6242
 
 
6243
  case 313:
 
6244
#line 1640 "parse.y"
 
6245
    {
 
6246
                        (yyval.num) = in_def;
 
6247
                        in_def = 0;
 
6248
                    }
 
6249
    break;
 
6250
 
 
6251
  case 314:
 
6252
#line 1645 "parse.y"
 
6253
    {
 
6254
                        (yyval.num) = in_single;
 
6255
                        in_single = 0;
 
6256
                        class_nest++;
 
6257
                        local_push(0);
 
6258
                    }
 
6259
    break;
 
6260
 
 
6261
  case 315:
 
6262
#line 1653 "parse.y"
 
6263
    {
 
6264
                        (yyval.node) = NEW_SCLASS((yyvsp[(3) - (8)].node), (yyvsp[(7) - (8)].node));
 
6265
                        fixpos((yyval.node), (yyvsp[(3) - (8)].node));
 
6266
                        local_pop();
 
6267
                        class_nest--;
 
6268
                        in_def = (yyvsp[(4) - (8)].num);
 
6269
                        in_single = (yyvsp[(6) - (8)].num);
 
6270
                    }
 
6271
    break;
 
6272
 
 
6273
  case 316:
 
6274
#line 1662 "parse.y"
 
6275
    {
 
6276
                        if (in_def || in_single)
 
6277
                            yyerror("module definition in method body");
 
6278
                        class_nest++;
 
6279
                        local_push(0);
 
6280
                        (yyval.num) = ruby_sourceline;
 
6281
                    }
 
6282
    break;
 
6283
 
 
6284
  case 317:
 
6285
#line 1671 "parse.y"
 
6286
    {
 
6287
                        (yyval.node) = NEW_MODULE((yyvsp[(2) - (5)].node), (yyvsp[(4) - (5)].node));
 
6288
                        nd_set_line((yyval.node), (yyvsp[(3) - (5)].num));
 
6289
                        local_pop();
 
6290
                        class_nest--;
 
6291
                    }
 
6292
    break;
 
6293
 
 
6294
  case 318:
 
6295
#line 1678 "parse.y"
 
6296
    {
 
6297
                        (yyval.id) = cur_mid;
 
6298
                        cur_mid = (yyvsp[(2) - (2)].id);
 
6299
                        in_def++;
 
6300
                        local_push(0);
 
6301
                    }
 
6302
    break;
 
6303
 
 
6304
  case 319:
 
6305
#line 1687 "parse.y"
 
6306
    {
 
6307
                        if (!(yyvsp[(5) - (6)].node)) (yyvsp[(5) - (6)].node) = NEW_NIL();
 
6308
                        (yyval.node) = NEW_DEFN((yyvsp[(2) - (6)].id), (yyvsp[(4) - (6)].node), (yyvsp[(5) - (6)].node), NOEX_PRIVATE);
 
6309
                        fixpos((yyval.node), (yyvsp[(4) - (6)].node));
 
6310
                        local_pop();
 
6311
                        in_def--;
 
6312
                        cur_mid = (yyvsp[(3) - (6)].id);
 
6313
                    }
 
6314
    break;
 
6315
 
 
6316
  case 320:
 
6317
#line 1695 "parse.y"
 
6318
    {lex_state = EXPR_FNAME;}
 
6319
    break;
 
6320
 
 
6321
  case 321:
 
6322
#line 1696 "parse.y"
 
6323
    {
 
6324
                        in_single++;
 
6325
                        local_push(0);
 
6326
                        lex_state = EXPR_END; /* force for args */
 
6327
                    }
 
6328
    break;
 
6329
 
 
6330
  case 322:
 
6331
#line 1704 "parse.y"
 
6332
    {
 
6333
                        (yyval.node) = NEW_DEFS((yyvsp[(2) - (9)].node), (yyvsp[(5) - (9)].id), (yyvsp[(7) - (9)].node), (yyvsp[(8) - (9)].node));
 
6334
                        fixpos((yyval.node), (yyvsp[(2) - (9)].node));
 
6335
                        local_pop();
 
6336
                        in_single--;
 
6337
                    }
 
6338
    break;
 
6339
 
 
6340
  case 323:
 
6341
#line 1711 "parse.y"
 
6342
    {
 
6343
                        (yyval.node) = NEW_BREAK(0);
 
6344
                    }
 
6345
    break;
 
6346
 
 
6347
  case 324:
 
6348
#line 1715 "parse.y"
 
6349
    {
 
6350
                        (yyval.node) = NEW_NEXT(0);
 
6351
                    }
 
6352
    break;
 
6353
 
 
6354
  case 325:
 
6355
#line 1719 "parse.y"
 
6356
    {
 
6357
                        (yyval.node) = NEW_REDO();
 
6358
                    }
 
6359
    break;
 
6360
 
 
6361
  case 326:
 
6362
#line 1723 "parse.y"
 
6363
    {
 
6364
                        (yyval.node) = NEW_RETRY();
 
6365
                    }
 
6366
    break;
 
6367
 
 
6368
  case 327:
 
6369
#line 1729 "parse.y"
 
6370
    {
 
6371
                        value_expr((yyvsp[(1) - (1)].node));
 
6372
                        (yyval.node) = (yyvsp[(1) - (1)].node);
 
6373
                    }
 
6374
    break;
 
6375
 
 
6376
  case 336:
 
6377
#line 1750 "parse.y"
 
6378
    {
 
6379
                        (yyval.node) = NEW_IF(cond((yyvsp[(2) - (5)].node)), (yyvsp[(4) - (5)].node), (yyvsp[(5) - (5)].node));
 
6380
                        fixpos((yyval.node), (yyvsp[(2) - (5)].node));
 
6381
                    }
 
6382
    break;
 
6383
 
 
6384
  case 338:
 
6385
#line 1758 "parse.y"
 
6386
    {
 
6387
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
6388
                    }
 
6389
    break;
 
6390
 
 
6391
  case 342:
 
6392
#line 1769 "parse.y"
 
6393
    {
 
6394
                        (yyval.node) = (NODE*)1;
 
6395
                    }
 
6396
    break;
 
6397
 
 
6398
  case 343:
 
6399
#line 1773 "parse.y"
 
6400
    {
 
6401
                        (yyval.node) = (NODE*)1;
 
6402
                    }
 
6403
    break;
 
6404
 
 
6405
  case 344:
 
6406
#line 1777 "parse.y"
 
6407
    {
 
6408
                        (yyval.node) = (yyvsp[(2) - (3)].node);
 
6409
                    }
 
6410
    break;
 
6411
 
 
6412
  case 345:
 
6413
#line 1783 "parse.y"
 
6414
    {
 
6415
                        (yyval.vars) = dyna_push();
 
6416
                        (yyvsp[(1) - (1)].num) = ruby_sourceline;
 
6417
                    }
 
6418
    break;
 
6419
 
 
6420
  case 346:
 
6421
#line 1787 "parse.y"
 
6422
    {(yyval.vars) = ruby_dyna_vars;}
 
6423
    break;
 
6424
 
 
6425
  case 347:
 
6426
#line 1790 "parse.y"
 
6427
    {
 
6428
                        (yyval.node) = NEW_ITER((yyvsp[(3) - (6)].node), 0, dyna_init((yyvsp[(5) - (6)].node), (yyvsp[(4) - (6)].vars)));
 
6429
                        nd_set_line((yyval.node), (yyvsp[(1) - (6)].num));
 
6430
                        dyna_pop((yyvsp[(2) - (6)].vars));
 
6431
                    }
 
6432
    break;
 
6433
 
 
6434
  case 348:
 
6435
#line 1798 "parse.y"
 
6436
    {
 
6437
                        if ((yyvsp[(1) - (2)].node) && nd_type((yyvsp[(1) - (2)].node)) == NODE_BLOCK_PASS) {
 
6438
                            rb_compile_error("both block arg and actual block given");
 
6439
                        }
 
6440
                        (yyvsp[(2) - (2)].node)->nd_iter = (yyvsp[(1) - (2)].node);
 
6441
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
6442
                        fixpos((yyval.node), (yyvsp[(1) - (2)].node));
 
6443
                    }
 
6444
    break;
 
6445
 
 
6446
  case 349:
 
6447
#line 1807 "parse.y"
 
6448
    {
 
6449
                        (yyval.node) = new_call((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].node));
 
6450
                    }
 
6451
    break;
 
6452
 
 
6453
  case 350:
 
6454
#line 1811 "parse.y"
 
6455
    {
 
6456
                        (yyval.node) = new_call((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].node));
 
6457
                    }
 
6458
    break;
 
6459
 
 
6460
  case 351:
 
6461
#line 1817 "parse.y"
 
6462
    {
 
6463
                        (yyval.node) = new_fcall((yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].node));
 
6464
                        fixpos((yyval.node), (yyvsp[(2) - (2)].node));
 
6465
                    }
 
6466
    break;
 
6467
 
 
6468
  case 352:
 
6469
#line 1822 "parse.y"
 
6470
    {
 
6471
                        (yyval.node) = new_call((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].node));
 
6472
                        fixpos((yyval.node), (yyvsp[(1) - (4)].node));
 
6473
                    }
 
6474
    break;
 
6475
 
 
6476
  case 353:
 
6477
#line 1827 "parse.y"
 
6478
    {
 
6479
                        (yyval.node) = new_call((yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].node));
 
6480
                        fixpos((yyval.node), (yyvsp[(1) - (4)].node));
 
6481
                    }
 
6482
    break;
 
6483
 
 
6484
  case 354:
 
6485
#line 1832 "parse.y"
 
6486
    {
 
6487
                        (yyval.node) = new_call((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id), 0);
 
6488
                    }
 
6489
    break;
 
6490
 
 
6491
  case 355:
 
6492
#line 1836 "parse.y"
 
6493
    {
 
6494
                        (yyval.node) = new_super((yyvsp[(2) - (2)].node));
 
6495
                    }
 
6496
    break;
 
6497
 
 
6498
  case 356:
 
6499
#line 1840 "parse.y"
 
6500
    {
 
6501
                        (yyval.node) = NEW_ZSUPER();
 
6502
                    }
 
6503
    break;
 
6504
 
 
6505
  case 357:
 
6506
#line 1846 "parse.y"
 
6507
    {
 
6508
                        (yyval.vars) = dyna_push();
 
6509
                        (yyvsp[(1) - (1)].num) = ruby_sourceline;
 
6510
                    }
 
6511
    break;
 
6512
 
 
6513
  case 358:
 
6514
#line 1850 "parse.y"
 
6515
    {(yyval.vars) = ruby_dyna_vars;}
 
6516
    break;
 
6517
 
 
6518
  case 359:
 
6519
#line 1852 "parse.y"
 
6520
    {
 
6521
                        (yyval.node) = NEW_ITER((yyvsp[(3) - (6)].node), 0, dyna_init((yyvsp[(5) - (6)].node), (yyvsp[(4) - (6)].vars)));
 
6522
                        nd_set_line((yyval.node), (yyvsp[(1) - (6)].num));
 
6523
                        dyna_pop((yyvsp[(2) - (6)].vars));
 
6524
                    }
 
6525
    break;
 
6526
 
 
6527
  case 360:
 
6528
#line 1858 "parse.y"
 
6529
    {
 
6530
                        (yyval.vars) = dyna_push();
 
6531
                        (yyvsp[(1) - (1)].num) = ruby_sourceline;
 
6532
                    }
 
6533
    break;
 
6534
 
 
6535
  case 361:
 
6536
#line 1862 "parse.y"
 
6537
    {(yyval.vars) = ruby_dyna_vars;}
 
6538
    break;
 
6539
 
 
6540
  case 362:
 
6541
#line 1864 "parse.y"
 
6542
    {
 
6543
                        (yyval.node) = NEW_ITER((yyvsp[(3) - (6)].node), 0, dyna_init((yyvsp[(5) - (6)].node), (yyvsp[(4) - (6)].vars)));
 
6544
                        nd_set_line((yyval.node), (yyvsp[(1) - (6)].num));
 
6545
                        dyna_pop((yyvsp[(2) - (6)].vars));
 
6546
                    }
 
6547
    break;
 
6548
 
 
6549
  case 363:
 
6550
#line 1874 "parse.y"
 
6551
    {
 
6552
                        (yyval.node) = NEW_WHEN((yyvsp[(2) - (5)].node), (yyvsp[(4) - (5)].node), (yyvsp[(5) - (5)].node));
 
6553
                    }
 
6554
    break;
 
6555
 
 
6556
  case 365:
 
6557
#line 1880 "parse.y"
 
6558
    {
 
6559
                        (yyval.node) = list_append((yyvsp[(1) - (4)].node), NEW_WHEN((yyvsp[(4) - (4)].node), 0, 0));
 
6560
                    }
 
6561
    break;
 
6562
 
 
6563
  case 366:
 
6564
#line 1884 "parse.y"
 
6565
    {
 
6566
                        (yyval.node) = NEW_LIST(NEW_WHEN((yyvsp[(2) - (2)].node), 0, 0));
 
6567
                    }
 
6568
    break;
 
6569
 
 
6570
  case 369:
 
6571
#line 1896 "parse.y"
 
6572
    {
 
6573
                        if ((yyvsp[(3) - (6)].node)) {
 
6574
                            (yyvsp[(3) - (6)].node) = node_assign((yyvsp[(3) - (6)].node), NEW_GVAR(rb_intern("$!")));
 
6575
                            (yyvsp[(5) - (6)].node) = block_append((yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node));
 
6576
                        }
 
6577
                        (yyval.node) = NEW_RESBODY((yyvsp[(2) - (6)].node), (yyvsp[(5) - (6)].node), (yyvsp[(6) - (6)].node));
 
6578
                        fixpos((yyval.node), (yyvsp[(2) - (6)].node)?(yyvsp[(2) - (6)].node):(yyvsp[(5) - (6)].node));
 
6579
                    }
 
6580
    break;
 
6581
 
 
6582
  case 371:
 
6583
#line 1908 "parse.y"
 
6584
    {
 
6585
                        (yyval.node) = NEW_LIST((yyvsp[(1) - (1)].node));
 
6586
                    }
 
6587
    break;
 
6588
 
 
6589
  case 374:
 
6590
#line 1916 "parse.y"
 
6591
    {
 
6592
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
6593
                    }
 
6594
    break;
 
6595
 
 
6596
  case 376:
 
6597
#line 1923 "parse.y"
 
6598
    {
 
6599
                        if ((yyvsp[(2) - (2)].node))
 
6600
                            (yyval.node) = (yyvsp[(2) - (2)].node);
 
6601
                        else
 
6602
                            /* place holder */
 
6603
                            (yyval.node) = NEW_NIL();
 
6604
                    }
 
6605
    break;
 
6606
 
 
6607
  case 379:
 
6608
#line 1935 "parse.y"
 
6609
    {
 
6610
                        (yyval.node) = NEW_LIT(ID2SYM((yyvsp[(1) - (1)].id)));
 
6611
                    }
 
6612
    break;
 
6613
 
 
6614
  case 381:
 
6615
#line 1942 "parse.y"
 
6616
    {
 
6617
                        NODE *node = (yyvsp[(1) - (1)].node);
 
6618
                        if (!node) {
 
6619
                            node = NEW_STR(rb_str_new(0, 0));
 
6620
                        }
 
6621
                        else {
 
6622
                            node = evstr2dstr(node);
 
6623
                        }
 
6624
                        (yyval.node) = node;
 
6625
                    }
 
6626
    break;
 
6627
 
 
6628
  case 383:
 
6629
#line 1956 "parse.y"
 
6630
    {
 
6631
                        (yyval.node) = literal_concat((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
 
6632
                    }
 
6633
    break;
 
6634
 
 
6635
  case 384:
 
6636
#line 1962 "parse.y"
 
6637
    {
 
6638
                        (yyval.node) = (yyvsp[(2) - (3)].node);
 
6639
                    }
 
6640
    break;
 
6641
 
 
6642
  case 385:
 
6643
#line 1968 "parse.y"
 
6644
    {
 
6645
                        NODE *node = (yyvsp[(2) - (3)].node);
 
6646
                        if (!node) {
 
6647
                            node = NEW_XSTR(rb_str_new(0, 0));
 
6648
                        }
 
6649
                        else {
 
6650
                            switch (nd_type(node)) {
 
6651
                              case NODE_STR:
 
6652
                                nd_set_type(node, NODE_XSTR);
 
6653
                                break;
 
6654
                              case NODE_DSTR:
 
6655
                                nd_set_type(node, NODE_DXSTR);
 
6656
                                break;
 
6657
                              default:
 
6658
                                node = NEW_NODE(NODE_DXSTR, rb_str_new(0, 0), 1, NEW_LIST(node));
 
6659
                                break;
 
6660
                            }
 
6661
                        }
 
6662
                        (yyval.node) = node;
 
6663
                    }
 
6664
    break;
 
6665
 
 
6666
  case 386:
 
6667
#line 1991 "parse.y"
 
6668
    {
 
6669
                        int options = (yyvsp[(3) - (3)].num);
 
6670
                        NODE *node = (yyvsp[(2) - (3)].node);
 
6671
                        if (!node) {
 
6672
                            node = NEW_LIT(rb_reg_new("", 0, options & ~RE_OPTION_ONCE));
 
6673
                        }
 
6674
                        else switch (nd_type(node)) {
 
6675
                          case NODE_STR:
 
6676
                            {
 
6677
                                VALUE src = node->nd_lit;
 
6678
                                nd_set_type(node, NODE_LIT);
 
6679
                                node->nd_lit = rb_reg_new(RSTRING(src)->ptr,
 
6680
                                                          RSTRING(src)->len,
 
6681
                                                          options & ~RE_OPTION_ONCE);
 
6682
                            }
 
6683
                            break;
 
6684
                          default:
 
6685
                            node = NEW_NODE(NODE_DSTR, rb_str_new(0, 0), 1, NEW_LIST(node));
 
6686
                          case NODE_DSTR:
 
6687
                            if (options & RE_OPTION_ONCE) {
 
6688
                                nd_set_type(node, NODE_DREGX_ONCE);
 
6689
                            }
 
6690
                            else {
 
6691
                                nd_set_type(node, NODE_DREGX);
 
6692
                            }
 
6693
                            node->nd_cflag = options & ~RE_OPTION_ONCE;
 
6694
                            break;
 
6695
                        }
 
6696
                        (yyval.node) = node;
 
6697
                    }
 
6698
    break;
 
6699
 
 
6700
  case 387:
 
6701
#line 2024 "parse.y"
 
6702
    {
 
6703
                        (yyval.node) = NEW_ZARRAY();
 
6704
                    }
 
6705
    break;
 
6706
 
 
6707
  case 388:
 
6708
#line 2028 "parse.y"
 
6709
    {
 
6710
                        (yyval.node) = (yyvsp[(2) - (3)].node);
 
6711
                    }
 
6712
    break;
 
6713
 
 
6714
  case 389:
 
6715
#line 2034 "parse.y"
 
6716
    {
 
6717
                        (yyval.node) = 0;
 
6718
                    }
 
6719
    break;
 
6720
 
 
6721
  case 390:
 
6722
#line 2038 "parse.y"
 
6723
    {
 
6724
                        (yyval.node) = list_append((yyvsp[(1) - (3)].node), evstr2dstr((yyvsp[(2) - (3)].node)));
 
6725
                    }
 
6726
    break;
 
6727
 
 
6728
  case 392:
 
6729
#line 2045 "parse.y"
 
6730
    {
 
6731
                        (yyval.node) = literal_concat((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
 
6732
                    }
 
6733
    break;
 
6734
 
 
6735
  case 393:
 
6736
#line 2051 "parse.y"
 
6737
    {
 
6738
                        (yyval.node) = NEW_ZARRAY();
 
6739
                    }
 
6740
    break;
 
6741
 
 
6742
  case 394:
 
6743
#line 2055 "parse.y"
 
6744
    {
 
6745
                        (yyval.node) = (yyvsp[(2) - (3)].node);
 
6746
                    }
 
6747
    break;
 
6748
 
 
6749
  case 395:
 
6750
#line 2061 "parse.y"
 
6751
    {
 
6752
                        (yyval.node) = 0;
 
6753
                    }
 
6754
    break;
 
6755
 
 
6756
  case 396:
 
6757
#line 2065 "parse.y"
 
6758
    {
 
6759
                        (yyval.node) = list_append((yyvsp[(1) - (3)].node), (yyvsp[(2) - (3)].node));
 
6760
                    }
 
6761
    break;
 
6762
 
 
6763
  case 397:
 
6764
#line 2071 "parse.y"
 
6765
    {
 
6766
                        (yyval.node) = 0;
 
6767
                    }
 
6768
    break;
 
6769
 
 
6770
  case 398:
 
6771
#line 2075 "parse.y"
 
6772
    {
 
6773
                        (yyval.node) = literal_concat((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
 
6774
                    }
 
6775
    break;
 
6776
 
 
6777
  case 399:
 
6778
#line 2081 "parse.y"
 
6779
    {
 
6780
                        (yyval.node) = 0;
 
6781
                    }
 
6782
    break;
 
6783
 
 
6784
  case 400:
 
6785
#line 2085 "parse.y"
 
6786
    {
 
6787
                        (yyval.node) = literal_concat((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
 
6788
                    }
 
6789
    break;
 
6790
 
 
6791
  case 402:
 
6792
#line 2092 "parse.y"
 
6793
    {
 
6794
                        (yyval.node) = lex_strterm;
 
6795
                        lex_strterm = 0;
 
6796
                        lex_state = EXPR_BEG;
 
6797
                    }
 
6798
    break;
 
6799
 
 
6800
  case 403:
 
6801
#line 2098 "parse.y"
 
6802
    {
 
6803
                        lex_strterm = (yyvsp[(2) - (3)].node);
 
6804
                        (yyval.node) = NEW_EVSTR((yyvsp[(3) - (3)].node));
 
6805
                    }
 
6806
    break;
 
6807
 
 
6808
  case 404:
 
6809
#line 2103 "parse.y"
 
6810
    {
 
6811
                        (yyval.node) = lex_strterm;
 
6812
                        lex_strterm = 0;
 
6813
                        lex_state = EXPR_BEG;
 
6814
                        COND_PUSH(0);
 
6815
                        CMDARG_PUSH(0);
 
6816
                    }
 
6817
    break;
 
6818
 
 
6819
  case 405:
 
6820
#line 2111 "parse.y"
 
6821
    {
 
6822
                        lex_strterm = (yyvsp[(2) - (4)].node);
 
6823
                        COND_LEXPOP();
 
6824
                        CMDARG_LEXPOP();
 
6825
                        if (((yyval.node) = (yyvsp[(3) - (4)].node)) && nd_type((yyval.node)) == NODE_NEWLINE) {
 
6826
                            (yyval.node) = (yyval.node)->nd_next;
 
6827
                            rb_gc_force_recycle((VALUE)(yyvsp[(3) - (4)].node));
 
6828
                        }
 
6829
                        (yyval.node) = new_evstr((yyval.node));
 
6830
                    }
 
6831
    break;
 
6832
 
 
6833
  case 406:
 
6834
#line 2123 "parse.y"
 
6835
    {(yyval.node) = NEW_GVAR((yyvsp[(1) - (1)].id));}
 
6836
    break;
 
6837
 
 
6838
  case 407:
 
6839
#line 2124 "parse.y"
 
6840
    {(yyval.node) = NEW_IVAR((yyvsp[(1) - (1)].id));}
 
6841
    break;
 
6842
 
 
6843
  case 408:
 
6844
#line 2125 "parse.y"
 
6845
    {(yyval.node) = NEW_CVAR((yyvsp[(1) - (1)].id));}
 
6846
    break;
 
6847
 
 
6848
  case 410:
 
6849
#line 2130 "parse.y"
 
6850
    {
 
6851
                        lex_state = EXPR_END;
 
6852
                        (yyval.id) = (yyvsp[(2) - (2)].id);
 
6853
                    }
 
6854
    break;
 
6855
 
 
6856
  case 415:
 
6857
#line 2143 "parse.y"
 
6858
    {
 
6859
                        lex_state = EXPR_END;
 
6860
                        if (!((yyval.node) = (yyvsp[(2) - (3)].node))) {
 
6861
                            yyerror("empty symbol literal");
 
6862
                        }
 
6863
                        else {
 
6864
                            VALUE lit;
 
6865
 
 
6866
                            switch (nd_type((yyval.node))) {
 
6867
                              case NODE_DSTR:
 
6868
                                nd_set_type((yyval.node), NODE_DSYM);
 
6869
                                break;
 
6870
                              case NODE_STR:
 
6871
                                lit = (yyval.node)->nd_lit;
 
6872
                                if (RSTRING(lit)->len == 0) {
 
6873
                                    yyerror("empty symbol literal");
 
6874
                                    break;
 
6875
                                }
 
6876
                                if (strlen(RSTRING(lit)->ptr) == RSTRING(lit)->len) {
 
6877
                                    (yyval.node)->nd_lit = ID2SYM(rb_intern(RSTRING((yyval.node)->nd_lit)->ptr));
 
6878
                                    nd_set_type((yyval.node), NODE_LIT);
 
6879
                                    break;
 
6880
                                }
 
6881
                                /* fall through */
 
6882
                              default:
 
6883
                                (yyval.node) = NEW_NODE(NODE_DSYM, rb_str_new(0, 0), 1, NEW_LIST((yyval.node)));
 
6884
                                break;
 
6885
                            }
 
6886
                        }
 
6887
                    }
 
6888
    break;
 
6889
 
 
6890
  case 418:
 
6891
#line 2178 "parse.y"
 
6892
    {
 
6893
                        (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
 
6894
                    }
 
6895
    break;
 
6896
 
 
6897
  case 419:
 
6898
#line 2182 "parse.y"
 
6899
    {
 
6900
                        (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
 
6901
                    }
 
6902
    break;
 
6903
 
 
6904
  case 425:
 
6905
#line 2192 "parse.y"
 
6906
    {(yyval.id) = kNIL;}
 
6907
    break;
 
6908
 
 
6909
  case 426:
 
6910
#line 2193 "parse.y"
 
6911
    {(yyval.id) = kSELF;}
 
6912
    break;
 
6913
 
 
6914
  case 427:
 
6915
#line 2194 "parse.y"
 
6916
    {(yyval.id) = kTRUE;}
 
6917
    break;
 
6918
 
 
6919
  case 428:
 
6920
#line 2195 "parse.y"
 
6921
    {(yyval.id) = kFALSE;}
 
6922
    break;
 
6923
 
 
6924
  case 429:
 
6925
#line 2196 "parse.y"
 
6926
    {(yyval.id) = k__FILE__;}
 
6927
    break;
 
6928
 
 
6929
  case 430:
 
6930
#line 2197 "parse.y"
 
6931
    {(yyval.id) = k__LINE__;}
 
6932
    break;
 
6933
 
 
6934
  case 431:
 
6935
#line 2201 "parse.y"
 
6936
    {
 
6937
                        (yyval.node) = gettable((yyvsp[(1) - (1)].id));
 
6938
                    }
 
6939
    break;
 
6940
 
 
6941
  case 432:
 
6942
#line 2207 "parse.y"
 
6943
    {
 
6944
                        (yyval.node) = assignable((yyvsp[(1) - (1)].id), 0);
 
6945
                    }
 
6946
    break;
 
6947
 
 
6948
  case 435:
 
6949
#line 2217 "parse.y"
 
6950
    {
 
6951
                        (yyval.node) = 0;
 
6952
                    }
 
6953
    break;
 
6954
 
 
6955
  case 436:
 
6956
#line 2221 "parse.y"
 
6957
    {
 
6958
                        lex_state = EXPR_BEG;
 
6959
                    }
 
6960
    break;
 
6961
 
 
6962
  case 437:
 
6963
#line 2225 "parse.y"
 
6964
    {
 
6965
                        (yyval.node) = (yyvsp[(3) - (4)].node);
 
6966
                    }
 
6967
    break;
 
6968
 
 
6969
  case 438:
 
6970
#line 2228 "parse.y"
 
6971
    {yyerrok; (yyval.node) = 0;}
 
6972
    break;
 
6973
 
 
6974
  case 439:
 
6975
#line 2232 "parse.y"
 
6976
    {
 
6977
                        (yyval.node) = (yyvsp[(2) - (4)].node);
 
6978
                        lex_state = EXPR_BEG;
 
6979
                        command_start = Qtrue;
 
6980
                    }
 
6981
    break;
 
6982
 
 
6983
  case 440:
 
6984
#line 2238 "parse.y"
 
6985
    {
 
6986
                        (yyval.node) = (yyvsp[(1) - (2)].node);
 
6987
                    }
 
6988
    break;
 
6989
 
 
6990
  case 441:
 
6991
#line 2244 "parse.y"
 
6992
    {
 
6993
                        (yyval.node) = block_append(NEW_ARGS((yyvsp[(1) - (6)].num), (yyvsp[(3) - (6)].node), (yyvsp[(5) - (6)].node)), (yyvsp[(6) - (6)].node));
 
6994
                    }
 
6995
    break;
 
6996
 
 
6997
  case 442:
 
6998
#line 2248 "parse.y"
 
6999
    {
 
7000
                        (yyval.node) = block_append(NEW_ARGS((yyvsp[(1) - (4)].num), (yyvsp[(3) - (4)].node), 0), (yyvsp[(4) - (4)].node));
 
7001
                    }
 
7002
    break;
 
7003
 
 
7004
  case 443:
 
7005
#line 2252 "parse.y"
 
7006
    {
 
7007
                        (yyval.node) = block_append(NEW_ARGS((yyvsp[(1) - (4)].num), 0, (yyvsp[(3) - (4)].node)), (yyvsp[(4) - (4)].node));
 
7008
                    }
 
7009
    break;
 
7010
 
 
7011
  case 444:
 
7012
#line 2256 "parse.y"
 
7013
    {
 
7014
                        (yyval.node) = block_append(NEW_ARGS((yyvsp[(1) - (2)].num), 0, 0), (yyvsp[(2) - (2)].node));
 
7015
                    }
 
7016
    break;
 
7017
 
 
7018
  case 445:
 
7019
#line 2260 "parse.y"
 
7020
    {
 
7021
                        (yyval.node) = block_append(NEW_ARGS(0, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node)), (yyvsp[(4) - (4)].node));
 
7022
                    }
 
7023
    break;
 
7024
 
 
7025
  case 446:
 
7026
#line 2264 "parse.y"
 
7027
    {
 
7028
                        (yyval.node) = block_append(NEW_ARGS(0, (yyvsp[(1) - (2)].node), 0), (yyvsp[(2) - (2)].node));
 
7029
                    }
 
7030
    break;
 
7031
 
 
7032
  case 447:
 
7033
#line 2268 "parse.y"
 
7034
    {
 
7035
                        (yyval.node) = block_append(NEW_ARGS(0, 0, (yyvsp[(1) - (2)].node)), (yyvsp[(2) - (2)].node));
 
7036
                    }
 
7037
    break;
 
7038
 
 
7039
  case 448:
 
7040
#line 2272 "parse.y"
 
7041
    {
 
7042
                        (yyval.node) = block_append(NEW_ARGS(0, 0, 0), (yyvsp[(1) - (1)].node));
 
7043
                    }
 
7044
    break;
 
7045
 
 
7046
  case 449:
 
7047
#line 2276 "parse.y"
 
7048
    {
 
7049
                        (yyval.node) = NEW_ARGS(0, 0, 0);
 
7050
                    }
 
7051
    break;
 
7052
 
 
7053
  case 450:
 
7054
#line 2282 "parse.y"
 
7055
    {
 
7056
                        yyerror("formal argument cannot be a constant");
 
7057
                    }
 
7058
    break;
 
7059
 
 
7060
  case 451:
 
7061
#line 2286 "parse.y"
 
7062
    {
 
7063
                        yyerror("formal argument cannot be an instance variable");
 
7064
                    }
 
7065
    break;
 
7066
 
 
7067
  case 452:
 
7068
#line 2290 "parse.y"
 
7069
    {
 
7070
                        yyerror("formal argument cannot be a global variable");
 
7071
                    }
 
7072
    break;
 
7073
 
 
7074
  case 453:
 
7075
#line 2294 "parse.y"
 
7076
    {
 
7077
                        yyerror("formal argument cannot be a class variable");
 
7078
                    }
 
7079
    break;
 
7080
 
 
7081
  case 454:
 
7082
#line 2298 "parse.y"
 
7083
    {
 
7084
                        if (!is_local_id((yyvsp[(1) - (1)].id)))
 
7085
                            yyerror("formal argument must be local variable");
 
7086
                        else if (local_id((yyvsp[(1) - (1)].id)))
 
7087
                            yyerror("duplicate argument name");
 
7088
                        local_cnt((yyvsp[(1) - (1)].id));
 
7089
                        (yyval.num) = 1;
 
7090
                    }
 
7091
    break;
 
7092
 
 
7093
  case 456:
 
7094
#line 2310 "parse.y"
 
7095
    {
 
7096
                        (yyval.num) += 1;
 
7097
                    }
 
7098
    break;
 
7099
 
 
7100
  case 457:
 
7101
#line 2316 "parse.y"
 
7102
    {
 
7103
                        if (!is_local_id((yyvsp[(1) - (3)].id)))
 
7104
                            yyerror("formal argument must be local variable");
 
7105
                        else if (local_id((yyvsp[(1) - (3)].id)))
 
7106
                            yyerror("duplicate optional argument name");
 
7107
                        (yyval.node) = assignable((yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node));
 
7108
                    }
 
7109
    break;
 
7110
 
 
7111
  case 458:
 
7112
#line 2326 "parse.y"
 
7113
    {
 
7114
                        (yyval.node) = NEW_BLOCK((yyvsp[(1) - (1)].node));
 
7115
                        (yyval.node)->nd_end = (yyval.node);
 
7116
                    }
 
7117
    break;
 
7118
 
 
7119
  case 459:
 
7120
#line 2331 "parse.y"
 
7121
    {
 
7122
                        (yyval.node) = block_append((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
7123
                    }
 
7124
    break;
 
7125
 
 
7126
  case 462:
 
7127
#line 2341 "parse.y"
 
7128
    {
 
7129
                        if (!is_local_id((yyvsp[(2) - (2)].id)))
 
7130
                            yyerror("rest argument must be local variable");
 
7131
                        if (dyna_in_block()) {
 
7132
                            rb_dvar_push((yyvsp[(2) - (2)].id), Qnil);
 
7133
                        }
 
7134
                        (yyval.node) = assignable((yyvsp[(2) - (2)].id), 0);
 
7135
                    }
 
7136
    break;
 
7137
 
 
7138
  case 463:
 
7139
#line 2350 "parse.y"
 
7140
    {
 
7141
                        if (dyna_in_block()) {
 
7142
                            (yyval.node) = NEW_DASGN_CURR(internal_id(), 0);
 
7143
                        }
 
7144
                        else {
 
7145
                            (yyval.node) = NEW_NODE(NODE_LASGN,0,0,local_append(0));
 
7146
                        }
 
7147
                    }
 
7148
    break;
 
7149
 
 
7150
  case 466:
 
7151
#line 2365 "parse.y"
 
7152
    {
 
7153
                        if (!is_local_id((yyvsp[(2) - (2)].id)))
 
7154
                            yyerror("block argument must be local variable");
 
7155
                        else if (local_id((yyvsp[(2) - (2)].id)))
 
7156
                            yyerror("duplicate block argument name");
 
7157
                        (yyval.node) = NEW_BLOCK_ARG((yyvsp[(2) - (2)].id));
 
7158
                    }
 
7159
    break;
 
7160
 
 
7161
  case 467:
 
7162
#line 2375 "parse.y"
 
7163
    {
 
7164
                        (yyval.node) = (yyvsp[(2) - (2)].node);
 
7165
                    }
 
7166
    break;
 
7167
 
 
7168
  case 469:
 
7169
#line 2382 "parse.y"
 
7170
    {
 
7171
                        (yyval.node) = (yyvsp[(1) - (1)].node);
 
7172
                        value_expr((yyval.node));
 
7173
                    }
 
7174
    break;
 
7175
 
 
7176
  case 470:
 
7177
#line 2386 "parse.y"
 
7178
    {lex_state = EXPR_BEG;}
 
7179
    break;
 
7180
 
 
7181
  case 471:
 
7182
#line 2387 "parse.y"
 
7183
    {
 
7184
                        if ((yyvsp[(3) - (5)].node) == 0) {
 
7185
                            yyerror("can't define singleton method for ().");
 
7186
                        }
 
7187
                        else {
 
7188
                            switch (nd_type((yyvsp[(3) - (5)].node))) {
 
7189
                              case NODE_STR:
 
7190
                              case NODE_DSTR:
 
7191
                              case NODE_XSTR:
 
7192
                              case NODE_DXSTR:
 
7193
                              case NODE_DREGX:
 
7194
                              case NODE_LIT:
 
7195
                              case NODE_ARRAY:
 
7196
                              case NODE_ZARRAY:
 
7197
                                yyerror("can't define singleton method for literals");
 
7198
                              default:
 
7199
                                value_expr((yyvsp[(3) - (5)].node));
 
7200
                                break;
 
7201
                            }
 
7202
                        }
 
7203
                        (yyval.node) = (yyvsp[(3) - (5)].node);
 
7204
                    }
 
7205
    break;
 
7206
 
 
7207
  case 473:
 
7208
#line 2413 "parse.y"
 
7209
    {
 
7210
                        (yyval.node) = (yyvsp[(1) - (2)].node);
 
7211
                    }
 
7212
    break;
 
7213
 
 
7214
  case 474:
 
7215
#line 2417 "parse.y"
 
7216
    {
 
7217
                        if ((yyvsp[(1) - (2)].node)->nd_alen%2 != 0) {
 
7218
                            yyerror("odd number list for Hash");
 
7219
                        }
 
7220
                        (yyval.node) = (yyvsp[(1) - (2)].node);
 
7221
                    }
 
7222
    break;
 
7223
 
 
7224
  case 476:
 
7225
#line 2427 "parse.y"
 
7226
    {
 
7227
                        (yyval.node) = list_concat((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 
7228
                    }
 
7229
    break;
 
7230
 
 
7231
  case 477:
 
7232
#line 2433 "parse.y"
 
7233
    {
 
7234
                        (yyval.node) = list_append(NEW_LIST((yyvsp[(1) - (3)].node)), (yyvsp[(3) - (3)].node));
 
7235
                    }
 
7236
    break;
 
7237
 
 
7238
  case 497:
 
7239
#line 2471 "parse.y"
 
7240
    {yyerrok;}
 
7241
    break;
 
7242
 
 
7243
  case 500:
 
7244
#line 2476 "parse.y"
 
7245
    {yyerrok;}
 
7246
    break;
 
7247
 
 
7248
  case 501:
 
7249
#line 2479 "parse.y"
 
7250
    {(yyval.node) = 0;}
 
7251
    break;
 
7252
 
 
7253
 
 
7254
/* Line 1267 of yacc.c.  */
 
7255
#line 7256 "parse.c"
 
7256
      default: break;
 
7257
    }
 
7258
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
7259
 
 
7260
  YYPOPSTACK (yylen);
 
7261
  yylen = 0;
 
7262
  YY_STACK_PRINT (yyss, yyssp);
 
7263
 
 
7264
  *++yyvsp = yyval;
 
7265
 
 
7266
 
 
7267
  /* Now `shift' the result of the reduction.  Determine what state
 
7268
     that goes to, based on the state we popped back to and the rule
 
7269
     number reduced by.  */
 
7270
 
 
7271
  yyn = yyr1[yyn];
 
7272
 
 
7273
  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
 
7274
  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
 
7275
    yystate = yytable[yystate];
 
7276
  else
 
7277
    yystate = yydefgoto[yyn - YYNTOKENS];
 
7278
 
 
7279
  goto yynewstate;
 
7280
 
 
7281
 
 
7282
/*------------------------------------.
 
7283
| yyerrlab -- here on detecting error |
 
7284
`------------------------------------*/
 
7285
yyerrlab:
 
7286
  /* If not already recovering from an error, report this error.  */
 
7287
  if (!yyerrstatus)
 
7288
    {
 
7289
      ++yynerrs;
 
7290
#if ! YYERROR_VERBOSE
 
7291
      yyerror (YY_("syntax error"));
 
7292
#else
 
7293
      {
 
7294
        YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
 
7295
        if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
 
7296
          {
 
7297
            YYSIZE_T yyalloc = 2 * yysize;
 
7298
            if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
 
7299
              yyalloc = YYSTACK_ALLOC_MAXIMUM;
 
7300
            if (yymsg != yymsgbuf)
 
7301
              YYSTACK_FREE (yymsg);
 
7302
            yymsg = (char *) YYSTACK_ALLOC (yyalloc);
 
7303
            if (yymsg)
 
7304
              yymsg_alloc = yyalloc;
 
7305
            else
 
7306
              {
 
7307
                yymsg = yymsgbuf;
 
7308
                yymsg_alloc = sizeof yymsgbuf;
 
7309
              }
 
7310
          }
 
7311
 
 
7312
        if (0 < yysize && yysize <= yymsg_alloc)
 
7313
          {
 
7314
            (void) yysyntax_error (yymsg, yystate, yychar);
 
7315
            yyerror (yymsg);
 
7316
          }
 
7317
        else
 
7318
          {
 
7319
            yyerror (YY_("syntax error"));
 
7320
            if (yysize != 0)
 
7321
              goto yyexhaustedlab;
 
7322
          }
 
7323
      }
 
7324
#endif
 
7325
    }
 
7326
 
 
7327
 
 
7328
 
 
7329
  if (yyerrstatus == 3)
 
7330
    {
 
7331
      /* If just tried and failed to reuse look-ahead token after an
 
7332
         error, discard it.  */
 
7333
 
 
7334
      if (yychar <= YYEOF)
 
7335
        {
 
7336
          /* Return failure if at end of input.  */
 
7337
          if (yychar == YYEOF)
 
7338
            YYABORT;
 
7339
        }
 
7340
      else
 
7341
        {
 
7342
          yydestruct ("Error: discarding",
 
7343
                      yytoken, &yylval);
 
7344
          yychar = YYEMPTY;
 
7345
        }
 
7346
    }
 
7347
 
 
7348
  /* Else will try to reuse look-ahead token after shifting the error
 
7349
     token.  */
 
7350
  goto yyerrlab1;
 
7351
 
 
7352
 
 
7353
/*---------------------------------------------------.
 
7354
| yyerrorlab -- error raised explicitly by YYERROR.  |
 
7355
`---------------------------------------------------*/
 
7356
yyerrorlab:
 
7357
 
 
7358
  /* Pacify compilers like GCC when the user code never invokes
 
7359
     YYERROR and the label yyerrorlab therefore never appears in user
 
7360
     code.  */
 
7361
  if (/*CONSTCOND*/ 0)
 
7362
     goto yyerrorlab;
 
7363
 
 
7364
  /* Do not reclaim the symbols of the rule which action triggered
 
7365
     this YYERROR.  */
 
7366
  YYPOPSTACK (yylen);
 
7367
  yylen = 0;
 
7368
  YY_STACK_PRINT (yyss, yyssp);
 
7369
  yystate = *yyssp;
 
7370
  goto yyerrlab1;
 
7371
 
 
7372
 
 
7373
/*-------------------------------------------------------------.
 
7374
| yyerrlab1 -- common code for both syntax error and YYERROR.  |
 
7375
`-------------------------------------------------------------*/
 
7376
yyerrlab1:
 
7377
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
7378
 
 
7379
  for (;;)
 
7380
    {
 
7381
      yyn = yypact[yystate];
 
7382
      if (yyn != YYPACT_NINF)
 
7383
        {
 
7384
          yyn += YYTERROR;
 
7385
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
 
7386
            {
 
7387
              yyn = yytable[yyn];
 
7388
              if (0 < yyn)
 
7389
                break;
 
7390
            }
 
7391
        }
 
7392
 
 
7393
      /* Pop the current state because it cannot handle the error token.  */
 
7394
      if (yyssp == yyss)
 
7395
        YYABORT;
 
7396
 
 
7397
 
 
7398
      yydestruct ("Error: popping",
 
7399
                  yystos[yystate], yyvsp);
 
7400
      YYPOPSTACK (1);
 
7401
      yystate = *yyssp;
 
7402
      YY_STACK_PRINT (yyss, yyssp);
 
7403
    }
 
7404
 
 
7405
  if (yyn == YYFINAL)
 
7406
    YYACCEPT;
 
7407
 
 
7408
  *++yyvsp = yylval;
 
7409
 
 
7410
 
 
7411
  /* Shift the error token.  */
 
7412
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
 
7413
 
 
7414
  yystate = yyn;
 
7415
  goto yynewstate;
 
7416
 
 
7417
 
 
7418
/*-------------------------------------.
 
7419
| yyacceptlab -- YYACCEPT comes here.  |
 
7420
`-------------------------------------*/
 
7421
yyacceptlab:
 
7422
  yyresult = 0;
 
7423
  goto yyreturn;
 
7424
 
 
7425
/*-----------------------------------.
 
7426
| yyabortlab -- YYABORT comes here.  |
 
7427
`-----------------------------------*/
 
7428
yyabortlab:
 
7429
  yyresult = 1;
 
7430
  goto yyreturn;
 
7431
 
 
7432
#ifndef yyoverflow
 
7433
/*-------------------------------------------------.
 
7434
| yyexhaustedlab -- memory exhaustion comes here.  |
 
7435
`-------------------------------------------------*/
 
7436
yyexhaustedlab:
 
7437
  yyerror (YY_("memory exhausted"));
 
7438
  yyresult = 2;
 
7439
  /* Fall through.  */
 
7440
#endif
 
7441
 
 
7442
yyreturn:
 
7443
  if (yychar != YYEOF && yychar != YYEMPTY)
 
7444
     yydestruct ("Cleanup: discarding lookahead",
 
7445
                 yytoken, &yylval);
 
7446
  /* Do not reclaim the symbols of the rule which action triggered
 
7447
     this YYABORT or YYACCEPT.  */
 
7448
  YYPOPSTACK (yylen);
 
7449
  YY_STACK_PRINT (yyss, yyssp);
 
7450
  while (yyssp != yyss)
 
7451
    {
 
7452
      yydestruct ("Cleanup: popping",
 
7453
                  yystos[*yyssp], yyvsp);
 
7454
      YYPOPSTACK (1);
 
7455
    }
 
7456
#ifndef yyoverflow
 
7457
  if (yyss != yyssa)
 
7458
    YYSTACK_FREE (yyss);
 
7459
#endif
 
7460
#if YYERROR_VERBOSE
 
7461
  if (yymsg != yymsgbuf)
 
7462
    YYSTACK_FREE (yymsg);
 
7463
#endif
 
7464
  /* Make sure YYID is used.  */
 
7465
  return YYID (yyresult);
 
7466
}
 
7467
 
 
7468
 
 
7469
#line 2481 "parse.y"
 
7470
 
 
7471
#ifdef yystacksize
 
7472
#undef YYMALLOC
 
7473
#endif
 
7474
 
 
7475
#include "regex.h"
 
7476
#include "util.h"
 
7477
 
 
7478
/* We remove any previous definition of `SIGN_EXTEND_CHAR',
 
7479
   since ours (we hope) works properly with all combinations of
 
7480
   machines, compilers, `char' and `unsigned char' argument types.
 
7481
   (Per Bothner suggested the basic approach.)  */
 
7482
#undef SIGN_EXTEND_CHAR
 
7483
#if __STDC__
 
7484
# define SIGN_EXTEND_CHAR(c) ((signed char)(c))
 
7485
#else  /* not __STDC__ */
 
7486
/* As in Harbison and Steele.  */
 
7487
# define SIGN_EXTEND_CHAR(c) ((((unsigned char)(c)) ^ 128) - 128)
 
7488
#endif
 
7489
#define is_identchar(c) (SIGN_EXTEND_CHAR(c)!=-1&&(ISALNUM(c) || (c) == '_' || ismbchar(c)))
 
7490
 
 
7491
static char *tokenbuf = NULL;
 
7492
static int   tokidx, toksiz = 0;
 
7493
 
 
7494
#define LEAVE_BS 1
 
7495
 
 
7496
static VALUE (*lex_gets)();     /* gets function */
 
7497
static VALUE lex_input;         /* non-nil if File */
 
7498
static VALUE lex_lastline;      /* gc protect */
 
7499
static char *lex_pbeg;
 
7500
static char *lex_p;
 
7501
static char *lex_pend;
 
7502
 
 
7503
static int
 
7504
yyerror(msg)
 
7505
    const char *msg;
 
7506
{
 
7507
    char *p, *pe, *buf;
 
7508
    int len, i;
 
7509
 
 
7510
    rb_compile_error("%s", msg);
 
7511
    p = lex_p;
 
7512
    while (lex_pbeg <= p) {
 
7513
        if (*p == '\n') break;
 
7514
        p--;
 
7515
    }
 
7516
    p++;
 
7517
 
 
7518
    pe = lex_p;
 
7519
    while (pe < lex_pend) {
 
7520
        if (*pe == '\n') break;
 
7521
        pe++;
 
7522
    }
 
7523
 
 
7524
    len = pe - p;
 
7525
    if (len > 4) {
 
7526
        buf = ALLOCA_N(char, len+2);
 
7527
        MEMCPY(buf, p, char, len);
 
7528
        buf[len] = '\0';
 
7529
        rb_compile_error_append("%s", buf);
 
7530
 
 
7531
        i = lex_p - p;
 
7532
        p = buf; pe = p + len;
 
7533
 
 
7534
        while (p < pe) {
 
7535
            if (*p != '\t') *p = ' ';
 
7536
            p++;
 
7537
        }
 
7538
        buf[i] = '^';
 
7539
        buf[i+1] = '\0';
 
7540
        rb_compile_error_append("%s", buf);
 
7541
    }
 
7542
 
 
7543
    return 0;
 
7544
}
 
7545
 
 
7546
static int heredoc_end;
 
7547
 
 
7548
int ruby_in_compile = 0;
 
7549
int ruby__end__seen;
 
7550
 
 
7551
static VALUE ruby_debug_lines;
 
7552
#ifdef YYMALLOC
 
7553
static NODE *parser_heap;
 
7554
#endif
 
7555
 
 
7556
static NODE*
 
7557
yycompile(f, line)
 
7558
    char *f;
 
7559
    int line;
 
7560
{
 
7561
    int n;
 
7562
    NODE *node = 0;
 
7563
    struct RVarmap *vp, *vars = ruby_dyna_vars;
 
7564
 
 
7565
    ruby_in_compile = 1;
 
7566
    if (!compile_for_eval && rb_safe_level() == 0 &&
 
7567
        rb_const_defined(rb_cObject, rb_intern("SCRIPT_LINES__"))) {
 
7568
        VALUE hash, fname;
 
7569
 
 
7570
        hash = rb_const_get(rb_cObject, rb_intern("SCRIPT_LINES__"));
 
7571
        if (TYPE(hash) == T_HASH) {
 
7572
            fname = rb_str_new2(f);
 
7573
            ruby_debug_lines = rb_hash_aref(hash, fname);
 
7574
            if (NIL_P(ruby_debug_lines)) {
 
7575
                ruby_debug_lines = rb_ary_new();
 
7576
                rb_hash_aset(hash, fname, ruby_debug_lines);
 
7577
            }
 
7578
        }
 
7579
        if (line > 1) {
 
7580
            VALUE str = rb_str_new(0,0);
 
7581
            while (line > 1) {
 
7582
                rb_ary_push(ruby_debug_lines, str);
 
7583
                line--;
 
7584
            }
 
7585
        }
 
7586
    }
 
7587
 
 
7588
    ruby__end__seen = 0;
 
7589
    ruby_eval_tree = 0;
 
7590
    heredoc_end = 0;
 
7591
    lex_strterm = 0;
 
7592
    ruby_current_node = 0;
 
7593
    ruby_sourcefile = rb_source_filename(f);
 
7594
    n = yyparse();
 
7595
    ruby_debug_lines = 0;
 
7596
    compile_for_eval = 0;
 
7597
    ruby_in_compile = 0;
 
7598
    cond_stack = 0;
 
7599
    cmdarg_stack = 0;
 
7600
    command_start = 1;
 
7601
    class_nest = 0;
 
7602
    in_single = 0;
 
7603
    in_def = 0;
 
7604
    cur_mid = 0;
 
7605
 
 
7606
    vp = ruby_dyna_vars;
 
7607
    ruby_dyna_vars = vars;
 
7608
    lex_strterm = 0;
 
7609
    while (vp && vp != vars) {
 
7610
        struct RVarmap *tmp = vp;
 
7611
        vp = vp->next;
 
7612
        rb_gc_force_recycle((VALUE)tmp);
 
7613
    }
 
7614
    if (n == 0) node = ruby_eval_tree;
 
7615
    else ruby_eval_tree_begin = 0;
 
7616
    return node;
 
7617
}
 
7618
 
 
7619
static int lex_gets_ptr;
 
7620
 
 
7621
static VALUE
 
7622
lex_get_str(s)
 
7623
    VALUE s;
 
7624
{
 
7625
    char *beg, *end, *pend;
 
7626
 
 
7627
    beg = RSTRING(s)->ptr;
 
7628
    if (lex_gets_ptr) {
 
7629
        if (RSTRING(s)->len == lex_gets_ptr) return Qnil;
 
7630
        beg += lex_gets_ptr;
 
7631
    }
 
7632
    pend = RSTRING(s)->ptr + RSTRING(s)->len;
 
7633
    end = beg;
 
7634
    while (end < pend) {
 
7635
        if (*end++ == '\n') break;
 
7636
    }
 
7637
    lex_gets_ptr = end - RSTRING(s)->ptr;
 
7638
    return rb_str_new(beg, end - beg);
 
7639
}
 
7640
 
 
7641
static VALUE
 
7642
lex_getline()
 
7643
{
 
7644
    VALUE line = (*lex_gets)(lex_input);
 
7645
    if (ruby_debug_lines && !NIL_P(line)) {
 
7646
        rb_ary_push(ruby_debug_lines, line);
 
7647
    }
 
7648
    return line;
 
7649
}
 
7650
 
 
7651
NODE*
 
7652
rb_compile_string(f, s, line)
 
7653
    const char *f;
 
7654
    VALUE s;
 
7655
    int line;
 
7656
{
 
7657
    lex_gets = lex_get_str;
 
7658
    lex_gets_ptr = 0;
 
7659
    lex_input = s;
 
7660
    lex_pbeg = lex_p = lex_pend = 0;
 
7661
    ruby_sourceline = line - 1;
 
7662
    compile_for_eval = ruby_in_eval;
 
7663
 
 
7664
    return yycompile(f, line);
 
7665
}
 
7666
 
 
7667
NODE*
 
7668
rb_compile_cstr(f, s, len, line)
 
7669
    const char *f, *s;
 
7670
    int len, line;
 
7671
{
 
7672
    return rb_compile_string(f, rb_str_new(s, len), line);
 
7673
}
 
7674
 
 
7675
NODE*
 
7676
rb_compile_file(f, file, start)
 
7677
    const char *f;
 
7678
    VALUE file;
 
7679
    int start;
 
7680
{
 
7681
    lex_gets = rb_io_gets;
 
7682
    lex_input = file;
 
7683
    lex_pbeg = lex_p = lex_pend = 0;
 
7684
    ruby_sourceline = start - 1;
 
7685
 
 
7686
    return yycompile(f, start);
 
7687
}
 
7688
 
 
7689
static inline int
 
7690
nextc()
 
7691
{
 
7692
    int c;
 
7693
 
 
7694
    if (lex_p == lex_pend) {
 
7695
        if (lex_input) {
 
7696
            VALUE v = lex_getline();
 
7697
 
 
7698
            if (NIL_P(v)) return -1;
 
7699
            if (heredoc_end > 0) {
 
7700
                ruby_sourceline = heredoc_end;
 
7701
                heredoc_end = 0;
 
7702
            }
 
7703
            ruby_sourceline++;
 
7704
            lex_pbeg = lex_p = RSTRING(v)->ptr;
 
7705
            lex_pend = lex_p + RSTRING(v)->len;
 
7706
            lex_lastline = v;
 
7707
        }
 
7708
        else {
 
7709
            lex_lastline = 0;
 
7710
            return -1;
 
7711
        }
 
7712
    }
 
7713
    c = (unsigned char)*lex_p++;
 
7714
    if (c == '\r' && lex_p < lex_pend && *lex_p == '\n') {
 
7715
        lex_p++;
 
7716
        c = '\n';
 
7717
    }
 
7718
 
 
7719
    return c;
 
7720
}
 
7721
 
 
7722
static void
 
7723
pushback(c)
 
7724
    int c;
 
7725
{
 
7726
    if (c == -1) return;
 
7727
    lex_p--;
 
7728
}
 
7729
 
 
7730
#define was_bol() (lex_p == lex_pbeg + 1)
 
7731
#define peek(c) (lex_p != lex_pend && (c) == *lex_p)
 
7732
 
 
7733
#define tokfix() (tokenbuf[tokidx]='\0')
 
7734
#define tok() tokenbuf
 
7735
#define toklen() tokidx
 
7736
#define toklast() (tokidx>0?tokenbuf[tokidx-1]:0)
 
7737
 
 
7738
static char*
 
7739
newtok()
 
7740
{
 
7741
    tokidx = 0;
 
7742
    if (!tokenbuf) {
 
7743
        toksiz = 60;
 
7744
        tokenbuf = ALLOC_N(char, 60);
 
7745
    }
 
7746
    if (toksiz > 4096) {
 
7747
        toksiz = 60;
 
7748
        REALLOC_N(tokenbuf, char, 60);
 
7749
    }
 
7750
    return tokenbuf;
 
7751
}
 
7752
 
 
7753
static void
 
7754
tokadd(c)
 
7755
    char c;
 
7756
{
 
7757
    tokenbuf[tokidx++] = c;
 
7758
    if (tokidx >= toksiz) {
 
7759
        toksiz *= 2;
 
7760
        REALLOC_N(tokenbuf, char, toksiz);
 
7761
    }
 
7762
}
 
7763
 
 
7764
static int
 
7765
read_escape()
 
7766
{
 
7767
    int c;
 
7768
 
 
7769
    switch (c = nextc()) {
 
7770
      case '\\':        /* Backslash */
 
7771
        return c;
 
7772
 
 
7773
      case 'n': /* newline */
 
7774
        return '\n';
 
7775
 
 
7776
      case 't': /* horizontal tab */
 
7777
        return '\t';
 
7778
 
 
7779
      case 'r': /* carriage-return */
 
7780
        return '\r';
 
7781
 
 
7782
      case 'f': /* form-feed */
 
7783
        return '\f';
 
7784
 
 
7785
      case 'v': /* vertical tab */
 
7786
        return '\13';
 
7787
 
 
7788
      case 'a': /* alarm(bell) */
 
7789
        return '\007';
 
7790
 
 
7791
      case 'e': /* escape */
 
7792
        return 033;
 
7793
 
 
7794
      case '0': case '1': case '2': case '3': /* octal constant */
 
7795
      case '4': case '5': case '6': case '7':
 
7796
        {
 
7797
            int numlen;
 
7798
 
 
7799
            pushback(c);
 
7800
            c = scan_oct(lex_p, 3, &numlen);
 
7801
            lex_p += numlen;
 
7802
        }
 
7803
        return c;
 
7804
 
 
7805
      case 'x': /* hex constant */
 
7806
        {
 
7807
            int numlen;
 
7808
 
 
7809
            c = scan_hex(lex_p, 2, &numlen);
 
7810
            if (numlen == 0) {
 
7811
                yyerror("Invalid escape character syntax");
 
7812
                return 0;
 
7813
            }
 
7814
            lex_p += numlen;
 
7815
        }
 
7816
        return c;
 
7817
 
 
7818
      case 'b': /* backspace */
 
7819
        return '\010';
 
7820
 
 
7821
      case 's': /* space */
 
7822
        return ' ';
 
7823
 
 
7824
      case 'M':
 
7825
        if ((c = nextc()) != '-') {
 
7826
            yyerror("Invalid escape character syntax");
 
7827
            pushback(c);
 
7828
            return '\0';
 
7829
        }
 
7830
        if ((c = nextc()) == '\\') {
 
7831
            return read_escape() | 0x80;
 
7832
        }
 
7833
        else if (c == -1) goto eof;
 
7834
        else {
 
7835
            return ((c & 0xff) | 0x80);
 
7836
        }
 
7837
 
 
7838
      case 'C':
 
7839
        if ((c = nextc()) != '-') {
 
7840
            yyerror("Invalid escape character syntax");
 
7841
            pushback(c);
 
7842
            return '\0';
 
7843
        }
 
7844
      case 'c':
 
7845
        if ((c = nextc())== '\\') {
 
7846
            c = read_escape();
 
7847
        }
 
7848
        else if (c == '?')
 
7849
            return 0177;
 
7850
        else if (c == -1) goto eof;
 
7851
        return c & 0x9f;
 
7852
 
 
7853
      eof:
 
7854
      case -1:
 
7855
        yyerror("Invalid escape character syntax");
 
7856
        return '\0';
 
7857
 
 
7858
      default:
 
7859
        return c;
 
7860
    }
 
7861
}
 
7862
 
 
7863
static int
 
7864
tokadd_escape(term)
 
7865
    int term;
 
7866
{
 
7867
    int c;
 
7868
 
 
7869
    switch (c = nextc()) {
 
7870
      case '\n':
 
7871
        return 0;               /* just ignore */
 
7872
 
 
7873
      case '0': case '1': case '2': case '3': /* octal constant */
 
7874
      case '4': case '5': case '6': case '7':
 
7875
        {
 
7876
            int i;
 
7877
 
 
7878
            tokadd('\\');
 
7879
            tokadd(c);
 
7880
            for (i=0; i<2; i++) {
 
7881
                c = nextc();
 
7882
                if (c == -1) goto eof;
 
7883
                if (c < '0' || '7' < c) {
 
7884
                    pushback(c);
 
7885
                    break;
 
7886
                }
 
7887
                tokadd(c);
 
7888
            }
 
7889
        }
 
7890
        return 0;
 
7891
 
 
7892
      case 'x': /* hex constant */
 
7893
        {
 
7894
            int numlen;
 
7895
 
 
7896
            tokadd('\\');
 
7897
            tokadd(c);
 
7898
            scan_hex(lex_p, 2, &numlen);
 
7899
            if (numlen == 0) {
 
7900
                yyerror("Invalid escape character syntax");
 
7901
                return -1;
 
7902
            }
 
7903
            while (numlen--)
 
7904
                tokadd(nextc());
 
7905
        }
 
7906
        return 0;
 
7907
 
 
7908
      case 'M':
 
7909
        if ((c = nextc()) != '-') {
 
7910
            yyerror("Invalid escape character syntax");
 
7911
            pushback(c);
 
7912
            return 0;
 
7913
        }
 
7914
        tokadd('\\'); tokadd('M'); tokadd('-');
 
7915
        goto escaped;
 
7916
 
 
7917
      case 'C':
 
7918
        if ((c = nextc()) != '-') {
 
7919
            yyerror("Invalid escape character syntax");
 
7920
            pushback(c);
 
7921
            return 0;
 
7922
        }
 
7923
        tokadd('\\'); tokadd('C'); tokadd('-');
 
7924
        goto escaped;
 
7925
 
 
7926
      case 'c':
 
7927
        tokadd('\\'); tokadd('c');
 
7928
      escaped:
 
7929
        if ((c = nextc()) == '\\') {
 
7930
            return tokadd_escape(term);
 
7931
        }
 
7932
        else if (c == -1) goto eof;
 
7933
        tokadd(c);
 
7934
        return 0;
 
7935
 
 
7936
      eof:
 
7937
      case -1:
 
7938
        yyerror("Invalid escape character syntax");
 
7939
        return -1;
 
7940
 
 
7941
      default:
 
7942
        if (c != '\\' || c != term)
 
7943
            tokadd('\\');
 
7944
        tokadd(c);
 
7945
    }
 
7946
    return 0;
 
7947
}
 
7948
 
 
7949
static int
 
7950
regx_options()
 
7951
{
 
7952
    char kcode = 0;
 
7953
    int options = 0;
 
7954
    int c;
 
7955
 
 
7956
    newtok();
 
7957
    while (c = nextc(), ISALPHA(c)) {
 
7958
        switch (c) {
 
7959
          case 'i':
 
7960
            options |= RE_OPTION_IGNORECASE;
 
7961
            break;
 
7962
          case 'x':
 
7963
            options |= RE_OPTION_EXTENDED;
 
7964
            break;
 
7965
          case 'm':
 
7966
            options |= RE_OPTION_MULTILINE;
 
7967
            break;
 
7968
          case 'o':
 
7969
            options |= RE_OPTION_ONCE;
 
7970
            break;
 
7971
          case 'n':
 
7972
            kcode = 16;
 
7973
            break;
 
7974
          case 'e':
 
7975
            kcode = 32;
 
7976
            break;
 
7977
          case 's':
 
7978
            kcode = 48;
 
7979
            break;
 
7980
          case 'u':
 
7981
            kcode = 64;
 
7982
            break;
 
7983
          default:
 
7984
            tokadd(c);
 
7985
            break;
 
7986
        }
 
7987
    }
 
7988
    pushback(c);
 
7989
    if (toklen()) {
 
7990
        tokfix();
 
7991
        rb_compile_error("unknown regexp option%s - %s",
 
7992
                         toklen() > 1 ? "s" : "", tok());
 
7993
    }
 
7994
    return options | kcode;
 
7995
}
 
7996
 
 
7997
#define STR_FUNC_ESCAPE 0x01
 
7998
#define STR_FUNC_EXPAND 0x02
 
7999
#define STR_FUNC_REGEXP 0x04
 
8000
#define STR_FUNC_QWORDS 0x08
 
8001
#define STR_FUNC_SYMBOL 0x10
 
8002
#define STR_FUNC_INDENT 0x20
 
8003
 
 
8004
enum string_type {
 
8005
    str_squote = (0),
 
8006
    str_dquote = (STR_FUNC_EXPAND),
 
8007
    str_xquote = (STR_FUNC_EXPAND),
 
8008
    str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
 
8009
    str_sword  = (STR_FUNC_QWORDS),
 
8010
    str_dword  = (STR_FUNC_QWORDS|STR_FUNC_EXPAND),
 
8011
    str_ssym   = (STR_FUNC_SYMBOL),
 
8012
    str_dsym   = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND),
 
8013
};
 
8014
 
 
8015
static void
 
8016
dispose_string(str)
 
8017
    VALUE str;
 
8018
{
 
8019
    xfree(RSTRING(str)->ptr);
 
8020
    rb_gc_force_recycle(str);
 
8021
}
 
8022
 
 
8023
static int
 
8024
tokadd_string(func, term, paren, nest)
 
8025
    int func, term, paren, *nest;
 
8026
{
 
8027
    int c;
 
8028
 
 
8029
    while ((c = nextc()) != -1) {
 
8030
        if (paren && c == paren) {
 
8031
            ++*nest;
 
8032
        }
 
8033
        else if (c == term) {
 
8034
            if (!nest || !*nest) {
 
8035
                pushback(c);
 
8036
                break;
 
8037
            }
 
8038
            --*nest;
 
8039
        }
 
8040
        else if ((func & STR_FUNC_EXPAND) && c == '#' && lex_p < lex_pend) {
 
8041
            int c2 = *lex_p;
 
8042
            if (c2 == '$' || c2 == '@' || c2 == '{') {
 
8043
                pushback(c);
 
8044
                break;
 
8045
            }
 
8046
        }
 
8047
        else if (c == '\\') {
 
8048
            c = nextc();
 
8049
            switch (c) {
 
8050
              case '\n':
 
8051
                if (func & STR_FUNC_QWORDS) break;
 
8052
                if (func & STR_FUNC_EXPAND) continue;
 
8053
                tokadd('\\');
 
8054
                break;
 
8055
 
 
8056
              case '\\':
 
8057
                if (func & STR_FUNC_ESCAPE) tokadd(c);
 
8058
                break;
 
8059
 
 
8060
              default:
 
8061
                if (func & STR_FUNC_REGEXP) {
 
8062
                    pushback(c);
 
8063
                    if (tokadd_escape(term) < 0)
 
8064
                        return -1;
 
8065
                    continue;
 
8066
                }
 
8067
                else if (func & STR_FUNC_EXPAND) {
 
8068
                    pushback(c);
 
8069
                    if (func & STR_FUNC_ESCAPE) tokadd('\\');
 
8070
                    c = read_escape();
 
8071
                }
 
8072
                else if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
 
8073
                    /* ignore backslashed spaces in %w */
 
8074
                }
 
8075
                else if (c != term && !(paren && c == paren)) {
 
8076
                    tokadd('\\');
 
8077
                }
 
8078
            }
 
8079
        }
 
8080
        else if (ismbchar(c)) {
 
8081
            int i, len = mbclen(c)-1;
 
8082
 
 
8083
            for (i = 0; i < len; i++) {
 
8084
                tokadd(c);
 
8085
                c = nextc();
 
8086
            }
 
8087
        }
 
8088
        else if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
 
8089
            pushback(c);
 
8090
            break;
 
8091
        }
 
8092
        if (!c && (func & STR_FUNC_SYMBOL)) {
 
8093
            func &= ~STR_FUNC_SYMBOL;
 
8094
            rb_compile_error("symbol cannot contain '\\0'");
 
8095
            continue;
 
8096
        }
 
8097
        tokadd(c);
 
8098
    }
 
8099
    return c;
 
8100
}
 
8101
 
 
8102
#define NEW_STRTERM(func, term, paren) \
 
8103
        rb_node_newnode(NODE_STRTERM, (func), (term) | ((paren) << (CHAR_BIT * 2)), 0)
 
8104
 
 
8105
static int
 
8106
parse_string(quote)
 
8107
    NODE *quote;
 
8108
{
 
8109
    int func = quote->nd_func;
 
8110
    int term = nd_term(quote);
 
8111
    int paren = nd_paren(quote);
 
8112
    int c, space = 0;
 
8113
 
 
8114
    if (func == -1) return tSTRING_END;
 
8115
    c = nextc();
 
8116
    if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
 
8117
        do {c = nextc();} while (ISSPACE(c));
 
8118
        space = 1;
 
8119
    }
 
8120
    if (c == term && !quote->nd_nest) {
 
8121
        if (func & STR_FUNC_QWORDS) {
 
8122
            quote->nd_func = -1;
 
8123
            return ' ';
 
8124
        }
 
8125
        if (!(func & STR_FUNC_REGEXP)) return tSTRING_END;
 
8126
        yylval.num = regx_options();
 
8127
        return tREGEXP_END;
 
8128
    }
 
8129
    if (space) {
 
8130
        pushback(c);
 
8131
        return ' ';
 
8132
    }
 
8133
    newtok();
 
8134
    if ((func & STR_FUNC_EXPAND) && c == '#') {
 
8135
        switch (c = nextc()) {
 
8136
          case '$':
 
8137
          case '@':
 
8138
            pushback(c);
 
8139
            return tSTRING_DVAR;
 
8140
          case '{':
 
8141
            return tSTRING_DBEG;
 
8142
        }
 
8143
        tokadd('#');
 
8144
    }
 
8145
    pushback(c);
 
8146
    if (tokadd_string(func, term, paren, &quote->nd_nest) == -1) {
 
8147
        ruby_sourceline = nd_line(quote);
 
8148
        rb_compile_error("unterminated string meets end of file");
 
8149
        return tSTRING_END;
 
8150
    }
 
8151
 
 
8152
    tokfix();
 
8153
    yylval.node = NEW_STR(rb_str_new(tok(), toklen()));
 
8154
    return tSTRING_CONTENT;
 
8155
}
 
8156
 
 
8157
static int
 
8158
heredoc_identifier()
 
8159
{
 
8160
    int c = nextc(), term, func = 0, len;
 
8161
 
 
8162
    if (c == '-') {
 
8163
        c = nextc();
 
8164
        func = STR_FUNC_INDENT;
 
8165
    }
 
8166
    switch (c) {
 
8167
      case '\'':
 
8168
        func |= str_squote; goto quoted;
 
8169
      case '"':
 
8170
        func |= str_dquote; goto quoted;
 
8171
      case '`':
 
8172
        func |= str_xquote;
 
8173
      quoted:
 
8174
        newtok();
 
8175
        tokadd(func);
 
8176
        term = c;
 
8177
        while ((c = nextc()) != -1 && c != term) {
 
8178
            len = mbclen(c);
 
8179
            do {tokadd(c);} while (--len > 0 && (c = nextc()) != -1);
 
8180
        }
 
8181
        if (c == -1) {
 
8182
            rb_compile_error("unterminated here document identifier");
 
8183
            return 0;
 
8184
        }
 
8185
        break;
 
8186
 
 
8187
      default:
 
8188
        if (!is_identchar(c)) {
 
8189
            pushback(c);
 
8190
            if (func & STR_FUNC_INDENT) {
 
8191
                pushback('-');
 
8192
            }
 
8193
            return 0;
 
8194
        }
 
8195
        newtok();
 
8196
        term = '"';
 
8197
        tokadd(func |= str_dquote);
 
8198
        do {
 
8199
            len = mbclen(c);
 
8200
            do {tokadd(c);} while (--len > 0 && (c = nextc()) != -1);
 
8201
        } while ((c = nextc()) != -1 && is_identchar(c));
 
8202
        pushback(c);
 
8203
        break;
 
8204
    }
 
8205
 
 
8206
    tokfix();
 
8207
    len = lex_p - lex_pbeg;
 
8208
    lex_p = lex_pend;
 
8209
    lex_strterm = rb_node_newnode(NODE_HEREDOC,
 
8210
                                  rb_str_new(tok(), toklen()),  /* nd_lit */
 
8211
                                  len,                          /* nd_nth */
 
8212
                                  lex_lastline);                /* nd_orig */
 
8213
    return term == '`' ? tXSTRING_BEG : tSTRING_BEG;
 
8214
}
 
8215
 
 
8216
static void
 
8217
heredoc_restore(here)
 
8218
    NODE *here;
 
8219
{
 
8220
    VALUE line = here->nd_orig;
 
8221
    lex_lastline = line;
 
8222
    lex_pbeg = RSTRING(line)->ptr;
 
8223
    lex_pend = lex_pbeg + RSTRING(line)->len;
 
8224
    lex_p = lex_pbeg + here->nd_nth;
 
8225
    heredoc_end = ruby_sourceline;
 
8226
    ruby_sourceline = nd_line(here);
 
8227
    dispose_string(here->nd_lit);
 
8228
    rb_gc_force_recycle((VALUE)here);
 
8229
}
 
8230
 
 
8231
static int
 
8232
whole_match_p(eos, len, indent)
 
8233
    char *eos;
 
8234
    int len, indent;
 
8235
{
 
8236
    char *p = lex_pbeg;
 
8237
    int n;
 
8238
 
 
8239
    if (indent) {
 
8240
        while (*p && ISSPACE(*p)) p++;
 
8241
    }
 
8242
    n= lex_pend - (p + len);
 
8243
    if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return Qfalse;
 
8244
    if (strncmp(eos, p, len) == 0) return Qtrue;
 
8245
    return Qfalse;
 
8246
}
 
8247
 
 
8248
static int
 
8249
here_document(here)
 
8250
    NODE *here;
 
8251
{
 
8252
    int c, func, indent = 0;
 
8253
    char *eos, *p, *pend;
 
8254
    long len;
 
8255
    VALUE str = 0;
 
8256
 
 
8257
    eos = RSTRING(here->nd_lit)->ptr;
 
8258
    len = RSTRING(here->nd_lit)->len - 1;
 
8259
    indent = (func = *eos++) & STR_FUNC_INDENT;
 
8260
 
 
8261
    if ((c = nextc()) == -1) {
 
8262
      error:
 
8263
        rb_compile_error("can't find string \"%s\" anywhere before EOF", eos);
 
8264
        heredoc_restore(lex_strterm);
 
8265
        lex_strterm = 0;
 
8266
        return 0;
 
8267
    }
 
8268
    if (was_bol() && whole_match_p(eos, len, indent)) {
 
8269
        heredoc_restore(lex_strterm);
 
8270
        return tSTRING_END;
 
8271
    }
 
8272
 
 
8273
    if (!(func & STR_FUNC_EXPAND)) {
 
8274
        do {
 
8275
            p = RSTRING(lex_lastline)->ptr;
 
8276
            pend = lex_pend;
 
8277
            if (pend > p) {
 
8278
                switch (pend[-1]) {
 
8279
                  case '\n':
 
8280
                    if (--pend == p || pend[-1] != '\r') {
 
8281
                        pend++;
 
8282
                        break;
 
8283
                    }
 
8284
                  case '\r':
 
8285
                    --pend;
 
8286
                }
 
8287
            }
 
8288
            if (str)
 
8289
                rb_str_cat(str, p, pend - p);
 
8290
            else
 
8291
                str = rb_str_new(p, pend - p);
 
8292
            if (pend < lex_pend) rb_str_cat(str, "\n", 1);
 
8293
            lex_p = lex_pend;
 
8294
            if (nextc() == -1) {
 
8295
                if (str) dispose_string(str);
 
8296
                goto error;
 
8297
            }
 
8298
        } while (!whole_match_p(eos, len, indent));
 
8299
    }
 
8300
    else {
 
8301
        newtok();
 
8302
        if (c == '#') {
 
8303
            switch (c = nextc()) {
 
8304
              case '$':
 
8305
              case '@':
 
8306
                pushback(c);
 
8307
                return tSTRING_DVAR;
 
8308
              case '{':
 
8309
                return tSTRING_DBEG;
 
8310
            }
 
8311
            tokadd('#');
 
8312
        }
 
8313
        do {
 
8314
            pushback(c);
 
8315
            if ((c = tokadd_string(func, '\n', 0, NULL)) == -1) goto error;
 
8316
            if (c != '\n') {
 
8317
                yylval.node = NEW_STR(rb_str_new(tok(), toklen()));
 
8318
                return tSTRING_CONTENT;
 
8319
            }
 
8320
            tokadd(nextc());
 
8321
            if ((c = nextc()) == -1) goto error;
 
8322
        } while (!whole_match_p(eos, len, indent));
 
8323
        str = rb_str_new(tok(), toklen());
 
8324
    }
 
8325
    heredoc_restore(lex_strterm);
 
8326
    lex_strterm = NEW_STRTERM(-1, 0, 0);
 
8327
    yylval.node = NEW_STR(str);
 
8328
    return tSTRING_CONTENT;
 
8329
}
 
8330
 
 
8331
#include "lex.c"
 
8332
 
 
8333
static void
 
8334
arg_ambiguous()
 
8335
{
 
8336
    rb_warning("ambiguous first argument; put parentheses or even spaces");
 
8337
}
 
8338
 
 
8339
#define IS_ARG() (lex_state == EXPR_ARG || lex_state == EXPR_CMDARG)
 
8340
 
 
8341
static int
 
8342
yylex()
 
8343
{
 
8344
    register int c;
 
8345
    int space_seen = 0;
 
8346
    int cmd_state;
 
8347
    enum lex_state last_state;
 
8348
 
 
8349
    if (lex_strterm) {
 
8350
        int token;
 
8351
        if (nd_type(lex_strterm) == NODE_HEREDOC) {
 
8352
            token = here_document(lex_strterm);
 
8353
            if (token == tSTRING_END) {
 
8354
                lex_strterm = 0;
 
8355
                lex_state = EXPR_END;
 
8356
            }
 
8357
        }
 
8358
        else {
 
8359
            token = parse_string(lex_strterm);
 
8360
            if (token == tSTRING_END || token == tREGEXP_END) {
 
8361
                rb_gc_force_recycle((VALUE)lex_strterm);
 
8362
                lex_strterm = 0;
 
8363
                lex_state = EXPR_END;
 
8364
            }
 
8365
        }
 
8366
        return token;
 
8367
    }
 
8368
    cmd_state = command_start;
 
8369
    command_start = Qfalse;
 
8370
  retry:
 
8371
    switch (c = nextc()) {
 
8372
      case '\0':                /* NUL */
 
8373
      case '\004':              /* ^D */
 
8374
      case '\032':              /* ^Z */
 
8375
      case -1:                  /* end of script. */
 
8376
        return 0;
 
8377
 
 
8378
        /* white spaces */
 
8379
      case ' ': case '\t': case '\f': case '\r':
 
8380
      case '\13': /* '\v' */
 
8381
        space_seen++;
 
8382
        goto retry;
 
8383
 
 
8384
      case '#':         /* it's a comment */
 
8385
        while ((c = nextc()) != '\n') {
 
8386
            if (c == -1)
 
8387
                return 0;
 
8388
        }
 
8389
        /* fall through */
 
8390
      case '\n':
 
8391
        switch (lex_state) {
 
8392
          case EXPR_BEG:
 
8393
          case EXPR_FNAME:
 
8394
          case EXPR_DOT:
 
8395
          case EXPR_CLASS:
 
8396
            goto retry;
 
8397
          default:
 
8398
            break;
 
8399
        }
 
8400
        command_start = Qtrue;
 
8401
        lex_state = EXPR_BEG;
 
8402
        return '\n';
 
8403
 
 
8404
      case '*':
 
8405
        if ((c = nextc()) == '*') {
 
8406
            if ((c = nextc()) == '=') {
 
8407
                yylval.id = tPOW;
 
8408
                lex_state = EXPR_BEG;
 
8409
                return tOP_ASGN;
 
8410
            }
 
8411
            pushback(c);
 
8412
            c = tPOW;
 
8413
        }
 
8414
        else {
 
8415
            if (c == '=') {
 
8416
                yylval.id = '*';
 
8417
                lex_state = EXPR_BEG;
 
8418
                return tOP_ASGN;
 
8419
            }
 
8420
            pushback(c);
 
8421
            if (IS_ARG() && space_seen && !ISSPACE(c)){
 
8422
                rb_warning("`*' interpreted as argument prefix");
 
8423
                c = tSTAR;
 
8424
            }
 
8425
            else if (lex_state == EXPR_BEG || lex_state == EXPR_MID) {
 
8426
                c = tSTAR;
 
8427
            }
 
8428
            else {
 
8429
                c = '*';
 
8430
            }
 
8431
        }
 
8432
        switch (lex_state) {
 
8433
          case EXPR_FNAME: case EXPR_DOT:
 
8434
            lex_state = EXPR_ARG; break;
 
8435
          default:
 
8436
            lex_state = EXPR_BEG; break;
 
8437
        }
 
8438
        return c;
 
8439
 
 
8440
      case '!':
 
8441
        lex_state = EXPR_BEG;
 
8442
        if ((c = nextc()) == '=') {
 
8443
            return tNEQ;
 
8444
        }
 
8445
        if (c == '~') {
 
8446
            return tNMATCH;
 
8447
        }
 
8448
        pushback(c);
 
8449
        return '!';
 
8450
 
 
8451
      case '=':
 
8452
        if (was_bol()) {
 
8453
            /* skip embedded rd document */
 
8454
            if (strncmp(lex_p, "begin", 5) == 0 && ISSPACE(lex_p[5])) {
 
8455
                for (;;) {
 
8456
                    lex_p = lex_pend;
 
8457
                    c = nextc();
 
8458
                    if (c == -1) {
 
8459
                        rb_compile_error("embedded document meets end of file");
 
8460
                        return 0;
 
8461
                    }
 
8462
                    if (c != '=') continue;
 
8463
                    if (strncmp(lex_p, "end", 3) == 0 &&
 
8464
                        (lex_p + 3 == lex_pend || ISSPACE(lex_p[3]))) {
 
8465
                        break;
 
8466
                    }
 
8467
                }
 
8468
                lex_p = lex_pend;
 
8469
                goto retry;
 
8470
            }
 
8471
        }
 
8472
 
 
8473
        switch (lex_state) {
 
8474
          case EXPR_FNAME: case EXPR_DOT:
 
8475
            lex_state = EXPR_ARG; break;
 
8476
          default:
 
8477
            lex_state = EXPR_BEG; break;
 
8478
        }
 
8479
        if ((c = nextc()) == '=') {
 
8480
            if ((c = nextc()) == '=') {
 
8481
                return tEQQ;
 
8482
            }
 
8483
            pushback(c);
 
8484
            return tEQ;
 
8485
        }
 
8486
        if (c == '~') {
 
8487
            return tMATCH;
 
8488
        }
 
8489
        else if (c == '>') {
 
8490
            return tASSOC;
 
8491
        }
 
8492
        pushback(c);
 
8493
        return '=';
 
8494
 
 
8495
      case '<':
 
8496
        c = nextc();
 
8497
        if (c == '<' &&
 
8498
            lex_state != EXPR_END &&
 
8499
            lex_state != EXPR_DOT &&
 
8500
            lex_state != EXPR_ENDARG &&
 
8501
            lex_state != EXPR_CLASS &&
 
8502
            (!IS_ARG() || space_seen)) {
 
8503
            int token = heredoc_identifier();
 
8504
            if (token) return token;
 
8505
        }
 
8506
        switch (lex_state) {
 
8507
          case EXPR_FNAME: case EXPR_DOT:
 
8508
            lex_state = EXPR_ARG; break;
 
8509
          default:
 
8510
            lex_state = EXPR_BEG; break;
 
8511
        }
 
8512
        if (c == '=') {
 
8513
            if ((c = nextc()) == '>') {
 
8514
                return tCMP;
 
8515
            }
 
8516
            pushback(c);
 
8517
            return tLEQ;
 
8518
        }
 
8519
        if (c == '<') {
 
8520
            if ((c = nextc()) == '=') {
 
8521
                yylval.id = tLSHFT;
 
8522
                lex_state = EXPR_BEG;
 
8523
                return tOP_ASGN;
 
8524
            }
 
8525
            pushback(c);
 
8526
            return tLSHFT;
 
8527
        }
 
8528
        pushback(c);
 
8529
        return '<';
 
8530
 
 
8531
      case '>':
 
8532
        switch (lex_state) {
 
8533
          case EXPR_FNAME: case EXPR_DOT:
 
8534
            lex_state = EXPR_ARG; break;
 
8535
          default:
 
8536
            lex_state = EXPR_BEG; break;
 
8537
        }
 
8538
        if ((c = nextc()) == '=') {
 
8539
            return tGEQ;
 
8540
        }
 
8541
        if (c == '>') {
 
8542
            if ((c = nextc()) == '=') {
 
8543
                yylval.id = tRSHFT;
 
8544
                lex_state = EXPR_BEG;
 
8545
                return tOP_ASGN;
 
8546
            }
 
8547
            pushback(c);
 
8548
            return tRSHFT;
 
8549
        }
 
8550
        pushback(c);
 
8551
        return '>';
 
8552
 
 
8553
      case '"':
 
8554
        lex_strterm = NEW_STRTERM(str_dquote, '"', 0);
 
8555
        return tSTRING_BEG;
 
8556
 
 
8557
      case '`':
 
8558
        if (lex_state == EXPR_FNAME) {
 
8559
            lex_state = EXPR_END;
 
8560
            return c;
 
8561
        }
 
8562
        if (lex_state == EXPR_DOT) {
 
8563
            if (cmd_state)
 
8564
                lex_state = EXPR_CMDARG;
 
8565
            else
 
8566
                lex_state = EXPR_ARG;
 
8567
            return c;
 
8568
        }
 
8569
        lex_strterm = NEW_STRTERM(str_xquote, '`', 0);
 
8570
        return tXSTRING_BEG;
 
8571
 
 
8572
      case '\'':
 
8573
        lex_strterm = NEW_STRTERM(str_squote, '\'', 0);
 
8574
        return tSTRING_BEG;
 
8575
 
 
8576
      case '?':
 
8577
        if (lex_state == EXPR_END || lex_state == EXPR_ENDARG) {
 
8578
            lex_state = EXPR_BEG;
 
8579
            return '?';
 
8580
        }
 
8581
        c = nextc();
 
8582
        if (c == -1) {
 
8583
            rb_compile_error("incomplete character syntax");
 
8584
            return 0;
 
8585
        }
 
8586
        if (ISSPACE(c)){
 
8587
            if (!IS_ARG()){
 
8588
                int c2 = 0;
 
8589
                switch (c) {
 
8590
                  case ' ':
 
8591
                    c2 = 's';
 
8592
                    break;
 
8593
                  case '\n':
 
8594
                    c2 = 'n';
 
8595
                    break;
 
8596
                  case '\t':
 
8597
                    c2 = 't';
 
8598
                    break;
 
8599
                  case '\v':
 
8600
                    c2 = 'v';
 
8601
                    break;
 
8602
                  case '\r':
 
8603
                    c2 = 'r';
 
8604
                    break;
 
8605
                  case '\f':
 
8606
                    c2 = 'f';
 
8607
                    break;
 
8608
                }
 
8609
                if (c2) {
 
8610
                    rb_warn("invalid character syntax; use ?\\%c", c2);
 
8611
                }
 
8612
            }
 
8613
          ternary:
 
8614
            pushback(c);
 
8615
            lex_state = EXPR_BEG;
 
8616
            return '?';
 
8617
        }
 
8618
        else if (ismbchar(c)) {
 
8619
            rb_warn("multibyte character literal not supported yet; use ?\\%.3o", c);
 
8620
            goto ternary;
 
8621
        }
 
8622
        else if ((ISALNUM(c) || c == '_') && lex_p < lex_pend && is_identchar(*lex_p)) {
 
8623
            goto ternary;
 
8624
        }
 
8625
        else if (c == '\\') {
 
8626
            c = read_escape();
 
8627
        }
 
8628
        c &= 0xff;
 
8629
        lex_state = EXPR_END;
 
8630
        yylval.node = NEW_LIT(INT2FIX(c));
 
8631
        return tINTEGER;
 
8632
 
 
8633
      case '&':
 
8634
        if ((c = nextc()) == '&') {
 
8635
            lex_state = EXPR_BEG;
 
8636
            if ((c = nextc()) == '=') {
 
8637
                yylval.id = tANDOP;
 
8638
                lex_state = EXPR_BEG;
 
8639
                return tOP_ASGN;
 
8640
            }
 
8641
            pushback(c);
 
8642
            return tANDOP;
 
8643
        }
 
8644
        else if (c == '=') {
 
8645
            yylval.id = '&';
 
8646
            lex_state = EXPR_BEG;
 
8647
            return tOP_ASGN;
 
8648
        }
 
8649
        pushback(c);
 
8650
        if (IS_ARG() && space_seen && !ISSPACE(c)){
 
8651
            rb_warning("`&' interpreted as argument prefix");
 
8652
            c = tAMPER;
 
8653
        }
 
8654
        else if (lex_state == EXPR_BEG || lex_state == EXPR_MID) {
 
8655
            c = tAMPER;
 
8656
        }
 
8657
        else {
 
8658
            c = '&';
 
8659
        }
 
8660
        switch (lex_state) {
 
8661
          case EXPR_FNAME: case EXPR_DOT:
 
8662
            lex_state = EXPR_ARG; break;
 
8663
          default:
 
8664
            lex_state = EXPR_BEG;
 
8665
        }
 
8666
        return c;
 
8667
 
 
8668
      case '|':
 
8669
        if ((c = nextc()) == '|') {
 
8670
            lex_state = EXPR_BEG;
 
8671
            if ((c = nextc()) == '=') {
 
8672
                yylval.id = tOROP;
 
8673
                lex_state = EXPR_BEG;
 
8674
                return tOP_ASGN;
 
8675
            }
 
8676
            pushback(c);
 
8677
            return tOROP;
 
8678
        }
 
8679
        if (c == '=') {
 
8680
            yylval.id = '|';
 
8681
            lex_state = EXPR_BEG;
 
8682
            return tOP_ASGN;
 
8683
        }
 
8684
        if (lex_state == EXPR_FNAME || lex_state == EXPR_DOT) {
 
8685
            lex_state = EXPR_ARG;
 
8686
        }
 
8687
        else {
 
8688
            lex_state = EXPR_BEG;
 
8689
        }
 
8690
        pushback(c);
 
8691
        return '|';
 
8692
 
 
8693
      case '+':
 
8694
        c = nextc();
 
8695
        if (lex_state == EXPR_FNAME || lex_state == EXPR_DOT) {
 
8696
            lex_state = EXPR_ARG;
 
8697
            if (c == '@') {
 
8698
                return tUPLUS;
 
8699
            }
 
8700
            pushback(c);
 
8701
            return '+';
 
8702
        }
 
8703
        if (c == '=') {
 
8704
            yylval.id = '+';
 
8705
            lex_state = EXPR_BEG;
 
8706
            return tOP_ASGN;
 
8707
        }
 
8708
        if (lex_state == EXPR_BEG || lex_state == EXPR_MID ||
 
8709
            (IS_ARG() && space_seen && !ISSPACE(c))) {
 
8710
            if (IS_ARG()) arg_ambiguous();
 
8711
            lex_state = EXPR_BEG;
 
8712
            pushback(c);
 
8713
            if (ISDIGIT(c)) {
 
8714
                c = '+';
 
8715
                goto start_num;
 
8716
            }
 
8717
            return tUPLUS;
 
8718
        }
 
8719
        lex_state = EXPR_BEG;
 
8720
        pushback(c);
 
8721
        return '+';
 
8722
 
 
8723
      case '-':
 
8724
        c = nextc();
 
8725
        if (lex_state == EXPR_FNAME || lex_state == EXPR_DOT) {
 
8726
            lex_state = EXPR_ARG;
 
8727
            if (c == '@') {
 
8728
                return tUMINUS;
 
8729
            }
 
8730
            pushback(c);
 
8731
            return '-';
 
8732
        }
 
8733
        if (c == '=') {
 
8734
            yylval.id = '-';
 
8735
            lex_state = EXPR_BEG;
 
8736
            return tOP_ASGN;
 
8737
        }
 
8738
        if (lex_state == EXPR_BEG || lex_state == EXPR_MID ||
 
8739
            (IS_ARG() && space_seen && !ISSPACE(c))) {
 
8740
            if (IS_ARG()) arg_ambiguous();
 
8741
            lex_state = EXPR_BEG;
 
8742
            pushback(c);
 
8743
            if (ISDIGIT(c)) {
 
8744
                return tUMINUS_NUM;
 
8745
            }
 
8746
            return tUMINUS;
 
8747
        }
 
8748
        lex_state = EXPR_BEG;
 
8749
        pushback(c);
 
8750
        return '-';
 
8751
 
 
8752
      case '.':
 
8753
        lex_state = EXPR_BEG;
 
8754
        if ((c = nextc()) == '.') {
 
8755
            if ((c = nextc()) == '.') {
 
8756
                return tDOT3;
 
8757
            }
 
8758
            pushback(c);
 
8759
            return tDOT2;
 
8760
        }
 
8761
        pushback(c);
 
8762
        if (ISDIGIT(c)) {
 
8763
            yyerror("no .<digit> floating literal anymore; put 0 before dot");
 
8764
        }
 
8765
        lex_state = EXPR_DOT;
 
8766
        return '.';
 
8767
 
 
8768
      start_num:
 
8769
      case '0': case '1': case '2': case '3': case '4':
 
8770
      case '5': case '6': case '7': case '8': case '9':
 
8771
        {
 
8772
            int is_float, seen_point, seen_e, nondigit;
 
8773
 
 
8774
            is_float = seen_point = seen_e = nondigit = 0;
 
8775
            lex_state = EXPR_END;
 
8776
            newtok();
 
8777
            if (c == '-' || c == '+') {
 
8778
                tokadd(c);
 
8779
                c = nextc();
 
8780
            }
 
8781
            if (c == '0') {
 
8782
                int start = toklen();
 
8783
                c = nextc();
 
8784
                if (c == 'x' || c == 'X') {
 
8785
                    /* hexadecimal */
 
8786
                    c = nextc();
 
8787
                    if (ISXDIGIT(c)) {
 
8788
                        do {
 
8789
                            if (c == '_') {
 
8790
                                if (nondigit) break;
 
8791
                                nondigit = c;
 
8792
                                continue;
 
8793
                            }
 
8794
                            if (!ISXDIGIT(c)) break;
 
8795
                            nondigit = 0;
 
8796
                            tokadd(c);
 
8797
                        } while ((c = nextc()) != -1);
 
8798
                    }
 
8799
                    pushback(c);
 
8800
                    tokfix();
 
8801
                    if (toklen() == start) {
 
8802
                        yyerror("numeric literal without digits");
 
8803
                    }
 
8804
                    else if (nondigit) goto trailing_uc;
 
8805
                    yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 16, Qfalse));
 
8806
                    return tINTEGER;
 
8807
                }
 
8808
                if (c == 'b' || c == 'B') {
 
8809
                    /* binary */
 
8810
                    c = nextc();
 
8811
                    if (c == '0' || c == '1') {
 
8812
                        do {
 
8813
                            if (c == '_') {
 
8814
                                if (nondigit) break;
 
8815
                                nondigit = c;
 
8816
                                continue;
 
8817
                            }
 
8818
                            if (c != '0' && c != '1') break;
 
8819
                            nondigit = 0;
 
8820
                            tokadd(c);
 
8821
                        } while ((c = nextc()) != -1);
 
8822
                    }
 
8823
                    pushback(c);
 
8824
                    tokfix();
 
8825
                    if (toklen() == start) {
 
8826
                        yyerror("numeric literal without digits");
 
8827
                    }
 
8828
                    else if (nondigit) goto trailing_uc;
 
8829
                    yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 2, Qfalse));
 
8830
                    return tINTEGER;
 
8831
                }
 
8832
                if (c == 'd' || c == 'D') {
 
8833
                    /* decimal */
 
8834
                    c = nextc();
 
8835
                    if (ISDIGIT(c)) {
 
8836
                        do {
 
8837
                            if (c == '_') {
 
8838
                                if (nondigit) break;
 
8839
                                nondigit = c;
 
8840
                                continue;
 
8841
                            }
 
8842
                            if (!ISDIGIT(c)) break;
 
8843
                            nondigit = 0;
 
8844
                            tokadd(c);
 
8845
                        } while ((c = nextc()) != -1);
 
8846
                    }
 
8847
                    pushback(c);
 
8848
                    tokfix();
 
8849
                    if (toklen() == start) {
 
8850
                        yyerror("numeric literal without digits");
 
8851
                    }
 
8852
                    else if (nondigit) goto trailing_uc;
 
8853
                    yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 10, Qfalse));
 
8854
                    return tINTEGER;
 
8855
                }
 
8856
                if (c == '_') {
 
8857
                    /* 0_0 */
 
8858
                    goto octal_number;
 
8859
                }
 
8860
                if (c == 'o' || c == 'O') {
 
8861
                    /* prefixed octal */
 
8862
                    c = nextc();
 
8863
                    if (c == '_') {
 
8864
                        yyerror("numeric literal without digits");
 
8865
                    }
 
8866
                }
 
8867
                if (c >= '0' && c <= '7') {
 
8868
                    /* octal */
 
8869
                  octal_number:
 
8870
                    do {
 
8871
                        if (c == '_') {
 
8872
                            if (nondigit) break;
 
8873
                            nondigit = c;
 
8874
                            continue;
 
8875
                        }
 
8876
                        if (c < '0' || c > '7') break;
 
8877
                        nondigit = 0;
 
8878
                        tokadd(c);
 
8879
                    } while ((c = nextc()) != -1);
 
8880
                    if (toklen() > start) {
 
8881
                        pushback(c);
 
8882
                        tokfix();
 
8883
                        if (nondigit) goto trailing_uc;
 
8884
                        yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 8, Qfalse));
 
8885
                        return tINTEGER;
 
8886
                    }
 
8887
                    if (nondigit) {
 
8888
                        pushback(c);
 
8889
                        goto trailing_uc;
 
8890
                    }
 
8891
                }
 
8892
                if (c > '7' && c <= '9') {
 
8893
                    yyerror("Illegal octal digit");
 
8894
                }
 
8895
                else if (c == '.' || c == 'e' || c == 'E') {
 
8896
                    tokadd('0');
 
8897
                }
 
8898
                else {
 
8899
                    pushback(c);
 
8900
                    yylval.node = NEW_LIT(INT2FIX(0));
 
8901
                    return tINTEGER;
 
8902
                }
 
8903
            }
 
8904
 
 
8905
            for (;;) {
 
8906
                switch (c) {
 
8907
                  case '0': case '1': case '2': case '3': case '4':
 
8908
                  case '5': case '6': case '7': case '8': case '9':
 
8909
                    nondigit = 0;
 
8910
                    tokadd(c);
 
8911
                    break;
 
8912
 
 
8913
                  case '.':
 
8914
                    if (nondigit) goto trailing_uc;
 
8915
                    if (seen_point || seen_e) {
 
8916
                        goto decode_num;
 
8917
                    }
 
8918
                    else {
 
8919
                        int c0 = nextc();
 
8920
                        if (!ISDIGIT(c0)) {
 
8921
                            pushback(c0);
 
8922
                            goto decode_num;
 
8923
                        }
 
8924
                        c = c0;
 
8925
                    }
 
8926
                    tokadd('.');
 
8927
                    tokadd(c);
 
8928
                    is_float++;
 
8929
                    seen_point++;
 
8930
                    nondigit = 0;
 
8931
                    break;
 
8932
 
 
8933
                  case 'e':
 
8934
                  case 'E':
 
8935
                    if (nondigit) {
 
8936
                        pushback(c);
 
8937
                        c = nondigit;
 
8938
                        goto decode_num;
 
8939
                    }
 
8940
                    if (seen_e) {
 
8941
                        goto decode_num;
 
8942
                    }
 
8943
                    tokadd(c);
 
8944
                    seen_e++;
 
8945
                    is_float++;
 
8946
                    nondigit = c;
 
8947
                    c = nextc();
 
8948
                    if (c != '-' && c != '+') continue;
 
8949
                    tokadd(c);
 
8950
                    nondigit = c;
 
8951
                    break;
 
8952
 
 
8953
                  case '_':     /* `_' in number just ignored */
 
8954
                    if (nondigit) goto decode_num;
 
8955
                    nondigit = c;
 
8956
                    break;
 
8957
 
 
8958
                  default:
 
8959
                    goto decode_num;
 
8960
                }
 
8961
                c = nextc();
 
8962
            }
 
8963
 
 
8964
          decode_num:
 
8965
            pushback(c);
 
8966
            tokfix();
 
8967
            if (nondigit) {
 
8968
                char tmp[30];
 
8969
              trailing_uc:
 
8970
                sprintf(tmp, "trailing `%c' in number", nondigit);
 
8971
                yyerror(tmp);
 
8972
            }
 
8973
            if (is_float) {
 
8974
                double d = strtod(tok(), 0);
 
8975
                if (errno == ERANGE) {
 
8976
                    rb_warn("Float %s out of range", tok());
 
8977
                    errno = 0;
 
8978
                }
 
8979
                yylval.node = NEW_LIT(rb_float_new(d));
 
8980
                return tFLOAT;
 
8981
            }
 
8982
            yylval.node = NEW_LIT(rb_cstr_to_inum(tok(), 10, Qfalse));
 
8983
            return tINTEGER;
 
8984
        }
 
8985
 
 
8986
      case ']':
 
8987
      case '}':
 
8988
      case ')':
 
8989
        COND_LEXPOP();
 
8990
        CMDARG_LEXPOP();
 
8991
        lex_state = EXPR_END;
 
8992
        return c;
 
8993
 
 
8994
      case ':':
 
8995
        c = nextc();
 
8996
        if (c == ':') {
 
8997
            if (lex_state == EXPR_BEG ||  lex_state == EXPR_MID ||
 
8998
                lex_state == EXPR_CLASS || (IS_ARG() && space_seen)) {
 
8999
                lex_state = EXPR_BEG;
 
9000
                return tCOLON3;
 
9001
            }
 
9002
            lex_state = EXPR_DOT;
 
9003
            return tCOLON2;
 
9004
        }
 
9005
        if (lex_state == EXPR_END || lex_state == EXPR_ENDARG || ISSPACE(c)) {
 
9006
            pushback(c);
 
9007
            lex_state = EXPR_BEG;
 
9008
            return ':';
 
9009
        }
 
9010
        switch (c) {
 
9011
          case '\'':
 
9012
            lex_strterm = NEW_STRTERM(str_ssym, c, 0);
 
9013
            break;
 
9014
          case '"':
 
9015
            lex_strterm = NEW_STRTERM(str_dsym, c, 0);
 
9016
            break;
 
9017
          default:
 
9018
            pushback(c);
 
9019
            break;
 
9020
        }
 
9021
        lex_state = EXPR_FNAME;
 
9022
        return tSYMBEG;
 
9023
 
 
9024
      case '/':
 
9025
        if (lex_state == EXPR_BEG || lex_state == EXPR_MID) {
 
9026
            lex_strterm = NEW_STRTERM(str_regexp, '/', 0);
 
9027
            return tREGEXP_BEG;
 
9028
        }
 
9029
        if ((c = nextc()) == '=') {
 
9030
            yylval.id = '/';
 
9031
            lex_state = EXPR_BEG;
 
9032
            return tOP_ASGN;
 
9033
        }
 
9034
        pushback(c);
 
9035
        if (IS_ARG() && space_seen) {
 
9036
            if (!ISSPACE(c)) {
 
9037
                arg_ambiguous();
 
9038
                lex_strterm = NEW_STRTERM(str_regexp, '/', 0);
 
9039
                return tREGEXP_BEG;
 
9040
            }
 
9041
        }
 
9042
        switch (lex_state) {
 
9043
          case EXPR_FNAME: case EXPR_DOT:
 
9044
            lex_state = EXPR_ARG; break;
 
9045
          default:
 
9046
            lex_state = EXPR_BEG; break;
 
9047
        }
 
9048
        return '/';
 
9049
 
 
9050
      case '^':
 
9051
        if ((c = nextc()) == '=') {
 
9052
            yylval.id = '^';
 
9053
            lex_state = EXPR_BEG;
 
9054
            return tOP_ASGN;
 
9055
        }
 
9056
        switch (lex_state) {
 
9057
          case EXPR_FNAME: case EXPR_DOT:
 
9058
            lex_state = EXPR_ARG; break;
 
9059
          default:
 
9060
            lex_state = EXPR_BEG; break;
 
9061
        }
 
9062
        pushback(c);
 
9063
        return '^';
 
9064
 
 
9065
      case ';':
 
9066
        command_start = Qtrue;
 
9067
      case ',':
 
9068
        lex_state = EXPR_BEG;
 
9069
        return c;
 
9070
 
 
9071
      case '~':
 
9072
        if (lex_state == EXPR_FNAME || lex_state == EXPR_DOT) {
 
9073
            if ((c = nextc()) != '@') {
 
9074
                pushback(c);
 
9075
            }
 
9076
        }
 
9077
        switch (lex_state) {
 
9078
          case EXPR_FNAME: case EXPR_DOT:
 
9079
            lex_state = EXPR_ARG; break;
 
9080
          default:
 
9081
            lex_state = EXPR_BEG; break;
 
9082
        }
 
9083
        return '~';
 
9084
 
 
9085
      case '(':
 
9086
        command_start = Qtrue;
 
9087
        if (lex_state == EXPR_BEG || lex_state == EXPR_MID) {
 
9088
            c = tLPAREN;
 
9089
        }
 
9090
        else if (space_seen) {
 
9091
            if (lex_state == EXPR_CMDARG) {
 
9092
                c = tLPAREN_ARG;
 
9093
            }
 
9094
            else if (lex_state == EXPR_ARG) {
 
9095
                rb_warn("don't put space before argument parentheses");
 
9096
                c = '(';
 
9097
            }
 
9098
        }
 
9099
        COND_PUSH(0);
 
9100
        CMDARG_PUSH(0);
 
9101
        lex_state = EXPR_BEG;
 
9102
        return c;
 
9103
 
 
9104
      case '[':
 
9105
        if (lex_state == EXPR_FNAME || lex_state == EXPR_DOT) {
 
9106
            lex_state = EXPR_ARG;
 
9107
            if ((c = nextc()) == ']') {
 
9108
                if ((c = nextc()) == '=') {
 
9109
                    return tASET;
 
9110
                }
 
9111
                pushback(c);
 
9112
                return tAREF;
 
9113
            }
 
9114
            pushback(c);
 
9115
            return '[';
 
9116
        }
 
9117
        else if (lex_state == EXPR_BEG || lex_state == EXPR_MID) {
 
9118
            c = tLBRACK;
 
9119
        }
 
9120
        else if (IS_ARG() && space_seen) {
 
9121
            c = tLBRACK;
 
9122
        }
 
9123
        lex_state = EXPR_BEG;
 
9124
        COND_PUSH(0);
 
9125
        CMDARG_PUSH(0);
 
9126
        return c;
 
9127
 
 
9128
      case '{':
 
9129
        if (IS_ARG() || lex_state == EXPR_END)
 
9130
            c = '{';          /* block (primary) */
 
9131
        else if (lex_state == EXPR_ENDARG)
 
9132
            c = tLBRACE_ARG;  /* block (expr) */
 
9133
        else
 
9134
            c = tLBRACE;      /* hash */
 
9135
        COND_PUSH(0);
 
9136
        CMDARG_PUSH(0);
 
9137
        lex_state = EXPR_BEG;
 
9138
        return c;
 
9139
 
 
9140
      case '\\':
 
9141
        c = nextc();
 
9142
        if (c == '\n') {
 
9143
            space_seen = 1;
 
9144
            goto retry; /* skip \\n */
 
9145
        }
 
9146
        pushback(c);
 
9147
        return '\\';
 
9148
 
 
9149
      case '%':
 
9150
        if (lex_state == EXPR_BEG || lex_state == EXPR_MID) {
 
9151
            int term;
 
9152
            int paren;
 
9153
 
 
9154
            c = nextc();
 
9155
          quotation:
 
9156
            if (!ISALNUM(c)) {
 
9157
                term = c;
 
9158
                c = 'Q';
 
9159
            }
 
9160
            else {
 
9161
                term = nextc();
 
9162
                if (ISALNUM(term) || ismbchar(term)) {
 
9163
                    yyerror("unknown type of %string");
 
9164
                    return 0;
 
9165
                }
 
9166
            }
 
9167
            if (c == -1 || term == -1) {
 
9168
                rb_compile_error("unterminated quoted string meets end of file");
 
9169
                return 0;
 
9170
            }
 
9171
            paren = term;
 
9172
            if (term == '(') term = ')';
 
9173
            else if (term == '[') term = ']';
 
9174
            else if (term == '{') term = '}';
 
9175
            else if (term == '<') term = '>';
 
9176
            else paren = 0;
 
9177
 
 
9178
            switch (c) {
 
9179
              case 'Q':
 
9180
                lex_strterm = NEW_STRTERM(str_dquote, term, paren);
 
9181
                return tSTRING_BEG;
 
9182
 
 
9183
              case 'q':
 
9184
                lex_strterm = NEW_STRTERM(str_squote, term, paren);
 
9185
                return tSTRING_BEG;
 
9186
 
 
9187
              case 'W':
 
9188
                lex_strterm = NEW_STRTERM(str_dword, term, paren);
 
9189
                do {c = nextc();} while (ISSPACE(c));
 
9190
                pushback(c);
 
9191
                return tWORDS_BEG;
 
9192
 
 
9193
              case 'w':
 
9194
                lex_strterm = NEW_STRTERM(str_sword, term, paren);
 
9195
                do {c = nextc();} while (ISSPACE(c));
 
9196
                pushback(c);
 
9197
                return tQWORDS_BEG;
 
9198
 
 
9199
              case 'x':
 
9200
                lex_strterm = NEW_STRTERM(str_xquote, term, paren);
 
9201
                return tXSTRING_BEG;
 
9202
 
 
9203
              case 'r':
 
9204
                lex_strterm = NEW_STRTERM(str_regexp, term, paren);
 
9205
                return tREGEXP_BEG;
 
9206
 
 
9207
              case 's':
 
9208
                lex_strterm = NEW_STRTERM(str_ssym, term, paren);
 
9209
                lex_state = EXPR_FNAME;
 
9210
                return tSYMBEG;
 
9211
 
 
9212
              default:
 
9213
                yyerror("unknown type of %string");
 
9214
                return 0;
 
9215
            }
 
9216
        }
 
9217
        if ((c = nextc()) == '=') {
 
9218
            yylval.id = '%';
 
9219
            lex_state = EXPR_BEG;
 
9220
            return tOP_ASGN;
 
9221
        }
 
9222
        if (IS_ARG() && space_seen && !ISSPACE(c)) {
 
9223
            goto quotation;
 
9224
        }
 
9225
        switch (lex_state) {
 
9226
          case EXPR_FNAME: case EXPR_DOT:
 
9227
            lex_state = EXPR_ARG; break;
 
9228
          default:
 
9229
            lex_state = EXPR_BEG; break;
 
9230
        }
 
9231
        pushback(c);
 
9232
        return '%';
 
9233
 
 
9234
      case '$':
 
9235
        last_state = lex_state;
 
9236
        lex_state = EXPR_END;
 
9237
        newtok();
 
9238
        c = nextc();
 
9239
        switch (c) {
 
9240
          case '_':             /* $_: last read line string */
 
9241
            c = nextc();
 
9242
            if (is_identchar(c)) {
 
9243
                tokadd('$');
 
9244
                tokadd('_');
 
9245
                break;
 
9246
            }
 
9247
            pushback(c);
 
9248
            c = '_';
 
9249
            /* fall through */
 
9250
          case '~':             /* $~: match-data */
 
9251
            local_cnt(c);
 
9252
            /* fall through */
 
9253
          case '*':             /* $*: argv */
 
9254
          case '$':             /* $$: pid */
 
9255
          case '?':             /* $?: last status */
 
9256
          case '!':             /* $!: error string */
 
9257
          case '@':             /* $@: error position */
 
9258
          case '/':             /* $/: input record separator */
 
9259
          case '\\':            /* $\: output record separator */
 
9260
          case ';':             /* $;: field separator */
 
9261
          case ',':             /* $,: output field separator */
 
9262
          case '.':             /* $.: last read line number */
 
9263
          case '=':             /* $=: ignorecase */
 
9264
          case ':':             /* $:: load path */
 
9265
          case '<':             /* $<: reading filename */
 
9266
          case '>':             /* $>: default output handle */
 
9267
          case '\"':            /* $": already loaded files */
 
9268
            tokadd('$');
 
9269
            tokadd(c);
 
9270
            tokfix();
 
9271
            yylval.id = rb_intern(tok());
 
9272
            return tGVAR;
 
9273
 
 
9274
          case '-':
 
9275
            tokadd('$');
 
9276
            tokadd(c);
 
9277
            c = nextc();
 
9278
            if (is_identchar(c)) {
 
9279
                tokadd(c);
 
9280
            }
 
9281
            else {
 
9282
                pushback(c);
 
9283
            }
 
9284
          gvar:
 
9285
            tokfix();
 
9286
            yylval.id = rb_intern(tok());
 
9287
            /* xxx shouldn't check if valid option variable */
 
9288
            return tGVAR;
 
9289
 
 
9290
          case '&':             /* $&: last match */
 
9291
          case '`':             /* $`: string before last match */
 
9292
          case '\'':            /* $': string after last match */
 
9293
          case '+':             /* $+: string matches last paren. */
 
9294
            if (last_state == EXPR_FNAME) {
 
9295
                tokadd('$');
 
9296
                tokadd(c);
 
9297
                goto gvar;
 
9298
            }
 
9299
            yylval.node = NEW_BACK_REF(c);
 
9300
            return tBACK_REF;
 
9301
 
 
9302
          case '1': case '2': case '3':
 
9303
          case '4': case '5': case '6':
 
9304
          case '7': case '8': case '9':
 
9305
            tokadd('$');
 
9306
            do {
 
9307
                tokadd(c);
 
9308
                c = nextc();
 
9309
            } while (ISDIGIT(c));
 
9310
            pushback(c);
 
9311
            if (last_state == EXPR_FNAME) goto gvar;
 
9312
            tokfix();
 
9313
            yylval.node = NEW_NTH_REF(atoi(tok()+1));
 
9314
            return tNTH_REF;
 
9315
 
 
9316
          default:
 
9317
            if (!is_identchar(c)) {
 
9318
                pushback(c);
 
9319
                return '$';
 
9320
            }
 
9321
          case '0':
 
9322
            tokadd('$');
 
9323
        }
 
9324
        break;
 
9325
 
 
9326
      case '@':
 
9327
        c = nextc();
 
9328
        newtok();
 
9329
        tokadd('@');
 
9330
        if (c == '@') {
 
9331
            tokadd('@');
 
9332
            c = nextc();
 
9333
        }
 
9334
        if (ISDIGIT(c)) {
 
9335
            if (tokidx == 1) {
 
9336
                rb_compile_error("`@%c' is not allowed as an instance variable name", c);
 
9337
            }
 
9338
            else {
 
9339
                rb_compile_error("`@@%c' is not allowed as a class variable name", c);
 
9340
            }
 
9341
        }
 
9342
        if (!is_identchar(c)) {
 
9343
            pushback(c);
 
9344
            return '@';
 
9345
        }
 
9346
        break;
 
9347
 
 
9348
      case '_':
 
9349
        if (was_bol() && whole_match_p("__END__", 7, 0)) {
 
9350
            ruby__end__seen = 1;
 
9351
            lex_lastline = 0;
 
9352
            return -1;
 
9353
        }
 
9354
        newtok();
 
9355
        break;
 
9356
 
 
9357
      default:
 
9358
        if (!is_identchar(c)) {
 
9359
            rb_compile_error("Invalid char `\\%03o' in expression", c);
 
9360
            goto retry;
 
9361
        }
 
9362
 
 
9363
        newtok();
 
9364
        break;
 
9365
    }
 
9366
 
 
9367
    do {
 
9368
        tokadd(c);
 
9369
        if (ismbchar(c)) {
 
9370
            int i, len = mbclen(c)-1;
 
9371
 
 
9372
            for (i = 0; i < len; i++) {
 
9373
                c = nextc();
 
9374
                tokadd(c);
 
9375
            }
 
9376
        }
 
9377
        c = nextc();
 
9378
    } while (is_identchar(c));
 
9379
    if ((c == '!' || c == '?') && is_identchar(tok()[0]) && !peek('=')) {
 
9380
        tokadd(c);
 
9381
    }
 
9382
    else {
 
9383
        pushback(c);
 
9384
    }
 
9385
    tokfix();
 
9386
 
 
9387
    {
 
9388
        int result = 0;
 
9389
 
 
9390
        last_state = lex_state;
 
9391
        switch (tok()[0]) {
 
9392
          case '$':
 
9393
            lex_state = EXPR_END;
 
9394
            result = tGVAR;
 
9395
            break;
 
9396
          case '@':
 
9397
            lex_state = EXPR_END;
 
9398
            if (tok()[1] == '@')
 
9399
                result = tCVAR;
 
9400
            else
 
9401
                result = tIVAR;
 
9402
            break;
 
9403
 
 
9404
          default:
 
9405
            if (toklast() == '!' || toklast() == '?') {
 
9406
                result = tFID;
 
9407
            }
 
9408
            else {
 
9409
                if (lex_state == EXPR_FNAME) {
 
9410
                    if ((c = nextc()) == '=' && !peek('~') && !peek('>') &&
 
9411
                        (!peek('=') || (lex_p + 1 < lex_pend && lex_p[1] == '>'))) {
 
9412
                        result = tIDENTIFIER;
 
9413
                        tokadd(c);
 
9414
                        tokfix();
 
9415
                    }
 
9416
                    else {
 
9417
                        pushback(c);
 
9418
                    }
 
9419
                }
 
9420
                if (result == 0 && ISUPPER(tok()[0])) {
 
9421
                    result = tCONSTANT;
 
9422
                }
 
9423
                else {
 
9424
                    result = tIDENTIFIER;
 
9425
                }
 
9426
            }
 
9427
 
 
9428
            if (lex_state != EXPR_DOT) {
 
9429
                struct kwtable *kw;
 
9430
 
 
9431
                /* See if it is a reserved word.  */
 
9432
                kw = rb_reserved_word(tok(), toklen());
 
9433
                if (kw) {
 
9434
                    enum lex_state state = lex_state;
 
9435
                    lex_state = kw->state;
 
9436
                    if (state == EXPR_FNAME) {
 
9437
                        yylval.id = rb_intern(kw->name);
 
9438
                        return kw->id[0];
 
9439
                    }
 
9440
                    if (kw->id[0] == kDO) {
 
9441
                        if (COND_P()) return kDO_COND;
 
9442
                        if (CMDARG_P() && state != EXPR_CMDARG)
 
9443
                            return kDO_BLOCK;
 
9444
                        if (state == EXPR_ENDARG)
 
9445
                            return kDO_BLOCK;
 
9446
                        return kDO;
 
9447
                    }
 
9448
                    if (state == EXPR_BEG)
 
9449
                        return kw->id[0];
 
9450
                    else {
 
9451
                        if (kw->id[0] != kw->id[1])
 
9452
                            lex_state = EXPR_BEG;
 
9453
                        return kw->id[1];
 
9454
                    }
 
9455
                }
 
9456
            }
 
9457
 
 
9458
            if (lex_state == EXPR_BEG ||
 
9459
                lex_state == EXPR_MID ||
 
9460
                lex_state == EXPR_DOT ||
 
9461
                lex_state == EXPR_ARG ||
 
9462
                lex_state == EXPR_CMDARG) {
 
9463
                if (cmd_state) {
 
9464
                    lex_state = EXPR_CMDARG;
 
9465
                }
 
9466
                else {
 
9467
                    lex_state = EXPR_ARG;
 
9468
                }
 
9469
            }
 
9470
            else {
 
9471
                lex_state = EXPR_END;
 
9472
            }
 
9473
        }
 
9474
        yylval.id = rb_intern(tok());
 
9475
        if (is_local_id(yylval.id) &&
 
9476
            last_state != EXPR_DOT &&
 
9477
            ((dyna_in_block() && rb_dvar_defined(yylval.id)) || local_id(yylval.id))) {
 
9478
            lex_state = EXPR_END;
 
9479
        }
 
9480
        return result;
 
9481
    }
 
9482
}
 
9483
 
 
9484
NODE*
 
9485
rb_node_newnode(type, a0, a1, a2)
 
9486
    enum node_type type;
 
9487
    VALUE a0, a1, a2;
 
9488
{
 
9489
    NODE *n = (NODE*)rb_newobj();
 
9490
 
 
9491
    n->flags |= T_NODE;
 
9492
    nd_set_type(n, type);
 
9493
    nd_set_line(n, ruby_sourceline);
 
9494
    n->nd_file = ruby_sourcefile;
 
9495
 
 
9496
    n->u1.value = a0;
 
9497
    n->u2.value = a1;
 
9498
    n->u3.value = a2;
 
9499
 
 
9500
    return n;
 
9501
}
 
9502
 
 
9503
static enum node_type
 
9504
nodetype(node)                  /* for debug */
 
9505
    NODE *node;
 
9506
{
 
9507
    return (enum node_type)nd_type(node);
 
9508
}
 
9509
 
 
9510
static int
 
9511
nodeline(node)
 
9512
    NODE *node;
 
9513
{
 
9514
    return nd_line(node);
 
9515
}
 
9516
 
 
9517
static NODE*
 
9518
newline_node(node)
 
9519
    NODE *node;
 
9520
{
 
9521
    NODE *nl = 0;
 
9522
    if (node) {
 
9523
        if (nd_type(node) == NODE_NEWLINE) return node;
 
9524
        nl = NEW_NEWLINE(node);
 
9525
        fixpos(nl, node);
 
9526
        nl->nd_nth = nd_line(node);
 
9527
    }
 
9528
    return nl;
 
9529
}
 
9530
 
 
9531
static void
 
9532
fixpos(node, orig)
 
9533
    NODE *node, *orig;
 
9534
{
 
9535
    if (!node) return;
 
9536
    if (!orig) return;
 
9537
    if (orig == (NODE*)1) return;
 
9538
    node->nd_file = orig->nd_file;
 
9539
    nd_set_line(node, nd_line(orig));
 
9540
}
 
9541
 
 
9542
static void
 
9543
parser_warning(node, mesg)
 
9544
    NODE *node;
 
9545
    const char *mesg;
 
9546
{
 
9547
    int line = ruby_sourceline;
 
9548
    ruby_sourceline = nd_line(node);
 
9549
    rb_warning("%s", mesg);
 
9550
    ruby_sourceline = line;
 
9551
}
 
9552
 
 
9553
static void
 
9554
parser_warn(node, mesg)
 
9555
    NODE *node;
 
9556
    const char *mesg;
 
9557
{
 
9558
    int line = ruby_sourceline;
 
9559
    ruby_sourceline = nd_line(node);
 
9560
    rb_warn("%s", mesg);
 
9561
    ruby_sourceline = line;
 
9562
}
 
9563
 
 
9564
static NODE*
 
9565
block_append(head, tail)
 
9566
    NODE *head, *tail;
 
9567
{
 
9568
    NODE *end, *h = head;
 
9569
 
 
9570
    if (tail == 0) return head;
 
9571
 
 
9572
  again:
 
9573
    if (h == 0) return tail;
 
9574
    switch (nd_type(h)) {
 
9575
      case NODE_NEWLINE:
 
9576
        h = h->nd_next;
 
9577
        goto again;
 
9578
      case NODE_LIT:
 
9579
      case NODE_STR:
 
9580
        parser_warning(h, "unused literal ignored");
 
9581
        return tail;
 
9582
      default:
 
9583
        h = end = NEW_BLOCK(head);
 
9584
        end->nd_end = end;
 
9585
        fixpos(end, head);
 
9586
        head = end;
 
9587
        break;
 
9588
      case NODE_BLOCK:
 
9589
        end = h->nd_end;
 
9590
        break;
 
9591
    }
 
9592
 
 
9593
    if (RTEST(ruby_verbose)) {
 
9594
        NODE *nd = end->nd_head;
 
9595
      newline:
 
9596
        switch (nd_type(nd)) {
 
9597
          case NODE_RETURN:
 
9598
          case NODE_BREAK:
 
9599
          case NODE_NEXT:
 
9600
          case NODE_REDO:
 
9601
          case NODE_RETRY:
 
9602
            parser_warning(nd, "statement not reached");
 
9603
            break;
 
9604
 
 
9605
        case NODE_NEWLINE:
 
9606
            nd = nd->nd_next;
 
9607
            goto newline;
 
9608
 
 
9609
          default:
 
9610
            break;
 
9611
        }
 
9612
    }
 
9613
 
 
9614
    if (nd_type(tail) != NODE_BLOCK) {
 
9615
        tail = NEW_BLOCK(tail);
 
9616
        tail->nd_end = tail;
 
9617
    }
 
9618
    end->nd_next = tail;
 
9619
    h->nd_end = tail->nd_end;
 
9620
    return head;
 
9621
}
 
9622
 
 
9623
/* append item to the list */
 
9624
static NODE*
 
9625
list_append(list, item)
 
9626
    NODE *list, *item;
 
9627
{
 
9628
    NODE *last;
 
9629
 
 
9630
    if (list == 0) return NEW_LIST(item);
 
9631
    if (list->nd_next) {
 
9632
        last = list->nd_next->nd_end;
 
9633
    }
 
9634
    else {
 
9635
        last = list;
 
9636
    }
 
9637
 
 
9638
    list->nd_alen += 1;
 
9639
    last->nd_next = NEW_LIST(item);
 
9640
    list->nd_next->nd_end = last->nd_next;
 
9641
    return list;
 
9642
}
 
9643
 
 
9644
/* concat two lists */
 
9645
static NODE*
 
9646
list_concat(head, tail)
 
9647
    NODE *head, *tail;
 
9648
{
 
9649
    NODE *last;
 
9650
 
 
9651
    if (head->nd_next) {
 
9652
        last = head->nd_next->nd_end;
 
9653
    }
 
9654
    else {
 
9655
        last = head;
 
9656
    }
 
9657
 
 
9658
    head->nd_alen += tail->nd_alen;
 
9659
    last->nd_next = tail;
 
9660
    if (tail->nd_next) {
 
9661
        head->nd_next->nd_end = tail->nd_next->nd_end;
 
9662
    }
 
9663
    else {
 
9664
        head->nd_next->nd_end = tail;
 
9665
    }
 
9666
 
 
9667
    return head;
 
9668
}
 
9669
 
 
9670
/* concat two string literals */
 
9671
static NODE *
 
9672
literal_concat(head, tail)
 
9673
    NODE *head, *tail;
 
9674
{
 
9675
    enum node_type htype;
 
9676
 
 
9677
    if (!head) return tail;
 
9678
    if (!tail) return head;
 
9679
 
 
9680
    htype = nd_type(head);
 
9681
    if (htype == NODE_EVSTR) {
 
9682
        NODE *node = NEW_DSTR(rb_str_new(0, 0));
 
9683
        head = list_append(node, head);
 
9684
    }
 
9685
    switch (nd_type(tail)) {
 
9686
      case NODE_STR:
 
9687
        if (htype == NODE_STR) {
 
9688
            rb_str_concat(head->nd_lit, tail->nd_lit);
 
9689
            rb_gc_force_recycle((VALUE)tail);
 
9690
        }
 
9691
        else {
 
9692
            list_append(head, tail);
 
9693
        }
 
9694
        break;
 
9695
 
 
9696
      case NODE_DSTR:
 
9697
        if (htype == NODE_STR) {
 
9698
            rb_str_concat(head->nd_lit, tail->nd_lit);
 
9699
            tail->nd_lit = head->nd_lit;
 
9700
            rb_gc_force_recycle((VALUE)head);
 
9701
            head = tail;
 
9702
        }
 
9703
        else {
 
9704
            nd_set_type(tail, NODE_ARRAY);
 
9705
            tail->nd_head = NEW_STR(tail->nd_lit);
 
9706
            list_concat(head, tail);
 
9707
        }
 
9708
        break;
 
9709
 
 
9710
      case NODE_EVSTR:
 
9711
        if (htype == NODE_STR) {
 
9712
            nd_set_type(head, NODE_DSTR);
 
9713
            head->nd_alen = 1;
 
9714
        }
 
9715
        list_append(head, tail);
 
9716
        break;
 
9717
    }
 
9718
    return head;
 
9719
}
 
9720
 
 
9721
static NODE *
 
9722
evstr2dstr(node)
 
9723
    NODE *node;
 
9724
{
 
9725
    if (nd_type(node) == NODE_EVSTR) {
 
9726
        node = list_append(NEW_DSTR(rb_str_new(0, 0)), node);
 
9727
    }
 
9728
    return node;
 
9729
}
 
9730
 
 
9731
static NODE *
 
9732
new_evstr(node)
 
9733
    NODE *node;
 
9734
{
 
9735
    NODE *head = node;
 
9736
 
 
9737
  again:
 
9738
    if (node) {
 
9739
        switch (nd_type(node)) {
 
9740
          case NODE_STR: case NODE_DSTR: case NODE_EVSTR:
 
9741
            return node;
 
9742
          case NODE_NEWLINE:
 
9743
            node = node->nd_next;
 
9744
            goto again;
 
9745
        }
 
9746
    }
 
9747
    return NEW_EVSTR(head);
 
9748
}
 
9749
 
 
9750
static NODE *
 
9751
call_op(recv, id, narg, arg1)
 
9752
    NODE *recv;
 
9753
    ID id;
 
9754
    int narg;
 
9755
    NODE *arg1;
 
9756
{
 
9757
    value_expr(recv);
 
9758
    if (narg == 1) {
 
9759
        value_expr(arg1);
 
9760
        arg1 = NEW_LIST(arg1);
 
9761
    }
 
9762
    else {
 
9763
        arg1 = 0;
 
9764
    }
 
9765
    return NEW_CALL(recv, id, arg1);
 
9766
}
 
9767
 
 
9768
static NODE*
 
9769
match_gen(node1, node2)
 
9770
    NODE *node1;
 
9771
    NODE *node2;
 
9772
{
 
9773
    local_cnt('~');
 
9774
 
 
9775
    value_expr(node1);
 
9776
    value_expr(node2);
 
9777
    if (node1) {
 
9778
        switch (nd_type(node1)) {
 
9779
          case NODE_DREGX:
 
9780
          case NODE_DREGX_ONCE:
 
9781
            return NEW_MATCH2(node1, node2);
 
9782
 
 
9783
          case NODE_LIT:
 
9784
            if (TYPE(node1->nd_lit) == T_REGEXP) {
 
9785
                return NEW_MATCH2(node1, node2);
 
9786
            }
 
9787
        }
 
9788
    }
 
9789
 
 
9790
    if (node2) {
 
9791
        switch (nd_type(node2)) {
 
9792
          case NODE_DREGX:
 
9793
          case NODE_DREGX_ONCE:
 
9794
            return NEW_MATCH3(node2, node1);
 
9795
 
 
9796
          case NODE_LIT:
 
9797
            if (TYPE(node2->nd_lit) == T_REGEXP) {
 
9798
                return NEW_MATCH3(node2, node1);
 
9799
            }
 
9800
        }
 
9801
    }
 
9802
 
 
9803
    return NEW_CALL(node1, tMATCH, NEW_LIST(node2));
 
9804
}
 
9805
 
 
9806
static NODE*
 
9807
gettable(id)
 
9808
    ID id;
 
9809
{
 
9810
    if (id == kSELF) {
 
9811
        return NEW_SELF();
 
9812
    }
 
9813
    else if (id == kNIL) {
 
9814
        return NEW_NIL();
 
9815
    }
 
9816
    else if (id == kTRUE) {
 
9817
        return NEW_TRUE();
 
9818
    }
 
9819
    else if (id == kFALSE) {
 
9820
        return NEW_FALSE();
 
9821
    }
 
9822
    else if (id == k__FILE__) {
 
9823
        return NEW_STR(rb_str_new2(ruby_sourcefile));
 
9824
    }
 
9825
    else if (id == k__LINE__) {
 
9826
        return NEW_LIT(INT2FIX(ruby_sourceline));
 
9827
    }
 
9828
    else if (is_local_id(id)) {
 
9829
        if (dyna_in_block() && rb_dvar_defined(id)) return NEW_DVAR(id);
 
9830
        if (local_id(id)) return NEW_LVAR(id);
 
9831
        /* method call without arguments */
 
9832
#if 0
 
9833
        /* Rite will warn this */
 
9834
        rb_warn("ambiguous identifier; %s() or self.%s is better for method call",
 
9835
                rb_id2name(id), rb_id2name(id));
 
9836
#endif
 
9837
        return NEW_VCALL(id);
 
9838
    }
 
9839
    else if (is_global_id(id)) {
 
9840
        return NEW_GVAR(id);
 
9841
    }
 
9842
    else if (is_instance_id(id)) {
 
9843
        return NEW_IVAR(id);
 
9844
    }
 
9845
    else if (is_const_id(id)) {
 
9846
        return NEW_CONST(id);
 
9847
    }
 
9848
    else if (is_class_id(id)) {
 
9849
        return NEW_CVAR(id);
 
9850
    }
 
9851
    rb_compile_error("identifier %s is not valid", rb_id2name(id));
 
9852
    return 0;
 
9853
}
 
9854
 
 
9855
static VALUE dyna_var_lookup _((ID id));
 
9856
 
 
9857
static NODE*
 
9858
assignable(id, val)
 
9859
    ID id;
 
9860
    NODE *val;
 
9861
{
 
9862
    value_expr(val);
 
9863
    if (id == kSELF) {
 
9864
        yyerror("Can't change the value of self");
 
9865
    }
 
9866
    else if (id == kNIL) {
 
9867
        yyerror("Can't assign to nil");
 
9868
    }
 
9869
    else if (id == kTRUE) {
 
9870
        yyerror("Can't assign to true");
 
9871
    }
 
9872
    else if (id == kFALSE) {
 
9873
        yyerror("Can't assign to false");
 
9874
    }
 
9875
    else if (id == k__FILE__) {
 
9876
        yyerror("Can't assign to __FILE__");
 
9877
    }
 
9878
    else if (id == k__LINE__) {
 
9879
        yyerror("Can't assign to __LINE__");
 
9880
    }
 
9881
    else if (is_local_id(id)) {
 
9882
        if (rb_dvar_curr(id)) {
 
9883
            return NEW_DASGN_CURR(id, val);
 
9884
        }
 
9885
        else if (dyna_var_lookup(id)) {
 
9886
            return NEW_DASGN(id, val);
 
9887
        }
 
9888
        else if (local_id(id) || !dyna_in_block()) {
 
9889
            return NEW_LASGN(id, val);
 
9890
        }
 
9891
        else{
 
9892
            rb_dvar_push(id, Qnil);
 
9893
            return NEW_DASGN_CURR(id, val);
 
9894
        }
 
9895
    }
 
9896
    else if (is_global_id(id)) {
 
9897
        return NEW_GASGN(id, val);
 
9898
    }
 
9899
    else if (is_instance_id(id)) {
 
9900
        return NEW_IASGN(id, val);
 
9901
    }
 
9902
    else if (is_const_id(id)) {
 
9903
        if (in_def || in_single)
 
9904
            yyerror("dynamic constant assignment");
 
9905
        return NEW_CDECL(id, val, 0);
 
9906
    }
 
9907
    else if (is_class_id(id)) {
 
9908
        if (in_def || in_single) return NEW_CVASGN(id, val);
 
9909
        return NEW_CVDECL(id, val);
 
9910
    }
 
9911
    else {
 
9912
        rb_compile_error("identifier %s is not valid", rb_id2name(id));
 
9913
    }
 
9914
    return 0;
 
9915
}
 
9916
 
 
9917
static NODE *
 
9918
aryset(recv, idx)
 
9919
    NODE *recv, *idx;
 
9920
{
 
9921
    if (recv && nd_type(recv) == NODE_SELF)
 
9922
        recv = (NODE *)1;
 
9923
    else
 
9924
        value_expr(recv);
 
9925
    return NEW_ATTRASGN(recv, tASET, idx);
 
9926
}
 
9927
 
 
9928
ID
 
9929
rb_id_attrset(id)
 
9930
    ID id;
 
9931
{
 
9932
    id &= ~ID_SCOPE_MASK;
 
9933
    id |= ID_ATTRSET;
 
9934
    return id;
 
9935
}
 
9936
 
 
9937
static NODE *
 
9938
attrset(recv, id)
 
9939
    NODE *recv;
 
9940
    ID id;
 
9941
{
 
9942
    if (recv && nd_type(recv) == NODE_SELF)
 
9943
        recv = (NODE *)1;
 
9944
    else
 
9945
        value_expr(recv);
 
9946
    return NEW_ATTRASGN(recv, rb_id_attrset(id), 0);
 
9947
}
 
9948
 
 
9949
static void
 
9950
rb_backref_error(node)
 
9951
    NODE *node;
 
9952
{
 
9953
    switch (nd_type(node)) {
 
9954
      case NODE_NTH_REF:
 
9955
        rb_compile_error("Can't set variable $%d", node->nd_nth);
 
9956
        break;
 
9957
      case NODE_BACK_REF:
 
9958
        rb_compile_error("Can't set variable $%c", (int)node->nd_nth);
 
9959
        break;
 
9960
    }
 
9961
}
 
9962
 
 
9963
static NODE *
 
9964
arg_concat(node1, node2)
 
9965
    NODE *node1;
 
9966
    NODE *node2;
 
9967
{
 
9968
    if (!node2) return node1;
 
9969
    return NEW_ARGSCAT(node1, node2);
 
9970
}
 
9971
 
 
9972
static NODE *
 
9973
arg_add(node1, node2)
 
9974
    NODE *node1;
 
9975
    NODE *node2;
 
9976
{
 
9977
    if (!node1) return NEW_LIST(node2);
 
9978
    if (nd_type(node1) == NODE_ARRAY) {
 
9979
        return list_append(node1, node2);
 
9980
    }
 
9981
    else {
 
9982
        return NEW_ARGSPUSH(node1, node2);
 
9983
    }
 
9984
}
 
9985
 
 
9986
static NODE*
 
9987
node_assign(lhs, rhs)
 
9988
    NODE *lhs, *rhs;
 
9989
{
 
9990
    if (!lhs) return 0;
 
9991
 
 
9992
    value_expr(rhs);
 
9993
    switch (nd_type(lhs)) {
 
9994
      case NODE_GASGN:
 
9995
      case NODE_IASGN:
 
9996
      case NODE_LASGN:
 
9997
      case NODE_DASGN:
 
9998
      case NODE_DASGN_CURR:
 
9999
      case NODE_MASGN:
 
10000
      case NODE_CDECL:
 
10001
      case NODE_CVDECL:
 
10002
      case NODE_CVASGN:
 
10003
        lhs->nd_value = rhs;
 
10004
        break;
 
10005
 
 
10006
      case NODE_ATTRASGN:
 
10007
      case NODE_CALL:
 
10008
        lhs->nd_args = arg_add(lhs->nd_args, rhs);
 
10009
        break;
 
10010
 
 
10011
      default:
 
10012
        /* should not happen */
 
10013
        break;
 
10014
    }
 
10015
 
 
10016
    return lhs;
 
10017
}
 
10018
 
 
10019
static int
 
10020
value_expr0(node)
 
10021
    NODE *node;
 
10022
{
 
10023
    int cond = 0;
 
10024
 
 
10025
    while (node) {
 
10026
        switch (nd_type(node)) {
 
10027
          case NODE_DEFN:
 
10028
          case NODE_DEFS:
 
10029
            parser_warning(node, "void value expression");
 
10030
            return Qfalse;
 
10031
 
 
10032
          case NODE_RETURN:
 
10033
          case NODE_BREAK:
 
10034
          case NODE_NEXT:
 
10035
          case NODE_REDO:
 
10036
          case NODE_RETRY:
 
10037
            if (!cond) yyerror("void value expression");
 
10038
            /* or "control never reach"? */
 
10039
            return Qfalse;
 
10040
 
 
10041
          case NODE_BLOCK:
 
10042
            while (node->nd_next) {
 
10043
                node = node->nd_next;
 
10044
            }
 
10045
            node = node->nd_head;
 
10046
            break;
 
10047
 
 
10048
          case NODE_BEGIN:
 
10049
            node = node->nd_body;
 
10050
            break;
 
10051
 
 
10052
          case NODE_IF:
 
10053
            if (!value_expr(node->nd_body)) return Qfalse;
 
10054
            node = node->nd_else;
 
10055
            break;
 
10056
 
 
10057
          case NODE_AND:
 
10058
          case NODE_OR:
 
10059
            cond = 1;
 
10060
            node = node->nd_2nd;
 
10061
            break;
 
10062
 
 
10063
          case NODE_NEWLINE:
 
10064
            node = node->nd_next;
 
10065
            break;
 
10066
 
 
10067
          default:
 
10068
            return Qtrue;
 
10069
        }
 
10070
    }
 
10071
 
 
10072
    return Qtrue;
 
10073
}
 
10074
 
 
10075
static void
 
10076
void_expr0(node)
 
10077
    NODE *node;
 
10078
{
 
10079
    char *useless = 0;
 
10080
 
 
10081
    if (!RTEST(ruby_verbose)) return;
 
10082
 
 
10083
  again:
 
10084
    if (!node) return;
 
10085
    switch (nd_type(node)) {
 
10086
      case NODE_NEWLINE:
 
10087
        node = node->nd_next;
 
10088
        goto again;
 
10089
 
 
10090
      case NODE_CALL:
 
10091
        switch (node->nd_mid) {
 
10092
          case '+':
 
10093
          case '-':
 
10094
          case '*':
 
10095
          case '/':
 
10096
          case '%':
 
10097
          case tPOW:
 
10098
          case tUPLUS:
 
10099
          case tUMINUS:
 
10100
          case '|':
 
10101
          case '^':
 
10102
          case '&':
 
10103
          case tCMP:
 
10104
          case '>':
 
10105
          case tGEQ:
 
10106
          case '<':
 
10107
          case tLEQ:
 
10108
          case tEQ:
 
10109
          case tNEQ:
 
10110
            useless = rb_id2name(node->nd_mid);
 
10111
            break;
 
10112
        }
 
10113
        break;
 
10114
 
 
10115
      case NODE_LVAR:
 
10116
      case NODE_DVAR:
 
10117
      case NODE_GVAR:
 
10118
      case NODE_IVAR:
 
10119
      case NODE_CVAR:
 
10120
      case NODE_NTH_REF:
 
10121
      case NODE_BACK_REF:
 
10122
        useless = "a variable";
 
10123
        break;
 
10124
      case NODE_CONST:
 
10125
      case NODE_CREF:
 
10126
        useless = "a constant";
 
10127
        break;
 
10128
      case NODE_LIT:
 
10129
      case NODE_STR:
 
10130
      case NODE_DSTR:
 
10131
      case NODE_DREGX:
 
10132
      case NODE_DREGX_ONCE:
 
10133
        useless = "a literal";
 
10134
        break;
 
10135
      case NODE_COLON2:
 
10136
      case NODE_COLON3:
 
10137
        useless = "::";
 
10138
        break;
 
10139
      case NODE_DOT2:
 
10140
        useless = "..";
 
10141
        break;
 
10142
      case NODE_DOT3:
 
10143
        useless = "...";
 
10144
        break;
 
10145
      case NODE_SELF:
 
10146
        useless = "self";
 
10147
        break;
 
10148
      case NODE_NIL:
 
10149
        useless = "nil";
 
10150
        break;
 
10151
      case NODE_TRUE:
 
10152
        useless = "true";
 
10153
        break;
 
10154
      case NODE_FALSE:
 
10155
        useless = "false";
 
10156
        break;
 
10157
      case NODE_DEFINED:
 
10158
        useless = "defined?";
 
10159
        break;
 
10160
    }
 
10161
 
 
10162
    if (useless) {
 
10163
        int line = ruby_sourceline;
 
10164
 
 
10165
        ruby_sourceline = nd_line(node);
 
10166
        rb_warn("useless use of %s in void context", useless);
 
10167
        ruby_sourceline = line;
 
10168
    }
 
10169
}
 
10170
 
 
10171
static void
 
10172
void_stmts(node)
 
10173
    NODE *node;
 
10174
{
 
10175
    if (!RTEST(ruby_verbose)) return;
 
10176
    if (!node) return;
 
10177
    if (nd_type(node) != NODE_BLOCK) return;
 
10178
 
 
10179
    for (;;) {
 
10180
        if (!node->nd_next) return;
 
10181
        void_expr(node->nd_head);
 
10182
        node = node->nd_next;
 
10183
    }
 
10184
}
 
10185
 
 
10186
static NODE *
 
10187
remove_begin(node)
 
10188
    NODE *node;
 
10189
{
 
10190
    NODE **n = &node;
 
10191
    while (*n) {
 
10192
        switch (nd_type(*n)) {
 
10193
          case NODE_NEWLINE:
 
10194
            n = &(*n)->nd_next;
 
10195
            continue;
 
10196
          case NODE_BEGIN:
 
10197
            *n = (*n)->nd_body;
 
10198
          default:
 
10199
            return node;
 
10200
        }
 
10201
    }
 
10202
    return node;
 
10203
}
 
10204
 
 
10205
static int
 
10206
assign_in_cond(node)
 
10207
    NODE *node;
 
10208
{
 
10209
    switch (nd_type(node)) {
 
10210
      case NODE_MASGN:
 
10211
        yyerror("multiple assignment in conditional");
 
10212
        return 1;
 
10213
 
 
10214
      case NODE_LASGN:
 
10215
      case NODE_DASGN:
 
10216
      case NODE_GASGN:
 
10217
      case NODE_IASGN:
 
10218
        break;
 
10219
 
 
10220
      case NODE_NEWLINE:
 
10221
      default:
 
10222
        return 0;
 
10223
    }
 
10224
 
 
10225
    switch (nd_type(node->nd_value)) {
 
10226
      case NODE_LIT:
 
10227
      case NODE_STR:
 
10228
      case NODE_NIL:
 
10229
      case NODE_TRUE:
 
10230
      case NODE_FALSE:
 
10231
        /* reports always */
 
10232
        parser_warn(node->nd_value, "found = in conditional, should be ==");
 
10233
        return 1;
 
10234
 
 
10235
      case NODE_DSTR:
 
10236
      case NODE_XSTR:
 
10237
      case NODE_DXSTR:
 
10238
      case NODE_EVSTR:
 
10239
      case NODE_DREGX:
 
10240
      default:
 
10241
        break;
 
10242
    }
 
10243
#if 0
 
10244
    if (assign_in_cond(node->nd_value) == 0) {
 
10245
        parser_warning(node->nd_value, "assignment in condition");
 
10246
    }
 
10247
#endif
 
10248
    return 1;
 
10249
}
 
10250
 
 
10251
static int
 
10252
e_option_supplied()
 
10253
{
 
10254
    if (strcmp(ruby_sourcefile, "-e") == 0)
 
10255
        return Qtrue;
 
10256
    return Qfalse;
 
10257
}
 
10258
 
 
10259
static void
 
10260
warn_unless_e_option(node, str)
 
10261
    NODE *node;
 
10262
    const char *str;
 
10263
{
 
10264
    if (!e_option_supplied()) parser_warn(node, str);
 
10265
}
 
10266
 
 
10267
static void
 
10268
warning_unless_e_option(node, str)
 
10269
    NODE *node;
 
10270
    const char *str;
 
10271
{
 
10272
    if (!e_option_supplied()) parser_warning(node, str);
 
10273
}
 
10274
 
 
10275
static NODE *cond0();
 
10276
 
 
10277
static NODE*
 
10278
range_op(node)
 
10279
    NODE *node;
 
10280
{
 
10281
    enum node_type type;
 
10282
 
 
10283
    if (!e_option_supplied()) return node;
 
10284
    if (node == 0) return 0;
 
10285
 
 
10286
    value_expr(node);
 
10287
    node = cond0(node);
 
10288
    type = nd_type(node);
 
10289
    if (type == NODE_NEWLINE) {
 
10290
        node = node->nd_next;
 
10291
        type = nd_type(node);
 
10292
    }
 
10293
    if (type == NODE_LIT && FIXNUM_P(node->nd_lit)) {
 
10294
        warn_unless_e_option(node, "integer literal in conditional range");
 
10295
        return call_op(node,tEQ,1,NEW_GVAR(rb_intern("$.")));
 
10296
    }
 
10297
    return node;
 
10298
}
 
10299
 
 
10300
static int
 
10301
literal_node(node)
 
10302
    NODE *node;
 
10303
{
 
10304
    if (!node) return 1;        /* same as NODE_NIL */
 
10305
    switch (nd_type(node)) {
 
10306
      case NODE_LIT:
 
10307
      case NODE_STR:
 
10308
      case NODE_DSTR:
 
10309
      case NODE_EVSTR:
 
10310
      case NODE_DREGX:
 
10311
      case NODE_DREGX_ONCE:
 
10312
      case NODE_DSYM:
 
10313
        return 2;
 
10314
      case NODE_TRUE:
 
10315
      case NODE_FALSE:
 
10316
      case NODE_NIL:
 
10317
        return 1;
 
10318
    }
 
10319
    return 0;
 
10320
}
 
10321
 
 
10322
static NODE*
 
10323
cond0(node)
 
10324
    NODE *node;
 
10325
{
 
10326
    if (node == 0) return 0;
 
10327
    assign_in_cond(node);
 
10328
 
 
10329
    switch (nd_type(node)) {
 
10330
      case NODE_DSTR:
 
10331
      case NODE_EVSTR:
 
10332
      case NODE_STR:
 
10333
        rb_warn("string literal in condition");
 
10334
        break;
 
10335
 
 
10336
      case NODE_DREGX:
 
10337
      case NODE_DREGX_ONCE:
 
10338
        warning_unless_e_option(node, "regex literal in condition");
 
10339
        local_cnt('_');
 
10340
        local_cnt('~');
 
10341
        return NEW_MATCH2(node, NEW_GVAR(rb_intern("$_")));
 
10342
 
 
10343
      case NODE_AND:
 
10344
      case NODE_OR:
 
10345
        node->nd_1st = cond0(node->nd_1st);
 
10346
        node->nd_2nd = cond0(node->nd_2nd);
 
10347
        break;
 
10348
 
 
10349
      case NODE_DOT2:
 
10350
      case NODE_DOT3:
 
10351
        node->nd_beg = range_op(node->nd_beg);
 
10352
        node->nd_end = range_op(node->nd_end);
 
10353
        if (nd_type(node) == NODE_DOT2) nd_set_type(node,NODE_FLIP2);
 
10354
        else if (nd_type(node) == NODE_DOT3) nd_set_type(node, NODE_FLIP3);
 
10355
        node->nd_cnt = local_append(internal_id());
 
10356
        if (!e_option_supplied()) {
 
10357
            int b = literal_node(node->nd_beg);
 
10358
            int e = literal_node(node->nd_end);
 
10359
            if ((b == 1 && e == 1) || (b + e >= 2 && RTEST(ruby_verbose))) {
 
10360
                parser_warn(node, "range literal in condition");
 
10361
            }
 
10362
        }
 
10363
        break;
 
10364
 
 
10365
      case NODE_DSYM:
 
10366
        parser_warning(node, "literal in condition");
 
10367
        break;
 
10368
 
 
10369
      case NODE_LIT:
 
10370
        if (TYPE(node->nd_lit) == T_REGEXP) {
 
10371
            warn_unless_e_option(node, "regex literal in condition");
 
10372
            nd_set_type(node, NODE_MATCH);
 
10373
            local_cnt('_');
 
10374
            local_cnt('~');
 
10375
        }
 
10376
        else {
 
10377
            parser_warning(node, "literal in condition");
 
10378
        }
 
10379
      default:
 
10380
        break;
 
10381
    }
 
10382
    return node;
 
10383
}
 
10384
 
 
10385
static NODE*
 
10386
cond(node)
 
10387
    NODE *node;
 
10388
{
 
10389
    if (node == 0) return 0;
 
10390
    value_expr(node);
 
10391
    if (nd_type(node) == NODE_NEWLINE){
 
10392
        node->nd_next = cond0(node->nd_next);
 
10393
        return node;
 
10394
    }
 
10395
    return cond0(node);
 
10396
}
 
10397
 
 
10398
static NODE*
 
10399
logop(type, left, right)
 
10400
    enum node_type type;
 
10401
    NODE *left, *right;
 
10402
{
 
10403
    value_expr(left);
 
10404
    if (left && nd_type(left) == type) {
 
10405
        NODE *node = left, *second;
 
10406
        while ((second = node->nd_2nd) != 0 && nd_type(second) == type) {
 
10407
            node = second;
 
10408
        }
 
10409
        node->nd_2nd = NEW_NODE(type, second, right, 0);
 
10410
        return left;
 
10411
    }
 
10412
    return NEW_NODE(type, left, right, 0);
 
10413
}
 
10414
 
 
10415
static int
 
10416
cond_negative(nodep)
 
10417
    NODE **nodep;
 
10418
{
 
10419
    NODE *c = *nodep;
 
10420
 
 
10421
    if (!c) return 0;
 
10422
    switch (nd_type(c)) {
 
10423
      case NODE_NOT:
 
10424
        *nodep = c->nd_body;
 
10425
        return 1;
 
10426
      case NODE_NEWLINE:
 
10427
        if (c->nd_next && nd_type(c->nd_next) == NODE_NOT) {
 
10428
            c->nd_next = c->nd_next->nd_body;
 
10429
            return 1;
 
10430
        }
 
10431
    }
 
10432
    return 0;
 
10433
}
 
10434
 
 
10435
static void
 
10436
no_blockarg(node)
 
10437
    NODE *node;
 
10438
{
 
10439
    if (node && nd_type(node) == NODE_BLOCK_PASS) {
 
10440
        rb_compile_error("block argument should not be given");
 
10441
    }
 
10442
}
 
10443
 
 
10444
static NODE *
 
10445
ret_args(node)
 
10446
    NODE *node;
 
10447
{
 
10448
    if (node) {
 
10449
        no_blockarg(node);
 
10450
        if (nd_type(node) == NODE_ARRAY && node->nd_next == 0) {
 
10451
            node = node->nd_head;
 
10452
        }
 
10453
        if (node && nd_type(node) == NODE_SPLAT) {
 
10454
            node = NEW_SVALUE(node);
 
10455
        }
 
10456
    }
 
10457
    return node;
 
10458
}
 
10459
 
 
10460
static NODE *
 
10461
new_yield(node)
 
10462
    NODE *node;
 
10463
{
 
10464
    long state = Qtrue;
 
10465
 
 
10466
    if (node) {
 
10467
        no_blockarg(node);
 
10468
        if (nd_type(node) == NODE_ARRAY && node->nd_next == 0) {
 
10469
            node = node->nd_head;
 
10470
            state = Qfalse;
 
10471
        }
 
10472
        if (node && nd_type(node) == NODE_SPLAT) {
 
10473
            state = Qtrue;
 
10474
        }
 
10475
    }
 
10476
    else {
 
10477
        state = Qfalse;
 
10478
    }
 
10479
    return NEW_YIELD(node, state);
 
10480
}
 
10481
 
 
10482
static NODE*
 
10483
negate_lit(node)
 
10484
    NODE *node;
 
10485
{
 
10486
    switch (TYPE(node->nd_lit)) {
 
10487
      case T_FIXNUM:
 
10488
        node->nd_lit = LONG2FIX(-FIX2LONG(node->nd_lit));
 
10489
        break;
 
10490
      case T_BIGNUM:
 
10491
        node->nd_lit = rb_funcall(node->nd_lit,tUMINUS,0,0);
 
10492
        break;
 
10493
      case T_FLOAT:
 
10494
        RFLOAT(node->nd_lit)->value = -RFLOAT(node->nd_lit)->value;
 
10495
        break;
 
10496
      default:
 
10497
        break;
 
10498
    }
 
10499
    return node;
 
10500
}
 
10501
 
 
10502
static NODE *
 
10503
arg_blk_pass(node1, node2)
 
10504
    NODE *node1;
 
10505
    NODE *node2;
 
10506
{
 
10507
    if (node2) {
 
10508
        node2->nd_head = node1;
 
10509
        return node2;
 
10510
    }
 
10511
    return node1;
 
10512
}
 
10513
 
 
10514
static NODE*
 
10515
arg_prepend(node1, node2)
 
10516
    NODE *node1, *node2;
 
10517
{
 
10518
    switch (nd_type(node2)) {
 
10519
      case NODE_ARRAY:
 
10520
        return list_concat(NEW_LIST(node1), node2);
 
10521
 
 
10522
      case NODE_SPLAT:
 
10523
        return arg_concat(node1, node2->nd_head);
 
10524
 
 
10525
      case NODE_BLOCK_PASS:
 
10526
        node2->nd_body = arg_prepend(node1, node2->nd_body);
 
10527
        return node2;
 
10528
 
 
10529
      default:
 
10530
        rb_bug("unknown nodetype(%d) for arg_prepend", nd_type(node2));
 
10531
    }
 
10532
    return 0;                   /* not reached */
 
10533
}
 
10534
 
 
10535
static NODE*
 
10536
new_call(r,m,a)
 
10537
    NODE *r;
 
10538
    ID m;
 
10539
    NODE *a;
 
10540
{
 
10541
    if (a && nd_type(a) == NODE_BLOCK_PASS) {
 
10542
        a->nd_iter = NEW_CALL(r,m,a->nd_head);
 
10543
        return a;
 
10544
    }
 
10545
    return NEW_CALL(r,m,a);
 
10546
}
 
10547
 
 
10548
static NODE*
 
10549
new_fcall(m,a)
 
10550
    ID m;
 
10551
    NODE *a;
 
10552
{
 
10553
    if (a && nd_type(a) == NODE_BLOCK_PASS) {
 
10554
        a->nd_iter = NEW_FCALL(m,a->nd_head);
 
10555
        return a;
 
10556
    }
 
10557
    return NEW_FCALL(m,a);
 
10558
}
 
10559
 
 
10560
static NODE*
 
10561
new_super(a)
 
10562
    NODE *a;
 
10563
{
 
10564
    if (a && nd_type(a) == NODE_BLOCK_PASS) {
 
10565
        a->nd_iter = NEW_SUPER(a->nd_head);
 
10566
        return a;
 
10567
    }
 
10568
    return NEW_SUPER(a);
 
10569
}
 
10570
 
 
10571
static struct local_vars {
 
10572
    ID *tbl;
 
10573
    int nofree;
 
10574
    int cnt;
 
10575
    int dlev;
 
10576
    struct RVarmap* dyna_vars;
 
10577
    struct local_vars *prev;
 
10578
} *lvtbl;
 
10579
 
 
10580
static void
 
10581
local_push(top)
 
10582
    int top;
 
10583
{
 
10584
    struct local_vars *local;
 
10585
 
 
10586
    local = ALLOC(struct local_vars);
 
10587
    local->prev = lvtbl;
 
10588
    local->nofree = 0;
 
10589
    local->cnt = 0;
 
10590
    local->tbl = 0;
 
10591
    local->dlev = 0;
 
10592
    local->dyna_vars = ruby_dyna_vars;
 
10593
    lvtbl = local;
 
10594
    if (!top) {
 
10595
        /* preserve reference for GC, but link should be cut. */
 
10596
        rb_dvar_push(0, (VALUE)ruby_dyna_vars);
 
10597
        ruby_dyna_vars->next = 0;
 
10598
    }
 
10599
}
 
10600
 
 
10601
static void
 
10602
local_pop()
 
10603
{
 
10604
    struct local_vars *local = lvtbl->prev;
 
10605
 
 
10606
    if (lvtbl->tbl) {
 
10607
        if (!lvtbl->nofree) xfree(lvtbl->tbl);
 
10608
        else lvtbl->tbl[0] = lvtbl->cnt;
 
10609
    }
 
10610
    ruby_dyna_vars = lvtbl->dyna_vars;
 
10611
    xfree(lvtbl);
 
10612
    lvtbl = local;
 
10613
}
 
10614
 
 
10615
static ID*
 
10616
local_tbl()
 
10617
{
 
10618
    lvtbl->nofree = 1;
 
10619
    return lvtbl->tbl;
 
10620
}
 
10621
 
 
10622
static int
 
10623
local_append(id)
 
10624
    ID id;
 
10625
{
 
10626
    if (lvtbl->tbl == 0) {
 
10627
        lvtbl->tbl = ALLOC_N(ID, 4);
 
10628
        lvtbl->tbl[0] = 0;
 
10629
        lvtbl->tbl[1] = '_';
 
10630
        lvtbl->tbl[2] = '~';
 
10631
        lvtbl->cnt = 2;
 
10632
        if (id == '_') return 0;
 
10633
        if (id == '~') return 1;
 
10634
    }
 
10635
    else {
 
10636
        REALLOC_N(lvtbl->tbl, ID, lvtbl->cnt+2);
 
10637
    }
 
10638
 
 
10639
    lvtbl->tbl[lvtbl->cnt+1] = id;
 
10640
    return lvtbl->cnt++;
 
10641
}
 
10642
 
 
10643
static int
 
10644
local_cnt(id)
 
10645
    ID id;
 
10646
{
 
10647
    int cnt, max;
 
10648
 
 
10649
    if (id == 0) return lvtbl->cnt;
 
10650
 
 
10651
    for (cnt=1, max=lvtbl->cnt+1; cnt<max;cnt++) {
 
10652
        if (lvtbl->tbl[cnt] == id) return cnt-1;
 
10653
    }
 
10654
    return local_append(id);
 
10655
}
 
10656
 
 
10657
static int
 
10658
local_id(id)
 
10659
    ID id;
 
10660
{
 
10661
    int i, max;
 
10662
 
 
10663
    if (lvtbl == 0) return Qfalse;
 
10664
    for (i=3, max=lvtbl->cnt+1; i<max; i++) {
 
10665
        if (lvtbl->tbl[i] == id) return Qtrue;
 
10666
    }
 
10667
    return Qfalse;
 
10668
}
 
10669
 
 
10670
static void
 
10671
top_local_init()
 
10672
{
 
10673
    local_push(1);
 
10674
    lvtbl->cnt = ruby_scope->local_tbl?ruby_scope->local_tbl[0]:0;
 
10675
    if (lvtbl->cnt > 0) {
 
10676
        lvtbl->tbl = ALLOC_N(ID, lvtbl->cnt+3);
 
10677
        MEMCPY(lvtbl->tbl, ruby_scope->local_tbl, ID, lvtbl->cnt+1);
 
10678
    }
 
10679
    else {
 
10680
        lvtbl->tbl = 0;
 
10681
    }
 
10682
    if (ruby_dyna_vars)
 
10683
        lvtbl->dlev = 1;
 
10684
    else
 
10685
        lvtbl->dlev = 0;
 
10686
}
 
10687
 
 
10688
static void
 
10689
top_local_setup()
 
10690
{
 
10691
    int len = lvtbl->cnt;
 
10692
    int i;
 
10693
 
 
10694
    if (len > 0) {
 
10695
        i = ruby_scope->local_tbl?ruby_scope->local_tbl[0]:0;
 
10696
 
 
10697
        if (i < len) {
 
10698
            if (i == 0 || (ruby_scope->flags & SCOPE_MALLOC) == 0) {
 
10699
                VALUE *vars = ALLOC_N(VALUE, len+1);
 
10700
                if (ruby_scope->local_vars) {
 
10701
                    *vars++ = ruby_scope->local_vars[-1];
 
10702
                    MEMCPY(vars, ruby_scope->local_vars, VALUE, i);
 
10703
                    rb_mem_clear(vars+i, len-i);
 
10704
                }
 
10705
                else {
 
10706
                    *vars++ = (VALUE)ruby_scope;
 
10707
                    rb_mem_clear(vars, len);
 
10708
                }
 
10709
                ruby_scope->local_vars = vars;
 
10710
                ruby_scope->flags |= SCOPE_MALLOC;
 
10711
            }
 
10712
            else {
 
10713
                VALUE *vars = ruby_scope->local_vars-1;
 
10714
                REALLOC_N(vars, VALUE, len+1);
 
10715
                ruby_scope->local_vars = vars+1;
 
10716
                rb_mem_clear(ruby_scope->local_vars+i, len-i);
 
10717
            }
 
10718
            if (ruby_scope->local_tbl && ruby_scope->local_vars[-1] == 0) {
 
10719
               if (!(ruby_scope->flags & SCOPE_CLONE))
 
10720
                   xfree(ruby_scope->local_tbl);
 
10721
            }
 
10722
            ruby_scope->local_tbl = local_tbl();
 
10723
        }
 
10724
    }
 
10725
    local_pop();
 
10726
}
 
10727
 
 
10728
#define DVAR_USED FL_USER6
 
10729
 
 
10730
static VALUE
 
10731
dyna_var_lookup(id)
 
10732
    ID id;
 
10733
{
 
10734
    struct RVarmap *vars = ruby_dyna_vars;
 
10735
 
 
10736
    while (vars) {
 
10737
        if (vars->id == id) {
 
10738
            FL_SET(vars, DVAR_USED);
 
10739
            return Qtrue;
 
10740
        }
 
10741
        vars = vars->next;
 
10742
    }
 
10743
    return Qfalse;
 
10744
}
 
10745
 
 
10746
static struct RVarmap*
 
10747
dyna_push()
 
10748
{
 
10749
    struct RVarmap* vars = ruby_dyna_vars;
 
10750
 
 
10751
    rb_dvar_push(0, 0);
 
10752
    lvtbl->dlev++;
 
10753
    return vars;
 
10754
}
 
10755
 
 
10756
static void
 
10757
dyna_pop(vars)
 
10758
    struct RVarmap* vars;
 
10759
{
 
10760
    lvtbl->dlev--;
 
10761
    ruby_dyna_vars = vars;
 
10762
}
 
10763
 
 
10764
static int
 
10765
dyna_in_block()
 
10766
{
 
10767
    return (lvtbl->dlev > 0);
 
10768
}
 
10769
 
 
10770
static NODE *
 
10771
dyna_init(node, pre)
 
10772
    NODE *node;
 
10773
    struct RVarmap *pre;
 
10774
{
 
10775
    struct RVarmap *post = ruby_dyna_vars;
 
10776
    NODE *var;
 
10777
 
 
10778
    if (!node || !post || pre == post) return node;
 
10779
    for (var = 0; post != pre && post->id; post = post->next) {
 
10780
        if (FL_TEST(post, DVAR_USED)) {
 
10781
            var = NEW_DASGN_CURR(post->id, var);
 
10782
        }
 
10783
    }
 
10784
    return block_append(var, node);
 
10785
}
 
10786
 
 
10787
int
 
10788
ruby_parser_stack_on_heap()
 
10789
{
 
10790
#if defined(YYMALLOC)
 
10791
    return Qfalse;
 
10792
#else
 
10793
    return Qtrue;
 
10794
#endif
 
10795
}
 
10796
 
 
10797
void
 
10798
rb_gc_mark_parser()
 
10799
{
 
10800
#if defined YYMALLOC
 
10801
    rb_gc_mark((VALUE)parser_heap);
 
10802
#elif defined yystacksize
 
10803
    if (yyvsp) rb_gc_mark_locations((VALUE *)yyvs, (VALUE *)yyvsp);
 
10804
#endif
 
10805
 
 
10806
    if (!ruby_in_compile) return;
 
10807
 
 
10808
    rb_gc_mark_maybe((VALUE)yylval.node);
 
10809
    rb_gc_mark(ruby_debug_lines);
 
10810
    rb_gc_mark(lex_lastline);
 
10811
    rb_gc_mark(lex_input);
 
10812
    rb_gc_mark((VALUE)lex_strterm);
 
10813
}
 
10814
 
 
10815
void
 
10816
rb_parser_append_print()
 
10817
{
 
10818
    ruby_eval_tree =
 
10819
        block_append(ruby_eval_tree,
 
10820
                     NEW_FCALL(rb_intern("print"),
 
10821
                               NEW_ARRAY(NEW_GVAR(rb_intern("$_")))));
 
10822
}
 
10823
 
 
10824
void
 
10825
rb_parser_while_loop(chop, split)
 
10826
    int chop, split;
 
10827
{
 
10828
    if (split) {
 
10829
        ruby_eval_tree =
 
10830
            block_append(NEW_GASGN(rb_intern("$F"),
 
10831
                                   NEW_CALL(NEW_GVAR(rb_intern("$_")),
 
10832
                                            rb_intern("split"), 0)),
 
10833
                                   ruby_eval_tree);
 
10834
    }
 
10835
    if (chop) {
 
10836
        ruby_eval_tree =
 
10837
            block_append(NEW_CALL(NEW_GVAR(rb_intern("$_")),
 
10838
                                  rb_intern("chop!"), 0), ruby_eval_tree);
 
10839
    }
 
10840
    ruby_eval_tree = NEW_OPT_N(ruby_eval_tree);
 
10841
}
 
10842
 
 
10843
static struct {
 
10844
    ID token;
 
10845
    char *name;
 
10846
} op_tbl[] = {
 
10847
    {tDOT2,     ".."},
 
10848
    {tDOT3,     "..."},
 
10849
    {'+',       "+"},
 
10850
    {'-',       "-"},
 
10851
    {'+',       "+(binary)"},
 
10852
    {'-',       "-(binary)"},
 
10853
    {'*',       "*"},
 
10854
    {'/',       "/"},
 
10855
    {'%',       "%"},
 
10856
    {tPOW,      "**"},
 
10857
    {tUPLUS,    "+@"},
 
10858
    {tUMINUS,   "-@"},
 
10859
    {tUPLUS,    "+(unary)"},
 
10860
    {tUMINUS,   "-(unary)"},
 
10861
    {'|',       "|"},
 
10862
    {'^',       "^"},
 
10863
    {'&',       "&"},
 
10864
    {tCMP,      "<=>"},
 
10865
    {'>',       ">"},
 
10866
    {tGEQ,      ">="},
 
10867
    {'<',       "<"},
 
10868
    {tLEQ,      "<="},
 
10869
    {tEQ,       "=="},
 
10870
    {tEQQ,      "==="},
 
10871
    {tNEQ,      "!="},
 
10872
    {tMATCH,    "=~"},
 
10873
    {tNMATCH,   "!~"},
 
10874
    {'!',       "!"},
 
10875
    {'~',       "~"},
 
10876
    {'!',       "!(unary)"},
 
10877
    {'~',       "~(unary)"},
 
10878
    {'!',       "!@"},
 
10879
    {'~',       "~@"},
 
10880
    {tAREF,     "[]"},
 
10881
    {tASET,     "[]="},
 
10882
    {tLSHFT,    "<<"},
 
10883
    {tRSHFT,    ">>"},
 
10884
    {tCOLON2,   "::"},
 
10885
    {'`',       "`"},
 
10886
    {0, 0}
 
10887
};
 
10888
 
 
10889
static st_table *sym_tbl;
 
10890
static st_table *sym_rev_tbl;
 
10891
 
 
10892
void
 
10893
Init_sym()
 
10894
{
 
10895
    sym_tbl = st_init_strtable_with_size(200);
 
10896
    sym_rev_tbl = st_init_numtable_with_size(200);
 
10897
}
 
10898
 
 
10899
static ID last_id = tLAST_TOKEN;
 
10900
 
 
10901
static ID
 
10902
internal_id()
 
10903
{
 
10904
    return ID_INTERNAL | (++last_id << ID_SCOPE_SHIFT);
 
10905
}
 
10906
 
 
10907
static int
 
10908
is_special_global_name(m)
 
10909
    const char *m;
 
10910
{
 
10911
    switch (*m) {
 
10912
      case '~': case '*': case '$': case '?': case '!': case '@':
 
10913
      case '/': case '\\': case ';': case ',': case '.': case '=':
 
10914
      case ':': case '<': case '>': case '\"':
 
10915
      case '&': case '`': case '\'': case '+':
 
10916
      case '0':
 
10917
        ++m;
 
10918
        break;
 
10919
      case '-':
 
10920
        ++m;
 
10921
        if (is_identchar(*m)) m += mbclen(*m);
 
10922
        break;
 
10923
      default:
 
10924
        if (!ISDIGIT(*m)) return 0;
 
10925
        do ++m; while (ISDIGIT(*m));
 
10926
    }
 
10927
    return !*m;
 
10928
}
 
10929
 
 
10930
int
 
10931
rb_symname_p(name)
 
10932
    const char *name;
 
10933
{
 
10934
    const char *m = name;
 
10935
    int localid = Qfalse;
 
10936
 
 
10937
    if (!m) return Qfalse;
 
10938
    switch (*m) {
 
10939
      case '\0':
 
10940
        return Qfalse;
 
10941
 
 
10942
      case '$':
 
10943
        if (is_special_global_name(++m)) return Qtrue;
 
10944
        goto id;
 
10945
 
 
10946
      case '@':
 
10947
        if (*++m == '@') ++m;
 
10948
        goto id;
 
10949
 
 
10950
      case '<':
 
10951
        switch (*++m) {
 
10952
          case '<': ++m; break;
 
10953
          case '=': if (*++m == '>') ++m; break;
 
10954
          default: break;
 
10955
        }
 
10956
        break;
 
10957
 
 
10958
      case '>':
 
10959
        switch (*++m) {
 
10960
          case '>': case '=': ++m; break;
 
10961
        }
 
10962
        break;
 
10963
 
 
10964
      case '=':
 
10965
        switch (*++m) {
 
10966
          case '~': ++m; break;
 
10967
          case '=': if (*++m == '=') ++m; break;
 
10968
          default: return Qfalse;
 
10969
        }
 
10970
        break;
 
10971
 
 
10972
      case '*':
 
10973
        if (*++m == '*') ++m;
 
10974
        break;
 
10975
 
 
10976
      case '+': case '-':
 
10977
        if (*++m == '@') ++m;
 
10978
        break;
 
10979
 
 
10980
      case '|': case '^': case '&': case '/': case '%': case '~': case '`':
 
10981
        ++m;
 
10982
        break;
 
10983
 
 
10984
      case '[':
 
10985
        if (*++m != ']') return Qfalse;
 
10986
        if (*++m == '=') ++m;
 
10987
        break;
 
10988
 
 
10989
      default:
 
10990
        localid = !ISUPPER(*m);
 
10991
      id:
 
10992
        if (*m != '_' && !ISALPHA(*m) && !ismbchar(*m)) return Qfalse;
 
10993
        while (is_identchar(*m)) m += mbclen(*m);
 
10994
        if (localid) {
 
10995
            switch (*m) {
 
10996
              case '!': case '?': case '=': ++m;
 
10997
            }
 
10998
        }
 
10999
        break;
 
11000
    }
 
11001
    return *m ? Qfalse : Qtrue;
 
11002
}
 
11003
 
 
11004
int
 
11005
rb_sym_interned_p(str)
 
11006
    VALUE str;
 
11007
{
 
11008
    ID id;
 
11009
 
 
11010
    if (st_lookup(sym_tbl, (st_data_t)RSTRING(str)->ptr, (st_data_t *)&id))
 
11011
        return Qtrue;
 
11012
    return Qfalse;
 
11013
}
 
11014
 
 
11015
ID
 
11016
rb_intern(name)
 
11017
    const char *name;
 
11018
{
 
11019
    const char *m = name;
 
11020
    ID id;
 
11021
    int last;
 
11022
 
 
11023
    if (st_lookup(sym_tbl, (st_data_t)name, (st_data_t *)&id))
 
11024
        return id;
 
11025
 
 
11026
    last = strlen(name)-1;
 
11027
    id = 0;
 
11028
    switch (*name) {
 
11029
      case '$':
 
11030
        id |= ID_GLOBAL;
 
11031
        if (is_special_global_name(++m)) goto new_id;
 
11032
        break;
 
11033
      case '@':
 
11034
        if (name[1] == '@') {
 
11035
            m++;
 
11036
            id |= ID_CLASS;
 
11037
        }
 
11038
        else {
 
11039
            id |= ID_INSTANCE;
 
11040
        }
 
11041
        m++;
 
11042
        break;
 
11043
      default:
 
11044
        if (name[0] != '_' && ISASCII(name[0]) && !ISALNUM(name[0])) {
 
11045
            /* operators */
 
11046
            int i;
 
11047
 
 
11048
            for (i=0; op_tbl[i].token; i++) {
 
11049
                if (*op_tbl[i].name == *name &&
 
11050
                    strcmp(op_tbl[i].name, name) == 0) {
 
11051
                    id = op_tbl[i].token;
 
11052
                    goto id_regist;
 
11053
                }
 
11054
            }
 
11055
        }
 
11056
 
 
11057
        if (name[last] == '=') {
 
11058
            /* attribute assignment */
 
11059
            char *buf = ALLOCA_N(char,last+1);
 
11060
 
 
11061
            strncpy(buf, name, last);
 
11062
            buf[last] = '\0';
 
11063
            id = rb_intern(buf);
 
11064
            if (id > tLAST_TOKEN && !is_attrset_id(id)) {
 
11065
                id = rb_id_attrset(id);
 
11066
                goto id_regist;
 
11067
            }
 
11068
            id = ID_ATTRSET;
 
11069
        }
 
11070
        else if (ISUPPER(name[0])) {
 
11071
            id = ID_CONST;
 
11072
        }
 
11073
        else {
 
11074
            id = ID_LOCAL;
 
11075
        }
 
11076
        break;
 
11077
    }
 
11078
    if (!ISDIGIT(*m)) {
 
11079
        while (m <= name + last && is_identchar(*m)) {
 
11080
            m += mbclen(*m);
 
11081
        }
 
11082
    }
 
11083
    if (*m) id = ID_JUNK;
 
11084
  new_id:
 
11085
    id |= ++last_id << ID_SCOPE_SHIFT;
 
11086
  id_regist:
 
11087
    name = strdup(name);
 
11088
    st_add_direct(sym_tbl, (st_data_t)name, id);
 
11089
    st_add_direct(sym_rev_tbl, id, (st_data_t)name);
 
11090
    return id;
 
11091
}
 
11092
 
 
11093
char *
 
11094
rb_id2name(id)
 
11095
    ID id;
 
11096
{
 
11097
    char *name;
 
11098
 
 
11099
    if (id < tLAST_TOKEN) {
 
11100
        int i;
 
11101
 
 
11102
        for (i=0; op_tbl[i].token; i++) {
 
11103
            if (op_tbl[i].token == id)
 
11104
                return op_tbl[i].name;
 
11105
        }
 
11106
    }
 
11107
 
 
11108
    if (st_lookup(sym_rev_tbl, id, (st_data_t *)&name))
 
11109
        return name;
 
11110
 
 
11111
    if (is_attrset_id(id)) {
 
11112
        ID id2 = (id & ~ID_SCOPE_MASK) | ID_LOCAL;
 
11113
 
 
11114
      again:
 
11115
        name = rb_id2name(id2);
 
11116
        if (name) {
 
11117
            char *buf = ALLOCA_N(char, strlen(name)+2);
 
11118
 
 
11119
            strcpy(buf, name);
 
11120
            strcat(buf, "=");
 
11121
            rb_intern(buf);
 
11122
            return rb_id2name(id);
 
11123
        }
 
11124
        if (is_local_id(id2)) {
 
11125
            id2 = (id & ~ID_SCOPE_MASK) | ID_CONST;
 
11126
            goto again;
 
11127
        }
 
11128
    }
 
11129
    return 0;
 
11130
}
 
11131
 
 
11132
static int
 
11133
symbols_i(key, value, ary)
 
11134
    char *key;
 
11135
    ID value;
 
11136
    VALUE ary;
 
11137
{
 
11138
    rb_ary_push(ary, ID2SYM(value));
 
11139
    return ST_CONTINUE;
 
11140
}
 
11141
 
 
11142
/*
 
11143
 *  call-seq:
 
11144
 *     Symbol.all_symbols    => array
 
11145
 *  
 
11146
 *  Returns an array of all the symbols currently in Ruby's symbol
 
11147
 *  table.
 
11148
 *     
 
11149
 *     Symbol.all_symbols.size    #=> 903
 
11150
 *     Symbol.all_symbols[1,20]   #=> [:floor, :ARGV, :Binding, :symlink,
 
11151
 *                                     :chown, :EOFError, :$;, :String, 
 
11152
 *                                     :LOCK_SH, :"setuid?", :$<, 
 
11153
 *                                     :default_proc, :compact, :extend, 
 
11154
 *                                     :Tms, :getwd, :$=, :ThreadGroup,
 
11155
 *                                     :wait2, :$>]
 
11156
 */
 
11157
 
 
11158
VALUE
 
11159
rb_sym_all_symbols()
 
11160
{
 
11161
    VALUE ary = rb_ary_new2(sym_tbl->num_entries);
 
11162
 
 
11163
    st_foreach(sym_tbl, symbols_i, ary);
 
11164
    return ary;
 
11165
}
 
11166
 
 
11167
int
 
11168
rb_is_const_id(id)
 
11169
    ID id;
 
11170
{
 
11171
    if (is_const_id(id)) return Qtrue;
 
11172
    return Qfalse;
 
11173
}
 
11174
 
 
11175
int
 
11176
rb_is_class_id(id)
 
11177
    ID id;
 
11178
{
 
11179
    if (is_class_id(id)) return Qtrue;
 
11180
    return Qfalse;
 
11181
}
 
11182
 
 
11183
int
 
11184
rb_is_instance_id(id)
 
11185
    ID id;
 
11186
{
 
11187
    if (is_instance_id(id)) return Qtrue;
 
11188
    return Qfalse;
 
11189
}
 
11190
 
 
11191
int
 
11192
rb_is_local_id(id)
 
11193
    ID id;
 
11194
{
 
11195
    if (is_local_id(id)) return Qtrue;
 
11196
    return Qfalse;
 
11197
}
 
11198
 
 
11199
int
 
11200
rb_is_junk_id(id)
 
11201
    ID id;
 
11202
{
 
11203
    if (is_junk_id(id)) return Qtrue;
 
11204
    return Qfalse;
 
11205
}
 
11206
 
 
11207
static void
 
11208
special_local_set(c, val)
 
11209
    char c;
 
11210
    VALUE val;
 
11211
{
 
11212
    int cnt;
 
11213
 
 
11214
    top_local_init();
 
11215
    cnt = local_cnt(c);
 
11216
    top_local_setup();
 
11217
    ruby_scope->local_vars[cnt] = val;
 
11218
}
 
11219
 
 
11220
VALUE
 
11221
rb_backref_get()
 
11222
{
 
11223
    VALUE *var = rb_svar(1);
 
11224
    if (var) {
 
11225
        return *var;
 
11226
    }
 
11227
    return Qnil;
 
11228
}
 
11229
 
 
11230
void
 
11231
rb_backref_set(val)
 
11232
    VALUE val;
 
11233
{
 
11234
    VALUE *var = rb_svar(1);
 
11235
    if (var) {
 
11236
        *var = val;
 
11237
    }
 
11238
    else {
 
11239
        special_local_set('~', val);
 
11240
    }
 
11241
}
 
11242
 
 
11243
VALUE
 
11244
rb_lastline_get()
 
11245
{
 
11246
    VALUE *var = rb_svar(0);
 
11247
    if (var) {
 
11248
        return *var;
 
11249
    }
 
11250
    return Qnil;
 
11251
}
 
11252
 
 
11253
void
 
11254
rb_lastline_set(val)
 
11255
    VALUE val;
 
11256
{
 
11257
    VALUE *var = rb_svar(0);
 
11258
    if (var) {
 
11259
        *var = val;
 
11260
    }
 
11261
    else {
 
11262
        special_local_set('_', val);
 
11263
    }
 
11264
}
 
11265
 
 
11266
#ifdef YYMALLOC
 
11267
#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
 
11268
#define NEWHEAP() rb_node_newnode(NODE_ALLOCA, 0, (VALUE)parser_heap, 0)
 
11269
#define ADD2HEAP(n, c, p) ((parser_heap = (n))->u1.node = (p), \
 
11270
                           (n)->u3.cnt = (c), (p))
 
11271
 
 
11272
static void *
 
11273
rb_parser_malloc(size)
 
11274
    size_t size;
 
11275
{
 
11276
    size_t cnt = HEAPCNT(1, size);
 
11277
    NODE *n = NEWHEAP();
 
11278
    void *ptr = xmalloc(size);
 
11279
 
 
11280
    return ADD2HEAP(n, cnt, ptr);
 
11281
}
 
11282
 
 
11283
static void *
 
11284
rb_parser_calloc(nelem, size)
 
11285
    size_t nelem, size;
 
11286
{
 
11287
    size_t cnt = HEAPCNT(nelem, size);
 
11288
    NODE *n = NEWHEAP();
 
11289
    void *ptr = xcalloc(nelem, size);
 
11290
 
 
11291
    return ADD2HEAP(n, cnt, ptr);
 
11292
}
 
11293
 
 
11294
static void *
 
11295
rb_parser_realloc(ptr, size)
 
11296
    void *ptr;
 
11297
    size_t size;
 
11298
{
 
11299
    NODE *n;
 
11300
    size_t cnt = HEAPCNT(1, size);
 
11301
 
 
11302
    if (ptr && (n = parser_heap) != NULL) {
 
11303
        do {
 
11304
            if (n->u1.node == ptr) {
 
11305
                n->u1.node = ptr = xrealloc(ptr, size);
 
11306
                if (n->u3.cnt) n->u3.cnt = cnt;
 
11307
                return ptr;
 
11308
            }
 
11309
        } while ((n = n->u2.node) != NULL);
 
11310
    }
 
11311
    n = NEWHEAP();
 
11312
    ptr = xrealloc(ptr, size);
 
11313
    return ADD2HEAP(n, cnt, ptr);
 
11314
}
 
11315
 
 
11316
static void
 
11317
rb_parser_free(ptr)
 
11318
    void *ptr;
 
11319
{
 
11320
    NODE **prev = &parser_heap, *n;
 
11321
 
 
11322
    while (n = *prev) {
 
11323
        if (n->u1.node == ptr) {
 
11324
            *prev = n->u2.node;
 
11325
            rb_gc_force_recycle((VALUE)n);
 
11326
            break;
 
11327
        }
 
11328
        prev = &n->u2.node;
 
11329
    }
 
11330
    xfree(ptr);
 
11331
}
 
11332
#endif
 
11333