52#define YYBISON_VERSION "3.8.2"
55#define YYSKELETON_NAME "yacc.c"
74# error needs pure parser
77#define YYERROR_VERBOSE 1
78#define YYSTACK_USE_ALLOCA 0
79#define YYLTYPE rb_code_location_t
80#define YYLTYPE_IS_DECLARED 1
82#include "ruby/internal/config.h"
91#include "internal/compile.h"
92#include "internal/compilers.h"
93#include "internal/complex.h"
94#include "internal/encoding.h"
95#include "internal/error.h"
96#include "internal/hash.h"
97#include "internal/imemo.h"
98#include "internal/io.h"
99#include "internal/numeric.h"
100#include "internal/parse.h"
101#include "internal/rational.h"
102#include "internal/re.h"
103#include "internal/symbol.h"
104#include "internal/thread.h"
105#include "internal/variable.h"
110#include "ruby/regex.h"
121 shareable_everything,
125 unsigned int in_defined: 1;
126 unsigned int in_kwarg: 1;
127 unsigned int in_argdef: 1;
128 unsigned int in_def: 1;
129 unsigned int in_class: 1;
130 BITFIELD(
enum shareability, shareable_constant_value, 2);
133#if defined(__GNUC__) && !defined(__clang__)
145#define NO_LEX_CTXT (struct lex_context){0}
147#define AREF(ary, i) RARRAY_AREF(ary, i)
149#ifndef WARN_PAST_SCOPE
150# define WARN_PAST_SCOPE 0
155#define yydebug (p->debug)
157#define YYMALLOC(size) rb_parser_malloc(p, (size))
158#define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
159#define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
160#define YYFREE(ptr) rb_parser_free(p, (ptr))
161#define YYFPRINTF rb_parser_printf
162#define YY_LOCATION_PRINT(File, loc) \
163 rb_parser_printf(p, "%d.%d-%d.%d", \
164 (loc).beg_pos.lineno, (loc).beg_pos.column,\
165 (loc).end_pos.lineno, (loc).end_pos.column)
166#define YYLLOC_DEFAULT(Current, Rhs, N) \
170 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
171 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
175 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
176 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
180 (((Msgid)[0] == 'm') && (strcmp((Msgid), "memory exhausted") == 0) ? \
181 "nesting too deep" : (Msgid))
183#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
184 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
185#define RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(Current) \
186 rb_parser_set_location_of_delayed_token(p, &(Current))
187#define RUBY_SET_YYLLOC_OF_HEREDOC_END(Current) \
188 rb_parser_set_location_of_heredoc_end(p, &(Current))
189#define RUBY_SET_YYLLOC_OF_DUMMY_END(Current) \
190 rb_parser_set_location_of_dummy_end(p, &(Current))
191#define RUBY_SET_YYLLOC_OF_NONE(Current) \
192 rb_parser_set_location_of_none(p, &(Current))
193#define RUBY_SET_YYLLOC(Current) \
194 rb_parser_set_location(p, &(Current))
195#define RUBY_INIT_YYLLOC() \
197 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
198 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
219#define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
233 EXPR_VALUE = EXPR_BEG,
234 EXPR_BEG_ANY = (EXPR_BEG | EXPR_MID | EXPR_CLASS),
235 EXPR_ARG_ANY = (EXPR_ARG | EXPR_CMDARG),
236 EXPR_END_ANY = (EXPR_END | EXPR_ENDARG | EXPR_ENDFN),
239#define IS_lex_state_for(x, ls) ((x) & (ls))
240#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
241#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
242#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
244# define SET_LEX_STATE(ls) \
245 parser_set_lex_state(p, ls, __LINE__)
246static inline enum lex_state_e parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line);
248typedef VALUE stack_type;
252# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
253# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
254# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
255# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
256# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
260#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
261#define COND_POP() BITSTACK_POP(cond_stack)
262#define COND_P() BITSTACK_SET_P(cond_stack)
263#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
267#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
268#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
269#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
270#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
289 NODE *outer, *inner, *current;
300#define NUMPARAM_ID_P(id) numparam_id_p(id)
301#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - (tNUMPARAM_1 - 1))
302#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 - 1 + (idx)))
306 if (!is_local_id(
id) ||
id < (tNUMPARAM_1 << ID_SCOPE_SHIFT))
return 0;
307 unsigned int idx = NUMPARAM_ID_TO_IDX(
id);
308 return idx > 0 && idx <= NUMPARAM_MAX;
312#define DVARS_INHERIT ((void*)1)
313#define DVARS_TOPSCOPE NULL
314#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
355 enum lex_state_e state;
363 stack_type cond_stack;
364 stack_type cmdarg_stack;
370 int heredoc_line_indent;
377 const char *ruby_sourcefile;
378 VALUE ruby_sourcefile_string;
382 VALUE compile_option;
404 unsigned int command_start:1;
405 unsigned int eofp: 1;
406 unsigned int ruby__end__seen: 1;
407 unsigned int debug: 1;
408 unsigned int has_shebang: 1;
409 unsigned int token_seen: 1;
410 unsigned int token_info_enabled: 1;
412 unsigned int past_scope_enabled: 1;
414 unsigned int error_p: 1;
415 unsigned int cr_seen: 1;
420 unsigned int do_print: 1;
421 unsigned int do_loop: 1;
422 unsigned int do_chomp: 1;
423 unsigned int do_split: 1;
424 unsigned int keep_script_lines: 1;
425 unsigned int error_tolerant: 1;
426 unsigned int keep_tokens: 1;
428 NODE *eval_tree_begin;
434 VALUE end_expect_token_locations;
444 VALUE parsing_thread;
448#define intern_cstr(n,l,en) rb_intern3(n,l,en)
450#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
451#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
452#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
453#define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
454#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
460 p->pvtbl = st_init_numtable();
467 st_free_table(p->pvtbl);
482 if (p->pktbl) st_free_table(p->pktbl);
490debug_end_expect_token_locations(
struct parser_params *p,
const char *name)
494 rb_str_catf(mesg,
" %"PRIsVALUE
"\n", p->end_expect_token_locations);
495 flush_debug_buffer(p, p->debug_output, mesg);
502 if(
NIL_P(p->end_expect_token_locations))
return;
503 rb_ary_push(p->end_expect_token_locations, rb_ary_new_from_args(2,
INT2NUM(pos->lineno),
INT2NUM(pos->column)));
504 debug_end_expect_token_locations(p,
"push_end_expect_token_locations");
510 if(
NIL_P(p->end_expect_token_locations))
return;
511 rb_ary_pop(p->end_expect_token_locations);
512 debug_end_expect_token_locations(p,
"pop_end_expect_token_locations");
518 if(
NIL_P(p->end_expect_token_locations))
return Qnil;
519 return rb_ary_last(0, 0, p->end_expect_token_locations);
523parser_token2id(
enum yytokentype tok)
526#define TOKEN2ID(tok) case tok: return rb_intern(#tok);
527#define TOKEN2ID2(tok, name) case tok: return rb_intern(name);
528 TOKEN2ID2(
' ',
"words_sep")
548 TOKEN2ID2('\n', "nl");
555 TOKEN2ID(keyword_class);
556 TOKEN2ID(keyword_module);
557 TOKEN2ID(keyword_def);
558 TOKEN2ID(keyword_undef);
559 TOKEN2ID(keyword_begin);
560 TOKEN2ID(keyword_rescue);
561 TOKEN2ID(keyword_ensure);
562 TOKEN2ID(keyword_end);
563 TOKEN2ID(keyword_if);
564 TOKEN2ID(keyword_unless);
565 TOKEN2ID(keyword_then);
566 TOKEN2ID(keyword_elsif);
567 TOKEN2ID(keyword_else);
568 TOKEN2ID(keyword_case);
569 TOKEN2ID(keyword_when);
570 TOKEN2ID(keyword_while);
571 TOKEN2ID(keyword_until);
572 TOKEN2ID(keyword_for);
573 TOKEN2ID(keyword_break);
574 TOKEN2ID(keyword_next);
575 TOKEN2ID(keyword_redo);
576 TOKEN2ID(keyword_retry);
577 TOKEN2ID(keyword_in);
578 TOKEN2ID(keyword_do);
579 TOKEN2ID(keyword_do_cond);
580 TOKEN2ID(keyword_do_block);
581 TOKEN2ID(keyword_do_LAMBDA);
582 TOKEN2ID(keyword_return);
583 TOKEN2ID(keyword_yield);
584 TOKEN2ID(keyword_super);
585 TOKEN2ID(keyword_self);
586 TOKEN2ID(keyword_nil);
587 TOKEN2ID(keyword_true);
588 TOKEN2ID(keyword_false);
589 TOKEN2ID(keyword_and);
590 TOKEN2ID(keyword_or);
591 TOKEN2ID(keyword_not);
592 TOKEN2ID(modifier_if);
593 TOKEN2ID(modifier_unless);
594 TOKEN2ID(modifier_while);
595 TOKEN2ID(modifier_until);
596 TOKEN2ID(modifier_rescue);
597 TOKEN2ID(keyword_alias);
598 TOKEN2ID(keyword_defined);
599 TOKEN2ID(keyword_BEGIN);
600 TOKEN2ID(keyword_END);
601 TOKEN2ID(keyword__LINE__);
602 TOKEN2ID(keyword__FILE__);
603 TOKEN2ID(keyword__ENCODING__);
604 TOKEN2ID(tIDENTIFIER);
614 TOKEN2ID(tIMAGINARY);
618 TOKEN2ID(tSTRING_CONTENT);
619 TOKEN2ID(tREGEXP_END);
620 TOKEN2ID(tDUMNY_END);
649 TOKEN2ID(tLPAREN_ARG);
653 TOKEN2ID(tLBRACE_ARG);
659 TOKEN2ID(tSTRING_BEG);
660 TOKEN2ID(tXSTRING_BEG);
661 TOKEN2ID(tREGEXP_BEG);
662 TOKEN2ID(tWORDS_BEG);
663 TOKEN2ID(tQWORDS_BEG);
664 TOKEN2ID(tSYMBOLS_BEG);
665 TOKEN2ID(tQSYMBOLS_BEG);
666 TOKEN2ID(tSTRING_END);
667 TOKEN2ID(tSTRING_DEND);
668 TOKEN2ID(tSTRING_DBEG);
669 TOKEN2ID(tSTRING_DVAR);
671 TOKEN2ID(tLABEL_END);
672 TOKEN2ID(tIGNORED_NL);
674 TOKEN2ID(tEMBDOC_BEG);
676 TOKEN2ID(tEMBDOC_END);
677 TOKEN2ID(tHEREDOC_BEG);
678 TOKEN2ID(tHEREDOC_END);
681 TOKEN2ID(tUMINUS_NUM);
682 TOKEN2ID(tLAST_TOKEN);
687 rb_bug("parser_token2id: unknown token %d", tok);
689 UNREACHABLE_RETURN(0);
694RBIMPL_ATTR_NONNULL((1, 2, 3))
695static int parser_yyerror(struct parser_params*, const YYLTYPE *yylloc, const char*);
696RBIMPL_ATTR_NONNULL((1, 2))
697static int parser_yyerror0(struct parser_params*, const char*);
698#define yyerror0(msg) parser_yyerror0(p, (msg))
699#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
700#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
701#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
702#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
703#define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
704#define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
706static void token_info_setup(token_info *ptinfo, const char *ptr, const rb_code_location_t *loc);
707static void token_info_push(struct parser_params*, const char *token, const rb_code_location_t *loc);
708static void token_info_pop(struct parser_params*, const char *token, const rb_code_location_t *loc);
709static void token_info_warn(struct parser_params *p, const char *token, token_info *ptinfo_beg, int same, const rb_code_location_t *loc);
710static void token_info_drop(struct parser_params *p, const char *token, rb_code_position_t beg_pos);
713#define compile_for_eval (0)
715#define compile_for_eval (p->parent_iseq != 0)
718#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
720#define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
721#define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
722#define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
724#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
726static enum yytokentype yylex(YYSTYPE*, YYLTYPE*, struct parser_params*);
730rb_discard_node(struct parser_params *p, NODE *n)
732 rb_ast_delete_node(p->ast, n);
738add_mark_object(struct parser_params *p, VALUE obj)
740 if (!SPECIAL_CONST_P(obj)
741 && !RB_TYPE_P(obj, T_NODE) /* Ripper jumbles NODE objects and other objects... */
743 rb_ast_add_mark_object(p->ast, obj);
748static NODE* node_newnode_with_locals(struct parser_params *, enum node_type, VALUE, VALUE, const rb_code_location_t*);
751static NODE* node_newnode(struct parser_params *, enum node_type, VALUE, VALUE, VALUE, const rb_code_location_t*);
752#define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
754/* Make a new temporal node, which should not be appeared in the
755 * result AST and does not have node_id and location. */
756static NODE* node_new_temporal(struct parser_params *p, enum node_type type, VALUE a0, VALUE a1, VALUE a2);
757#define NODE_NEW_TEMPORAL(t,a0,a1,a2) node_new_temporal(p, (t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2))
759static NODE *nd_set_loc(NODE *nd, const YYLTYPE *loc);
762parser_get_node_id(struct parser_params *p)
764 int node_id = p->node_id;
771set_line_body(NODE *body, int line)
774 switch (nd_type(body)) {
777 nd_set_line(body, line);
781#define yyparse ruby_yyparse
783static NODE* cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
784static NODE* method_cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
785#define new_nil(loc) NEW_NIL(loc)
786static NODE *new_nil_at(struct parser_params *p, const rb_code_position_t *pos);
787static NODE *new_if(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*);
788static NODE *new_unless(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*);
789static NODE *logop(struct parser_params*,ID,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
791static NODE *newline_node(NODE*);
792static void fixpos(NODE*,NODE*);
794static int value_expr_gen(struct parser_params*,NODE*);
795static void void_expr(struct parser_params*,NODE*);
796static NODE *remove_begin(NODE*);
797static NODE *remove_begin_all(NODE*);
798#define value_expr(node) value_expr_gen(p, (node))
799static NODE *void_stmts(struct parser_params*,NODE*);
800static void reduce_nodes(struct parser_params*,NODE**);
801static void block_dup_check(struct parser_params*,NODE*,NODE*);
803static NODE *block_append(struct parser_params*,NODE*,NODE*);
804static NODE *list_append(struct parser_params*,NODE*,NODE*);
805static NODE *list_concat(NODE*,NODE*);
806static NODE *arg_append(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
807static NODE *last_arg_append(struct parser_params *p, NODE *args, NODE *last_arg, const YYLTYPE *loc);
808static NODE *rest_arg_append(struct parser_params *p, NODE *args, NODE *rest_arg, const YYLTYPE *loc);
809static NODE *literal_concat(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
810static NODE *new_evstr(struct parser_params*,NODE*,const YYLTYPE*);
811static NODE *new_dstr(struct parser_params*,NODE*,const YYLTYPE*);
812static NODE *evstr2dstr(struct parser_params*,NODE*);
813static NODE *splat_array(NODE*);
814static void mark_lvar_used(struct parser_params *p, NODE *rhs);
816static NODE *call_bin_op(struct parser_params*,NODE*,ID,NODE*,const YYLTYPE*,const YYLTYPE*);
817static NODE *call_uni_op(struct parser_params*,NODE*,ID,const YYLTYPE*,const YYLTYPE*);
818static NODE *new_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, const YYLTYPE *op_loc, const YYLTYPE *loc);
819static NODE *new_command_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, NODE *block, const YYLTYPE *op_loc, const YYLTYPE *loc);
820static NODE *method_add_block(struct parser_params*p, NODE *m, NODE *b, const YYLTYPE *loc) {b->nd_iter = m; b->nd_loc = *loc; return b;}
822static bool args_info_empty_p(struct rb_args_info *args);
823static NODE *new_args(struct parser_params*,NODE*,NODE*,ID,NODE*,NODE*,const YYLTYPE*);
824static NODE *new_args_tail(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
825static NODE *new_array_pattern(struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn, const YYLTYPE *loc);
826static NODE *new_array_pattern_tail(struct parser_params *p, NODE *pre_args, int has_rest, ID rest_arg, NODE *post_args, const YYLTYPE *loc);
827static NODE *new_find_pattern(struct parser_params *p, NODE *constant, NODE *fndptn, const YYLTYPE *loc);
828static NODE *new_find_pattern_tail(struct parser_params *p, ID pre_rest_arg, NODE *args, ID post_rest_arg, const YYLTYPE *loc);
829static NODE *new_hash_pattern(struct parser_params *p, NODE *constant, NODE *hshptn, const YYLTYPE *loc);
830static NODE *new_hash_pattern_tail(struct parser_params *p, NODE *kw_args, ID kw_rest_arg, const YYLTYPE *loc);
832static NODE *new_kw_arg(struct parser_params *p, NODE *k, const YYLTYPE *loc);
833static NODE *args_with_numbered(struct parser_params*,NODE*,int);
835static VALUE negate_lit(struct parser_params*, VALUE);
836static NODE *ret_args(struct parser_params*,NODE*);
837static NODE *arg_blk_pass(NODE*,NODE*);
838static NODE *new_yield(struct parser_params*,NODE*,const YYLTYPE*);
839static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
841static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
842static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
844static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
845static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
847static void rb_backref_error(struct parser_params*,NODE*);
848static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
850static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
851static NODE *new_ary_op_assign(struct parser_params *p, NODE *ary, NODE *args, ID op, NODE *rhs, const YYLTYPE *args_loc, const YYLTYPE *loc);
852static NODE *new_attr_op_assign(struct parser_params *p, NODE *lhs, ID atype, ID attr, ID op, NODE *rhs, const YYLTYPE *loc);
853static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
854static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
856static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
858static NODE *opt_arg_append(NODE*, NODE*);
859static NODE *kwd_append(NODE*, NODE*);
861static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
862static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
864static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc);
866static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *);
868#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
870static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
872static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
874static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
876static rb_ast_id_table_t *local_tbl(struct parser_params*);
878static VALUE reg_compile(struct parser_params*, VALUE, int);
879static void reg_fragment_setenc(struct parser_params*, VALUE, int);
880static int reg_fragment_check(struct parser_params*, VALUE, int);
881static NODE *reg_named_capture_assign(struct parser_params* p, VALUE regexp, const YYLTYPE *loc);
883static int literal_concat0(struct parser_params *p, VALUE head, VALUE tail);
884static NODE *heredoc_dedent(struct parser_params*,NODE*);
886static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
888#define get_id(id) (id)
889#define get_value(val) (val)
890#define get_num(num) (num)
892#define NODE_RIPPER NODE_CDECL
893#define NEW_RIPPER(a,b,c,loc) (VALUE)NEW_CDECL(a,b,c,loc)
895static inline int ripper_is_node_yylval(VALUE n);
898ripper_new_yylval(struct parser_params *p, ID a, VALUE b, VALUE c)
900 if (ripper_is_node_yylval(c)) c = RNODE(c)->nd_cval;
901 add_mark_object(p, b);
902 add_mark_object(p, c);
903 return NEW_RIPPER(a, b, c, &NULL_LOC);
907ripper_is_node_yylval(VALUE n)
909 return RB_TYPE_P(n, T_NODE) && nd_type_p(RNODE(n), NODE_RIPPER);
912#define value_expr(node) ((void)(node))
913#define remove_begin(node) (node)
914#define void_stmts(p,x) (x)
915#define rb_dvar_defined(id, base) 0
916#define rb_local_defined(id, base) 0
917static ID ripper_get_id(VALUE);
918#define get_id(id) ripper_get_id(id)
919static VALUE ripper_get_value(VALUE);
920#define get_value(val) ripper_get_value(val)
921#define get_num(num) (int)get_id(num)
922static VALUE assignable(struct parser_params*,VALUE);
923static int id_is_var(struct parser_params *p, ID id);
925#define method_cond(p,node,loc) (node)
926#define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
927#define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
928#define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
929#define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
931#define new_nil(loc) Qnil
933static VALUE new_regexp(struct parser_params *, VALUE, VALUE, const YYLTYPE *);
935static VALUE const_decl(struct parser_params *p, VALUE path);
937static VALUE var_field(struct parser_params *p, VALUE a);
938static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
940static VALUE parser_reg_compile(struct parser_params*, VALUE, int, VALUE *);
942static VALUE backref_error(struct parser_params*, NODE *, VALUE);
945/* forward declaration */
946typedef struct rb_strterm_heredoc_struct rb_strterm_heredoc_t;
948RUBY_SYMBOL_EXPORT_BEGIN
949VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
950int rb_reg_fragment_setenc(struct parser_params*, VALUE, int);
951enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
952VALUE rb_parser_lex_state_name(enum lex_state_e state);
953void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
954PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
955YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
956YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
957YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
958YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
959YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
960YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
961RUBY_SYMBOL_EXPORT_END
963static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
964static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
966static ID formal_argument(struct parser_params*, ID);
968static ID formal_argument(struct parser_params*, VALUE);
970static ID shadowing_lvar(struct parser_params*,ID);
971static void new_bv(struct parser_params*,ID);
973static void local_push(struct parser_params*,int);
974static void local_pop(struct parser_params*);
975static void local_var(struct parser_params*, ID);
976static void arg_var(struct parser_params*, ID);
977static int local_id(struct parser_params *p, ID id);
978static int local_id_ref(struct parser_params*, ID, ID **);
980static ID internal_id(struct parser_params*);
981static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
983static int check_forwarding_args(struct parser_params*);
984static void add_forwarding_args(struct parser_params *p);
986static const struct vtable *dyna_push(struct parser_params *);
987static void dyna_pop(struct parser_params*, const struct vtable *);
988static int dyna_in_block(struct parser_params*);
989#define dyna_var(p, id) local_var(p, id)
990static int dvar_defined(struct parser_params*, ID);
991static int dvar_defined_ref(struct parser_params*, ID, ID**);
992static int dvar_curr(struct parser_params*,ID);
994static int lvar_defined(struct parser_params*, ID);
996static NODE *numparam_push(struct parser_params *p);
997static void numparam_pop(struct parser_params *p, NODE *prev_inner);
1000# define METHOD_NOT idNOT
1002# define METHOD_NOT '!
'
1005#define idFWD_REST '*
'
1006#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1007#define idFWD_BLOCK '&
'
1008#define idFWD_ALL idDot3
1009#define FORWARD_ARGS_WITH_RUBY2_KEYWORDS
1011#define RE_OPTION_ONCE (1<<16)
1012#define RE_OPTION_ENCODING_SHIFT 8
1013#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1014#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1015#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1016#define RE_OPTION_MASK 0xff
1017#define RE_OPTION_ARG_ENCODING_NONE 32
1019/* structs for managing terminator of string literal and heredocment */
1020typedef struct rb_strterm_literal_struct {
1027 long func; /* STR_FUNC_* (e.g., STR_FUNC_ESCAPE and STR_FUNC_EXPAND) */
1031 long paren; /* '(
' of `%q(...)` */
1035 long term; /* ')
' of `%q(...)` */
1037} rb_strterm_literal_t;
1039#define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
1041struct rb_strterm_heredoc_struct {
1042 VALUE lastline; /* the string of line that contains `<<"END"` */
1043 long offset; /* the column of END in `<<"END"` */
1044 int sourceline; /* lineno of the line that contains `<<"END"` */
1045 unsigned length /* the length of END in `<<"END"` */
1046#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
1047 : HERETERM_LENGTH_BITS
1048# define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
1050# define HERETERM_LENGTH_MAX UINT_MAX
1053#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
1061STATIC_ASSERT(rb_strterm_heredoc_t, sizeof(rb_strterm_heredoc_t) <= 4 * SIZEOF_VALUE);
1063#define STRTERM_HEREDOC IMEMO_FL_USER0
1065struct rb_strterm_struct {
1068 rb_strterm_literal_t literal;
1069 rb_strterm_heredoc_t heredoc;
1075rb_strterm_mark(VALUE obj)
1077 rb_strterm_t *strterm = (rb_strterm_t*)obj;
1078 if (RBASIC(obj)->flags & STRTERM_HEREDOC) {
1079 rb_strterm_heredoc_t *heredoc = &strterm->u.heredoc;
1080 rb_gc_mark(heredoc->lastline);
1085#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1086size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1088#define TOKEN2ID(tok) ( \
1089 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1090 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1091 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1092 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1093 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1094 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1095 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1097/****** Ripper *******/
1100#define RIPPER_VERSION "0.1.0"
1102static inline VALUE intern_sym(const char *name);
1104#include "eventids1.c"
1105#include "eventids2.c"
1107static VALUE ripper_dispatch0(struct parser_params*,ID);
1108static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1109static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1110static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1111static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1112static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1113static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1114static void ripper_error(struct parser_params *p);
1116#define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
1117#define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
1118#define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
1119#define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
1120#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
1121#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
1122#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e), (f), (g))
1124#define yyparse ripper_yyparse
1126#define ID2VAL(id) STATIC_ID2SYM(id)
1127#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1128#define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
1130#define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
1131 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
1133#define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
1136new_args(struct parser_params *p, VALUE pre_args, VALUE opt_args, VALUE rest_arg, VALUE post_args, VALUE tail, YYLTYPE *loc)
1138 NODE *t = (NODE *)tail;
1139 VALUE kw_args = t->u1.value, kw_rest_arg = t->u2.value, block = t->u3.value;
1140 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
1144new_args_tail(struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg, VALUE block, YYLTYPE *loc)
1146 NODE *t = rb_node_newnode(NODE_ARGS_AUX, kw_args, kw_rest_arg, block, &NULL_LOC);
1147 add_mark_object(p, kw_args);
1148 add_mark_object(p, kw_rest_arg);
1149 add_mark_object(p, block);
1154args_with_numbered(struct parser_params *p, VALUE args, int max_numparam)
1160new_array_pattern(struct parser_params *p, VALUE constant, VALUE pre_arg, VALUE aryptn, const YYLTYPE *loc)
1162 NODE *t = (NODE *)aryptn;
1163 VALUE pre_args = t->u1.value, rest_arg = t->u2.value, post_args = t->u3.value;
1165 if (!NIL_P(pre_arg)) {
1166 if (!NIL_P(pre_args)) {
1167 rb_ary_unshift(pre_args, pre_arg);
1170 pre_args = rb_ary_new_from_args(1, pre_arg);
1173 return dispatch4(aryptn, constant, pre_args, rest_arg, post_args);
1177new_array_pattern_tail(struct parser_params *p, VALUE pre_args, VALUE has_rest, VALUE rest_arg, VALUE post_args, const YYLTYPE *loc)
1182 rest_arg = dispatch1(var_field, rest_arg ? rest_arg : Qnil);
1188 t = rb_node_newnode(NODE_ARYPTN, pre_args, rest_arg, post_args, &NULL_LOC);
1189 add_mark_object(p, pre_args);
1190 add_mark_object(p, rest_arg);
1191 add_mark_object(p, post_args);
1196new_find_pattern(struct parser_params *p, VALUE constant, VALUE fndptn, const YYLTYPE *loc)
1198 NODE *t = (NODE *)fndptn;
1199 VALUE pre_rest_arg = t->u1.value, args = t->u2.value, post_rest_arg = t->u3.value;
1201 return dispatch4(fndptn, constant, pre_rest_arg, args, post_rest_arg);
1205new_find_pattern_tail(struct parser_params *p, VALUE pre_rest_arg, VALUE args, VALUE post_rest_arg, const YYLTYPE *loc)
1209 pre_rest_arg = dispatch1(var_field, pre_rest_arg ? pre_rest_arg : Qnil);
1210 post_rest_arg = dispatch1(var_field, post_rest_arg ? post_rest_arg : Qnil);
1212 t = rb_node_newnode(NODE_FNDPTN, pre_rest_arg, args, post_rest_arg, &NULL_LOC);
1213 add_mark_object(p, pre_rest_arg);
1214 add_mark_object(p, args);
1215 add_mark_object(p, post_rest_arg);
1219#define new_hash(p,h,l) rb_ary_new_from_args(0)
1222new_unique_key_hash(struct parser_params *p, VALUE ary, const YYLTYPE *loc)
1228new_hash_pattern(struct parser_params *p, VALUE constant, VALUE hshptn, const YYLTYPE *loc)
1230 NODE *t = (NODE *)hshptn;
1231 VALUE kw_args = t->u1.value, kw_rest_arg = t->u2.value;
1232 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
1236new_hash_pattern_tail(struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg, const YYLTYPE *loc)
1240 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
1245 t = rb_node_newnode(NODE_HSHPTN, kw_args, kw_rest_arg, 0, &NULL_LOC);
1247 add_mark_object(p, kw_args);
1248 add_mark_object(p, kw_rest_arg);
1252#define new_defined(p,expr,loc) dispatch1(defined, (expr))
1254static VALUE heredoc_dedent(struct parser_params*,VALUE);
1257#define ID2VAL(id) (id)
1258#define TOKEN2VAL(t) ID2VAL(t)
1259#define KWD2EID(t, v) keyword_##t
1262set_defun_body(struct parser_params *p, NODE *n, NODE *args, NODE *body, const YYLTYPE *loc)
1264 body = remove_begin(body);
1265 reduce_nodes(p, &body);
1266 n->nd_defn = NEW_SCOPE(args, body, loc);
1268 nd_set_line(n->nd_defn, loc->end_pos.lineno);
1269 set_line_body(body, loc->beg_pos.lineno);
1274rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1275 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1277 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1278 rescue = NEW_RESBODY(0, remove_begin(rescue), 0, &loc);
1279 loc.beg_pos = arg_loc->beg_pos;
1280 return NEW_RESCUE(arg, rescue, 0, &loc);
1286restore_defun(struct parser_params *p, NODE *name)
1288 NODE *save = name->nd_next;
1289 YYSTYPE c = {.val = save->nd_cval};
1290 p->cur_arg = name->nd_vid;
1291 p->ctxt.in_def = c.ctxt.in_def;
1292 p->ctxt.shareable_constant_value = c.ctxt.shareable_constant_value;
1293 p->max_numparam = (int)save->nd_nth;
1294 numparam_pop(p, save->nd_head);
1298endless_method_name(struct parser_params *p, NODE *defn, const YYLTYPE *loc)
1301 defn = defn->nd_defn;
1303 ID mid = defn->nd_mid;
1304 if (is_attrset_id(mid)) {
1305 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1307 token_info_drop(p, "def", loc->beg_pos);
1310#define debug_token_line(p, name, line) if (p->debug) rb_parser_printf(p, name ":%d (%d: %ld|%ld|%ld)\n", line, p->ruby_sourceline, p->lex.ptok - p->lex.pbeg, p->lex.pcur - p->lex.ptok, p->lex.pend - p->lex.pcur)
1315# define ifndef_ripper(x) (x)
1318# define Qnull Qundef
1319# define ifndef_ripper(x)
1322# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1323# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1324# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1325# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1326# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1327# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1328# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1329# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1330# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1331# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1332# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1333# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1334# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1335# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1336# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1337# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1338# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1339# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1340# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1341# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1343static ID id_warn, id_warning, id_gets, id_assoc;
1344# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1345# define WARN_S_L(s,l) STR_NEW(s,l)
1346# define WARN_S(s) STR_NEW2(s)
1347# define WARN_I(i) INT2NUM(i)
1348# define WARN_ID(i) rb_id2str(i)
1349# define WARN_IVAL(i) i
1350# define PRIsWARN "s"
1351# define rb_warn0L_experimental(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1352# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1353# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1354# ifdef HAVE_VA_ARGS_MACRO
1355# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1357# define WARN_CALL rb_funcall
1359# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1360# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1361# ifdef HAVE_VA_ARGS_MACRO
1362# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1364# define WARNING_CALL rb_funcall
1366PRINTF_ARGS(static void ripper_compile_error(struct parser_params*, const char *fmt, ...), 2, 3);
1367# define compile_error ripper_compile_error
1369# define WARN_S_L(s,l) s
1372# define WARN_ID(i) rb_id2name(i)
1373# define WARN_IVAL(i) NUM2INT(i)
1374# define PRIsWARN PRIsVALUE
1375# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1376# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1377# define WARN_CALL rb_compile_warn
1378# define rb_warn0L_experimental(l,fmt) rb_category_compile_warn(RB_WARN_CATEGORY_EXPERIMENTAL, WARN_ARGS_L(l, fmt, 1))
1379# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1380# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1381# define WARNING_CALL rb_compile_warning
1382PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const char *fmt, ...), 2, 3);
1383# define compile_error parser_compile_error
1386#define WARN_EOL(tok) \
1387 (looking_at_eol_p(p) ? \
1388 (void)rb_warning0("`" tok "' at the end of line without an expression
") : \
1390static int looking_at_eol_p(struct parser_params *p);
1396# define YY_CAST(Type, Val) static_cast<Type> (Val)
1397# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1399# define YY_CAST(Type, Val) ((Type) (Val))
1400# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1404# if defined __cplusplus
1405# if 201103L <= __cplusplus
1406# define YY_NULLPTR nullptr
1408# define YY_NULLPTR 0
1411# define YY_NULLPTR ((void*)0)
1415/* Use api.header.include to #include this header
1416 instead of duplicating it here. */
1417#ifndef YY_YY_Y_TAB_H_INCLUDED
1418# define YY_YY_Y_TAB_H_INCLUDED
1435 END_OF_INPUT = 0, /* "end-of-input
" */
1436 YYerror = 256, /* error */
1437 YYUNDEF = 257, /* "invalid token
" */
1438 keyword_class = 258, /* "`
class'" */
1439 keyword_module = 259, /* "`module'" */
1440 keyword_def = 260, /* "`def
'" */
1441 keyword_undef = 261, /* "`undef'" */
1442 keyword_begin = 262, /* "`begin
'" */
1443 keyword_rescue = 263, /* "`rescue'" */
1444 keyword_ensure = 264, /* "`ensure
'" */
1445 keyword_end = 265, /* "`end'" */
1446 keyword_if = 266, /* "`
if'" */
1447 keyword_unless = 267, /* "`unless'" */
1448 keyword_then = 268, /* "`then
'" */
1449 keyword_elsif = 269, /* "`elsif'" */
1450 keyword_else = 270, /* "`
else'" */
1451 keyword_case = 271, /* "`case'" */
1452 keyword_when = 272, /* "`when
'" */
1453 keyword_while = 273, /* "`while'" */
1454 keyword_until = 274, /* "`until
'" */
1455 keyword_for = 275, /* "`for'" */
1456 keyword_break = 276, /* "`
break'" */
1457 keyword_next = 277, /* "`next'" */
1458 keyword_redo = 278, /* "`redo
'" */
1459 keyword_retry = 279, /* "`retry'" */
1460 keyword_in = 280, /* "`in
'" */
1461 keyword_do = 281, /* "`do'" */
1462 keyword_do_cond = 282, /* "`
do' for condition" */
1463 keyword_do_block = 283, /* "`do' for block
" */
1464 keyword_do_LAMBDA = 284, /* "`
do' for lambda" */
1465 keyword_return = 285, /* "`return'" */
1466 keyword_yield = 286, /* "`yield
'" */
1467 keyword_super = 287, /* "`super'" */
1468 keyword_self = 288, /* "`self
'" */
1469 keyword_nil = 289, /* "`nil'" */
1470 keyword_true = 290, /* "`
true'" */
1471 keyword_false = 291, /* "`false'" */
1472 keyword_and = 292, /* "`and
'" */
1473 keyword_or = 293, /* "`or'" */
1474 keyword_not = 294, /* "`not
'" */
1475 modifier_if = 295, /* "`if' modifier
" */
1476 modifier_unless = 296, /* "`unless
' modifier" */
1477 modifier_while = 297, /* "`while' modifier
" */
1478 modifier_until = 298, /* "`until
' modifier" */
1479 modifier_rescue = 299, /* "`rescue' modifier
" */
1480 keyword_alias = 300, /* "`alias
'" */
1481 keyword_defined = 301, /* "`defined?'" */
1482 keyword_BEGIN = 302, /* "`BEGIN
'" */
1483 keyword_END = 303, /* "`END'" */
1484 keyword__LINE__ = 304, /* "`__LINE__
'" */
1485 keyword__FILE__ = 305, /* "`__FILE__'" */
1486 keyword__ENCODING__ = 306, /* "`__ENCODING__
'" */
1487 tIDENTIFIER = 307, /* "local variable or method" */
1488 tFID = 308, /* "method" */
1489 tGVAR = 309, /* "global variable" */
1490 tIVAR = 310, /* "instance variable" */
1491 tCONSTANT = 311, /* "constant" */
1492 tCVAR = 312, /* "class variable" */
1493 tLABEL = 313, /* "label" */
1494 tINTEGER = 314, /* "integer literal" */
1495 tFLOAT = 315, /* "float literal" */
1496 tRATIONAL = 316, /* "rational literal" */
1497 tIMAGINARY = 317, /* "imaginary literal" */
1498 tCHAR = 318, /* "char literal" */
1499 tNTH_REF = 319, /* "numbered reference" */
1500 tBACK_REF = 320, /* "back reference" */
1501 tSTRING_CONTENT = 321, /* "literal content" */
1502 tREGEXP_END = 322, /* tREGEXP_END */
1503 tDUMNY_END = 323, /* "dummy end" */
1504 tSP = 324, /* "escaped space" */
1505 tUPLUS = 132, /* "unary+" */
1506 tUMINUS = 133, /* "unary-" */
1507 tPOW = 134, /* "**" */
1508 tCMP = 135, /* "<=>" */
1509 tEQ = 140, /* "==" */
1510 tEQQ = 141, /* "===" */
1511 tNEQ = 142, /* "!=" */
1512 tGEQ = 139, /* ">=" */
1513 tLEQ = 138, /* "<=" */
1514 tANDOP = 148, /* "&&" */
1515 tOROP = 149, /* "||" */
1516 tMATCH = 143, /* "=~" */
1517 tNMATCH = 144, /* "!~" */
1518 tDOT2 = 128, /* ".." */
1519 tDOT3 = 129, /* "..." */
1520 tBDOT2 = 130, /* "(.." */
1521 tBDOT3 = 131, /* "(..." */
1522 tAREF = 145, /* "[]" */
1523 tASET = 146, /* "[]=" */
1524 tLSHFT = 136, /* "<<" */
1525 tRSHFT = 137, /* ">>" */
1526 tANDDOT = 150, /* "&." */
1527 tCOLON2 = 147, /* "::" */
1528 tCOLON3 = 325, /* ":: at EXPR_BEG" */
1529 tOP_ASGN = 326, /* "operator-assignment" */
1530 tASSOC = 327, /* "=>" */
1531 tLPAREN = 328, /* "(" */
1532 tLPAREN_ARG = 329, /* "( arg" */
1533 tRPAREN = 330, /* ")" */
1534 tLBRACK = 331, /* "[" */
1535 tLBRACE = 332, /* "{" */
1536 tLBRACE_ARG = 333, /* "{ arg" */
1537 tSTAR = 334, /* "*" */
1538 tDSTAR = 335, /* "**arg" */
1539 tAMPER = 336, /* "&" */
1540 tLAMBDA = 337, /* "->" */
1541 tSYMBEG = 338, /* "symbol literal" */
1542 tSTRING_BEG = 339, /* "string literal" */
1543 tXSTRING_BEG = 340, /* "backtick literal" */
1544 tREGEXP_BEG = 341, /* "regexp literal" */
1545 tWORDS_BEG = 342, /* "word list" */
1546 tQWORDS_BEG = 343, /* "verbatim word list" */
1547 tSYMBOLS_BEG = 344, /* "symbol list" */
1548 tQSYMBOLS_BEG = 345, /* "verbatim symbol list" */
1549 tSTRING_END = 346, /* "terminator" */
1550 tSTRING_DEND = 347, /* "'}
'" */
1551 tSTRING_DBEG = 348, /* tSTRING_DBEG */
1552 tSTRING_DVAR = 349, /* tSTRING_DVAR */
1553 tLAMBEG = 350, /* tLAMBEG */
1554 tLABEL_END = 351, /* tLABEL_END */
1555 tIGNORED_NL = 352, /* tIGNORED_NL */
1556 tCOMMENT = 353, /* tCOMMENT */
1557 tEMBDOC_BEG = 354, /* tEMBDOC_BEG */
1558 tEMBDOC = 355, /* tEMBDOC */
1559 tEMBDOC_END = 356, /* tEMBDOC_END */
1560 tHEREDOC_BEG = 357, /* tHEREDOC_BEG */
1561 tHEREDOC_END = 358, /* tHEREDOC_END */
1562 k__END__ = 359, /* k__END__ */
1563 tLOWEST = 360, /* tLOWEST */
1564 tUMINUS_NUM = 361, /* tUMINUS_NUM */
1565 tLAST_TOKEN = 362 /* tLAST_TOKEN */
1567 typedef enum yytokentype yytoken_kind_t;
1571#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1581 const struct vtable *vars;
1582 struct rb_strterm_struct *strterm;
1583 struct lex_context ctxt;
1588typedef union YYSTYPE YYSTYPE;
1589# define YYSTYPE_IS_TRIVIAL 1
1590# define YYSTYPE_IS_DECLARED 1
1594#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1595typedef struct YYLTYPE YYLTYPE;
1603# define YYLTYPE_IS_DECLARED 1
1604# define YYLTYPE_IS_TRIVIAL 1
1610int yyparse (struct parser_params *p);
1613#endif /* !YY_YY_Y_TAB_H_INCLUDED */
1617 YYSYMBOL_YYEMPTY = -2,
1618 YYSYMBOL_YYEOF = 0, /* "end-of-input" */
1619 YYSYMBOL_YYerror = 1, /* error */
1620 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
1621 YYSYMBOL_keyword_class = 3, /* "`class'" */
1622 YYSYMBOL_keyword_module = 4, /* "`
module'" */
1623 YYSYMBOL_keyword_def = 5,
1624 YYSYMBOL_keyword_undef = 6,
1625 YYSYMBOL_keyword_begin = 7,
1626 YYSYMBOL_keyword_rescue = 8,
1627 YYSYMBOL_keyword_ensure = 9,
1628 YYSYMBOL_keyword_end = 10,
1629 YYSYMBOL_keyword_if = 11,
1630 YYSYMBOL_keyword_unless = 12,
1631 YYSYMBOL_keyword_then = 13,
1632 YYSYMBOL_keyword_elsif = 14,
1633 YYSYMBOL_keyword_else = 15,
1634 YYSYMBOL_keyword_case = 16,
1635 YYSYMBOL_keyword_when = 17,
1636 YYSYMBOL_keyword_while = 18,
1637 YYSYMBOL_keyword_until = 19,
1638 YYSYMBOL_keyword_for = 20,
1639 YYSYMBOL_keyword_break = 21,
1640 YYSYMBOL_keyword_next = 22,
1641 YYSYMBOL_keyword_redo = 23,
1642 YYSYMBOL_keyword_retry = 24,
1643 YYSYMBOL_keyword_in = 25,
1644 YYSYMBOL_keyword_do = 26,
1645 YYSYMBOL_keyword_do_cond = 27,
1646 YYSYMBOL_keyword_do_block = 28,
1647 YYSYMBOL_keyword_do_LAMBDA = 29,
1648 YYSYMBOL_keyword_return = 30,
1649 YYSYMBOL_keyword_yield = 31,
1650 YYSYMBOL_keyword_super = 32,
1651 YYSYMBOL_keyword_self = 33,
1652 YYSYMBOL_keyword_nil = 34,
1653 YYSYMBOL_keyword_true = 35,
1654 YYSYMBOL_keyword_false = 36,
1655 YYSYMBOL_keyword_and = 37,
1656 YYSYMBOL_keyword_or = 38,
1657 YYSYMBOL_keyword_not = 39,
1658 YYSYMBOL_modifier_if = 40,
1659 YYSYMBOL_modifier_unless = 41,
1660 YYSYMBOL_modifier_while = 42,
1661 YYSYMBOL_modifier_until = 43,
1662 YYSYMBOL_modifier_rescue = 44,
1663 YYSYMBOL_keyword_alias = 45,
1664 YYSYMBOL_keyword_defined = 46,
1665 YYSYMBOL_keyword_BEGIN = 47,
1666 YYSYMBOL_keyword_END = 48,
1667 YYSYMBOL_keyword__LINE__ = 49,
1668 YYSYMBOL_keyword__FILE__ = 50,
1669 YYSYMBOL_keyword__ENCODING__ = 51,
1670 YYSYMBOL_tIDENTIFIER = 52,
1672 YYSYMBOL_tGVAR = 54,
1673 YYSYMBOL_tIVAR = 55,
1674 YYSYMBOL_tCONSTANT = 56,
1675 YYSYMBOL_tCVAR = 57,
1676 YYSYMBOL_tLABEL = 58,
1677 YYSYMBOL_tINTEGER = 59,
1678 YYSYMBOL_tFLOAT = 60,
1679 YYSYMBOL_tRATIONAL = 61,
1680 YYSYMBOL_tIMAGINARY = 62,
1681 YYSYMBOL_tCHAR = 63,
1682 YYSYMBOL_tNTH_REF = 64,
1683 YYSYMBOL_tBACK_REF = 65,
1684 YYSYMBOL_tSTRING_CONTENT = 66,
1685 YYSYMBOL_tREGEXP_END = 67,
1686 YYSYMBOL_tDUMNY_END = 68,
1688 YYSYMBOL_70_backslash_ = 70,
1690 YYSYMBOL_72_escaped_horizontal_tab_ = 72,
1691 YYSYMBOL_73_escaped_form_feed_ = 73,
1692 YYSYMBOL_74_escaped_carriage_return_ = 74,
1693 YYSYMBOL_75_escaped_vertical_tab_ = 75,
1694 YYSYMBOL_tUPLUS = 76,
1695 YYSYMBOL_tUMINUS = 77,
1703 YYSYMBOL_tANDOP = 85,
1704 YYSYMBOL_tOROP = 86,
1705 YYSYMBOL_tMATCH = 87,
1706 YYSYMBOL_tNMATCH = 88,
1707 YYSYMBOL_tDOT2 = 89,
1708 YYSYMBOL_tDOT3 = 90,
1709 YYSYMBOL_tBDOT2 = 91,
1710 YYSYMBOL_tBDOT3 = 92,
1711 YYSYMBOL_tAREF = 93,
1712 YYSYMBOL_tASET = 94,
1713 YYSYMBOL_tLSHFT = 95,
1714 YYSYMBOL_tRSHFT = 96,
1715 YYSYMBOL_tANDDOT = 97,
1716 YYSYMBOL_tCOLON2 = 98,
1717 YYSYMBOL_tCOLON3 = 99,
1718 YYSYMBOL_tOP_ASGN = 100,
1719 YYSYMBOL_tASSOC = 101,
1720 YYSYMBOL_tLPAREN = 102,
1721 YYSYMBOL_tLPAREN_ARG = 103,
1722 YYSYMBOL_tRPAREN = 104,
1723 YYSYMBOL_tLBRACK = 105,
1724 YYSYMBOL_tLBRACE = 106,
1725 YYSYMBOL_tLBRACE_ARG = 107,
1726 YYSYMBOL_tSTAR = 108,
1727 YYSYMBOL_tDSTAR = 109,
1728 YYSYMBOL_tAMPER = 110,
1729 YYSYMBOL_tLAMBDA = 111,
1730 YYSYMBOL_tSYMBEG = 112,
1731 YYSYMBOL_tSTRING_BEG = 113,
1732 YYSYMBOL_tXSTRING_BEG = 114,
1733 YYSYMBOL_tREGEXP_BEG = 115,
1734 YYSYMBOL_tWORDS_BEG = 116,
1735 YYSYMBOL_tQWORDS_BEG = 117,
1736 YYSYMBOL_tSYMBOLS_BEG = 118,
1737 YYSYMBOL_tQSYMBOLS_BEG = 119,
1738 YYSYMBOL_tSTRING_END = 120,
1739 YYSYMBOL_tSTRING_DEND = 121,
1740 YYSYMBOL_tSTRING_DBEG = 122,
1741 YYSYMBOL_tSTRING_DVAR = 123,
1742 YYSYMBOL_tLAMBEG = 124,
1743 YYSYMBOL_tLABEL_END = 125,
1744 YYSYMBOL_tIGNORED_NL = 126,
1745 YYSYMBOL_tCOMMENT = 127,
1746 YYSYMBOL_tEMBDOC_BEG = 128,
1747 YYSYMBOL_tEMBDOC = 129,
1748 YYSYMBOL_tEMBDOC_END = 130,
1749 YYSYMBOL_tHEREDOC_BEG = 131,
1750 YYSYMBOL_tHEREDOC_END = 132,
1751 YYSYMBOL_k__END__ = 133,
1752 YYSYMBOL_tLOWEST = 134,
1753 YYSYMBOL_135_ = 135,
1754 YYSYMBOL_136_ = 136,
1755 YYSYMBOL_137_ = 137,
1756 YYSYMBOL_138_ = 138,
1757 YYSYMBOL_139_ = 139,
1758 YYSYMBOL_140_ = 140,
1759 YYSYMBOL_141_ = 141,
1760 YYSYMBOL_142_ = 142,
1761 YYSYMBOL_143_ = 143,
1762 YYSYMBOL_144_ = 144,
1763 YYSYMBOL_145_ = 145,
1764 YYSYMBOL_146_ = 146,
1765 YYSYMBOL_147_ = 147,
1766 YYSYMBOL_tUMINUS_NUM = 148,
1767 YYSYMBOL_149_ = 149,
1768 YYSYMBOL_150_ = 150,
1769 YYSYMBOL_tLAST_TOKEN = 151,
1770 YYSYMBOL_152_ = 152,
1771 YYSYMBOL_153_ = 153,
1772 YYSYMBOL_154_ = 154,
1773 YYSYMBOL_155_ = 155,
1774 YYSYMBOL_156_ = 156,
1775 YYSYMBOL_157_ = 157,
1776 YYSYMBOL_158_ = 158,
1777 YYSYMBOL_159_ = 159,
1778 YYSYMBOL_160_ = 160,
1779 YYSYMBOL_161_ = 161,
1780 YYSYMBOL_162_n_ = 162,
1781 YYSYMBOL_YYACCEPT = 163,
1782 YYSYMBOL_program = 164,
1783 YYSYMBOL_165_1 = 165,
1784 YYSYMBOL_top_compstmt = 166,
1785 YYSYMBOL_top_stmts = 167,
1786 YYSYMBOL_top_stmt = 168,
1787 YYSYMBOL_begin_block = 169,
1788 YYSYMBOL_bodystmt = 170,
1789 YYSYMBOL_171_2 = 171,
1790 YYSYMBOL_compstmt = 172,
1791 YYSYMBOL_stmts = 173,
1792 YYSYMBOL_stmt_or_begin = 174,
1793 YYSYMBOL_175_3 = 175,
1794 YYSYMBOL_stmt = 176,
1795 YYSYMBOL_177_4 = 177,
1796 YYSYMBOL_command_asgn = 178,
1797 YYSYMBOL_command_rhs = 179,
1798 YYSYMBOL_expr = 180,
1799 YYSYMBOL_181_5 = 181,
1800 YYSYMBOL_182_6 = 182,
1801 YYSYMBOL_183_7 = 183,
1802 YYSYMBOL_184_8 = 184,
1803 YYSYMBOL_def_name = 185,
1804 YYSYMBOL_defn_head = 186,
1805 YYSYMBOL_defs_head = 187,
1806 YYSYMBOL_188_9 = 188,
1807 YYSYMBOL_expr_value = 189,
1808 YYSYMBOL_expr_value_do = 190,
1809 YYSYMBOL_191_10 = 191,
1810 YYSYMBOL_192_11 = 192,
1811 YYSYMBOL_command_call = 193,
1812 YYSYMBOL_block_command = 194,
1813 YYSYMBOL_cmd_brace_block = 195,
1814 YYSYMBOL_fcall = 196,
1815 YYSYMBOL_command = 197,
1816 YYSYMBOL_mlhs = 198,
1817 YYSYMBOL_mlhs_inner = 199,
1818 YYSYMBOL_mlhs_basic = 200,
1819 YYSYMBOL_mlhs_item = 201,
1820 YYSYMBOL_mlhs_head = 202,
1821 YYSYMBOL_mlhs_post = 203,
1822 YYSYMBOL_mlhs_node = 204,
1824 YYSYMBOL_cname = 206,
1825 YYSYMBOL_cpath = 207,
1826 YYSYMBOL_fname = 208,
1827 YYSYMBOL_fitem = 209,
1828 YYSYMBOL_undef_list = 210,
1829 YYSYMBOL_211_12 = 211,
1831 YYSYMBOL_reswords = 213,
1833 YYSYMBOL_215_13 = 215,
1834 YYSYMBOL_relop = 216,
1835 YYSYMBOL_rel_expr = 217,
1836 YYSYMBOL_lex_ctxt = 218,
1837 YYSYMBOL_arg_value = 219,
1838 YYSYMBOL_aref_args = 220,
1839 YYSYMBOL_arg_rhs = 221,
1840 YYSYMBOL_paren_args = 222,
1841 YYSYMBOL_opt_paren_args = 223,
1842 YYSYMBOL_opt_call_args = 224,
1843 YYSYMBOL_call_args = 225,
1844 YYSYMBOL_command_args = 226,
1845 YYSYMBOL_227_14 = 227,
1846 YYSYMBOL_block_arg = 228,
1847 YYSYMBOL_opt_block_arg = 229,
1848 YYSYMBOL_args = 230,
1849 YYSYMBOL_mrhs_arg = 231,
1850 YYSYMBOL_mrhs = 232,
1851 YYSYMBOL_primary = 233,
1852 YYSYMBOL_234_15 = 234,
1853 YYSYMBOL_235_16 = 235,
1854 YYSYMBOL_236_17 = 236,
1855 YYSYMBOL_237_18 = 237,
1856 YYSYMBOL_238_19 = 238,
1857 YYSYMBOL_239_20 = 239,
1858 YYSYMBOL_240_21 = 240,
1859 YYSYMBOL_241_22 = 241,
1860 YYSYMBOL_242_23 = 242,
1861 YYSYMBOL_243_24 = 243,
1862 YYSYMBOL_244_25 = 244,
1863 YYSYMBOL_primary_value = 245,
1864 YYSYMBOL_k_begin = 246,
1865 YYSYMBOL_k_if = 247,
1866 YYSYMBOL_k_unless = 248,
1867 YYSYMBOL_k_while = 249,
1868 YYSYMBOL_k_until = 250,
1869 YYSYMBOL_k_case = 251,
1870 YYSYMBOL_k_for = 252,
1871 YYSYMBOL_k_class = 253,
1872 YYSYMBOL_k_module = 254,
1873 YYSYMBOL_k_def = 255,
1874 YYSYMBOL_k_do = 256,
1875 YYSYMBOL_k_do_block = 257,
1876 YYSYMBOL_k_rescue = 258,
1877 YYSYMBOL_k_ensure = 259,
1878 YYSYMBOL_k_when = 260,
1879 YYSYMBOL_k_else = 261,
1880 YYSYMBOL_k_elsif = 262,
1881 YYSYMBOL_k_end = 263,
1882 YYSYMBOL_k_return = 264,
1883 YYSYMBOL_then = 265,
1885 YYSYMBOL_if_tail = 267,
1886 YYSYMBOL_opt_else = 268,
1887 YYSYMBOL_for_var = 269,
1888 YYSYMBOL_f_marg = 270,
1889 YYSYMBOL_f_marg_list = 271,
1890 YYSYMBOL_f_margs = 272,
1891 YYSYMBOL_f_rest_marg = 273,
1892 YYSYMBOL_f_any_kwrest = 274,
1893 YYSYMBOL_f_eq = 275,
1894 YYSYMBOL_276_26 = 276,
1895 YYSYMBOL_block_args_tail = 277,
1896 YYSYMBOL_opt_block_args_tail = 278,
1897 YYSYMBOL_excessed_comma = 279,
1898 YYSYMBOL_block_param = 280,
1899 YYSYMBOL_opt_block_param = 281,
1900 YYSYMBOL_block_param_def = 282,
1901 YYSYMBOL_opt_bv_decl = 283,
1902 YYSYMBOL_bv_decls = 284,
1903 YYSYMBOL_bvar = 285,
1904 YYSYMBOL_lambda = 286,
1905 YYSYMBOL_287_27 = 287,
1906 YYSYMBOL_288_28 = 288,
1907 YYSYMBOL_289_29 = 289,
1908 YYSYMBOL_290_30 = 290,
1909 YYSYMBOL_f_larglist = 291,
1910 YYSYMBOL_lambda_body = 292,
1911 YYSYMBOL_293_31 = 293,
1912 YYSYMBOL_do_block = 294,
1913 YYSYMBOL_block_call = 295,
1914 YYSYMBOL_method_call = 296,
1915 YYSYMBOL_brace_block = 297,
1916 YYSYMBOL_brace_body = 298,
1917 YYSYMBOL_299_32 = 299,
1918 YYSYMBOL_300_33 = 300,
1919 YYSYMBOL_301_34 = 301,
1920 YYSYMBOL_do_body = 302,
1921 YYSYMBOL_303_35 = 303,
1922 YYSYMBOL_304_36 = 304,
1923 YYSYMBOL_305_37 = 305,
1924 YYSYMBOL_case_args = 306,
1925 YYSYMBOL_case_body = 307,
1926 YYSYMBOL_cases = 308,
1927 YYSYMBOL_p_case_body = 309,
1928 YYSYMBOL_310_38 = 310,
1929 YYSYMBOL_311_39 = 311,
1930 YYSYMBOL_312_40 = 312,
1931 YYSYMBOL_p_cases = 313,
1932 YYSYMBOL_p_top_expr = 314,
1933 YYSYMBOL_p_top_expr_body = 315,
1934 YYSYMBOL_p_expr = 316,
1935 YYSYMBOL_p_as = 317,
1936 YYSYMBOL_p_alt = 318,
1937 YYSYMBOL_p_lparen = 319,
1938 YYSYMBOL_p_lbracket = 320,
1939 YYSYMBOL_p_expr_basic = 321,
1940 YYSYMBOL_322_41 = 322,
1941 YYSYMBOL_323_42 = 323,
1942 YYSYMBOL_p_args = 324,
1943 YYSYMBOL_p_args_head = 325,
1944 YYSYMBOL_p_args_tail = 326,
1945 YYSYMBOL_p_find = 327,
1946 YYSYMBOL_p_rest = 328,
1947 YYSYMBOL_p_args_post = 329,
1948 YYSYMBOL_p_arg = 330,
1949 YYSYMBOL_p_kwargs = 331,
1950 YYSYMBOL_p_kwarg = 332,
1951 YYSYMBOL_p_kw = 333,
1952 YYSYMBOL_p_kw_label = 334,
1953 YYSYMBOL_p_kwrest = 335,
1954 YYSYMBOL_p_kwnorest = 336,
1955 YYSYMBOL_p_any_kwrest = 337,
1956 YYSYMBOL_p_value = 338,
1957 YYSYMBOL_p_primitive = 339,
1958 YYSYMBOL_p_variable = 340,
1959 YYSYMBOL_p_var_ref = 341,
1960 YYSYMBOL_p_expr_ref = 342,
1961 YYSYMBOL_p_const = 343,
1962 YYSYMBOL_opt_rescue = 344,
1963 YYSYMBOL_exc_list = 345,
1964 YYSYMBOL_exc_var = 346,
1965 YYSYMBOL_opt_ensure = 347,
1966 YYSYMBOL_literal = 348,
1967 YYSYMBOL_strings = 349,
1968 YYSYMBOL_string = 350,
1969 YYSYMBOL_string1 = 351,
1970 YYSYMBOL_xstring = 352,
1971 YYSYMBOL_regexp = 353,
1972 YYSYMBOL_words = 354,
1973 YYSYMBOL_word_list = 355,
1974 YYSYMBOL_word = 356,
1975 YYSYMBOL_symbols = 357,
1976 YYSYMBOL_symbol_list = 358,
1977 YYSYMBOL_qwords = 359,
1978 YYSYMBOL_qsymbols = 360,
1979 YYSYMBOL_qword_list = 361,
1980 YYSYMBOL_qsym_list = 362,
1981 YYSYMBOL_string_contents = 363,
1982 YYSYMBOL_xstring_contents = 364,
1983 YYSYMBOL_regexp_contents = 365,
1984 YYSYMBOL_string_content = 366,
1985 YYSYMBOL_367_43 = 367,
1986 YYSYMBOL_368_44 = 368,
1987 YYSYMBOL_369_45 = 369,
1988 YYSYMBOL_370_46 = 370,
1989 YYSYMBOL_371_47 = 371,
1990 YYSYMBOL_372_48 = 372,
1991 YYSYMBOL_string_dvar = 373,
1992 YYSYMBOL_symbol = 374,
1993 YYSYMBOL_ssym = 375,
1995 YYSYMBOL_dsym = 377,
1996 YYSYMBOL_numeric = 378,
1997 YYSYMBOL_simple_numeric = 379,
1998 YYSYMBOL_nonlocal_var = 380,
1999 YYSYMBOL_user_variable = 381,
2000 YYSYMBOL_keyword_variable = 382,
2001 YYSYMBOL_var_ref = 383,
2002 YYSYMBOL_var_lhs = 384,
2003 YYSYMBOL_backref = 385,
2004 YYSYMBOL_superclass = 386,
2005 YYSYMBOL_387_49 = 387,
2006 YYSYMBOL_f_opt_paren_args = 388,
2007 YYSYMBOL_f_paren_args = 389,
2008 YYSYMBOL_f_arglist = 390,
2009 YYSYMBOL_391_50 = 391,
2010 YYSYMBOL_args_tail = 392,
2011 YYSYMBOL_opt_args_tail = 393,
2012 YYSYMBOL_f_args = 394,
2013 YYSYMBOL_args_forward = 395,
2014 YYSYMBOL_f_bad_arg = 396,
2015 YYSYMBOL_f_norm_arg = 397,
2016 YYSYMBOL_f_arg_asgn = 398,
2017 YYSYMBOL_f_arg_item = 399,
2018 YYSYMBOL_f_arg = 400,
2019 YYSYMBOL_f_label = 401,
2020 YYSYMBOL_f_kw = 402,
2021 YYSYMBOL_f_block_kw = 403,
2022 YYSYMBOL_f_block_kwarg = 404,
2023 YYSYMBOL_f_kwarg = 405,
2024 YYSYMBOL_kwrest_mark = 406,
2025 YYSYMBOL_f_no_kwarg = 407,
2026 YYSYMBOL_f_kwrest = 408,
2027 YYSYMBOL_f_opt = 409,
2028 YYSYMBOL_f_block_opt = 410,
2029 YYSYMBOL_f_block_optarg = 411,
2030 YYSYMBOL_f_optarg = 412,
2031 YYSYMBOL_restarg_mark = 413,
2032 YYSYMBOL_f_rest_arg = 414,
2033 YYSYMBOL_blkarg_mark = 415,
2034 YYSYMBOL_f_block_arg = 416,
2035 YYSYMBOL_opt_f_block_arg = 417,
2036 YYSYMBOL_singleton = 418,
2037 YYSYMBOL_419_51 = 419,
2038 YYSYMBOL_assoc_list = 420,
2039 YYSYMBOL_assocs = 421,
2040 YYSYMBOL_assoc = 422,
2041 YYSYMBOL_operation = 423,
2042 YYSYMBOL_operation2 = 424,
2043 YYSYMBOL_operation3 = 425,
2044 YYSYMBOL_dot_or_colon = 426,
2045 YYSYMBOL_call_op = 427,
2046 YYSYMBOL_call_op2 = 428,
2047 YYSYMBOL_opt_terms = 429,
2048 YYSYMBOL_opt_nl = 430,
2049 YYSYMBOL_rparen = 431,
2050 YYSYMBOL_rbracket = 432,
2051 YYSYMBOL_rbrace = 433,
2052 YYSYMBOL_trailer = 434,
2053 YYSYMBOL_term = 435,
2054 YYSYMBOL_terms = 436,
2057typedef enum yysymbol_kind_t yysymbol_kind_t;
2070#ifndef __PTRDIFF_MAX__
2072# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2083#ifdef __INT_LEAST8_MAX__
2084typedef __INT_LEAST8_TYPE__ yytype_int8;
2085#elif defined YY_STDINT_H
2086typedef int_least8_t yytype_int8;
2088typedef signed char yytype_int8;
2091#ifdef __INT_LEAST16_MAX__
2092typedef __INT_LEAST16_TYPE__ yytype_int16;
2093#elif defined YY_STDINT_H
2094typedef int_least16_t yytype_int16;
2096typedef short yytype_int16;
2105# undef UINT_LEAST8_MAX
2106# undef UINT_LEAST16_MAX
2107# define UINT_LEAST8_MAX 255
2108# define UINT_LEAST16_MAX 65535
2111#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
2112typedef __UINT_LEAST8_TYPE__ yytype_uint8;
2113#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
2114 && UINT_LEAST8_MAX <= INT_MAX)
2115typedef uint_least8_t yytype_uint8;
2116#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
2117typedef unsigned char yytype_uint8;
2119typedef short yytype_uint8;
2122#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
2123typedef __UINT_LEAST16_TYPE__ yytype_uint16;
2124#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
2125 && UINT_LEAST16_MAX <= INT_MAX)
2126typedef uint_least16_t yytype_uint16;
2127#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
2128typedef unsigned short yytype_uint16;
2130typedef int yytype_uint16;
2134# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
2135# define YYPTRDIFF_T __PTRDIFF_TYPE__
2136# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
2137# elif defined PTRDIFF_MAX
2141# define YYPTRDIFF_T ptrdiff_t
2142# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
2144# define YYPTRDIFF_T long
2145# define YYPTRDIFF_MAXIMUM LONG_MAX
2150# ifdef __SIZE_TYPE__
2151# define YYSIZE_T __SIZE_TYPE__
2152# elif defined size_t
2153# define YYSIZE_T size_t
2154# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2156# define YYSIZE_T size_t
2158# define YYSIZE_T unsigned
2162#define YYSIZE_MAXIMUM \
2163 YY_CAST (YYPTRDIFF_T, \
2164 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
2165 ? YYPTRDIFF_MAXIMUM \
2166 : YY_CAST (YYSIZE_T, -1)))
2168#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
2172typedef yytype_int16 yy_state_t;
2175typedef int yy_state_fast_t;
2178# if defined YYENABLE_NLS && YYENABLE_NLS
2180# include <libintl.h>
2181# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
2185# define YY_(Msgid) Msgid
2190#ifndef YY_ATTRIBUTE_PURE
2191# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
2192# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
2194# define YY_ATTRIBUTE_PURE
2198#ifndef YY_ATTRIBUTE_UNUSED
2199# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
2200# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
2202# define YY_ATTRIBUTE_UNUSED
2207#if ! defined lint || defined __GNUC__
2208# define YY_USE(E) ((void) (E))
2214#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
2215# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
2216# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
2217 _Pragma ("GCC diagnostic push") \
2218 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
2220# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
2221 _Pragma ("GCC diagnostic push") \
2222 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
2223 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
2225# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
2226 _Pragma ("GCC diagnostic pop")
2228# define YY_INITIAL_VALUE(Value) Value
2230#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2231# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2232# define YY_IGNORE_MAYBE_UNINITIALIZED_END
2234#ifndef YY_INITIAL_VALUE
2235# define YY_INITIAL_VALUE(Value)
2238#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
2239# define YY_IGNORE_USELESS_CAST_BEGIN \
2240 _Pragma ("GCC diagnostic push") \
2241 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
2242# define YY_IGNORE_USELESS_CAST_END \
2243 _Pragma ("GCC diagnostic pop")
2245#ifndef YY_IGNORE_USELESS_CAST_BEGIN
2246# define YY_IGNORE_USELESS_CAST_BEGIN
2247# define YY_IGNORE_USELESS_CAST_END
2251#define YY_ASSERT(E) ((void) (0 && (E)))
2257# ifdef YYSTACK_USE_ALLOCA
2258# if YYSTACK_USE_ALLOCA
2260# define YYSTACK_ALLOC __builtin_alloca
2261# elif defined __BUILTIN_VA_ARG_INCR
2264# define YYSTACK_ALLOC __alloca
2265# elif defined _MSC_VER
2267# define alloca _alloca
2269# define YYSTACK_ALLOC alloca
2270# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
2273# ifndef EXIT_SUCCESS
2274# define EXIT_SUCCESS 0
2281# ifdef YYSTACK_ALLOC
2283# define YYSTACK_FREE(Ptr) do { ; } while (0)
2284# ifndef YYSTACK_ALLOC_MAXIMUM
2289# define YYSTACK_ALLOC_MAXIMUM 4032
2292# define YYSTACK_ALLOC YYMALLOC
2293# define YYSTACK_FREE YYFREE
2294# ifndef YYSTACK_ALLOC_MAXIMUM
2295# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2297# if (defined __cplusplus && ! defined EXIT_SUCCESS \
2298 && ! ((defined YYMALLOC || defined malloc) \
2299 && (defined YYFREE || defined free)))
2301# ifndef EXIT_SUCCESS
2302# define EXIT_SUCCESS 0
2306# define YYMALLOC malloc
2307# if ! defined malloc && ! defined EXIT_SUCCESS
2308void *malloc (YYSIZE_T);
2313# if ! defined free && ! defined EXIT_SUCCESS
2320#if (! defined yyoverflow \
2321 && (! defined __cplusplus \
2322 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2323 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2328 yy_state_t yyss_alloc;
2334# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2338# define YYSTACK_BYTES(N) \
2339 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2340 + YYSIZEOF (YYLTYPE)) \
2341 + 2 * YYSTACK_GAP_MAXIMUM)
2343# define YYCOPY_NEEDED 1
2350# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
2353 YYPTRDIFF_T yynewbytes; \
2354 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
2355 Stack = &yyptr->Stack_alloc; \
2356 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2357 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
2363#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2367# if defined __GNUC__ && 1 < __GNUC__
2368# define YYCOPY(Dst, Src, Count) \
2369 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2371# define YYCOPY(Dst, Src, Count) \
2375 for (yyi = 0; yyi < (Count); yyi++) \
2376 (Dst)[yyi] = (Src)[yyi]; \
2389#define YYNTOKENS 163
2395#define YYNSTATES 1304
2398#define YYMAXUTOK 362
2403#define YYTRANSLATE(YYX) \
2404 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2405 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2410static const yytype_uint8 yytranslate[] =
2412 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
2413 162, 75, 73, 74, 2, 2, 2, 2, 2, 2,
2414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2415 2, 2, 161, 149, 2, 2, 2, 147, 142, 2,
2416 157, 158, 145, 143, 155, 144, 69, 146, 2, 2,
2417 2, 2, 2, 2, 2, 2, 2, 2, 137, 160,
2418 139, 135, 138, 136, 2, 2, 2, 2, 2, 2,
2419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2421 2, 154, 70, 159, 141, 2, 156, 2, 2, 2,
2422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2423 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2424 2, 2, 2, 152, 140, 153, 150, 2, 89, 90,
2425 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
2426 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
2427 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2428 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2431 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2432 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2433 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2437 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2438 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2439 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2440 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2441 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2442 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2443 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2444 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
2445 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2446 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2447 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2453static const yytype_int16 yyrline[] =
2455 0, 1588, 1588, 1588, 1614, 1620, 1627, 1634, 1643, 1644,
2456 1650, 1663, 1661, 1672, 1683, 1689, 1696, 1703, 1712, 1717,
2457 1716, 1726, 1726, 1733, 1740, 1750, 1759, 1766, 1774, 1782,
2458 1794, 1806, 1816, 1830, 1831, 1839, 1846, 1854, 1861, 1862,
2459 1870, 1877, 1884, 1892, 1899, 1906, 1914, 1921, 1932, 1944,
2460 1957, 1971, 1981, 1986, 1995, 1998, 1999, 2003, 2007, 2011,
2461 2016, 2024, 2015, 2038, 2046, 2037, 2059, 2062, 2084, 2094,
2462 2093, 2112, 2117, 2125, 2125, 2125, 2131, 2132, 2135, 2136,
2463 2145, 2155, 2165, 2174, 2185, 2192, 2199, 2206, 2213, 2221,
2464 2229, 2236, 2243, 2252, 2253, 2262, 2263, 2272, 2279, 2286,
2465 2293, 2300, 2307, 2314, 2321, 2328, 2335, 2344, 2345, 2354,
2466 2361, 2370, 2377, 2386, 2393, 2400, 2407, 2417, 2424, 2434,
2467 2441, 2448, 2458, 2465, 2472, 2479, 2486, 2493, 2500, 2507,
2468 2514, 2524, 2532, 2535, 2542, 2549, 2558, 2559, 2560, 2561,
2469 2566, 2569, 2576, 2579, 2586, 2586, 2596, 2597, 2598, 2599,
2470 2600, 2601, 2602, 2603, 2604, 2605, 2606, 2607, 2608, 2609,
2471 2610, 2611, 2612, 2613, 2614, 2615, 2616, 2617, 2618, 2619,
2472 2620, 2621, 2622, 2623, 2624, 2625, 2628, 2628, 2628, 2629,
2473 2629, 2630, 2630, 2630, 2631, 2631, 2631, 2631, 2632, 2632,
2474 2632, 2632, 2633, 2633, 2633, 2634, 2634, 2634, 2634, 2635,
2475 2635, 2635, 2635, 2636, 2636, 2636, 2636, 2637, 2637, 2637,
2476 2637, 2638, 2638, 2638, 2638, 2639, 2639, 2642, 2649, 2656,
2477 2663, 2670, 2677, 2684, 2692, 2700, 2708, 2717, 2726, 2734,
2478 2742, 2750, 2758, 2762, 2766, 2770, 2774, 2778, 2782, 2786,
2479 2790, 2794, 2798, 2802, 2806, 2810, 2811, 2815, 2819, 2823,
2480 2827, 2831, 2835, 2839, 2843, 2847, 2851, 2855, 2855, 2860,
2481 2869, 2880, 2892, 2905, 2919, 2925, 2926, 2927, 2928, 2931,
2482 2935, 2942, 2948, 2955, 2956, 2960, 2967, 2976, 2981, 2991,
2483 2998, 3010, 3024, 3025, 3028, 3029, 3030, 3034, 3041, 3050,
2484 3058, 3065, 3073, 3081, 3085, 3085, 3122, 3129, 3141, 3145,
2485 3152, 3159, 3166, 3177, 3184, 3191, 3205, 3206, 3210, 3217,
2486 3224, 3233, 3234, 3235, 3236, 3237, 3238, 3239, 3240, 3241,
2487 3242, 3243, 3251, 3250, 3265, 3265, 3272, 3272, 3280, 3288,
2488 3295, 3302, 3309, 3317, 3324, 3331, 3338, 3345, 3345, 3350,
2489 3354, 3358, 3365, 3366, 3374, 3375, 3386, 3397, 3407, 3418,
2490 3417, 3434, 3433, 3448, 3457, 3500, 3499, 3523, 3522, 3545,
2491 3544, 3569, 3567, 3586, 3584, 3603, 3610, 3617, 3624, 3633,
2492 3640, 3649, 3669, 3678, 3687, 3696, 3705, 3714, 3724, 3734,
2493 3741, 3751, 3760, 3766, 3772, 3778, 3793, 3800, 3807, 3813,
2494 3820, 3821, 3822, 3825, 3826, 3829, 3830, 3842, 3843, 3852,
2495 3853, 3856, 3864, 3873, 3880, 3889, 3896, 3903, 3910, 3917,
2496 3926, 3934, 3943, 3944, 3947, 3947, 3949, 3953, 3957, 3961,
2497 3967, 3972, 3977, 3987, 3991, 3995, 3999, 4003, 4007, 4012,
2498 4016, 4020, 4024, 4028, 4032, 4036, 4040, 4044, 4050, 4051,
2499 4057, 4067, 4080, 4084, 4093, 4095, 4099, 4104, 4111, 4117,
2500 4121, 4125, 4110, 4150, 4159, 4170, 4176, 4175, 4187, 4197,
2501 4211, 4218, 4225, 4234, 4243, 4251, 4259, 4266, 4274, 4282,
2502 4289, 4296, 4309, 4317, 4327, 4328, 4332, 4327, 4349, 4350,
2503 4354, 4349, 4373, 4381, 4388, 4396, 4405, 4417, 4418, 4422,
2504 4429, 4433, 4421, 4448, 4449, 4452, 4453, 4461, 4471, 4472,
2505 4477, 4485, 4489, 4493, 4499, 4502, 4511, 4514, 4521, 4524,
2506 4525, 4527, 4528, 4529, 4538, 4547, 4556, 4561, 4570, 4579,
2507 4588, 4593, 4597, 4601, 4607, 4606, 4618, 4623, 4623, 4630,
2508 4639, 4643, 4652, 4656, 4660, 4663, 4667, 4676, 4680, 4686,
2509 4693, 4697, 4703, 4704, 4713, 4722, 4726, 4730, 4734, 4740,
2510 4742, 4751, 4759, 4773, 4774, 4797, 4801, 4807, 4813, 4814,
2511 4817, 4818, 4827, 4836, 4844, 4852, 4853, 4854, 4855, 4863,
2512 4873, 4874, 4875, 4876, 4877, 4878, 4879, 4880, 4881, 4888,
2513 4891, 4901, 4912, 4921, 4930, 4937, 4944, 4953, 4974, 4977,
2514 4984, 4991, 4994, 4998, 5001, 5008, 5011, 5012, 5015, 5032,
2515 5033, 5034, 5043, 5053, 5062, 5068, 5078, 5084, 5093, 5095,
2516 5104, 5114, 5120, 5129, 5138, 5148, 5154, 5164, 5170, 5180,
2517 5190, 5209, 5215, 5225, 5235, 5276, 5279, 5278, 5295, 5299,
2518 5304, 5308, 5312, 5294, 5333, 5340, 5347, 5354, 5357, 5358,
2519 5361, 5371, 5372, 5375, 5385, 5386, 5396, 5397, 5398, 5399,
2520 5402, 5403, 5404, 5407, 5408, 5409, 5412, 5413, 5414, 5415,
2521 5416, 5417, 5418, 5421, 5434, 5443, 5450, 5459, 5460, 5464,
2522 5463, 5473, 5481, 5482, 5490, 5502, 5503, 5503, 5519, 5523,
2523 5527, 5531, 5535, 5545, 5550, 5555, 5559, 5563, 5567, 5571,
2524 5575, 5579, 5583, 5587, 5591, 5595, 5599, 5603, 5607, 5612,
2525 5618, 5631, 5640, 5649, 5658, 5669, 5670, 5678, 5687, 5695,
2526 5716, 5718, 5731, 5741, 5750, 5761, 5769, 5779, 5786, 5796,
2527 5803, 5812, 5813, 5816, 5824, 5832, 5842, 5853, 5864, 5871,
2528 5880, 5887, 5896, 5897, 5900, 5908, 5918, 5919, 5922, 5930,
2529 5940, 5944, 5950, 5955, 5955, 5979, 5980, 5989, 5991, 6014,
2530 6025, 6032, 6041, 6049, 6066, 6080, 6081, 6082, 6085, 6086,
2531 6089, 6090, 6091, 6094, 6095, 6098, 6099, 6102, 6103, 6106,
2532 6107, 6110, 6111, 6114, 6117, 6120, 6123, 6124, 6127, 6128,
2538#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2543static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2547static const char *
const yytname[] =
2549 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2550 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2551 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2552 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2553 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2554 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2555 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2556 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2557 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2558 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2559 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2560 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2561 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2562 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2563 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
2564 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2565 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2566 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
2567 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
2568 "\"escaped form feed\"",
"\"escaped carriage return\"",
2569 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2570 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2571 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2572 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2573 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2574 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2575 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2576 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2577 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2578 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2579 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
2580 "tEMBDOC_BEG",
"tEMBDOC",
"tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
2581 "k__END__",
"tLOWEST",
"'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
2582 "'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
2583 "tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
"'`'",
"'('",
"')'",
"']'",
2584 "';'",
"' '",
"'\\n'",
"$accept",
"program",
"$@1",
"top_compstmt",
2585 "top_stmts",
"top_stmt",
"begin_block",
"bodystmt",
"$@2",
"compstmt",
2586 "stmts",
"stmt_or_begin",
"$@3",
"stmt",
"$@4",
"command_asgn",
2587 "command_rhs",
"expr",
"@5",
"@6",
"@7",
"@8",
"def_name",
"defn_head",
2588 "defs_head",
"$@9",
"expr_value",
"expr_value_do",
"$@10",
"$@11",
2589 "command_call",
"block_command",
"cmd_brace_block",
"fcall",
"command",
2590 "mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
2591 "mlhs_post",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
2592 "undef_list",
"$@12",
"op",
"reswords",
"arg",
"$@13",
"relop",
2593 "rel_expr",
"lex_ctxt",
"arg_value",
"aref_args",
"arg_rhs",
2594 "paren_args",
"opt_paren_args",
"opt_call_args",
"call_args",
2595 "command_args",
"$@14",
"block_arg",
"opt_block_arg",
"args",
"mrhs_arg",
2596 "mrhs",
"primary",
"$@15",
"$@16",
"$@17",
"$@18",
"@19",
"@20",
"$@21",
2597 "$@22",
"$@23",
"$@24",
"$@25",
"primary_value",
"k_begin",
"k_if",
2598 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
2599 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
2600 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"then",
"do",
2601 "if_tail",
"opt_else",
"for_var",
"f_marg",
"f_marg_list",
"f_margs",
2602 "f_rest_marg",
"f_any_kwrest",
"f_eq",
"$@26",
"block_args_tail",
2603 "opt_block_args_tail",
"excessed_comma",
"block_param",
2604 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
2605 "lambda",
"@27",
"@28",
"@29",
"$@30",
"f_larglist",
"lambda_body",
2606 "$@31",
"do_block",
"block_call",
"method_call",
"brace_block",
2607 "brace_body",
"@32",
"@33",
"@34",
"do_body",
"@35",
"@36",
"@37",
2608 "case_args",
"case_body",
"cases",
"p_case_body",
"@38",
"@39",
"$@40",
2609 "p_cases",
"p_top_expr",
"p_top_expr_body",
"p_expr",
"p_as",
"p_alt",
2610 "p_lparen",
"p_lbracket",
"p_expr_basic",
"@41",
"@42",
"p_args",
2611 "p_args_head",
"p_args_tail",
"p_find",
"p_rest",
"p_args_post",
"p_arg",
2612 "p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
"p_kwrest",
"p_kwnorest",
2613 "p_any_kwrest",
"p_value",
"p_primitive",
"p_variable",
"p_var_ref",
2614 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
2615 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
2616 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
2617 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
2618 "xstring_contents",
"regexp_contents",
"string_content",
"@43",
"$@44",
2619 "@45",
"@46",
"@47",
"@48",
"string_dvar",
"symbol",
"ssym",
"sym",
2620 "dsym",
"numeric",
"simple_numeric",
"nonlocal_var",
"user_variable",
2621 "keyword_variable",
"var_ref",
"var_lhs",
"backref",
"superclass",
2622 "$@49",
"f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@50",
2623 "args_tail",
"opt_args_tail",
"f_args",
"args_forward",
"f_bad_arg",
2624 "f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
"f_label",
"f_kw",
2625 "f_block_kw",
"f_block_kwarg",
"f_kwarg",
"kwrest_mark",
"f_no_kwarg",
2626 "f_kwrest",
"f_opt",
"f_block_opt",
"f_block_optarg",
"f_optarg",
2627 "restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
2628 "opt_f_block_arg",
"singleton",
"$@51",
"assoc_list",
"assocs",
"assoc",
2629 "operation",
"operation2",
"operation3",
"dot_or_colon",
"call_op",
2630 "call_op2",
"opt_terms",
"opt_nl",
"rparen",
"rbracket",
"rbrace",
2631 "trailer",
"term",
"terms",
"none", YY_NULLPTR
2635yysymbol_name (yysymbol_kind_t yysymbol)
2637 return yytname[yysymbol];
2641#define YYPACT_NINF (-1065)
2643#define yypact_value_is_default(Yyn) \
2644 ((Yyn) == YYPACT_NINF)
2646#define YYTABLE_NINF (-783)
2648#define yytable_value_is_error(Yyn) \
2649 ((Yyn) == YYTABLE_NINF)
2653static const yytype_int16 yypact[] =
2655 -1065, 144, 4385, -1065, -1065, -1065, -1065, -1065, 9742, -1065,
2656 -1065, -1065, -1065, -1065, -1065, -1065, 10562, 10562, -1065, -1065,
2657 -1065, 6084, 5616, -1065, -1065, -1065, -1065, 32, 9588, 11,
2658 92, 197, -1065, -1065, -1065, 4824, 5772, -1065, -1065, 4992,
2659 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, 12135, 12135,
2660 12135, 12135, 351, 7722, 8484, 11046, 11409, 10044, -1065, 9434,
2661 -1065, -1065, -1065, 272, 284, 359, 362, 1229, 12256, 12135,
2662 -1065, 340, -1065, 1436, -1065, 551, 20, 20, -1065, -1065,
2663 194, 432, 406, -1065, 308, 12498, -1065, 442, 2224, 819,
2664 622, 676, -1065, 10441, 10441, -1065, -1065, 8605, 12617, 12736,
2665 12855, 9279, 10562, -1065, 582, 249, -1065, -1065, 373, -1065,
2666 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2667 -1065, -1065, 37, 299, -1065, 509, 342, -1065, -1065, -1065,
2668 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2669 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2670 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2671 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2672 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2673 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2674 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2675 -1065, -1065, -1065, -1065, -1065, 507, -1065, -1065, -1065, 528,
2676 12135, 637, 7882, 12135, 12135, 12135, -1065, 12135, 20, 20,
2677 -1065, 563, 4625, 603, -1065, -1065, 552, 754, 80, 302,
2678 615, 306, 569, -1065, -1065, 9037, -1065, 10562, 10683, -1065,
2679 -1065, 9158, -1065, 12377, 751, -1065, 575, 8042, -1065, 8202,
2680 -1065, -1065, 589, 602, 194, -1065, 758, -1065, 687, 4962,
2681 4962, 389, -1065, 7722, 612, 340, -1065, 1436, 11, 643,
2682 -1065, 1436, 11, 639, 601, 609, -1065, 603, 638, 609,
2683 -1065, 11, 744, 1229, 12974, 646, 646, 664, -1065, 774,
2684 858, 866, 871, -1065, -1065, 855, -1065, -1065, 1196, 1209,
2685 450, -1065, -1065, -1065, -1065, 753, -1065, -1065, -1065, -1065,
2686 -1065, -1065, -1065, 8727, 10441, 10441, 10441, 10441, 10320, 12377,
2687 12377, 2298, 705, 713, -1065, 2298, -1065, 718, -1065, -1065,
2688 -1065, -1065, 715, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2689 7722, 10182, 706, -1065, -1065, 12135, 12135, 12135, 12135, 12135,
2690 -1065, -1065, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135,
2691 -1065, 12135, -1065, -1065, 12135, 12135, 12135, 12135, 12135, 12135,
2692 12135, 12135, 12135, 12135, -1065, -1065, 13553, 10562, 13652, 6868,
2693 -1065, 551, 185, 185, 7600, 10441, 7600, 340, -1065, 703,
2694 814, -1065, -1065, 935, 874, 77, 128, 132, 851, 883,
2695 12377, 119, -1065, 741, 1039, -1065, -1065, -1065, -1065, 83,
2696 325, 529, 534, 561, 568, 632, 633, 670, -1065, -1065,
2697 -1065, -1065, 679, -1065, -1065, -1065, 15038, -1065, -1065, -1065,
2698 -1065, -1065, -1065, 390, -1065, -1065, -1065, 1072, 748, 761,
2699 -1065, 12135, 10804, -1065, -1065, 13751, 10562, 13850, -1065, -1065,
2700 11167, -1065, 11, 733, -1065, -1065, 12135, 11, -1065, 750,
2701 11, 776, -1065, 352, -1065, -1065, -1065, -1065, -1065, 9742,
2702 -1065, 12135, 757, 786, 13751, 13850, -1065, 92, 11, -1065,
2703 -1065, 8885, 789, 11, -1065, -1065, 11288, -1065, -1065, 11409,
2704 -1065, -1065, -1065, 575, 1071, -1065, -1065, 805, -1065, 12974,
2705 13949, 10562, 14048, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2706 -1065, -1065, -1065, -1065, 1215, 85, 1233, 88, 12135, -1065,
2707 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2708 -1065, -1065, -1065, -1065, -1065, -1065, 1404, -1065, -1065, -1065,
2709 -1065, -1065, 817, -1065, -1065, 11, -1065, -1065, -1065, 806,
2710 -1065, 831, 12135, -1065, 833, 134, -1065, -1065, -1065, 834,
2711 938, 838, 942, -1065, 12256, 6868, 340, 12256, 6868, 843,
2712 -1065, -1065, -1065, 138, -1065, 138, 11530, -1065, 11, 12974,
2713 844, -1065, 11530, -1065, 687, 3311, 3311, 3311, 3311, 3382,
2714 2366, 3311, 3311, 4962, 4962, 771, 771, -1065, 4036, 1358,
2715 1358, 1227, 266, 266, 687, 687, 687, 1300, 1300, 6240,
2716 5148, 6552, 5304, -1065, -1065, 602, -1065, 11, 852, 412,
2717 -1065, 539, -1065, -1065, 5928, 138, 990, -1065, 6990, 993,
2718 7356, 138, 109, 138, 984, 1004, 175, 14147, 10562, 14246,
2719 -1065, 551, -1065, 1071, -1065, -1065, -1065, 14345, 10562, 14444,
2720 6868, 12377, -1065, -1065, -1065, -1065, -1065, 3687, 12256, 12256,
2721 9742, 12135, 12135, 12135, 12135, -1065, 12135, 603, -1065, 569,
2722 4540, 5460, 11, 451, 456, 12135, 12135, -1065, -1065, -1065,
2723 -1065, 10925, -1065, 11167, -1065, -1065, 12377, 4625, -1065, -1065,
2724 602, 602, 12135, -1065, 315, -1065, -1065, 609, 12974, 805,
2725 76, 660, 11, 300, 391, 2980, -1065, 1189, -1065, 526,
2726 -1065, 862, -1065, -1065, 535, 863, -1065, 687, 1404, 1062,
2727 -1065, 875, 11, 881, -1065, 40, -1065, -1065, -1065, 12135,
2728 878, 2298, -1065, -1065, 339, -1065, -1065, -1065, 2298, -1065,
2729 -1065, 1709, -1065, -1065, 982, 3514, 138, -1065, 994, 3654,
2730 138, -1065, -1065, 888, -1065, -1065, -1065, -1065, -1065, 12135,
2731 -1065, 889, 892, 999, -1065, -1065, 805, 12974, -1065, -1065,
2732 1005, 913, 3176, -1065, -1065, -1065, 1075, 461, 13379, 13379,
2733 914, -1065, -1065, -1065, 715, 896, 599, 10804, -1065, -1065,
2734 -1065, -1065, 715, -1065, -1065, -1065, 11651, 662, -1065, 723,
2735 -1065, 1047, -1065, -1065, -1065, -1065, -1065, -1065, 1004, 138,
2736 -1065, 11772, 138, 99, 139, 11, 179, 204, 7600, 340,
2737 10441, 6868, 996, 660, -1065, 11, 138, 352, 9896, 249,
2738 432, -1065, 3731, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2739 -1065, -1065, 480, -1065, -1065, 11, 911, 352, -1065, -1065,
2740 -1065, 471, 2298, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2741 -1065, -1065, -1065, -1065, -1065, -1065, 11, -1065, 1404, -1065,
2742 1333, -1065, -1065, -1065, -1065, -1065, 912, 919, -1065, 1016,
2743 817, 924, -1065, 932, -1065, 924, 12135, 12135, -1065, 12135,
2744 12135, -1065, 951, -1065, 951, 937, 11893, 10320, 805, 10320,
2745 -1065, 12135, 14543, 10562, 14642, -1065, -1065, -1065, 1928, 1928,
2746 565, -1065, 13286, 314, 1043, -1065, 1002, -1065, -1065, 28,
2747 -1065, 960, -1065, -1065, -1065, 969, -1065, 970, -1065, 13565,
2748 -1065, -1065, -1065, -1065, 756, -1065, -1065, -1065, 328, -1065,
2749 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, 136, -1065,
2750 12135, 12256, 12256, -1065, -1065, -1065, 12256, 12256, -1065, 889,
2751 -1065, 1026, -1065, -1065, -1065, 7600, -1065, -1065, -1065, -1065,
2752 7600, 10441, 138, -1065, -1065, 138, -1065, -1065, 138, -1065,
2753 12135, -1065, 146, -1065, 214, 138, 6868, 340, 138, -1065,
2754 -1065, -1065, -1065, -1065, -1065, 12135, 12135, -1065, 12135, 12135,
2755 -1065, 11167, -1065, 11, 75, -1065, -1065, -1065, 973, 975,
2756 2298, -1065, 1709, -1065, -1065, 1709, -1065, 1709, -1065, -1065,
2757 4625, 4625, 4625, 4625, 2064, 8202, -1065, -1065, 6868, 12135,
2758 977, -1065, -1065, 12256, 4625, 6396, 6708, 11, 485, 490,
2759 -1065, -1065, -1065, -1065, 13565, 41, 11, 13472, -1065, 11,
2760 978, -1065, 394, 953, -1065, -1065, 1162, -1065, 10441, -1065,
2761 1082, 13472, 13565, 13565, 394, 1038, 1928, 1928, 565, 60,
2762 696, 13379, 13379, -1065, 4625, -1065, -1065, -1065, -1065, 12256,
2763 -1065, -1065, -1065, -1065, 13093, 185, -1065, -1065, 7478, -1065,
2764 185, -1065, -1065, 13379, -1065, -1065, 12014, 7112, -1065, 138,
2765 -1065, -1065, 12135, 983, 986, -1065, 8202, -1065, -1065, 1333,
2766 1333, 924, 987, 924, 924, 817, -1065, 11, 1007, 806,
2767 1008, 13212, -1065, 1010, -1065, 1012, 1020, -1065, -1065, -1065,
2768 1022, 499, 29, -1065, 1038, 1023, 1024, -1065, -1065, -1065,
2769 11, -1065, -1065, 11, -1065, -1065, 1028, -1065, 1033, -1065,
2770 -1065, -1065, -1065, -1065, -1065, -1065, -1065, 11, 11, 11,
2771 11, 11, 11, -1065, -1065, 1093, -1065, 1102, 210, 224,
2772 259, 6868, 1142, 6990, 185, 884, 12135, -1065, 768, -1065,
2773 -1065, 1325, 6868, 1006, 8362, 975, -1065, 1709, -1065, -1065,
2774 -1065, -1065, 1017, -1065, 13212, 1252, -1065, -1065, 1125, 1117,
2775 339, -1065, 1252, -1065, 755, -1065, -1065, 13565, -1065, 472,
2776 -1065, -1065, 13565, 13472, -1065, -1065, -1065, -1065, -1065, -1065,
2777 291, 14741, 10562, 14840, 990, -1065, 723, -1065, 10441, 10441,
2778 -1065, -1065, -1065, -1065, -1065, 627, -1065, -1065, 138, -1065,
2779 1069, 924, -1065, 1117, -1065, 1052, 1054, -1065, 14939, -1065,
2780 817, 1055, -1065, 1056, 1055, 1058, 1058, -1065, -1065, 105,
2781 166, 11, 318, 367, -1065, -1065, 7234, -1065, -1065, 1325,
2782 -1065, -1065, -1065, -1065, 1252, -1065, 755, -1065, 1059, 1060,
2783 -1065, 755, -1065, 755, -1065, -1065, 13565, 374, 725, -1065,
2784 1055, 1063, 1055, 1055, -1065, -1065, -1065, -1065, 755, -1065,
2785 -1065, -1065, 1055, -1065
2791static const yytype_int16 yydefact[] =
2793 2, 0, 0, 1, 39, 377, 378, 379, 0, 370,
2794 371, 372, 375, 373, 374, 376, 365, 366, 367, 368,
2795 389, 294, 294, 657, 656, 658, 659, 771, 0, 771,
2796 0, 0, 661, 660, 662, 755, 757, 651, 650, 756,
2797 652, 646, 647, 648, 649, 599, 667, 668, 0, 0,
2798 0, 0, 0, 0, 0, 782, 782, 105, 448, 619,
2799 619, 621, 623, 0, 0, 0, 0, 0, 0, 0,
2800 3, 769, 6, 8, 33, 38, 676, 676, 55, 77,
2801 294, 76, 0, 93, 0, 97, 107, 0, 66, 245,
2802 264, 0, 322, 0, 0, 73, 73, 0, 0, 0,
2803 0, 0, 333, 344, 78, 342, 311, 312, 598, 600,
2804 313, 314, 315, 317, 316, 318, 597, 638, 639, 596,
2805 644, 655, 663, 664, 319, 0, 320, 81, 5, 186,
2806 197, 187, 210, 183, 203, 193, 192, 213, 214, 208,
2807 191, 190, 185, 211, 215, 216, 195, 184, 198, 202,
2808 204, 196, 189, 205, 212, 207, 206, 199, 209, 194,
2809 182, 201, 200, 181, 188, 179, 180, 176, 177, 178,
2810 136, 138, 137, 171, 172, 167, 149, 150, 151, 158,
2811 155, 157, 152, 153, 173, 174, 159, 160, 164, 168,
2812 154, 156, 146, 147, 148, 161, 162, 163, 165, 166,
2813 169, 170, 175, 141, 143, 26, 139, 140, 142, 0,
2814 751, 0, 0, 302, 754, 297, 619, 0, 676, 676,
2815 289, 0, 272, 300, 91, 293, 782, 0, 663, 664,
2816 0, 320, 782, 747, 92, 771, 89, 0, 782, 469,
2817 88, 771, 772, 0, 0, 21, 257, 0, 9, 0,
2818 365, 366, 336, 470, 0, 239, 0, 333, 240, 230,
2819 231, 330, 19, 0, 0, 769, 16, 18, 771, 95,
2820 15, 326, 771, 0, 771, 771, 273, 0, 0, 771,
2821 745, 771, 0, 0, 0, 676, 676, 103, 369, 0,
2822 113, 114, 121, 449, 641, 0, 640, 642, 0, 0,
2823 0, 606, 615, 611, 617, 645, 59, 251, 252, 778,
2824 779, 4, 780, 0, 0, 0, 0, 0, 0, 0,
2825 0, 699, 0, 675, 361, 699, 673, 0, 363, 380,
2826 474, 463, 82, 478, 341, 381, 478, 459, 782, 109,
2827 0, 101, 98, 782, 63, 0, 0, 0, 0, 0,
2828 267, 268, 0, 0, 0, 0, 228, 229, 0, 0,
2829 60, 0, 265, 266, 0, 0, 0, 0, 0, 0,
2830 0, 0, 0, 0, 765, 766, 0, 782, 0, 0,
2831 72, 71, 0, 0, 0, 0, 0, 769, 351, 770,
2832 0, 400, 399, 0, 0, 663, 664, 320, 131, 132,
2833 0, 0, 134, 671, 0, 663, 664, 320, 359, 206,
2834 199, 209, 194, 176, 177, 178, 136, 137, 743, 68,
2835 67, 742, 0, 90, 768, 767, 0, 343, 601, 782,
2836 782, 144, 750, 330, 301, 753, 296, 0, 0, 0,
2837 782, 0, 0, 290, 299, 0, 782, 0, 782, 782,
2838 0, 291, 771, 0, 335, 295, 700, 771, 285, 782,
2839 771, 782, 284, 771, 340, 58, 23, 25, 24, 0,
2840 337, 0, 0, 0, 0, 0, 782, 0, 771, 328,
2841 14, 0, 94, 771, 325, 331, 777, 776, 274, 777,
2842 276, 332, 746, 0, 120, 645, 111, 106, 675, 0,
2843 0, 782, 0, 450, 625, 643, 628, 626, 620, 602,
2844 603, 622, 604, 624, 0, 0, 0, 0, 0, 781,
2845 7, 27, 28, 29, 30, 31, 56, 57, 706, 703,
2846 702, 701, 704, 712, 721, 700, 0, 733, 722, 737,
2847 736, 732, 782, 723, 698, 771, 682, 705, 707, 708,
2848 710, 684, 714, 719, 782, 725, 413, 412, 730, 684,
2849 735, 684, 739, 681, 0, 0, 0, 0, 0, 0,
2850 475, 474, 83, 0, 479, 0, 0, 271, 771, 0,
2851 99, 110, 0, 64, 237, 244, 246, 247, 248, 255,
2852 256, 249, 250, 226, 227, 253, 254, 61, 771, 241,
2853 242, 243, 232, 233, 234, 235, 236, 269, 270, 755,
2854 757, 756, 759, 468, 758, 294, 466, 771, 782, 755,
2855 757, 756, 759, 467, 294, 0, 782, 391, 0, 390,
2856 0, 0, 0, 0, 349, 0, 330, 0, 782, 0,
2857 73, 357, 131, 132, 133, 669, 355, 0, 782, 0,
2858 0, 0, 763, 764, 69, 755, 756, 294, 0, 0,
2859 0, 0, 0, 0, 0, 749, 305, 303, 298, 782,
2860 755, 756, 771, 755, 756, 0, 0, 748, 334, 773,
2861 279, 286, 281, 288, 339, 22, 0, 258, 10, 32,
2862 0, 782, 0, 20, 96, 17, 327, 771, 0, 104,
2863 760, 119, 771, 755, 756, 699, 629, 0, 605, 0,
2864 608, 0, 613, 610, 0, 0, 614, 238, 0, 411,
2865 403, 405, 771, 408, 401, 0, 680, 741, 674, 0,
2866 0, 0, 691, 713, 0, 679, 557, 724, 0, 694,
2867 734, 0, 696, 738, 47, 260, 0, 677, 49, 262,
2868 0, 472, 476, 0, 387, 388, 473, 480, 458, 302,
2869 34, 307, 0, 37, 306, 108, 102, 0, 54, 40,
2870 52, 0, 277, 300, 217, 35, 0, 320, 0, 0,
2871 0, 782, 782, 465, 86, 0, 471, 286, 782, 782,
2872 283, 464, 84, 282, 323, 382, 782, 782, 588, 782,
2873 392, 782, 347, 394, 74, 393, 348, 489, 0, 0,
2874 384, 0, 0, 760, 329, 771, 755, 756, 0, 0,
2875 0, 0, 131, 132, 135, 771, 0, 771, 0, 460,
2876 79, 41, 277, 218, 51, 225, 145, 752, 304, 292,
2877 782, 782, 471, 782, 782, 771, 782, 771, 224, 275,
2878 112, 471, 699, 451, 454, 630, 634, 635, 636, 627,
2879 637, 607, 609, 616, 612, 618, 771, 410, 0, 709,
2880 0, 740, 726, 415, 683, 711, 684, 684, 720, 725,
2881 782, 684, 731, 684, 708, 684, 0, 0, 362, 0,
2882 0, 364, 782, 80, 782, 310, 0, 0, 100, 0,
2883 782, 0, 0, 782, 0, 580, 586, 553, 0, 0,
2884 0, 527, 771, 524, 541, 619, 0, 579, 65, 498,
2885 504, 506, 508, 502, 501, 537, 503, 546, 549, 552,
2886 558, 559, 548, 511, 560, 512, 565, 566, 567, 570,
2887 571, 572, 573, 574, 576, 575, 577, 578, 556, 62,
2888 0, 0, 0, 87, 774, 782, 0, 0, 85, 589,
2889 590, 782, 591, 383, 385, 0, 11, 13, 595, 386,
2890 0, 0, 0, 395, 397, 0, 75, 490, 0, 353,
2891 0, 482, 0, 352, 471, 0, 0, 0, 0, 471,
2892 360, 744, 70, 461, 462, 0, 0, 782, 0, 0,
2893 280, 287, 338, 771, 0, 631, 402, 404, 406, 409,
2894 0, 687, 0, 689, 678, 0, 695, 0, 692, 697,
2895 48, 261, 50, 263, 771, 0, 439, 438, 0, 305,
2896 308, 36, 53, 0, 278, 755, 756, 771, 755, 756,
2897 568, 569, 132, 584, 0, 529, 771, 530, 534, 771,
2898 0, 523, 0, 0, 526, 540, 0, 581, 0, 582,
2899 0, 499, 0, 0, 547, 551, 563, 564, 0, 510,
2900 509, 0, 0, 555, 259, 46, 222, 45, 223, 0,
2901 43, 220, 44, 221, 0, 0, 593, 594, 0, 398,
2902 0, 345, 346, 0, 350, 483, 0, 0, 354, 0,
2903 670, 356, 0, 0, 442, 456, 0, 452, 632, 0,
2904 0, 684, 684, 684, 684, 782, 437, 771, 0, 708,
2905 421, 716, 717, 782, 728, 421, 421, 419, 477, 481,
2906 309, 471, 771, 521, 544, 532, 531, 522, 535, 619,
2907 771, 775, 554, 771, 505, 500, 537, 507, 538, 542,
2908 550, 545, 561, 562, 585, 520, 516, 771, 771, 771,
2909 771, 771, 771, 42, 219, 0, 592, 0, 663, 664,
2910 320, 0, 782, 0, 0, 495, 0, 484, 782, 358,
2911 453, 0, 0, 0, 0, 407, 688, 0, 685, 690,
2912 693, 418, 0, 440, 0, 422, 430, 428, 0, 715,
2913 0, 417, 0, 433, 0, 435, 528, 0, 536, 0,
2914 525, 583, 0, 0, 513, 514, 515, 517, 518, 519,
2915 330, 0, 782, 0, 782, 12, 782, 491, 0, 0,
2916 485, 487, 488, 486, 446, 771, 444, 447, 0, 455,
2917 0, 684, 441, 727, 420, 421, 421, 330, 0, 718,
2918 782, 421, 729, 421, 421, 533, 538, 539, 543, 760,
2919 329, 771, 755, 756, 587, 396, 0, 496, 497, 0,
2920 443, 457, 633, 686, 0, 425, 0, 427, 760, 329,
2921 416, 0, 434, 0, 431, 436, 0, 471, 782, 445,
2922 421, 421, 421, 421, 493, 494, 492, 426, 0, 423,
2927static const yytype_int16 yypgoto[] =
2929 -1065, -1065, -1065, 976, -1065, 926, 763, -522, -1065, -28,
2930 -1065, 769, -1065, 39, -1065, -229, -542, -67, -1065, -1065,
2931 -1065, -1065, 414, 2325, 2587, -1065, -24, -77, -1065, -1065,
2932 -6, -1065, -424, 1029, -10, 1153, -153, 10, -75, -1065,
2933 -401, 7, 2986, -392, 1155, -56, -13, -1065, -1065, -4,
2934 -1065, 3847, -1065, 1171, -1065, 623, 2014, -1065, 675, 26,
2935 604, -360, 65, 16, -1065, -319, -203, 5, -1065, -457,
2936 -20, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2937 -1065, -1065, 917, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2938 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, 466, -1065,
2939 -430, 1837, -372, -1065, 42, -783, -1065, -799, -785, 547,
2940 401, -92, 154, -1065, 250, -417, -1065, -1065, 383, -1065,
2941 -905, -1065, 43, 519, -1065, -1065, -1065, -1065, -1065, -1065,
2942 -1065, 449, -1065, -1065, -104, 712, -1065, -1065, -1065, 959,
2943 -1065, -1065, -1065, -1065, -773, -1065, 23, -1065, -1065, -1065,
2944 -1065, -1065, -722, -43, -1065, -1065, -1065, -1065, 253, -1065,
2945 -1065, -177, -1065, -702, -812, -939, -966, -898, -909, -1065,
2946 256, -1065, -1065, -632, 257, -1065, -782, 264, -1065, -1065,
2947 -1065, 101, -1065, -1065, 156, 562, 631, -1065, 1218, 736,
2948 1173, 1370, -1065, 836, 1486, -1065, 1719, 1813, -1065, -1065,
2949 -55, -1065, -1065, -179, -1065, -1065, -1065, -1065, -1065, -1065,
2950 -1065, 24, -1065, -1065, -1065, -1065, 27, -57, 2864, 14,
2951 1256, 3061, 1912, -1065, -1065, 63, 697, 57, -1065, -274,
2952 -500, -302, -194, -1012, -505, -313, -673, 235, -514, 624,
2953 164, -1065, -1065, -246, -1065, -706, -672, -1064, 170, 635,
2954 -1065, -541, -1065, -532, -540, -1065, -1065, -1065, 33, -394,
2955 -342, -336, -1065, -1065, -71, -1065, -14, 290, 243, -294,
2956 228, -188, -58, 1, -2
2960static const yytype_int16 yydefgoto[] =
2962 0, 1, 2, 70, 71, 72, 248, 625, 1088, 626,
2963 265, 266, 477, 267, 469, 74, 769, 75, 597, 779,
2964 583, 778, 419, 218, 219, 828, 382, 384, 385, 976,
2965 78, 79, 572, 254, 81, 82, 268, 83, 84, 85,
2966 497, 86, 221, 402, 403, 203, 204, 205, 660, 612,
2967 207, 88, 471, 372, 89, 576, 223, 273, 774, 613,
2968 791, 457, 458, 236, 237, 225, 443, 618, 763, 764,
2969 90, 379, 272, 483, 686, 808, 635, 821, 819, 650,
2970 565, 568, 256, 92, 93, 94, 95, 96, 97, 98,
2971 99, 100, 101, 333, 336, 796, 965, 811, 970, 971,
2972 756, 257, 628, 804, 972, 973, 394, 720, 721, 722,
2973 723, 542, 729, 730, 1244, 1196, 1197, 1117, 1025, 1026,
2974 1103, 1235, 1236, 103, 293, 503, 705, 1004, 853, 1107,
2975 1182, 337, 104, 105, 334, 569, 570, 752, 892, 573,
2976 574, 757, 894, 982, 812, 1233, 809, 977, 1093, 1266,
2977 1296, 1174, 918, 1134, 920, 921, 1071, 1072, 922, 1052,
2978 1044, 1046, 1047, 1048, 924, 925, 1148, 1050, 926, 927,
2979 928, 929, 930, 543, 932, 933, 934, 935, 936, 937,
2980 938, 797, 961, 1085, 967, 106, 107, 108, 109, 110,
2981 111, 112, 514, 709, 113, 516, 114, 115, 515, 517,
2982 295, 299, 300, 508, 707, 706, 855, 1005, 1108, 1184,
2983 859, 116, 117, 296, 118, 119, 120, 121, 228, 229,
2984 124, 230, 231, 646, 820, 322, 323, 324, 325, 874,
2985 732, 545, 546, 547, 548, 884, 550, 551, 552, 553,
2986 1122, 1123, 554, 555, 556, 557, 558, 1124, 1125, 559,
2987 560, 561, 562, 563, 726, 422, 651, 278, 461, 233,
2988 127, 690, 616, 654, 649, 426, 311, 453, 454, 786,
2989 1054, 488, 629, 389, 270
2995static const yytype_int16 yytable[] =
2997 128, 427, 297, 294, 206, 298, 220, 220, 549, 644,
2998 342, 630, 549, 312, 735, 245, 123, 617, 975, 386,
2999 378, 226, 226, 566, 206, 264, 381, 381, 880, 451,
3000 381, 724, 208, 425, 614, 978, 614, 288, 240, 312,
3001 615, 73, 624, 746, 460, 420, 750, 544, 239, 232,
3002 232, 544, 208, 276, 280, 206, 677, 949, 875, 739,
3003 274, 742, 306, 269, 287, 288, 882, 123, 123, 1007,
3004 383, 291, 313, 387, 326, 326, 923, 923, 288, 288,
3005 288, 224, 234, 388, 614, 1009, 672, 490, 275, 279,
3006 657, 492, 220, 271, 305, 677, 332, 206, 699, 291,
3007 1049, -117, -122, 614, 1105, 614, 331, 226, 1135, 615,
3008 478, 624, 396, 406, 406, 406, 831, 834, -126, 1118,
3009 511, 513, 1146, 668, -126, 775, 1040, 1041, 826, 1060,
3010 1060, 668, 614, 614, 328, 232, 803, -665, 1252, 691,
3011 327, 702, 1060, 1140, 3, 758, 931, 931, 754, 1136,
3012 539, 711, -657, -123, 715, -782, 447, -130, 614, 627,
3013 614, 437, 1159, 1162, -128, 1149, 691, 423, 736, 1237,
3014 736, 642, -122, 242, 463, 643, 465, 321, 766, -128,
3015 -665, -657, 540, 1061, 264, 475, 737, 578, 1073, 241,
3016 877, 242, -113, 871, 242, 794, -544, 883, 627, 1106,
3017 -129, 802, 871, 806, -125, 712, 755, 312, 716, 496,
3018 1252, -117, 1192, 724, 867, -122, 326, 326, 502, -771,
3019 329, 473, 242, -122, 444, 220, 123, 220, 220, -127,
3020 444, -117, -113, -755, -117, 264, 462, -123, -117, -124,
3021 226, 1255, 226, 459, 247, 128, 1256, 381, 381, 381,
3022 381, 480, 526, 527, -117, 824, -755, 1237, 451, 1158,
3023 1161, 123, -755, 123, 288, -126, 481, -126, 232, 309,
3024 232, 310, -130, 269, 1257, 329, 328, 123, 815, 239,
3025 331, 438, 439, -114, 1152, 1153, 73, -121, 825, 677,
3026 521, 522, 523, 524, -119, 614, -756, 614, 291, 988,
3027 452, 1096, 455, 691, -129, 614, 309, 614, 310, 1149,
3028 495, 1007, 264, 691, 1149, 1258, 888, 243, 381, 246,
3029 891, 288, 639, -756, 1185, -116, -128, 123, -128, 312,
3030 -120, -125, 123, 641, -116, 710, 577, 710, 882, 960,
3031 1014, 577, 875, 328, 345, 309, 330, 310, 580, 249,
3032 269, 238, 73, 768, 123, 291, 631, 525, 633, -118,
3033 953, 632, 668, 724, 668, 724, 898, 220, 958, -115,
3034 -122, 1175, -122, 634, 622, 462, 1011, 1013, 842, 979,
3035 -127, 1016, 983, 1018, -123, 1019, -123, -124, 1258, 319,
3036 320, 923, 549, 123, -656, 1231, 990, 533, 123, -666,
3037 123, 330, -666, 854, 623, 1232, 449, 261, 851, 1075,
3038 1077, 369, 370, 371, 1080, 1082, -118, 534, 549, -130,
3039 931, -130, 622, -656, 496, 549, 1068, 577, 577, 768,
3040 768, 544, 931, 301, -123, -116, 220, -123, 577, 931,
3041 931, -130, 430, 622, 462, 302, 577, 577, 538, 539,
3042 -94, -129, 907, -129, -114, -116, 685, 444, -116, 444,
3043 335, 931, -116, 339, 1099, 206, 839, -771, 668, 1112,
3044 -108, 622, 534, 623, 577, 669, 242, -130, -125, 288,
3045 -125, 540, 1069, 1126, 464, 1070, 60, 845, 879, 476,
3046 476, 220, 1127, 208, 1250, 123, -115, -121, 622, 462,
3047 309, 623, 310, 538, 496, 1294, 1129, 1139, 747, 849,
3048 1121, 482, 788, 291, 242, 484, 504, 512, 1043, 697,
3049 303, 984, 875, 304, -129, -129, -118, -127, 623, -127,
3050 862, 989, 948, 948, -124, 862, -124, 1163, 504, 549,
3051 727, 338, 1091, 1037, -120, 1092, -118, -125, 1094, -118,
3052 1003, 843, 727, -118, 744, 1098, 844, 748, 1101, 288,
3053 614, 430, 614, 818, 487, 487, 615, -116, 624, 487,
3054 760, 493, 506, 507, 805, 1191, 770, 343, 544, 123,
3055 997, 762, 123, 1201, 827, 788, -125, 762, 319, 320,
3056 789, -127, 504, 291, 506, 507, -130, 1142, -658, 955,
3057 799, 504, 801, -659, 724, 724, -115, 677, 875, 429,
3058 1097, 1186, 1188, 1189, 1190, -124, 444, 642, 1051, 847,
3059 -125, 1042, 793, 850, 798, -127, -115, -658, 220, -115,
3060 -661, 784, -659, -115, -124, 622, 462, -660, 220, 789,
3061 792, 783, 123, 839, 123, 622, 462, 836, 506, 507,
3062 790, 374, 770, 770, 1246, 793, 206, 506, 507, -661,
3063 1238, 1253, 431, 1127, 123, 623, -660, 444, 871, 1179,
3064 1127, 963, 1127, 830, -127, 623, 1154, 964, 288, 375,
3065 424, 1121, 668, 790, 208, 241, 1121, 861, 1121, 793,
3066 1121, -369, 496, 433, -118, 678, 864, 549, 440, 955,
3067 680, -662, -653, 682, 441, 904, 684, 442, 1203, 1205,
3068 1280, 1119, 291, 1171, 846, 448, 783, 790, 1173, -369,
3069 -369, 694, 768, 768, 450, 993, 696, 768, 768, -329,
3070 -662, -653, 470, 1291, -124, 919, 919, 969, 964, -654,
3071 964, 1273, 1127, 1131, 1127, 374, 235, 288, 652, 1127,
3072 807, 1127, 1133, 381, -115, 1137, 486, -329, -329, 238,
3073 1121, 986, 1121, 242, 489, 345, 1127, 1121, -654, 1121,
3074 479, 242, 420, 375, 376, 1155, -369, 653, -93, 577,
3075 577, 291, 1269, 964, 1121, 810, 577, 577, 728, 242,
3076 985, 491, 947, 947, 962, 968, 987, 974, 485, 974,
3077 494, 762, 1227, 321, 768, 466, 948, 528, 1271, 529,
3078 530, 531, 532, 533, -329, 467, 468, -756, 948, 499,
3079 846, 765, 571, 374, 206, 948, 948, 374, 1275, 1277,
3080 377, 518, 123, 534, 1282, 123, 1284, 1285, 577, 577,
3081 564, 577, 577, 374, 444, 1066, 1067, 948, -672, 345,
3082 768, 375, 445, 567, -771, 375, 474, 536, 242, 1059,
3083 1056, 581, 1261, 519, 538, 539, 1217, 1218, 1219, 1045,
3084 636, 375, 500, 1297, 1299, 1300, 1301, -755, 727, 614,
3085 645, 614, 1119, 662, 1145, 1303, 1065, 691, 780, 1119,
3086 1027, 679, 1027, 220, 1157, 1160, 663, 540, 577, 640,
3087 622, 462, 350, 351, 381, 681, 614, 785, 446, -756,
3088 688, 123, 446, 123, 367, 368, 369, 370, 371, 91,
3089 -653, 504, 947, 947, 1228, 1229, 947, -663, 501, 1100,
3090 623, 683, 1115, 227, 227, -664, 1031, 1087, 1032, 689,
3091 -320, -414, 1089, 947, -108, 770, 770, 1090, -653, -653,
3092 770, 770, -654, 577, 879, -663, -663, 362, 363, 1086,
3093 698, 1119, 785, -664, -664, 869, 582, 1287, -320, -320,
3094 91, 91, 725, 881, 289, 505, 885, 506, 507, 123,
3095 -654, -654, 498, 498, 123, 227, 731, 487, 734, 738,
3096 740, 381, 785, 741, 743, 577, 751, 1128, 795, 767,
3097 123, 1132, 289, -755, 374, -653, 800, 787, -755, 807,
3098 227, 227, -663, 873, 227, 393, 404, 404, 1045, 227,
3099 -664, 810, -760, 863, 865, -320, 886, 770, 1045, 1045,
3100 868, 80, 375, 637, 1143, -756, 870, -654, 889, 123,
3101 -756, 893, 123, 897, -300, 80, 80, 896, 900, 899,
3102 919, 950, 658, 659, 1057, 954, 37, 38, 947, 40,
3103 1172, 947, 964, 664, 288, -760, 1001, 1010, 737, 1178,
3104 991, 675, 676, 770, 1012, 947, 947, 947, 1183, 1015,
3105 947, 947, 80, 80, 1209, 947, 947, 1017, 1000, 638,
3106 1002, 1024, -301, -760, -760, 1055, 1223, 80, 1169, 692,
3107 1062, 288, 123, 1115, 1058, 785, 1141, 947, 374, 1006,
3108 1115, 123, 1115, 727, 528, 785, 529, 530, 531, 532,
3109 123, 727, 80, 80, 1063, 1064, 80, 1084, 1109, 91,
3110 1110, 80, -303, 1138, 905, 406, 375, 647, 504, 1060,
3111 -330, 1180, 1187, 1224, 374, 1226, 1181, 1193, -760, 1220,
3112 -760, 963, 227, -755, 227, 227, 1240, 1242, 227, 1239,
3113 227, 381, 381, 1195, 91, 1200, 91, 1202, -330, -330,
3114 968, 374, 375, 902, 288, 1204, 974, -304, 1207, 1208,
3115 91, 1247, 1115, 1212, 1115, 123, 374, 123, 1213, 1115,
3116 1272, 1115, 509, 648, 506, 507, 123, 661, 123, 375,
3117 1221, 289, 785, 1053, 1267, 1268, 1115, 1274, 406, 1276,
3118 1281, 1283, 220, 1286, 375, 1248, -755, -756, 1298, 622,
3119 462, 947, 798, 472, 974, -330, 947, 947, 504, 903,
3120 91, 227, 227, 227, 227, 91, 227, 227, 1288, 520,
3121 693, 80, 992, 856, 857, 1111, 858, 1113, 727, 623,
3122 695, 391, 1114, 46, 47, 408, 1222, 91, 289, 1120,
3123 373, 829, 504, 966, 80, 866, 80, 80, 1265, 1008,
3124 80, 648, 80, 1194, 1116, 504, 80, 1028, 80, 994,
3125 123, 504, 509, 753, 506, 507, 974, 1142, 41, 42,
3126 43, 44, 80, 1104, 227, 575, 91, 917, 917, 504,
3127 947, 91, 227, 91, 528, 345, 529, 530, 531, 532,
3128 533, 1295, 1289, 1156, 1104, 1147, 509, 227, 506, 507,
3129 1150, 1151, 358, 359, 1144, 1264, 428, 785, 1225, 510,
3130 534, 506, 507, 833, 835, 708, 785, 506, 507, 785,
3131 939, 939, 80, 80, 80, 80, 80, 80, 80, 80,
3132 833, 835, 714, 713, 536, 506, 507, 421, 878, 785,
3133 537, 538, 539, 227, 1249, 1245, 876, 848, 1210, 80,
3134 367, 368, 369, 370, 371, 1206, 0, 1234, 345, 529,
3135 530, 531, 532, 0, 0, 528, 1211, 529, 530, 531,
3136 532, 0, 0, 0, 540, 358, 359, 541, 91, 0,
3137 1214, 1215, 1216, 0, 951, 952, 80, 1104, 80, 940,
3138 940, 956, 957, 80, 80, 80, 289, 0, 227, 0,
3139 0, 0, 1241, 0, 0, 0, 0, 917, 917, 80,
3140 1053, 917, 0, 0, 0, 718, 345, 1251, 0, 1254,
3141 364, 365, 366, 367, 368, 369, 370, 371, 917, 0,
3142 785, 785, 785, 358, 359, 0, 528, 0, 529, 530,
3143 531, 532, 0, 995, 996, 0, 998, 999, 0, 0,
3144 939, 939, 0, 0, 939, 80, 314, 315, 316, 317,
3145 318, 227, 91, 0, 227, 91, 0, 0, 0, 0,
3146 0, 939, 0, 227, 0, 0, 289, 0, 0, 776,
3147 366, 367, 368, 369, 370, 371, 718, 0, 0, 1290,
3148 80, 1292, 719, 0, 941, 941, 0, 0, 1293, 0,
3149 0, 0, 0, 1033, 0, 1270, 0, 0, 0, 0,
3150 80, 0, 0, 1302, 0, 0, 0, 0, 0, 940,
3151 940, 0, 0, 940, 0, 91, 0, 91, 0, 0,
3152 0, 785, 0, 0, 0, 227, 0, 0, 0, 0,
3153 940, 0, 0, 917, 0, 227, 917, 91, 227, 0,
3154 0, 0, 0, 0, 0, 776, 776, 0, 1079, 0,
3155 917, 917, 917, 0, 0, 917, 917, 0, 0, 0,
3156 917, 917, 0, 80, 80, 0, 80, 80, 0, 0,
3157 0, 0, 0, 227, 0, 80, 939, 0, 0, 939,
3158 0, 80, 917, 0, 0, 289, 0, 0, 0, 0,
3159 1102, 0, 0, 939, 939, 939, 1076, 1078, 939, 939,
3160 0, 1081, 1083, 939, 939, 0, 0, 0, 0, 0,
3161 0, 0, 0, 0, 941, 941, 0, 0, 941, 0,
3162 0, 0, 0, 0, 0, 939, 0, 80, 0, 80,
3163 0, 0, 0, 0, 0, 941, 0, 80, 0, 0,
3164 1076, 1078, 0, 1081, 1083, 940, 0, 80, 940, 80,
3165 80, 0, 0, 0, 289, 0, 0, 80, 80, 0,
3166 0, 0, 940, 940, 940, 0, 0, 940, 940, 0,
3167 0, 0, 940, 940, 0, 0, 0, 0, 0, 0,
3168 0, 0, 0, 0, 0, 80, 0, 0, 0, 0,
3169 0, 0, 0, 0, 940, 0, 917, 0, 0, 0,
3170 0, 917, 917, 0, 0, 91, 0, 227, 91, 0,
3171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3172 0, 0, 0, 0, 1164, 0, 0, 0, 0, 0,
3173 0, 528, 0, 529, 530, 531, 532, 533, 0, 939,
3174 0, 0, 0, 0, 939, 939, 0, 1164, 0, 0,
3175 941, 0, 0, 941, 0, 0, 0, 534, 0, 0,
3176 0, 0, 0, 0, 0, 0, 0, 941, 941, 941,
3177 0, 535, 941, 941, 0, 917, 0, 941, 941, 0,
3178 0, 536, 0, 0, 91, 0, 91, 0, 538, 539,
3179 227, 0, 0, 0, 0, 0, 0, 0, 0, 941,
3180 0, 0, 0, 0, 0, 0, 0, 0, 940, 102,
3181 0, 0, 0, 940, 940, 0, 0, 80, 939, 80,
3182 80, 540, 0, 102, 102, 0, 0, 0, 0, 0,
3183 0, 0, 0, 0, 0, 0, 0, 0, 776, 776,
3184 0, 0, 0, 776, 776, 0, 0, 0, 0, 0,
3185 0, 0, 91, 0, 0, 0, 0, 91, 227, 0,
3186 102, 102, 0, 0, 0, 0, 0, 0, 0, 0,
3187 0, 0, 0, 91, 0, 102, 0, 0, 0, 0,
3188 0, 0, 0, 0, 126, 0, 0, 940, 0, 0,
3189 0, 0, 0, 0, 0, 0, 80, 0, 80, 0,
3190 102, 102, 80, 0, 102, 0, 0, 0, 0, 102,
3191 0, 0, 91, 941, 0, 91, 0, 0, 941, 941,
3192 776, 942, 942, 0, 0, 0, 0, 0, 0, 0,
3193 0, 23, 24, 25, 26, 126, 126, 0, 0, 292,
3194 0, 0, 0, 0, 0, 227, 0, 32, 33, 34,
3195 80, 80, 0, 0, 0, 80, 80, 41, 42, 43,
3196 44, 45, 0, 0, 80, 0, 776, 292, 0, 80,
3197 80, 1167, 0, 0, 0, 91, 0, 0, 0, 0,
3198 397, 407, 407, 0, 91, 80, 0, 0, 0, 0,
3199 0, 0, 941, 91, 0, 0, 0, 0, 0, 0,
3200 0, 0, 0, 0, 0, 0, 0, 0, 1199, 58,
3201 59, 60, 61, 62, 63, 64, 65, 66, 0, 102,
3202 0, 0, 0, 0, 80, 0, 0, 80, 0, 0,
3203 0, 0, 80, 0, 0, 0, 0, 0, 0, 0,
3204 277, 0, 102, 0, 102, 102, 283, 0, 102, 0,
3205 102, 942, 942, 0, 102, 942, 102, 80, 91, 0,
3206 91, 0, 0, 0, 0, 0, 0, 0, 0, 91,
3207 102, 91, 942, 0, 0, 0, 0, 0, 80, 0,
3208 0, 1243, 0, 0, 0, 0, 528, 80, 529, 530,
3209 531, 532, 533, 0, 126, 0, 80, 0, 0, 0,
3210 0, 0, 0, 0, 0, 80, 0, 0, 0, 227,
3211 0, 0, 534, 0, 0, 227, 227, 0, 943, 943,
3212 102, 102, 102, 102, 102, 102, 102, 102, 0, 126,
3213 0, 126, 0, 0, 0, 0, 536, 0, 0, 0,
3214 0, 0, 537, 538, 539, 126, 0, 102, 0, 0,
3215 0, 0, 0, 91, 0, 0, 0, 0, 0, 0,
3216 0, 0, 0, 0, 0, 0, 292, 0, 0, 0,
3217 80, 0, 80, 0, 0, 0, 540, 0, 0, 541,
3218 0, 80, 0, 80, 102, 0, 102, 942, 0, 0,
3219 942, 102, 102, 102, 432, 126, 242, 434, 435, 436,
3220 126, 0, 0, 0, 942, 942, 942, 102, 0, 942,
3221 942, 0, 0, 0, 942, 942, 0, 0, 0, 344,
3222 0, 80, 126, 292, 0, 0, 0, 80, 80, 0,
3223 0, 0, 0, 0, 944, 944, 942, 0, 0, 0,
3224 0, 0, 0, 0, 0, 0, 0, 0, 943, 943,
3225 0, 0, 943, 102, 0, 0, 0, 0, 0, 0,
3226 0, 126, 0, 0, 0, 80, 126, 0, 126, 943,
3227 0, 0, 345, 346, 347, 348, 349, 350, 351, 352,
3228 353, 354, 355, 356, 357, 0, 0, 0, 102, 358,
3229 359, 0, 0, 0, 0, 360, 0, 76, 0, 0,
3230 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
3231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3232 528, 0, 529, 530, 531, 532, 533, 0, 0, 0,
3233 361, 0, 362, 363, 364, 365, 366, 367, 368, 369,
3234 370, 371, 0, 0, 0, 0, 534, 0, 76, 76,
3235 942, 0, 285, 0, 0, 942, 942, 0, 0, 0,
3236 535, 0, 0, 126, 944, 944, 0, 0, 944, 0,
3237 536, 102, 102, 0, 102, 102, 537, 538, 539, 0,
3238 285, 292, 0, 102, 943, 944, 0, 943, 0, 102,
3239 0, 0, 0, 285, 285, 285, 0, 0, 0, 0,
3240 0, 943, 943, 943, 0, 0, 943, 943, 0, 0,
3241 540, 943, 943, 541, 345, 346, 347, 348, 349, 350,
3242 351, 352, 0, 354, 355, 665, 667, 0, 0, 942,
3243 0, 358, 359, 943, 277, 102, 0, 102, 0, 0,
3244 0, 0, 0, 0, 0, 102, 0, 126, 0, 0,
3245 126, 0, 0, 0, 0, 102, 0, 102, 102, 0,
3246 0, 292, 0, 0, 777, 102, 102, 945, 945, 0,
3247 667, 0, 0, 277, 362, 363, 364, 365, 366, 367,
3248 368, 369, 370, 371, 0, 0, 0, 0, 0, 0,
3249 0, 0, 0, 102, 0, 0, 0, 0, 0, 0,
3250 944, 0, 0, 944, 0, 0, 0, 76, 0, 0,
3251 126, 0, 126, 0, 0, 0, 0, 944, 944, 944,
3252 0, 0, 944, 944, 0, 0, 0, 944, 944, 0,
3253 0, 0, 126, 0, 0, 0, 733, 0, 0, 0,
3254 777, 777, 76, 0, 76, 0, 0, 943, 0, 944,
3255 0, 0, 943, 943, 0, 0, 0, 0, 76, 77,
3256 761, 946, 946, 0, 0, 0, 773, 0, 0, 0,
3257 0, 0, 0, 0, 0, 0, 0, 0, 0, 285,
3258 292, 0, 0, 0, 0, 0, 0, 0, 0, 860,
3259 0, 0, 0, 0, 0, 0, 0, 945, 945, 0,
3260 0, 945, 0, 0, 0, 0, 0, 0, 76, 0,
3261 77, 77, 0, 76, 286, 0, 0, 0, 945, 0,
3262 0, 0, 0, 0, 0, 102, 943, 102, 102, 0,
3263 0, 0, 0, 0, 0, 76, 285, 0, 0, 0,
3264 0, 0, 286, 0, 0, 837, 0, 0, 0, 292,
3265 838, 0, 0, 0, 0, 286, 286, 286, 0, 0,
3266 0, 0, 0, 944, 0, 667, 0, 277, 944, 944,
3267 0, 0, 0, 0, 76, 0, 0, 0, 0, 76,
3268 0, 76, 0, 0, 0, 0, 0, 0, 0, 0,
3269 0, 946, 946, 0, 0, 946, 0, 0, 0, 0,
3270 126, 0, 0, 126, 102, 0, 102, 0, 0, 0,
3271 102, 0, 946, 872, 0, 0, 0, 0, 0, 0,
3272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3273 0, 0, 0, 945, 0, 0, 945, 0, 0, 0,
3274 0, 0, 944, 895, 0, 0, 0, 0, 0, 0,
3275 945, 945, 945, 0, 0, 945, 945, 0, 102, 102,
3276 945, 945, 0, 102, 102, 0, 0, 0, 0, 77,
3277 0, 667, 102, 0, 0, 0, 76, 102, 102, 126,
3278 959, 126, 945, 0, 0, 0, 0, 0, 0, 0,
3279 0, 0, 0, 102, 285, 981, 0, 0, 0, 0,
3280 0, 0, 0, 0, 77, 0, 77, 0, 0, 0,
3281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3282 77, 0, 0, 0, 0, 0, 0, 946, 0, 0,
3283 946, 0, 102, 777, 777, 102, 122, 0, 777, 777,
3284 102, 286, 0, 0, 946, 946, 946, 126, 0, 946,
3285 946, 0, 126, 0, 946, 946, 0, 0, 0, 0,
3286 76, 0, 0, 76, 0, 102, 0, 0, 126, 0,
3287 77, 0, 0, 0, 285, 77, 946, 76, 0, 0,
3288 1030, 0, 0, 0, 0, 0, 102, 122, 122, 0,
3289 0, 290, 0, 0, 0, 102, 945, 77, 286, 0,
3290 0, 945, 945, 0, 102, 0, 0, 126, 0, 0,
3291 126, 0, 0, 102, 0, 777, 0, 0, 0, 290,
3292 0, 0, 0, 76, 0, 76, 0, 0, 0, 0,
3293 0, 0, 395, 405, 405, 405, 77, 0, 0, 0,
3294 0, 77, 0, 77, 0, 76, 0, 0, 0, 0,
3295 0, 0, 0, 76, 76, 0, 0, 0, 87, 0,
3296 0, 777, 0, 0, 1095, 0, 1170, 0, 0, 0,
3297 126, 0, 0, 0, 0, 945, 0, 0, 102, 126,
3298 102, 0, 0, 0, 0, 277, 0, 0, 126, 102,
3299 946, 102, 0, 285, 0, 946, 946, 0, 0, 0,
3300 0, 0, 528, 407, 529, 530, 531, 532, 533, 87,
3301 87, 0, 0, 1130, 0, 0, 0, 0, 0, 0,
3302 0, 0, 0, 0, 0, 0, 0, 0, 534, 102,
3303 0, 0, 0, 125, 0, 102, 102, 0, 77, 0,
3304 0, 0, 535, 0, 0, 0, 122, 0, 0, 0,
3305 0, 0, 536, 126, 392, 126, 286, 0, 537, 538,
3306 539, 0, 285, 0, 126, 0, 126, 0, 0, 946,
3307 0, 0, 0, 102, 0, 0, 407, 0, 0, 0,
3308 1177, 122, 0, 122, 125, 125, 0, 0, 0, 0,
3309 0, 0, 540, 0, 0, 541, 0, 122, 0, 0,
3310 0, 0, 0, 0, 0, 0, 0, 852, 0, 0,
3311 0, 0, 0, 76, 0, 0, 76, 0, 290, 0,
3312 0, 0, 77, 0, 0, 77, 0, 0, 0, 0,
3313 0, 0, 0, 0, 0, 0, 286, 0, 0, 77,
3314 0, 0, 0, 0, 0, 0, 0, 122, 126, 0,
3315 0, 0, 122, 0, 0, 0, 0, 0, 0, 0,
3316 1230, 0, 0, 0, 0, 0, 0, 0, 87, 0,
3317 0, 0, 0, 0, 122, 290, 0, 0, 0, 0,
3318 0, 0, 0, 0, 0, 77, 0, 77, 0, 0,
3319 901, 0, 76, 0, 76, 0, 0, 0, 0, 0,
3320 0, 0, 0, 87, 0, 87, 0, 77, 0, 0,
3321 0, 0, 0, 122, 0, 77, 77, 0, 122, 87,
3322 122, 0, 0, 0, 345, 346, 347, 348, 349, 350,
3323 351, 352, 353, 354, 355, 356, 357, 0, 0, 0,
3324 0, 358, 359, 125, 0, 0, 76, 76, 0, 0,
3325 0, 76, 76, 0, 0, 286, 0, 0, 0, 0,
3326 76, 0, 0, 0, 0, 76, 0, 0, 0, 87,
3327 0, 0, 0, 0, 87, 0, 0, 0, 125, 0,
3328 125, 76, 361, 0, 362, 363, 364, 365, 366, 367,
3329 368, 369, 370, 371, 125, 0, 87, 0, 0, 0,
3330 0, -272, 0, 0, 0, 0, 0, 0, 0, 0,
3331 0, 0, 0, 0, 0, 122, 0, 0, 0, 0,
3332 76, 0, 0, 76, 286, 0, 0, 0, 76, 0,
3333 0, 0, 0, 290, 0, 87, 0, 0, 0, 0,
3334 87, 0, 87, 0, 125, 0, 0, 0, 0, 125,
3335 0, 0, 0, 0, 0, 0, 0, 0, 0, 345,
3336 -783, -783, -783, -783, 350, 351, 0, 0, -783, -783,
3337 0, 125, 0, 0, 76, 77, 358, 359, 77, 285,
3338 0, 0, 0, 76, 0, 0, 0, 0, 0, 0,
3339 0, 0, 76, 0, 0, 0, 0, 0, 0, 122,
3340 0, 76, 122, 0, 0, 0, 0, 0, 0, 0,
3341 125, 0, 0, 290, 0, 125, 285, 125, 0, 362,
3342 363, 364, 365, 366, 367, 368, 369, 370, 371, 0,
3343 345, 346, 347, 348, 349, 350, 351, 87, 0, 354,
3344 355, 0, 0, 0, 0, 0, 0, 358, 359, 0,
3345 0, 0, 0, 0, 77, 0, 77, 0, 0, 0,
3346 0, 0, 122, 0, 122, 0, 76, 0, 76, 0,
3347 0, 0, 0, 0, 0, 0, 0, 76, 0, 76,
3348 0, 0, 0, 0, 122, 0, 0, 0, 0, 285,
3349 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
3350 0, 0, 0, 0, 0, 0, 0, 0, 77, 77,
3351 0, 0, 125, 77, 77, 0, 0, 0, 0, 0,
3352 0, 87, 77, 0, 87, 0, 0, 77, 887, 0,
3353 0, 0, 290, 0, 0, 0, 0, 0, 771, 0,
3354 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
3355 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3356 0, 76, 345, 346, 347, 348, 349, 350, 351, 352,
3357 353, 354, 355, 356, 357, 0, 0, 0, 0, 358,
3358 359, 0, 77, 0, 87, 77, 87, 0, 0, 0,
3359 77, 0, 0, 0, 0, 0, 125, 0, 0, 125,
3360 0, 290, 0, 0, 0, 0, 87, 0, 0, 0,
3361 0, 0, 0, 125, 771, 771, 0, 0, 0, 0,
3362 361, 0, 362, 363, 364, 365, 366, 367, 368, 369,
3363 370, 371, 0, 0, 0, 0, 77, 0, 0, 0,
3364 0, 286, 0, 0, 0, 77, 0, 0, 0, 0,
3365 0, 0, 122, 0, 77, 122, 0, -782, 0, 125,
3366 0, 125, 0, 77, 0, -782, -782, -782, 890, 0,
3367 -782, -782, -782, 0, -782, 0, 0, 0, 286, 0,
3368 0, 125, -782, -782, -782, 0, 0, 0, 0, 125,
3369 125, 0, 0, 0, -782, -782, 0, -782, -782, -782,
3370 -782, -782, 345, 346, 347, 348, 349, 350, 351, 352,
3371 353, 354, 355, 356, 357, 0, 0, 0, 0, 358,
3372 359, 0, 0, 0, 0, -782, -782, 0, 77, 0,
3373 77, 122, 0, 122, 0, 0, 0, 0, 0, 77,
3374 0, 77, 0, 0, 0, 901, 0, 0, 0, 0,
3375 0, 286, 0, 0, -782, -782, 0, 0, 0, 0,
3376 361, 0, 362, 363, 364, 365, 366, 367, 368, 369,
3377 370, 371, 0, 0, 87, 0, 0, 87, -782, 345,
3378 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
3379 356, 357, 0, 0, 0, 0, 358, 359, 0, 122,
3380 0, 0, 0, 0, 122, 0, 0, 0, 0, -782,
3381 -782, 0, 0, 0, 238, -782, 0, -782, 0, -782,
3382 122, 0, 0, 77, 0, 0, 0, 0, 0, 0,
3383 0, 0, 0, 222, 222, 0, 0, 361, 0, 362,
3384 363, 364, 365, 366, 367, 368, 369, 370, 371, 125,
3385 0, 0, 125, 87, 0, 87, 0, 0, 0, 122,
3386 0, 0, 122, 0, 0, 255, 258, 259, 260, 0,
3387 0, 0, 222, 222, 0, 0, 0, 0, 0, 0,
3388 0, 0, 0, 0, 0, 307, 308, 0, 0, 0,
3389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3390 0, 0, 0, 0, 0, 0, 0, 771, 771, 0,
3391 0, 0, 771, 771, 0, 0, 0, 0, 1168, 222,
3392 0, 87, 122, 0, 0, 0, 87, 0, 125, 0,
3393 125, 122, 0, 0, 0, 0, 0, 0, 0, 0,
3394 122, 0, 87, 0, 0, 0, 0, 0, 0, 0,
3395 0, 0, 0, 0, 0, 405, 0, 0, 0, 0,
3396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3398 0, 87, 125, 125, 87, 0, 0, 125, 125, 771,
3399 0, 0, 0, 0, 0, 0, 125, 0, 0, 0,
3400 0, 125, 0, 0, 0, 122, 0, 122, 0, 0,
3401 0, 0, 0, 0, 0, 0, 122, 125, 122, 0,
3402 0, 0, 0, 0, 0, 0, 0, 222, 405, 0,
3403 222, 222, 222, 0, 307, 771, 0, 0, 0, 0,
3404 1166, 0, 0, 0, 87, 0, 0, 0, 0, 0,
3405 0, 0, 222, 87, 222, 222, 125, 0, 0, 125,
3406 0, 0, 87, 0, 125, 0, 0, 0, 0, 0,
3407 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3408 0, 0, 0, 0, 345, 346, 347, 348, 349, 350,
3409 351, 352, 353, 354, 355, 356, 357, 0, 0, 0,
3410 122, 358, 359, 0, 0, 0, 0, 0, 0, 0,
3411 125, 0, 0, 0, 0, 0, 0, 0, 0, 125,
3412 0, 0, 0, 0, 0, 0, 0, 87, 125, 87,
3413 0, 0, 0, 0, 0, 0, 0, 125, 87, 0,
3414 87, 0, 361, 0, 362, 363, 364, 365, 366, 367,
3415 368, 369, 370, 371, 0, 0, 0, 0, 0, 0,
3416 0, 0, 584, 585, 586, 587, 588, 0, 242, 589,
3417 590, 591, 592, 593, 594, 595, 596, 0, 598, 0,
3418 0, 599, 600, 601, 602, 603, 604, 605, 606, 607,
3419 608, 0, 0, 0, 222, 0, 0, 0, 0, 0,
3420 0, 0, 125, 0, 125, 0, 0, 0, 0, 0,
3421 0, 0, 0, 125, 0, 125, 0, 0, 0, 0,
3422 0, 0, 87, 0, 0, 0, 0, 0, 0, 0,
3423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3425 0, 0, 0, 0, 0, 0, 0, 0, 222, 222,
3426 0, 0, 0, 222, 0, 0, 0, 222, 0, 0,
3427 0, 0, 0, 260, 0, 0, 0, 0, 0, 0,
3428 0, 0, 0, 0, 0, 0, 0, 0, 687, 0,
3429 0, 0, 0, 0, 0, 0, 0, 125, 0, 0,
3430 0, 0, 0, 222, 0, 0, 222, 0, 0, 0,
3431 0, 0, 0, 0, 0, 0, 0, 0, 222, 0,
3432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3433 0, 0, 0, 0, 0, 717, 0, 0, 0, 0,
3434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3435 0, 0, 0, 0, 0, -782, 4, 0, 5, 6,
3436 7, 8, 9, 0, 0, 0, 10, 11, 0, 222,
3437 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3438 0, 745, 0, 0, 749, 20, 21, 22, 23, 24,
3439 25, 26, 0, 222, 27, 0, 0, 0, 0, 772,
3440 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
3441 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3442 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3443 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3444 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3445 0, 0, 0, 0, 52, 222, 0, 53, 54, 0,
3446 55, 56, 0, 57, 0, 222, 58, 59, 60, 61,
3447 62, 63, 64, 65, 66, 832, 832, 0, 222, 745,
3448 749, 832, 0, 222, 0, 0, 0, 0, 0, 0,
3449 0, 0, 832, 832, 0, 0, 0, 0, 222, 0,
3450 222, 0, 0, 67, 68, 69, 0, 0, 0, 832,
3451 -760, 0, 0, 0, 0, -782, 0, -782, -760, -760,
3452 -760, 0, 0, -760, -760, -760, 0, -760, 0, 0,
3453 0, 0, 0, 0, 0, -760, -760, -760, -760, -760,
3454 0, 0, 0, 0, 0, 0, 222, -760, -760, 0,
3455 -760, -760, -760, -760, -760, 0, 0, 0, 0, 0,
3456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3457 0, 0, 0, 0, 0, 0, 222, 0, -760, -760,
3458 0, 0, 0, 0, 0, 0, 0, 0, -760, -760,
3459 -760, -760, -760, -760, -760, -760, -760, -760, -760, -760,
3460 -760, 0, 0, 0, 222, -760, -760, -760, -760, 0,
3461 840, -760, 0, 222, 0, 0, 0, -760, 0, 0,
3462 0, 0, 0, 0, 0, 0, 0, 0, 222, 0,
3463 0, -760, 0, 0, -760, 0, 0, 0, 0, 0,
3464 0, 0, 0, 0, 0, -126, -760, -760, -760, -760,
3465 -760, -760, -760, -760, -760, -760, -760, -760, 0, 0,
3466 0, 0, -760, -760, -760, -760, 0, 0, -760, -760,
3467 -760, 0, -760, 345, 346, 347, 348, 349, 350, 351,
3468 352, 353, 354, 355, 356, 357, 0, 0, 0, 0,
3469 358, 359, 0, 0, 0, 0, 0, 0, 0, 0,
3470 0, 0, 0, 1020, 1021, 0, 1022, 1023, 0, 0,
3471 0, 0, 0, 222, 0, 0, 0, 0, 1034, 0,
3472 222, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3473 0, 361, 0, 362, 363, 364, 365, 366, 367, 368,
3474 369, 370, 371, 0, 0, 0, 0, 0, 0, 0,
3475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3476 0, 0, 0, 0, 0, 0, 0, 1074, 832, 832,
3477 0, 0, 0, 832, 832, 0, 0, 0, 0, 0,
3478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3479 0, 0, 0, 0, -653, 0, 0, 222, 0, 0,
3480 0, 0, -653, -653, -653, 0, 0, -653, -653, -653,
3481 0, -653, 832, 832, 0, 832, 832, 0, 222, -653,
3482 0, -653, -653, -653, 0, 0, 0, 0, 0, 0,
3483 0, -653, -653, 0, -653, -653, -653, -653, -653, 0,
3484 0, 0, 0, 0, 0, 0, 222, 0, 0, 0,
3485 832, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3486 0, 0, -653, -653, 0, 0, 0, 0, 0, 0,
3487 0, 0, -653, -653, -653, -653, -653, -653, -653, -653,
3488 -653, -653, -653, -653, -653, 0, 0, 0, 0, -653,
3489 -653, -653, -653, 0, -653, -653, 832, 0, 0, 0,
3490 0, -653, 0, 0, 0, 0, 0, 0, 0, 0,
3491 0, 0, 0, 222, 0, -653, 0, 0, -653, 832,
3492 0, 0, 0, 0, 0, 0, 0, 0, 0, -653,
3493 -653, -653, -653, -653, -653, -653, -653, -653, -653, -653,
3494 -653, -653, 0, 0, 0, 0, 0, -653, -653, -653,
3495 0, 0, -653, -653, -653, 0, -653, 0, 0, 0,
3496 0, 0, -654, 0, 0, 0, 0, 0, 0, 0,
3497 -654, -654, -654, 0, 0, -654, -654, -654, 0, -654,
3498 0, 0, 0, 0, 0, 0, 0, -654, 0, -654,
3499 -654, -654, 0, 222, 0, 0, 0, 0, 0, -654,
3500 -654, 0, -654, -654, -654, -654, -654, 0, 0, 0,
3501 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
3502 355, -783, -783, 0, 0, 0, 0, 358, 359, 0,
3503 -654, -654, 0, 0, 0, 0, 0, 0, 0, 222,
3504 -654, -654, -654, -654, -654, -654, -654, -654, -654, -654,
3505 -654, -654, -654, 0, 0, 0, 0, -654, -654, -654,
3506 -654, 0, -654, -654, 0, 0, 0, 0, 0, -654,
3507 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
3508 0, 0, 0, -654, 0, 0, -654, 0, 0, 0,
3509 0, 0, 0, 0, 0, 0, 0, -654, -654, -654,
3510 -654, -654, -654, -654, -654, -654, -654, -654, -654, -654,
3511 0, 0, 0, 0, 0, -654, -654, -654, -761, 0,
3512 -654, -654, -654, 0, -654, 0, -761, -761, -761, 0,
3513 0, -761, -761, -761, 0, -761, 0, 0, 0, 0,
3514 0, 0, 0, -761, -761, -761, -761, -761, 0, 0,
3515 0, 0, 0, 0, 0, -761, -761, 0, -761, -761,
3516 -761, -761, -761, 0, 0, 0, 0, 0, 0, 0,
3517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3518 0, 0, 0, 0, 0, 0, -761, -761, 0, 0,
3519 0, 0, 0, 0, 0, 0, -761, -761, -761, -761,
3520 -761, -761, -761, -761, -761, -761, -761, -761, -761, 0,
3521 0, 0, 0, -761, -761, -761, -761, 0, 0, -761,
3522 0, 0, 0, 0, 0, -761, 0, 0, 0, 0,
3523 0, 0, 0, 0, 0, 0, 0, 0, 0, -761,
3524 0, 0, -761, 0, 0, 0, 0, 0, 0, 0,
3525 0, 0, 0, 0, -761, -761, -761, -761, -761, -761,
3526 -761, -761, -761, -761, -761, -761, 0, 0, 0, 0,
3527 -761, -761, -761, -761, -762, 0, -761, -761, -761, 0,
3528 -761, 0, -762, -762, -762, 0, 0, -762, -762, -762,
3529 0, -762, 0, 0, 0, 0, 0, 0, 0, -762,
3530 -762, -762, -762, -762, 0, 0, 0, 0, 0, 0,
3531 0, -762, -762, 0, -762, -762, -762, -762, -762, 0,
3532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3534 0, 0, -762, -762, 0, 0, 0, 0, 0, 0,
3535 0, 0, -762, -762, -762, -762, -762, -762, -762, -762,
3536 -762, -762, -762, -762, -762, 0, 0, 0, 0, -762,
3537 -762, -762, -762, 0, 0, -762, 0, 0, 0, 0,
3538 0, -762, 0, 0, 0, 0, 0, 0, 0, 0,
3539 0, 0, 0, 0, 0, -762, 0, 0, -762, 0,
3540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3541 -762, -762, -762, -762, -762, -762, -762, -762, -762, -762,
3542 -762, -762, 0, 0, 0, 0, -762, -762, -762, -762,
3543 -329, 0, -762, -762, -762, 0, -762, 0, -329, -329,
3544 -329, 0, 0, -329, -329, -329, 0, -329, 0, 0,
3545 0, 0, 0, 0, 0, -329, 0, -329, -329, -329,
3546 0, 0, 0, 0, 0, 0, 0, -329, -329, 0,
3547 -329, -329, -329, -329, -329, 0, 0, 0, 0, 0,
3548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3549 0, 0, 0, 0, 0, 0, 0, 0, -329, -329,
3550 0, 0, 0, 0, 0, 0, 0, 0, -329, -329,
3551 -329, -329, -329, -329, -329, -329, -329, -329, -329, -329,
3552 -329, 0, 0, 0, 0, -329, -329, -329, -329, 0,
3553 841, -329, 0, 0, 0, 0, 0, -329, 0, 0,
3554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3555 0, -329, 0, 0, -329, 0, 0, 0, 0, 0,
3556 0, 0, 0, 0, 0, -128, -329, -329, -329, -329,
3557 -329, -329, -329, -329, -329, -329, -329, -329, 0, 0,
3558 0, 0, 0, -329, -329, -329, -470, 0, -329, -329,
3559 -329, 0, -329, 0, -470, -470, -470, 0, 0, -470,
3560 -470, -470, 0, -470, 0, 0, 0, 0, 0, 0,
3561 0, -470, -470, -470, -470, 0, 0, 0, 0, 0,
3562 0, 0, 0, -470, -470, 0, -470, -470, -470, -470,
3563 -470, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3565 0, 0, 0, 0, -470, -470, 0, 0, 0, 0,
3566 0, 0, 0, 0, -470, -470, -470, -470, -470, -470,
3567 -470, -470, -470, -470, -470, -470, -470, 0, 0, 0,
3568 0, -470, -470, -470, -470, 0, 0, -470, 0, 0,
3569 0, 0, 0, -470, 0, 0, 0, 0, 0, 0,
3570 0, 0, 0, 0, 0, 0, 0, -470, 0, 0,
3571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3572 0, 0, -470, 0, -470, -470, -470, -470, -470, -470,
3573 -470, -470, -470, -470, 0, 0, 0, 0, -470, -470,
3574 -470, -470, -321, 238, -470, -470, -470, 0, -470, 0,
3575 -321, -321, -321, 0, 0, -321, -321, -321, 0, -321,
3576 0, 0, 0, 0, 0, 0, 0, -321, 0, -321,
3577 -321, -321, 0, 0, 0, 0, 0, 0, 0, -321,
3578 -321, 0, -321, -321, -321, -321, -321, 0, 0, 0,
3579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3581 -321, -321, 0, 0, 0, 0, 0, 0, 0, 0,
3582 -321, -321, -321, -321, -321, -321, -321, -321, -321, -321,
3583 -321, -321, -321, 0, 0, 0, 0, -321, -321, -321,
3584 -321, 0, 0, -321, 0, 0, 0, 0, 0, -321,
3585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3586 0, 0, 0, -321, 0, 0, -321, 0, 0, 0,
3587 0, 0, 0, 0, 0, 0, 0, 0, -321, -321,
3588 -321, -321, -321, -321, -321, -321, -321, -321, -321, -321,
3589 0, 0, 0, 0, 0, -321, -321, -321, -782, 0,
3590 -321, -321, -321, 0, -321, 0, -782, -782, -782, 0,
3591 0, -782, -782, -782, 0, -782, 0, 0, 0, 0,
3592 0, 0, 0, -782, -782, -782, -782, 0, 0, 0,
3593 0, 0, 0, 0, 0, -782, -782, 0, -782, -782,
3594 -782, -782, -782, 0, 0, 0, 0, 0, 0, 0,
3595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3596 0, 0, 0, 0, 0, 0, -782, -782, 0, 0,
3597 0, 0, 0, 0, 0, 0, -782, -782, -782, -782,
3598 -782, -782, -782, -782, -782, -782, -782, -782, -782, 0,
3599 0, 0, 0, -782, -782, -782, -782, 0, 0, -782,
3600 0, 0, 0, 0, 0, -782, 0, 0, 0, 0,
3601 0, 0, 0, 0, 0, 0, 0, 0, 0, -782,
3602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3603 0, 0, 0, 0, -782, 0, -782, -782, -782, -782,
3604 -782, -782, -782, -782, -782, -782, 0, 0, 0, 0,
3605 -782, -782, -782, -782, -336, 238, -782, -782, -782, 0,
3606 -782, 0, -336, -336, -336, 0, 0, -336, -336, -336,
3607 0, -336, 0, 0, 0, 0, 0, 0, 0, -336,
3608 0, -336, -336, 0, 0, 0, 0, 0, 0, 0,
3609 0, -336, -336, 0, -336, -336, -336, -336, -336, 0,
3610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3611 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3612 0, 0, -336, -336, 0, 0, 0, 0, 0, 0,
3613 0, 0, -336, -336, -336, -336, -336, -336, -336, -336,
3614 -336, -336, -336, -336, -336, 0, 0, 0, 0, -336,
3615 -336, -336, -336, 0, 0, -336, 0, 0, 0, 0,
3616 0, -336, 0, 0, 0, 0, 0, 0, 0, 0,
3617 0, 0, 0, 0, 0, -336, 0, 0, 0, 0,
3618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3619 -336, 0, -336, -336, -336, -336, -336, -336, -336, -336,
3620 -336, -336, 0, 0, 0, 0, 0, -336, -336, -336,
3621 -760, 235, -336, -336, -336, 0, -336, 0, -760, -760,
3622 -760, 0, 0, 0, -760, -760, 0, -760, 0, 0,
3623 0, 0, 0, 0, 0, -760, -760, 0, 0, 0,
3624 0, 0, 0, 0, 0, 0, 0, -760, -760, 0,
3625 -760, -760, -760, -760, -760, 0, 0, 0, 0, 0,
3626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3627 0, 0, 0, 0, 0, 0, 0, 0, -760, -760,
3628 0, 0, 0, 0, 0, 0, 0, 0, -760, -760,
3629 -760, -760, -760, -760, -760, -760, -760, -760, -760, -760,
3630 -760, 0, 0, 0, 0, -760, -760, -760, -760, 0,
3631 781, -760, 0, 0, 0, 0, 0, 0, 0, 0,
3632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3633 0, -760, 0, 0, 0, 0, 0, 0, 0, 0,
3634 0, 0, 0, 0, 0, -126, -760, 0, -760, -760,
3635 -760, -760, -760, -760, -760, -760, -760, -760, 0, 0,
3636 0, 0, -760, -760, -760, -117, -760, 0, -760, 0,
3637 -760, 0, -760, 0, -760, -760, -760, 0, 0, 0,
3638 -760, -760, 0, -760, 0, 0, 0, 0, 0, 0,
3639 0, -760, -760, 0, 0, 0, 0, 0, 0, 0,
3640 0, 0, 0, -760, -760, 0, -760, -760, -760, -760,
3641 -760, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3643 0, 0, 0, 0, -760, -760, 0, 0, 0, 0,
3644 0, 0, 0, 0, -760, -760, -760, -760, -760, -760,
3645 -760, -760, -760, -760, -760, -760, -760, 0, 0, 0,
3646 0, -760, -760, -760, -760, 0, 781, -760, 0, 0,
3647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3648 0, 0, 0, 0, 0, 0, 0, -760, 0, 0,
3649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3650 0, -126, -760, 0, -760, -760, -760, -760, -760, -760,
3651 -760, -760, -760, -760, 0, 0, 0, 0, -760, -760,
3652 -760, -760, -329, 0, -760, 0, -760, 0, -760, 0,
3653 -329, -329, -329, 0, 0, 0, -329, -329, 0, -329,
3654 0, 0, 0, 0, 0, 0, 0, -329, 0, 0,
3655 0, 0, 0, 0, 0, 0, 0, 0, 0, -329,
3656 -329, 0, -329, -329, -329, -329, -329, 0, 0, 0,
3657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3659 -329, -329, 0, 0, 0, 0, 0, 0, 0, 0,
3660 -329, -329, -329, -329, -329, -329, -329, -329, -329, -329,
3661 -329, -329, -329, 0, 0, 0, 0, -329, -329, -329,
3662 -329, 0, 782, -329, 0, 0, 0, 0, 0, 0,
3663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3664 0, 0, 0, -329, 0, 0, 0, 0, 0, 0,
3665 0, 0, 0, 0, 0, 0, 0, -128, -329, 0,
3666 -329, -329, -329, -329, -329, -329, -329, -329, -329, -329,
3667 0, 0, 0, 0, 0, -329, -329, -119, -329, 0,
3668 -329, 0, -329, 0, -329, 0, -329, -329, -329, 0,
3669 0, 0, -329, -329, 0, -329, 0, 0, 0, 0,
3670 0, 0, 0, -329, 0, 0, 0, 0, 0, 0,
3671 0, 0, 0, 0, 0, -329, -329, 0, -329, -329,
3672 -329, -329, -329, 0, 0, 0, 0, 0, 0, 0,
3673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3674 0, 0, 0, 0, 0, 0, -329, -329, 0, 0,
3675 0, 0, 0, 0, 0, 0, -329, -329, -329, -329,
3676 -329, -329, -329, -329, -329, -329, -329, -329, -329, 0,
3677 0, 0, 0, -329, -329, -329, -329, 0, 782, -329,
3678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3679 0, 0, 0, 0, 0, 0, 0, 0, 0, -329,
3680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3681 0, 0, 0, -128, -329, 0, -329, -329, -329, -329,
3682 -329, -329, -329, -329, -329, -329, 0, 0, 0, 0,
3683 0, -329, -329, -329, 0, 0, -329, 0, -329, 4,
3684 -329, 5, 6, 7, 8, 9, -782, -782, -782, 10,
3685 11, 0, 0, -782, 12, 0, 13, 14, 15, 16,
3686 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3687 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3688 0, 0, 0, 28, 29, 262, 31, 32, 33, 34,
3689 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3690 44, 45, 46, 47, 0, 0, -782, 0, 0, 0,
3691 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3692 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3693 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3694 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3695 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3696 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
3697 -782, 10, 11, 0, -782, -782, 12, 0, 13, 14,
3698 15, 16, 17, 18, 19, 0, 67, 68, 69, 0,
3699 20, 21, 22, 23, 24, 25, 26, 0, -782, 27,
3700 -782, 0, 0, 0, 0, 28, 29, 262, 31, 32,
3701 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3702 42, 43, 44, 45, 46, 47, 0, 0, -782, 0,
3703 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3705 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3706 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3707 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3708 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
3709 0, 0, -782, 10, 11, 0, 0, -782, 12, -782,
3710 13, 14, 15, 16, 17, 18, 19, 0, 67, 68,
3711 69, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3712 -782, 27, -782, 0, 0, 0, 0, 28, 29, 262,
3713 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3714 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3715 -782, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3717 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3718 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3719 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3720 65, 66, 0, 0, 0, 4, 0, 5, 6, 7,
3721 8, 9, 0, 0, -782, 10, 11, 0, 0, -782,
3722 12, 0, 13, 14, 15, 16, 17, 18, 19, -782,
3723 67, 68, 69, 0, 20, 21, 22, 23, 24, 25,
3724 26, 0, -782, 27, -782, 0, 0, 0, 0, 28,
3725 29, 262, 31, 32, 33, 34, 35, 36, 37, 38,
3726 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3727 0, 0, -782, 0, 0, 0, 0, 0, 0, 0,
3728 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3729 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3730 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3731 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3732 63, 64, 65, 66, 0, 0, 0, 4, 0, 5,
3733 6, 7, 8, 9, 0, 0, -782, 10, 11, 0,
3734 0, -782, 12, 0, 13, 14, 15, 16, 17, 18,
3735 19, 0, 67, 68, 69, 0, 20, 21, 22, 23,
3736 24, 25, 26, 0, -782, 27, -782, 0, 0, 0,
3737 0, 28, 29, 262, 31, 32, 33, 34, 35, 36,
3738 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3739 46, 47, 0, 0, -782, 0, 0, 0, 0, 0,
3740 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3741 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3742 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3743 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3744 61, 62, 63, 64, 65, 66, 0, 0, 0, 4,
3745 0, 5, 6, 7, 8, 9, 0, -782, -782, 10,
3746 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
3747 17, 18, 19, 0, 67, 68, 69, 0, 20, 21,
3748 22, 23, 24, 25, 26, 0, -782, 27, -782, 0,
3749 0, 0, 0, 28, 29, 262, 31, 32, 33, 34,
3750 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3751 44, 45, 46, 47, 0, 0, -782, 0, 0, 0,
3752 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3753 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3754 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3755 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3756 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3757 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
3758 -782, 10, 11, 0, 0, 0, 12, 0, 13, 14,
3759 15, 16, 17, 18, 19, 0, 67, 68, 69, 0,
3760 20, 21, 22, 23, 24, 25, 26, 0, -782, 27,
3761 -782, 0, 0, 0, 0, 28, 29, 262, 31, 32,
3762 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3763 42, 43, 44, 45, 46, 47, 0, 0, -782, 0,
3764 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3766 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3767 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3768 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3769 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
3770 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3771 13, 14, 15, 16, 17, 18, 19, 0, 67, 68,
3772 69, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3773 -782, 27, -782, 0, 0, 0, 0, 28, 29, 262,
3774 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3775 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3776 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3777 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3778 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3779 0, 52, 0, 0, 263, 54, 0, 55, 56, 0,
3780 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3781 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3784 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
3785 -782, 0, -782, 4, -782, 5, 6, 7, 8, 9,
3786 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3787 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3788 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3789 0, 27, 0, 0, 0, 0, 0, 28, 29, 262,
3790 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3791 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3792 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3794 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3795 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3796 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3797 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3798 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3800 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
3801 -782, 0, -782, 4, -782, 5, 6, 7, 8, 9,
3802 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3803 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3804 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3805 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
3806 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3807 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3808 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3810 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3811 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3812 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3813 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3814 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3816 67, 68, 69, 0, 0, -782, 0, 0, 0, 0,
3817 0, 0, -782, 4, -782, 5, 6, 7, 8, 9,
3818 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3819 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3820 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3821 0, 27, 0, 0, 0, 0, 0, 28, 29, 262,
3822 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3823 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3824 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3826 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3827 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3828 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3829 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3832 67, 68, 69, 0, 0, -782, 0, 0, 0, 0,
3833 0, 0, -782, 4, -782, 5, 6, 7, 8, 9,
3834 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3835 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3836 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3837 0, 27, 0, 0, 0, 0, 0, 28, 29, 262,
3838 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3839 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3840 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3842 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3843 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3844 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3845 65, 66, 0, -782, 0, 4, 0, 5, 6, 7,
3846 8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
3847 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3848 67, 68, 69, 0, 20, 21, 22, 23, 24, 25,
3849 26, 0, -782, 27, -782, 0, 0, 0, 0, 28,
3850 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
3851 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3853 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3854 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3855 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3856 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3857 63, 64, 65, 66, 0, 0, 380, 0, 5, 6,
3858 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
3859 0, 12, -769, 13, 14, 15, 16, 17, 18, 19,
3860 0, 0, 67, 68, 69, 20, 21, 22, 23, 24,
3861 25, 26, -324, 0, 27, 0, -324, 0, 0, 0,
3862 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3863 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3864 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3865 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3866 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3867 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
3868 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3869 62, 63, 64, 65, 66, 0, 0, -770, 4, 0,
3870 5, 6, 7, 8, 9, 0, 0, 0, 10, 11,
3871 0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
3872 18, 19, 0, 67, 68, 69, 0, 20, 21, 22,
3873 23, 24, 25, 26, 0, 309, 27, 310, 0, 0,
3874 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
3875 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3876 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3877 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3878 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3879 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3880 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3881 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3884 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
3885 -770, 0, 0, 0, 0, 0, 4, 519, 5, 6,
3886 7, 8, 9, -770, -770, -770, 10, 11, 0, -770,
3887 -770, 12, -770, 13, 14, 15, 16, 17, 18, 19,
3888 -770, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3889 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3890 28, 29, 262, 31, 32, 33, 34, 35, 36, 37,
3891 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3892 47, 0, 0, -770, 0, 0, 0, 0, 0, 0,
3893 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3894 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3895 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3896 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3897 62, 63, 64, 65, 66, 0, -770, 0, 0, 0,
3898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3900 0, 0, 0, 67, 68, 69, 0, 0, -770, 0,
3901 5, 6, 7, -770, 9, 519, 0, 0, 10, 11,
3902 0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
3903 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3904 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3905 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3906 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
3907 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3908 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3909 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3910 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
3911 54, 0, 55, 56, 0, 213, 214, 215, 58, 59,
3912 216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3913 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3914 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
3915 17, 18, 19, 0, 0, 67, 217, 69, 20, 21,
3916 22, 23, 24, 25, 26, 0, 0, 27, 0, 242,
3917 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3918 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3919 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3920 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3921 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3922 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3923 212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3924 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3925 0, 0, 129, 130, 131, 132, 133, 134, 135, 136,
3926 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
3927 147, 148, 149, 150, 151, 152, 67, 68, 69, 153,
3928 154, 155, 409, 410, 411, 412, 160, 161, 162, 0,
3929 242, 0, 0, 0, 163, 164, 165, 166, 413, 414,
3930 415, 416, 171, 37, 38, 417, 40, 0, 0, 0,
3931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3932 0, 0, 0, 0, 0, 173, 174, 175, 176, 177,
3933 178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
3934 0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
3935 0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
3936 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3938 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
3939 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
3940 0, 0, 0, 0, 0, 202, 418, 129, 130, 131,
3941 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
3942 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
3943 152, 0, 0, 0, 153, 154, 155, 156, 157, 158,
3944 159, 160, 161, 162, 0, 0, 0, 0, 0, 163,
3945 164, 165, 166, 167, 168, 169, 170, 171, 37, 38,
3946 172, 40, 0, 0, 0, 0, 0, 0, 0, 0,
3947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3948 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
3949 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
3950 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3951 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
3952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3954 0, 0, 190, 191, 192, 193, 194, 195, 196, 197,
3955 198, 199, 0, 200, 201, 0, 0, 0, 0, 0,
3956 202, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3957 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3958 148, 149, 150, 151, 152, 0, 0, 0, 153, 154,
3959 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
3960 0, 0, 0, 163, 164, 165, 166, 167, 168, 169,
3961 170, 171, 244, 0, 172, 0, 0, 0, 0, 0,
3962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3963 0, 0, 0, 0, 173, 174, 175, 176, 177, 178,
3964 179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
3965 0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
3966 0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
3967 59, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3969 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
3970 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
3971 0, 0, 0, 0, 202, 129, 130, 131, 132, 133,
3972 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
3973 144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
3974 0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
3975 161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
3976 166, 167, 168, 169, 170, 171, 0, 0, 172, 0,
3977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3978 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
3979 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
3980 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
3981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3982 188, 189, 0, 0, 59, 0, 0, 0, 0, 0,
3983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3985 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
3986 0, 200, 201, 0, 0, 0, 0, 0, 202, 129,
3987 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
3988 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
3989 150, 151, 152, 0, 0, 0, 153, 154, 155, 156,
3990 157, 158, 159, 160, 161, 162, 0, 0, 0, 0,
3991 0, 163, 164, 165, 166, 167, 168, 169, 170, 171,
3992 0, 0, 172, 0, 0, 0, 0, 0, 0, 0,
3993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3994 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
3995 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
3996 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
3997 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
3998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4000 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4001 196, 197, 198, 199, 0, 200, 201, 5, 6, 7,
4002 0, 9, 202, 0, 0, 10, 11, 0, 0, 0,
4003 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
4004 0, 0, 0, 0, 20, 252, 253, 23, 24, 25,
4005 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
4006 281, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4007 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4011 0, 0, 0, 282, 0, 0, 212, 54, 0, 55,
4012 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
4013 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
4014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4015 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4016 0, 0, 283, 10, 11, 0, 0, 0, 12, 284,
4017 13, 14, 15, 250, 251, 18, 19, 0, 0, 0,
4018 0, 0, 20, 252, 253, 23, 24, 25, 26, 0,
4019 0, 209, 0, 0, 0, 0, 0, 0, 281, 0,
4020 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4021 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4022 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4024 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4025 0, 282, 0, 0, 212, 54, 0, 55, 56, 0,
4026 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4027 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4029 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
4030 283, 10, 11, 0, 0, 0, 12, 579, 13, 14,
4031 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
4032 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
4033 0, 0, 0, 0, 0, 28, 29, 0, 31, 32,
4034 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4035 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4036 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4038 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
4039 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
4040 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4041 0, 0, 380, 0, 5, 6, 7, 0, 9, 0,
4042 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4043 14, 15, 16, 17, 18, 19, 0, 0, 67, 68,
4044 69, 20, 21, 22, 23, 24, 25, 26, 0, 0,
4045 27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
4046 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4047 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4048 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4050 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4051 211, 0, 0, 212, 54, 0, 55, 56, 0, 0,
4052 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4053 66, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4054 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4055 13, 14, 15, 16, 17, 18, 19, 0, 0, 67,
4056 68, 69, 20, 21, 22, 23, 24, 25, 26, 0,
4057 0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
4058 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4059 210, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4060 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4062 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4063 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
4064 213, 214, 215, 58, 59, 216, 61, 62, 63, 64,
4065 65, 66, 0, 0, 0, 0, 5, 6, 7, 0,
4066 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4067 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
4068 67, 217, 69, 20, 21, 22, 23, 24, 25, 26,
4069 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
4070 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4071 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
4072 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4073 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4074 0, 0, 0, 0, 50, 456, 0, 0, 0, 0,
4075 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
4076 0, 213, 214, 215, 58, 59, 216, 61, 62, 63,
4077 64, 65, 66, 0, 0, 0, 0, 5, 6, 7,
4078 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4079 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
4080 0, 67, 217, 69, 20, 252, 253, 23, 24, 25,
4081 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
4082 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4083 39, 40, 210, 41, 42, 43, 44, 45, 46, 47,
4084 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4085 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4086 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4087 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
4088 56, 0, 666, 214, 215, 58, 59, 216, 61, 62,
4089 63, 64, 65, 66, 0, 0, 0, 0, 5, 6,
4090 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4091 0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
4092 0, 0, 67, 217, 69, 20, 252, 253, 23, 24,
4093 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4094 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
4095 38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
4096 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4097 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
4098 0, 0, 0, 0, 0, 0, 50, 456, 0, 0,
4099 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
4100 55, 56, 0, 666, 214, 215, 58, 59, 216, 61,
4101 62, 63, 64, 65, 66, 0, 0, 0, 0, 5,
4102 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4103 0, 0, 12, 0, 13, 14, 15, 250, 251, 18,
4104 19, 0, 0, 67, 217, 69, 20, 252, 253, 23,
4105 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
4106 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4107 37, 38, 39, 40, 210, 41, 42, 43, 44, 45,
4108 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4109 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4110 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4111 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
4112 0, 55, 56, 0, 213, 214, 0, 58, 59, 216,
4113 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4114 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4115 0, 0, 0, 12, 0, 13, 14, 15, 250, 251,
4116 18, 19, 0, 0, 67, 217, 69, 20, 252, 253,
4117 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
4118 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
4119 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
4120 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4121 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
4122 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
4123 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
4124 54, 0, 55, 56, 0, 0, 214, 215, 58, 59,
4125 216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4126 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4127 11, 0, 0, 0, 12, 0, 13, 14, 15, 250,
4128 251, 18, 19, 0, 0, 67, 217, 69, 20, 252,
4129 253, 23, 24, 25, 26, 0, 0, 209, 0, 0,
4130 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
4131 35, 36, 37, 38, 39, 40, 210, 41, 42, 43,
4132 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4133 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4134 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4135 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
4136 212, 54, 0, 55, 56, 0, 666, 214, 0, 58,
4137 59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
4138 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4139 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4140 250, 251, 18, 19, 0, 0, 67, 217, 69, 20,
4141 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
4142 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
4143 34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
4144 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4145 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
4146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4147 50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
4148 0, 212, 54, 0, 55, 56, 0, 0, 214, 0,
4149 58, 59, 216, 61, 62, 63, 64, 65, 66, 0,
4150 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4151 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4152 15, 16, 17, 18, 19, 0, 0, 67, 217, 69,
4153 20, 21, 22, 23, 24, 25, 26, 0, 0, 209,
4154 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4155 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4156 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4157 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4159 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
4160 0, 0, 212, 54, 0, 55, 56, 0, 759, 0,
4161 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4162 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4163 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4164 14, 15, 250, 251, 18, 19, 0, 0, 67, 217,
4165 69, 20, 252, 253, 23, 24, 25, 26, 0, 0,
4166 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
4167 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4168 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4169 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4171 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4172 211, 0, 0, 212, 54, 0, 55, 56, 0, 759,
4173 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4174 66, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4175 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4176 13, 14, 15, 250, 251, 18, 19, 0, 0, 67,
4177 217, 69, 20, 252, 253, 23, 24, 25, 26, 0,
4178 0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
4179 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4180 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4181 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4183 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4184 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
4185 980, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4186 65, 66, 0, 0, 0, 0, 5, 6, 7, 0,
4187 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4188 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
4189 67, 217, 69, 20, 252, 253, 23, 24, 25, 26,
4190 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
4191 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4192 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4193 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4194 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4195 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
4196 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
4197 0, 1029, 0, 0, 58, 59, 60, 61, 62, 63,
4198 64, 65, 66, 0, 0, 0, 0, 5, 6, 7,
4199 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4200 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
4201 0, 67, 217, 69, 20, 252, 253, 23, 24, 25,
4202 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
4203 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4204 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4206 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4207 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4208 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
4209 56, 0, 1176, 0, 0, 58, 59, 60, 61, 62,
4210 63, 64, 65, 66, 0, 0, 0, 0, 5, 6,
4211 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4212 0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
4213 0, 0, 67, 217, 69, 20, 252, 253, 23, 24,
4214 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4215 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
4216 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4217 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4218 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
4219 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
4220 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
4221 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
4222 62, 63, 64, 65, 66, 0, 0, 0, 0, 5,
4223 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4224 0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
4225 19, 0, 0, 67, 217, 69, 20, 21, 22, 23,
4226 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
4227 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4228 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4229 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4230 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4231 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4232 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
4233 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
4234 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4235 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4236 0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
4237 18, 19, 0, 0, 67, 217, 69, 20, 21, 22,
4238 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
4239 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
4240 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4241 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4242 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
4243 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
4244 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
4245 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
4246 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4247 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4248 11, 0, 0, 0, 12, 0, 13, 14, 15, 250,
4249 251, 18, 19, 0, 0, 67, 68, 69, 20, 252,
4250 253, 23, 24, 25, 26, 0, 0, 209, 0, 0,
4251 0, 0, 0, 0, 281, 0, 0, 32, 33, 34,
4252 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4253 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4256 0, 0, 0, 0, 0, 0, 0, 282, 0, 0,
4257 340, 54, 0, 55, 56, 0, 341, 0, 0, 58,
4258 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4259 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4260 0, 0, 0, 12, 0, 13, 14, 15, 250, 251,
4261 18, 19, 0, 0, 0, 0, 283, 20, 252, 253,
4262 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
4263 0, 0, 0, 281, 0, 0, 32, 33, 34, 35,
4264 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4265 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4268 0, 0, 0, 0, 0, 0, 390, 0, 0, 53,
4269 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
4270 60, 61, 62, 63, 64, 65, 66, 0, 0, 5,
4271 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4272 0, 0, 12, 0, 13, 14, 15, 250, 251, 18,
4273 19, 0, 0, 0, 0, 283, 20, 252, 253, 23,
4274 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
4275 0, 0, 281, 0, 0, 32, 33, 34, 398, 36,
4276 37, 38, 399, 40, 0, 41, 42, 43, 44, 45,
4277 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4280 0, 400, 0, 0, 0, 401, 0, 0, 212, 54,
4281 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
4282 61, 62, 63, 64, 65, 66, 0, 0, 5, 6,
4283 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4284 0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
4285 0, 0, 0, 0, 283, 20, 252, 253, 23, 24,
4286 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4287 0, 281, 0, 0, 32, 33, 34, 398, 36, 37,
4288 38, 399, 40, 0, 41, 42, 43, 44, 45, 46,
4289 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4292 0, 0, 0, 0, 401, 0, 0, 212, 54, 0,
4293 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
4294 62, 63, 64, 65, 66, 0, 0, 5, 6, 7,
4295 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4296 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
4297 0, 0, 0, 283, 20, 252, 253, 23, 24, 25,
4298 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
4299 281, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4300 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4301 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4304 0, 0, 0, 282, 0, 0, 340, 54, 0, 55,
4305 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
4306 63, 64, 65, 66, 0, 0, 5, 6, 7, 0,
4307 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4308 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
4309 0, 0, 283, 20, 252, 253, 23, 24, 25, 26,
4310 0, 0, 209, 0, 0, 0, 0, 0, 0, 281,
4311 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4312 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4316 0, 0, 1165, 0, 0, 212, 54, 0, 55, 56,
4317 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
4318 64, 65, 66, 0, 0, 5, 6, 7, 0, 9,
4319 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4320 13, 14, 15, 250, 251, 18, 19, 0, 0, 0,
4321 0, 283, 20, 252, 253, 23, 24, 25, 26, 0,
4322 0, 209, 0, 0, 0, 0, 0, 0, 281, 0,
4323 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4324 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4328 0, 1198, 0, 0, 212, 54, 0, 55, 56, 23,
4329 24, 25, 26, 58, 59, 60, 61, 62, 63, 64,
4330 65, 66, 0, 0, 0, 32, 33, 34, 905, 0,
4331 0, 0, 906, 0, 0, 41, 42, 43, 44, 45,
4332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4333 283, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4334 0, 0, 0, 0, 0, 0, 0, 908, 909, 0,
4335 0, 0, 0, 0, 0, 910, 0, 0, 911, 0,
4336 0, 912, 913, 0, 914, 0, 0, 58, 59, 60,
4337 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4338 0, 0, 23, 24, 25, 26, 0, 0, 0, 0,
4339 0, 0, 0, 0, 0, 0, 0, 916, 32, 33,
4340 34, 905, 0, 0, 283, 906, 0, 907, 41, 42,
4341 43, 44, 45, 0, 0, 0, 0, 0, 242, 0,
4342 0, 0, 0, 0, 0, 0, 0, 534, 0, 0,
4343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4344 908, 909, 0, 0, 0, 0, 0, 0, 910, 0,
4345 0, 911, 0, 0, 912, 913, 0, 914, 538, 0,
4346 58, 59, 915, 61, 62, 63, 64, 65, 66, 0,
4347 0, 0, 0, 0, 0, 23, 24, 25, 26, 0,
4348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4349 916, 32, 33, 34, 905, 0, 0, 283, 906, 0,
4350 0, 41, 42, 43, 44, 45, 0, 0, 0, 0,
4351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4353 0, 0, 0, 908, 909, 0, 0, 0, 0, 0,
4354 0, 910, 0, 0, 911, 0, 0, 912, 913, 0,
4355 914, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4356 65, 66, 0, 0, 0, 0, 0, 0, 23, 24,
4357 25, 26, 0, 0, 0, 609, 610, 0, 0, 611,
4358 0, 0, 0, 916, 32, 33, 34, 905, 0, 0,
4359 283, 906, 0, 0, 41, 42, 43, 44, 45, 173,
4360 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4361 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4362 0, 0, 0, 0, 0, 0, 908, 909, 0, 0,
4363 0, 188, 189, 0, 910, 0, 0, 911, 0, 0,
4364 912, 913, 0, 0, 0, 0, 58, 59, 60, 61,
4365 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
4366 0, 190, 191, 192, 193, 194, 195, 196, 197, 198,
4367 199, 0, 200, 201, 619, 620, 916, 0, 621, 202,
4368 238, 0, 0, 283, 0, 0, 0, 0, 0, 0,
4369 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
4370 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
4371 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
4372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4373 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
4374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4376 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
4377 0, 200, 201, 670, 610, 0, 0, 671, 202, 238,
4378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4379 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
4380 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
4381 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
4382 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
4383 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4385 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4386 191, 192, 193, 194, 195, 196, 197, 198, 199, 0,
4387 200, 201, 673, 620, 0, 0, 674, 202, 238, 0,
4388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4389 0, 0, 0, 0, 0, 0, 173, 174, 175, 176,
4390 177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
4391 0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
4392 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
4393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4395 0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
4396 192, 193, 194, 195, 196, 197, 198, 199, 0, 200,
4397 201, 700, 610, 0, 0, 701, 202, 238, 0, 0,
4398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4399 0, 0, 0, 0, 0, 173, 174, 175, 176, 177,
4400 178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
4401 0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
4402 0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
4403 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4405 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
4406 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
4407 703, 620, 0, 0, 704, 202, 238, 0, 0, 0,
4408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4409 0, 0, 0, 0, 173, 174, 175, 176, 177, 178,
4410 179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
4411 0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
4412 0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
4413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4415 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
4416 194, 195, 196, 197, 198, 199, 0, 200, 201, 813,
4417 610, 0, 0, 814, 202, 238, 0, 0, 0, 0,
4418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4419 0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
4420 180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
4421 184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
4422 0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
4423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4425 0, 0, 0, 0, 0, 190, 191, 192, 193, 194,
4426 195, 196, 197, 198, 199, 0, 200, 201, 816, 620,
4427 0, 0, 817, 202, 238, 0, 0, 0, 0, 0,
4428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4429 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
4430 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
4431 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
4432 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
4433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4435 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4436 196, 197, 198, 199, 0, 200, 201, 822, 610, 0,
4437 0, 823, 202, 238, 0, 0, 0, 0, 0, 0,
4438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4439 0, 173, 174, 175, 176, 177, 178, 179, 180, 181,
4440 0, 0, 182, 183, 0, 0, 0, 0, 184, 185,
4441 186, 187, 0, 0, 0, 0, 0, 0, 0, 0,
4442 0, 0, 0, 188, 189, 0, 0, 0, 0, 0,
4443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4445 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4446 197, 198, 199, 0, 200, 201, 655, 620, 0, 0,
4447 656, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4449 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4450 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4451 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4452 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4455 0, 0, 190, 191, 192, 193, 194, 195, 196, 197,
4456 198, 199, 0, 200, 201, 1035, 610, 0, 0, 1036,
4457 202, 238, 0, 0, 0, 0, 0, 0, 0, 0,
4458 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4459 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4460 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4462 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4465 0, 190, 191, 192, 193, 194, 195, 196, 197, 198,
4466 199, 0, 200, 201, 1038, 620, 0, 0, 1039, 202,
4467 238, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4468 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
4469 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
4470 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
4471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4472 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
4473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4475 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
4476 0, 200, 201, 1259, 610, 0, 0, 1260, 202, 238,
4477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4478 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
4479 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
4480 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
4481 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
4482 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4484 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4485 191, 192, 193, 194, 195, 196, 197, 198, 199, 0,
4486 200, 201, 1262, 620, 0, 0, 1263, 202, 238, 0,
4487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4488 0, 0, 0, 0, 0, 0, 173, 174, 175, 176,
4489 177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
4490 0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
4491 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
4492 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4494 0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
4495 192, 193, 194, 195, 196, 197, 198, 199, 0, 200,
4496 201, 1278, 610, 0, 0, 1279, 202, 238, 0, 0,
4497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4498 0, 0, 0, 0, 0, 173, 174, 175, 176, 177,
4499 178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
4500 0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
4501 0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
4502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4504 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
4505 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
4506 655, 620, 0, 0, 656, 202, 238, 0, 0, 0,
4507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4508 0, 0, 0, 0, 173, 174, 175, 176, 177, 178,
4509 179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
4510 0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
4511 0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
4512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4514 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
4515 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
4519static const yytype_int16 yycheck[] =
4521 2, 105, 59, 59, 8, 60, 16, 17, 321, 401,
4522 85, 383, 325, 71, 554, 28, 2, 377, 801, 96,
4523 91, 16, 17, 325, 28, 53, 93, 94, 734, 232,
4524 97, 536, 8, 104, 376, 808, 378, 57, 22, 97,
4525 376, 2, 378, 565, 238, 101, 568, 321, 22, 16,
4526 17, 325, 28, 55, 56, 59, 450, 779, 731, 559,
4527 55, 561, 68, 53, 57, 85, 738, 53, 54, 868,
4528 94, 57, 71, 97, 76, 77, 778, 779, 98, 99,
4529 100, 16, 17, 97, 426, 870, 446, 275, 55, 56,
4530 426, 279, 102, 54, 67, 489, 80, 101, 499, 85,
4531 912, 25, 25, 445, 29, 447, 80, 102, 1047, 445,
4532 263, 447, 98, 99, 100, 101, 658, 659, 13, 1024,
4533 299, 300, 1061, 442, 25, 582, 908, 909, 650, 101,
4534 101, 450, 474, 475, 77, 102, 27, 100, 1202, 475,
4535 77, 501, 101, 1052, 0, 575, 778, 779, 10, 1047,
4536 110, 66, 69, 25, 66, 135, 227, 25, 500, 13,
4537 502, 216, 1071, 1072, 25, 1063, 502, 102, 34, 1181,
4538 34, 52, 135, 162, 241, 56, 243, 157, 579, 13,
4539 100, 98, 142, 155, 212, 256, 52, 340, 52, 157,
4540 731, 162, 155, 725, 162, 625, 155, 738, 13, 124,
4541 25, 631, 734, 633, 25, 120, 68, 265, 120, 284,
4542 1274, 135, 1117, 718, 719, 135, 218, 219, 289, 159,
4543 26, 249, 162, 13, 226, 235, 212, 237, 238, 25,
4544 232, 155, 155, 157, 158, 263, 238, 13, 162, 25,
4545 235, 1207, 237, 238, 152, 247, 1212, 314, 315, 316,
4546 317, 265, 319, 320, 155, 647, 157, 1269, 461, 1071,
4547 1072, 247, 157, 249, 284, 160, 265, 162, 235, 160,
4548 237, 162, 13, 263, 1213, 26, 219, 263, 638, 253,
4549 254, 218, 219, 155, 1066, 1067, 247, 155, 648, 683,
4550 314, 315, 316, 317, 155, 637, 157, 639, 284, 821,
4551 235, 155, 237, 639, 13, 647, 160, 649, 162, 1207,
4552 283, 1110, 340, 649, 1212, 1213, 746, 27, 385, 29,
4553 750, 341, 393, 157, 1109, 25, 160, 313, 162, 387,
4554 155, 13, 318, 400, 155, 514, 338, 516, 1010, 796,
4555 880, 343, 1015, 286, 78, 160, 152, 162, 341, 152,
4556 340, 157, 313, 582, 340, 341, 384, 318, 386, 155,
4557 784, 385, 681, 868, 683, 870, 767, 377, 792, 155,
4558 160, 1093, 162, 387, 378, 377, 876, 877, 672, 809,
4559 13, 881, 812, 883, 160, 885, 162, 13, 1286, 37,
4560 38, 1093, 705, 379, 69, 1178, 826, 58, 384, 100,
4561 386, 152, 100, 705, 378, 1178, 100, 56, 702, 951,
4562 952, 145, 146, 147, 956, 957, 25, 78, 731, 160,
4563 1052, 162, 426, 98, 499, 738, 98, 429, 430, 658,
4564 659, 705, 1064, 161, 135, 135, 446, 135, 440, 1071,
4565 1072, 135, 100, 447, 446, 161, 448, 449, 109, 110,
4566 135, 160, 58, 162, 155, 155, 469, 459, 158, 461,
4567 28, 1093, 162, 155, 986, 469, 669, 153, 787, 1010,
4568 155, 475, 78, 447, 476, 442, 162, 135, 160, 499,
4569 162, 142, 154, 1024, 241, 157, 113, 681, 734, 100,
4570 100, 501, 1024, 469, 1200, 481, 25, 155, 502, 501,
4571 160, 475, 162, 109, 579, 1288, 1028, 113, 566, 697,
4572 1024, 268, 100, 499, 162, 272, 66, 67, 910, 486,
4573 161, 815, 1195, 161, 135, 135, 135, 160, 502, 162,
4574 709, 825, 778, 779, 160, 714, 162, 1079, 66, 852,
4575 542, 135, 972, 903, 155, 975, 155, 135, 978, 158,
4576 852, 100, 554, 162, 564, 985, 100, 567, 988, 579,
4577 902, 100, 904, 640, 274, 275, 902, 155, 904, 279,
4578 576, 281, 122, 123, 632, 1115, 582, 135, 852, 565,
4579 100, 576, 568, 1123, 651, 100, 135, 582, 37, 38,
4580 100, 135, 66, 579, 122, 123, 135, 125, 69, 100,
4581 628, 66, 630, 69, 1109, 1110, 135, 1001, 1281, 100,
4582 982, 1111, 1112, 1113, 1114, 135, 618, 52, 912, 686,
4583 135, 56, 624, 698, 626, 135, 155, 98, 638, 158,
4584 69, 615, 98, 162, 135, 639, 638, 69, 648, 100,
4585 624, 615, 628, 846, 630, 649, 648, 660, 122, 123,
4586 624, 69, 658, 659, 1195, 657, 660, 122, 123, 98,
4587 1182, 1202, 155, 1195, 650, 639, 98, 669, 1200, 1099,
4588 1202, 9, 1204, 657, 135, 649, 1068, 15, 698, 97,
4589 98, 1195, 1001, 657, 660, 157, 1200, 161, 1202, 691,
4590 1204, 69, 767, 56, 155, 452, 161, 1010, 135, 100,
4591 457, 69, 69, 460, 101, 776, 463, 155, 1125, 1126,
4592 1250, 1024, 698, 1085, 681, 100, 690, 691, 1090, 97,
4593 98, 478, 951, 952, 155, 829, 483, 956, 957, 69,
4594 98, 98, 157, 1274, 135, 778, 779, 14, 15, 69,
4595 15, 1241, 1274, 1037, 1276, 69, 157, 767, 69, 1281,
4596 25, 1283, 1046, 820, 155, 1049, 155, 97, 98, 157,
4597 1274, 819, 1276, 162, 155, 78, 1298, 1281, 98, 1283,
4598 158, 162, 828, 97, 98, 1069, 154, 98, 135, 781,
4599 782, 767, 155, 15, 1298, 17, 788, 789, 545, 162,
4600 818, 153, 778, 779, 796, 797, 820, 799, 159, 801,
4601 56, 796, 1174, 157, 1033, 54, 1052, 52, 1238, 54,
4602 55, 56, 57, 58, 154, 64, 65, 157, 1064, 155,
4603 787, 578, 107, 69, 828, 1071, 1072, 69, 1245, 1246,
4604 154, 78, 818, 78, 1251, 821, 1253, 1254, 840, 841,
4605 135, 843, 844, 69, 846, 89, 90, 1093, 135, 78,
4606 1079, 97, 98, 135, 158, 97, 98, 102, 162, 916,
4607 915, 155, 1222, 160, 109, 110, 1160, 1161, 1162, 912,
4608 56, 97, 98, 1290, 1291, 1292, 1293, 26, 880, 1221,
4609 139, 1223, 1195, 135, 1061, 1302, 929, 1223, 598, 1202,
4610 892, 158, 894, 903, 1071, 1072, 135, 142, 900, 25,
4611 904, 903, 83, 84, 971, 155, 1248, 617, 154, 26,
4612 153, 897, 154, 899, 143, 144, 145, 146, 147, 2,
4613 69, 66, 908, 909, 40, 41, 912, 69, 154, 987,
4614 904, 155, 1024, 16, 17, 69, 897, 965, 899, 153,
4615 69, 135, 970, 929, 155, 951, 952, 971, 97, 98,
4616 956, 957, 69, 955, 1200, 97, 98, 138, 139, 961,
4617 155, 1274, 672, 97, 98, 722, 343, 1261, 97, 98,
4618 53, 54, 155, 738, 57, 120, 741, 122, 123, 965,
4619 97, 98, 285, 286, 970, 68, 155, 697, 155, 155,
4620 52, 1058, 702, 155, 52, 997, 153, 1025, 8, 155,
4621 986, 1044, 85, 152, 69, 154, 13, 155, 157, 25,
4622 93, 94, 154, 135, 97, 98, 99, 100, 1061, 102,
4623 154, 17, 26, 161, 161, 154, 44, 1033, 1071, 1072,
4624 155, 2, 97, 98, 1058, 152, 155, 154, 44, 1025,
4625 157, 153, 1028, 44, 155, 16, 17, 155, 135, 44,
4626 1093, 137, 429, 430, 52, 159, 54, 55, 1044, 57,
4627 1088, 1047, 15, 440, 1084, 69, 155, 155, 52, 1097,
4628 827, 448, 449, 1079, 155, 1061, 1062, 1063, 1106, 155,
4629 1066, 1067, 53, 54, 1139, 1071, 1072, 155, 845, 154,
4630 847, 140, 155, 97, 98, 52, 1167, 68, 1084, 476,
4631 140, 1121, 1088, 1195, 102, 815, 153, 1093, 69, 866,
4632 1202, 1097, 1204, 1115, 52, 825, 54, 55, 56, 57,
4633 1106, 1123, 93, 94, 155, 155, 97, 101, 155, 212,
4634 155, 102, 155, 155, 52, 1121, 97, 98, 66, 101,
4635 69, 158, 155, 1171, 69, 1173, 160, 140, 152, 56,
4636 154, 9, 235, 157, 237, 238, 1184, 140, 241, 153,
4637 243, 1228, 1229, 155, 247, 155, 249, 155, 97, 98,
4638 1172, 69, 97, 98, 1194, 155, 1178, 155, 155, 155,
4639 263, 56, 1274, 155, 1276, 1171, 69, 1173, 155, 1281,
4640 121, 1283, 120, 154, 122, 123, 1182, 125, 1184, 97,
4641 98, 284, 912, 913, 1228, 1229, 1298, 155, 1194, 155,
4642 155, 155, 1222, 155, 97, 98, 157, 157, 155, 1223,
4643 1222, 1207, 1224, 247, 1226, 154, 1212, 1213, 66, 154,
4644 313, 314, 315, 316, 317, 318, 319, 320, 1266, 313,
4645 477, 212, 828, 54, 55, 1010, 57, 1012, 1250, 1223,
4646 481, 98, 1017, 64, 65, 100, 154, 340, 341, 1024,
4647 89, 657, 66, 797, 235, 718, 237, 238, 1226, 868,
4648 241, 154, 243, 1119, 1024, 66, 247, 894, 249, 830,
4649 1266, 66, 120, 571, 122, 123, 1288, 125, 59, 60,
4650 61, 62, 263, 1003, 377, 336, 379, 778, 779, 66,
4651 1286, 384, 385, 386, 52, 78, 54, 55, 56, 57,
4652 58, 1288, 1269, 1070, 1024, 1062, 120, 400, 122, 123,
4653 1064, 1064, 95, 96, 1060, 1224, 108, 1037, 1172, 120,
4654 78, 122, 123, 658, 659, 120, 1046, 122, 123, 1049,
4655 778, 779, 313, 314, 315, 316, 317, 318, 319, 320,
4656 675, 676, 516, 120, 102, 122, 123, 101, 734, 1069,
4657 108, 109, 110, 446, 1200, 1195, 731, 692, 1140, 340,
4658 143, 144, 145, 146, 147, 1132, -1, 52, 78, 54,
4659 55, 56, 57, -1, -1, 52, 1143, 54, 55, 56,
4660 57, -1, -1, -1, 142, 95, 96, 145, 481, -1,
4661 1157, 1158, 1159, -1, 781, 782, 377, 1117, 379, 778,
4662 779, 788, 789, 384, 385, 386, 499, -1, 501, -1,
4663 -1, -1, 1187, -1, -1, -1, -1, 908, 909, 400,
4664 1140, 912, -1, -1, -1, 102, 78, 1202, -1, 1204,
4665 140, 141, 142, 143, 144, 145, 146, 147, 929, -1,
4666 1160, 1161, 1162, 95, 96, -1, 52, -1, 54, 55,
4667 56, 57, -1, 840, 841, -1, 843, 844, -1, -1,
4668 908, 909, -1, -1, 912, 446, 40, 41, 42, 43,
4669 44, 564, 565, -1, 567, 568, -1, -1, -1, -1,
4670 -1, 929, -1, 576, -1, -1, 579, -1, -1, 582,
4671 142, 143, 144, 145, 146, 147, 102, -1, -1, 1274,
4672 481, 1276, 108, -1, 778, 779, -1, -1, 1283, -1,
4673 -1, -1, -1, 900, -1, 1235, -1, -1, -1, -1,
4674 501, -1, -1, 1298, -1, -1, -1, -1, -1, 908,
4675 909, -1, -1, 912, -1, 628, -1, 630, -1, -1,
4676 -1, 1261, -1, -1, -1, 638, -1, -1, -1, -1,
4677 929, -1, -1, 1044, -1, 648, 1047, 650, 651, -1,
4678 -1, -1, -1, -1, -1, 658, 659, -1, 955, -1,
4679 1061, 1062, 1063, -1, -1, 1066, 1067, -1, -1, -1,
4680 1071, 1072, -1, 564, 565, -1, 567, 568, -1, -1,
4681 -1, -1, -1, 686, -1, 576, 1044, -1, -1, 1047,
4682 -1, 582, 1093, -1, -1, 698, -1, -1, -1, -1,
4683 997, -1, -1, 1061, 1062, 1063, 951, 952, 1066, 1067,
4684 -1, 956, 957, 1071, 1072, -1, -1, -1, -1, -1,
4685 -1, -1, -1, -1, 908, 909, -1, -1, 912, -1,
4686 -1, -1, -1, -1, -1, 1093, -1, 628, -1, 630,
4687 -1, -1, -1, -1, -1, 929, -1, 638, -1, -1,
4688 995, 996, -1, 998, 999, 1044, -1, 648, 1047, 650,
4689 651, -1, -1, -1, 767, -1, -1, 658, 659, -1,
4690 -1, -1, 1061, 1062, 1063, -1, -1, 1066, 1067, -1,
4691 -1, -1, 1071, 1072, -1, -1, -1, -1, -1, -1,
4692 -1, -1, -1, -1, -1, 686, -1, -1, -1, -1,
4693 -1, -1, -1, -1, 1093, -1, 1207, -1, -1, -1,
4694 -1, 1212, 1213, -1, -1, 818, -1, 820, 821, -1,
4695 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4696 -1, -1, -1, -1, 1079, -1, -1, -1, -1, -1,
4697 -1, 52, -1, 54, 55, 56, 57, 58, -1, 1207,
4698 -1, -1, -1, -1, 1212, 1213, -1, 1102, -1, -1,
4699 1044, -1, -1, 1047, -1, -1, -1, 78, -1, -1,
4700 -1, -1, -1, -1, -1, -1, -1, 1061, 1062, 1063,
4701 -1, 92, 1066, 1067, -1, 1286, -1, 1071, 1072, -1,
4702 -1, 102, -1, -1, 897, -1, 899, -1, 109, 110,
4703 903, -1, -1, -1, -1, -1, -1, -1, -1, 1093,
4704 -1, -1, -1, -1, -1, -1, -1, -1, 1207, 2,
4705 -1, -1, -1, 1212, 1213, -1, -1, 818, 1286, 820,
4706 821, 142, -1, 16, 17, -1, -1, -1, -1, -1,
4707 -1, -1, -1, -1, -1, -1, -1, -1, 951, 952,
4708 -1, -1, -1, 956, 957, -1, -1, -1, -1, -1,
4709 -1, -1, 965, -1, -1, -1, -1, 970, 971, -1,
4710 53, 54, -1, -1, -1, -1, -1, -1, -1, -1,
4711 -1, -1, -1, 986, -1, 68, -1, -1, -1, -1,
4712 -1, -1, -1, -1, 2, -1, -1, 1286, -1, -1,
4713 -1, -1, -1, -1, -1, -1, 897, -1, 899, -1,
4714 93, 94, 903, -1, 97, -1, -1, -1, -1, 102,
4715 -1, -1, 1025, 1207, -1, 1028, -1, -1, 1212, 1213,
4716 1033, 778, 779, -1, -1, -1, -1, -1, -1, -1,
4717 -1, 33, 34, 35, 36, 53, 54, -1, -1, 57,
4718 -1, -1, -1, -1, -1, 1058, -1, 49, 50, 51,
4719 951, 952, -1, -1, -1, 956, 957, 59, 60, 61,
4720 62, 63, -1, -1, 965, -1, 1079, 85, -1, 970,
4721 971, 1084, -1, -1, -1, 1088, -1, -1, -1, -1,
4722 98, 99, 100, -1, 1097, 986, -1, -1, -1, -1,
4723 -1, -1, 1286, 1106, -1, -1, -1, -1, -1, -1,
4724 -1, -1, -1, -1, -1, -1, -1, -1, 1121, 111,
4725 112, 113, 114, 115, 116, 117, 118, 119, -1, 212,
4726 -1, -1, -1, -1, 1025, -1, -1, 1028, -1, -1,
4727 -1, -1, 1033, -1, -1, -1, -1, -1, -1, -1,
4728 56, -1, 235, -1, 237, 238, 148, -1, 241, -1,
4729 243, 908, 909, -1, 247, 912, 249, 1058, 1171, -1,
4730 1173, -1, -1, -1, -1, -1, -1, -1, -1, 1182,
4731 263, 1184, 929, -1, -1, -1, -1, -1, 1079, -1,
4732 -1, 1194, -1, -1, -1, -1, 52, 1088, 54, 55,
4733 56, 57, 58, -1, 212, -1, 1097, -1, -1, -1,
4734 -1, -1, -1, -1, -1, 1106, -1, -1, -1, 1222,
4735 -1, -1, 78, -1, -1, 1228, 1229, -1, 778, 779,
4736 313, 314, 315, 316, 317, 318, 319, 320, -1, 247,
4737 -1, 249, -1, -1, -1, -1, 102, -1, -1, -1,
4738 -1, -1, 108, 109, 110, 263, -1, 340, -1, -1,
4739 -1, -1, -1, 1266, -1, -1, -1, -1, -1, -1,
4740 -1, -1, -1, -1, -1, -1, 284, -1, -1, -1,
4741 1171, -1, 1173, -1, -1, -1, 142, -1, -1, 145,
4742 -1, 1182, -1, 1184, 377, -1, 379, 1044, -1, -1,
4743 1047, 384, 385, 386, 210, 313, 162, 213, 214, 215,
4744 318, -1, -1, -1, 1061, 1062, 1063, 400, -1, 1066,
4745 1067, -1, -1, -1, 1071, 1072, -1, -1, -1, 25,
4746 -1, 1222, 340, 341, -1, -1, -1, 1228, 1229, -1,
4747 -1, -1, -1, -1, 778, 779, 1093, -1, -1, -1,
4748 -1, -1, -1, -1, -1, -1, -1, -1, 908, 909,
4749 -1, -1, 912, 446, -1, -1, -1, -1, -1, -1,
4750 -1, 379, -1, -1, -1, 1266, 384, -1, 386, 929,
4751 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
4752 86, 87, 88, 89, 90, -1, -1, -1, 481, 95,
4753 96, -1, -1, -1, -1, 101, -1, 2, -1, -1,
4754 -1, -1, -1, -1, -1, -1, -1, -1, 501, -1,
4755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4756 52, -1, 54, 55, 56, 57, 58, -1, -1, -1,
4757 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
4758 146, 147, -1, -1, -1, -1, 78, -1, 53, 54,
4759 1207, -1, 57, -1, -1, 1212, 1213, -1, -1, -1,
4760 92, -1, -1, 481, 908, 909, -1, -1, 912, -1,
4761 102, 564, 565, -1, 567, 568, 108, 109, 110, -1,
4762 85, 499, -1, 576, 1044, 929, -1, 1047, -1, 582,
4763 -1, -1, -1, 98, 99, 100, -1, -1, -1, -1,
4764 -1, 1061, 1062, 1063, -1, -1, 1066, 1067, -1, -1,
4765 142, 1071, 1072, 145, 78, 79, 80, 81, 82, 83,
4766 84, 85, -1, 87, 88, 441, 442, -1, -1, 1286,
4767 -1, 95, 96, 1093, 450, 628, -1, 630, -1, -1,
4768 -1, -1, -1, -1, -1, 638, -1, 565, -1, -1,
4769 568, -1, -1, -1, -1, 648, -1, 650, 651, -1,
4770 -1, 579, -1, -1, 582, 658, 659, 778, 779, -1,
4771 486, -1, -1, 489, 138, 139, 140, 141, 142, 143,
4772 144, 145, 146, 147, -1, -1, -1, -1, -1, -1,
4773 -1, -1, -1, 686, -1, -1, -1, -1, -1, -1,
4774 1044, -1, -1, 1047, -1, -1, -1, 212, -1, -1,
4775 628, -1, 630, -1, -1, -1, -1, 1061, 1062, 1063,
4776 -1, -1, 1066, 1067, -1, -1, -1, 1071, 1072, -1,
4777 -1, -1, 650, -1, -1, -1, 552, -1, -1, -1,
4778 658, 659, 247, -1, 249, -1, -1, 1207, -1, 1093,
4779 -1, -1, 1212, 1213, -1, -1, -1, -1, 263, 2,
4780 576, 778, 779, -1, -1, -1, 582, -1, -1, -1,
4781 -1, -1, -1, -1, -1, -1, -1, -1, -1, 284,
4782 698, -1, -1, -1, -1, -1, -1, -1, -1, 707,
4783 -1, -1, -1, -1, -1, -1, -1, 908, 909, -1,
4784 -1, 912, -1, -1, -1, -1, -1, -1, 313, -1,
4785 53, 54, -1, 318, 57, -1, -1, -1, 929, -1,
4786 -1, -1, -1, -1, -1, 818, 1286, 820, 821, -1,
4787 -1, -1, -1, -1, -1, 340, 341, -1, -1, -1,
4788 -1, -1, 85, -1, -1, 661, -1, -1, -1, 767,
4789 666, -1, -1, -1, -1, 98, 99, 100, -1, -1,
4790 -1, -1, -1, 1207, -1, 681, -1, 683, 1212, 1213,
4791 -1, -1, -1, -1, 379, -1, -1, -1, -1, 384,
4792 -1, 386, -1, -1, -1, -1, -1, -1, -1, -1,
4793 -1, 908, 909, -1, -1, 912, -1, -1, -1, -1,
4794 818, -1, -1, 821, 897, -1, 899, -1, -1, -1,
4795 903, -1, 929, 729, -1, -1, -1, -1, -1, -1,
4796 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4797 -1, -1, -1, 1044, -1, -1, 1047, -1, -1, -1,
4798 -1, -1, 1286, 759, -1, -1, -1, -1, -1, -1,
4799 1061, 1062, 1063, -1, -1, 1066, 1067, -1, 951, 952,
4800 1071, 1072, -1, 956, 957, -1, -1, -1, -1, 212,
4801 -1, 787, 965, -1, -1, -1, 481, 970, 971, 897,
4802 796, 899, 1093, -1, -1, -1, -1, -1, -1, -1,
4803 -1, -1, -1, 986, 499, 811, -1, -1, -1, -1,
4804 -1, -1, -1, -1, 247, -1, 249, -1, -1, -1,
4805 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4806 263, -1, -1, -1, -1, -1, -1, 1044, -1, -1,
4807 1047, -1, 1025, 951, 952, 1028, 2, -1, 956, 957,
4808 1033, 284, -1, -1, 1061, 1062, 1063, 965, -1, 1066,
4809 1067, -1, 970, -1, 1071, 1072, -1, -1, -1, -1,
4810 565, -1, -1, 568, -1, 1058, -1, -1, 986, -1,
4811 313, -1, -1, -1, 579, 318, 1093, 582, -1, -1,
4812 896, -1, -1, -1, -1, -1, 1079, 53, 54, -1,
4813 -1, 57, -1, -1, -1, 1088, 1207, 340, 341, -1,
4814 -1, 1212, 1213, -1, 1097, -1, -1, 1025, -1, -1,
4815 1028, -1, -1, 1106, -1, 1033, -1, -1, -1, 85,
4816 -1, -1, -1, 628, -1, 630, -1, -1, -1, -1,
4817 -1, -1, 98, 99, 100, 101, 379, -1, -1, -1,
4818 -1, 384, -1, 386, -1, 650, -1, -1, -1, -1,
4819 -1, -1, -1, 658, 659, -1, -1, -1, 2, -1,
4820 -1, 1079, -1, -1, 980, -1, 1084, -1, -1, -1,
4821 1088, -1, -1, -1, -1, 1286, -1, -1, 1171, 1097,
4822 1173, -1, -1, -1, -1, 1001, -1, -1, 1106, 1182,
4823 1207, 1184, -1, 698, -1, 1212, 1213, -1, -1, -1,
4824 -1, -1, 52, 1121, 54, 55, 56, 57, 58, 53,
4825 54, -1, -1, 1029, -1, -1, -1, -1, -1, -1,
4826 -1, -1, -1, -1, -1, -1, -1, -1, 78, 1222,
4827 -1, -1, -1, 2, -1, 1228, 1229, -1, 481, -1,
4828 -1, -1, 92, -1, -1, -1, 212, -1, -1, -1,
4829 -1, -1, 102, 1171, 98, 1173, 499, -1, 108, 109,
4830 110, -1, 767, -1, 1182, -1, 1184, -1, -1, 1286,
4831 -1, -1, -1, 1266, -1, -1, 1194, -1, -1, -1,
4832 1096, 247, -1, 249, 53, 54, -1, -1, -1, -1,
4833 -1, -1, 142, -1, -1, 145, -1, 263, -1, -1,
4834 -1, -1, -1, -1, -1, -1, -1, 157, -1, -1,
4835 -1, -1, -1, 818, -1, -1, 821, -1, 284, -1,
4836 -1, -1, 565, -1, -1, 568, -1, -1, -1, -1,
4837 -1, -1, -1, -1, -1, -1, 579, -1, -1, 582,
4838 -1, -1, -1, -1, -1, -1, -1, 313, 1266, -1,
4839 -1, -1, 318, -1, -1, -1, -1, -1, -1, -1,
4840 1176, -1, -1, -1, -1, -1, -1, -1, 212, -1,
4841 -1, -1, -1, -1, 340, 341, -1, -1, -1, -1,
4842 -1, -1, -1, -1, -1, 628, -1, 630, -1, -1,
4843 44, -1, 897, -1, 899, -1, -1, -1, -1, -1,
4844 -1, -1, -1, 247, -1, 249, -1, 650, -1, -1,
4845 -1, -1, -1, 379, -1, 658, 659, -1, 384, 263,
4846 386, -1, -1, -1, 78, 79, 80, 81, 82, 83,
4847 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
4848 -1, 95, 96, 212, -1, -1, 951, 952, -1, -1,
4849 -1, 956, 957, -1, -1, 698, -1, -1, -1, -1,
4850 965, -1, -1, -1, -1, 970, -1, -1, -1, 313,
4851 -1, -1, -1, -1, 318, -1, -1, -1, 247, -1,
4852 249, 986, 136, -1, 138, 139, 140, 141, 142, 143,
4853 144, 145, 146, 147, 263, -1, 340, -1, -1, -1,
4854 -1, 155, -1, -1, -1, -1, -1, -1, -1, -1,
4855 -1, -1, -1, -1, -1, 481, -1, -1, -1, -1,
4856 1025, -1, -1, 1028, 767, -1, -1, -1, 1033, -1,
4857 -1, -1, -1, 499, -1, 379, -1, -1, -1, -1,
4858 384, -1, 386, -1, 313, -1, -1, -1, -1, 318,
4859 -1, -1, -1, -1, -1, -1, -1, -1, -1, 78,
4860 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
4861 -1, 340, -1, -1, 1079, 818, 95, 96, 821, 1084,
4862 -1, -1, -1, 1088, -1, -1, -1, -1, -1, -1,
4863 -1, -1, 1097, -1, -1, -1, -1, -1, -1, 565,
4864 -1, 1106, 568, -1, -1, -1, -1, -1, -1, -1,
4865 379, -1, -1, 579, -1, 384, 1121, 386, -1, 138,
4866 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
4867 78, 79, 80, 81, 82, 83, 84, 481, -1, 87,
4868 88, -1, -1, -1, -1, -1, -1, 95, 96, -1,
4869 -1, -1, -1, -1, 897, -1, 899, -1, -1, -1,
4870 -1, -1, 628, -1, 630, -1, 1171, -1, 1173, -1,
4871 -1, -1, -1, -1, -1, -1, -1, 1182, -1, 1184,
4872 -1, -1, -1, -1, 650, -1, -1, -1, -1, 1194,
4873 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
4874 -1, -1, -1, -1, -1, -1, -1, -1, 951, 952,
4875 -1, -1, 481, 956, 957, -1, -1, -1, -1, -1,
4876 -1, 565, 965, -1, 568, -1, -1, 970, 44, -1,
4877 -1, -1, 698, -1, -1, -1, -1, -1, 582, -1,
4878 -1, -1, -1, 986, -1, -1, -1, -1, -1, -1,
4879 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4880 -1, 1266, 78, 79, 80, 81, 82, 83, 84, 85,
4881 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
4882 96, -1, 1025, -1, 628, 1028, 630, -1, -1, -1,
4883 1033, -1, -1, -1, -1, -1, 565, -1, -1, 568,
4884 -1, 767, -1, -1, -1, -1, 650, -1, -1, -1,
4885 -1, -1, -1, 582, 658, 659, -1, -1, -1, -1,
4886 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
4887 146, 147, -1, -1, -1, -1, 1079, -1, -1, -1,
4888 -1, 1084, -1, -1, -1, 1088, -1, -1, -1, -1,
4889 -1, -1, 818, -1, 1097, 821, -1, 0, -1, 628,
4890 -1, 630, -1, 1106, -1, 8, 9, 10, 44, -1,
4891 13, 14, 15, -1, 17, -1, -1, -1, 1121, -1,
4892 -1, 650, 25, 26, 27, -1, -1, -1, -1, 658,
4893 659, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4894 43, 44, 78, 79, 80, 81, 82, 83, 84, 85,
4895 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
4896 96, -1, -1, -1, -1, 68, 69, -1, 1171, -1,
4897 1173, 897, -1, 899, -1, -1, -1, -1, -1, 1182,
4898 -1, 1184, -1, -1, -1, 44, -1, -1, -1, -1,
4899 -1, 1194, -1, -1, 97, 98, -1, -1, -1, -1,
4900 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
4901 146, 147, -1, -1, 818, -1, -1, 821, 121, 78,
4902 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4903 89, 90, -1, -1, -1, -1, 95, 96, -1, 965,
4904 -1, -1, -1, -1, 970, -1, -1, -1, -1, 152,
4905 153, -1, -1, -1, 157, 158, -1, 160, -1, 162,
4906 986, -1, -1, 1266, -1, -1, -1, -1, -1, -1,
4907 -1, -1, -1, 16, 17, -1, -1, 136, -1, 138,
4908 139, 140, 141, 142, 143, 144, 145, 146, 147, 818,
4909 -1, -1, 821, 897, -1, 899, -1, -1, -1, 1025,
4910 -1, -1, 1028, -1, -1, 48, 49, 50, 51, -1,
4911 -1, -1, 55, 56, -1, -1, -1, -1, -1, -1,
4912 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
4913 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4914 -1, -1, -1, -1, -1, -1, -1, 951, 952, -1,
4915 -1, -1, 956, 957, -1, -1, -1, -1, 1084, 102,
4916 -1, 965, 1088, -1, -1, -1, 970, -1, 897, -1,
4917 899, 1097, -1, -1, -1, -1, -1, -1, -1, -1,
4918 1106, -1, 986, -1, -1, -1, -1, -1, -1, -1,
4919 -1, -1, -1, -1, -1, 1121, -1, -1, -1, -1,
4920 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4921 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4922 -1, 1025, 951, 952, 1028, -1, -1, 956, 957, 1033,
4923 -1, -1, -1, -1, -1, -1, 965, -1, -1, -1,
4924 -1, 970, -1, -1, -1, 1171, -1, 1173, -1, -1,
4925 -1, -1, -1, -1, -1, -1, 1182, 986, 1184, -1,
4926 -1, -1, -1, -1, -1, -1, -1, 210, 1194, -1,
4927 213, 214, 215, -1, 217, 1079, -1, -1, -1, -1,
4928 1084, -1, -1, -1, 1088, -1, -1, -1, -1, -1,
4929 -1, -1, 235, 1097, 237, 238, 1025, -1, -1, 1028,
4930 -1, -1, 1106, -1, 1033, -1, -1, -1, -1, -1,
4931 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4932 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
4933 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
4934 1266, 95, 96, -1, -1, -1, -1, -1, -1, -1,
4935 1079, -1, -1, -1, -1, -1, -1, -1, -1, 1088,
4936 -1, -1, -1, -1, -1, -1, -1, 1171, 1097, 1173,
4937 -1, -1, -1, -1, -1, -1, -1, 1106, 1182, -1,
4938 1184, -1, 136, -1, 138, 139, 140, 141, 142, 143,
4939 144, 145, 146, 147, -1, -1, -1, -1, -1, -1,
4940 -1, -1, 345, 346, 347, 348, 349, -1, 162, 352,
4941 353, 354, 355, 356, 357, 358, 359, -1, 361, -1,
4942 -1, 364, 365, 366, 367, 368, 369, 370, 371, 372,
4943 373, -1, -1, -1, 377, -1, -1, -1, -1, -1,
4944 -1, -1, 1171, -1, 1173, -1, -1, -1, -1, -1,
4945 -1, -1, -1, 1182, -1, 1184, -1, -1, -1, -1,
4946 -1, -1, 1266, -1, -1, -1, -1, -1, -1, -1,
4947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4948 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4949 -1, -1, -1, -1, -1, -1, -1, -1, 441, 442,
4950 -1, -1, -1, 446, -1, -1, -1, 450, -1, -1,
4951 -1, -1, -1, 456, -1, -1, -1, -1, -1, -1,
4952 -1, -1, -1, -1, -1, -1, -1, -1, 471, -1,
4953 -1, -1, -1, -1, -1, -1, -1, 1266, -1, -1,
4954 -1, -1, -1, 486, -1, -1, 489, -1, -1, -1,
4955 -1, -1, -1, -1, -1, -1, -1, -1, 501, -1,
4956 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4957 -1, -1, -1, -1, -1, 518, -1, -1, -1, -1,
4958 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4959 -1, -1, -1, -1, -1, 0, 1, -1, 3, 4,
4960 5, 6, 7, -1, -1, -1, 11, 12, -1, 552,
4961 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4962 -1, 564, -1, -1, 567, 30, 31, 32, 33, 34,
4963 35, 36, -1, 576, 39, -1, -1, -1, -1, 582,
4964 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4965 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4966 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4967 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
4968 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
4969 -1, -1, -1, -1, 99, 638, -1, 102, 103, -1,
4970 105, 106, -1, 108, -1, 648, 111, 112, 113, 114,
4971 115, 116, 117, 118, 119, 658, 659, -1, 661, 662,
4972 663, 664, -1, 666, -1, -1, -1, -1, -1, -1,
4973 -1, -1, 675, 676, -1, -1, -1, -1, 681, -1,
4974 683, -1, -1, 148, 149, 150, -1, -1, -1, 692,
4975 0, -1, -1, -1, -1, 160, -1, 162, 8, 9,
4976 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
4977 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
4978 -1, -1, -1, -1, -1, -1, 729, 37, 38, -1,
4979 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
4980 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4981 -1, -1, -1, -1, -1, -1, 759, -1, 68, 69,
4982 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
4983 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4984 90, -1, -1, -1, 787, 95, 96, 97, 98, -1,
4985 100, 101, -1, 796, -1, -1, -1, 107, -1, -1,
4986 -1, -1, -1, -1, -1, -1, -1, -1, 811, -1,
4987 -1, 121, -1, -1, 124, -1, -1, -1, -1, -1,
4988 -1, -1, -1, -1, -1, 135, 136, 137, 138, 139,
4989 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
4990 -1, -1, 152, 153, 154, 155, -1, -1, 158, 159,
4991 160, -1, 162, 78, 79, 80, 81, 82, 83, 84,
4992 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
4993 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
4994 -1, -1, -1, 886, 887, -1, 889, 890, -1, -1,
4995 -1, -1, -1, 896, -1, -1, -1, -1, 901, -1,
4996 903, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4997 -1, 136, -1, 138, 139, 140, 141, 142, 143, 144,
4998 145, 146, 147, -1, -1, -1, -1, -1, -1, -1,
4999 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5000 -1, -1, -1, -1, -1, -1, -1, 950, 951, 952,
5001 -1, -1, -1, 956, 957, -1, -1, -1, -1, -1,
5002 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5003 -1, -1, -1, -1, 0, -1, -1, 980, -1, -1,
5004 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
5005 -1, 17, 995, 996, -1, 998, 999, -1, 1001, 25,
5006 -1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
5007 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5008 -1, -1, -1, -1, -1, -1, 1029, -1, -1, -1,
5009 1033, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5010 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5011 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5012 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5013 96, 97, 98, -1, 100, 101, 1079, -1, -1, -1,
5014 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5015 -1, -1, -1, 1096, -1, 121, -1, -1, 124, 1102,
5016 -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
5017 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
5018 146, 147, -1, -1, -1, -1, -1, 153, 154, 155,
5019 -1, -1, 158, 159, 160, -1, 162, -1, -1, -1,
5020 -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
5021 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5022 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
5023 28, 29, -1, 1176, -1, -1, -1, -1, -1, 37,
5024 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5025 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5026 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
5027 68, 69, -1, -1, -1, -1, -1, -1, -1, 1222,
5028 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5029 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5030 98, -1, 100, 101, -1, -1, -1, -1, -1, 107,
5031 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5032 -1, -1, -1, 121, -1, -1, 124, -1, -1, -1,
5033 -1, -1, -1, -1, -1, -1, -1, 135, 136, 137,
5034 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5035 -1, -1, -1, -1, -1, 153, 154, 155, 0, -1,
5036 158, 159, 160, -1, 162, -1, 8, 9, 10, -1,
5037 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
5038 -1, -1, -1, 25, 26, 27, 28, 29, -1, -1,
5039 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5040 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5041 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5042 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5043 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5044 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5045 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
5046 -1, -1, -1, -1, -1, 107, -1, -1, -1, -1,
5047 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5048 -1, -1, 124, -1, -1, -1, -1, -1, -1, -1,
5049 -1, -1, -1, -1, 136, 137, 138, 139, 140, 141,
5050 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5051 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
5052 162, -1, 8, 9, 10, -1, -1, 13, 14, 15,
5053 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
5054 26, 27, 28, 29, -1, -1, -1, -1, -1, -1,
5055 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5056 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5057 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5058 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5059 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5060 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5061 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
5062 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5063 -1, -1, -1, -1, -1, 121, -1, -1, 124, -1,
5064 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5065 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
5066 146, 147, -1, -1, -1, -1, 152, 153, 154, 155,
5067 0, -1, 158, 159, 160, -1, 162, -1, 8, 9,
5068 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
5069 -1, -1, -1, -1, -1, 25, -1, 27, 28, 29,
5070 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
5071 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
5072 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5073 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
5074 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5075 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5076 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5077 100, 101, -1, -1, -1, -1, -1, 107, -1, -1,
5078 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5079 -1, 121, -1, -1, 124, -1, -1, -1, -1, -1,
5080 -1, -1, -1, -1, -1, 135, 136, 137, 138, 139,
5081 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5082 -1, -1, -1, 153, 154, 155, 0, -1, 158, 159,
5083 160, -1, 162, -1, 8, 9, 10, -1, -1, 13,
5084 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5085 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
5086 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5087 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5088 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5089 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
5090 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5091 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5092 -1, 95, 96, 97, 98, -1, -1, 101, -1, -1,
5093 -1, -1, -1, 107, -1, -1, -1, -1, -1, -1,
5094 -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
5095 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5096 -1, -1, 136, -1, 138, 139, 140, 141, 142, 143,
5097 144, 145, 146, 147, -1, -1, -1, -1, 152, 153,
5098 154, 155, 0, 157, 158, 159, 160, -1, 162, -1,
5099 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5100 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
5101 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
5102 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5103 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5104 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5105 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5106 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5107 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5108 98, -1, -1, 101, -1, -1, -1, -1, -1, 107,
5109 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5110 -1, -1, -1, 121, -1, -1, 124, -1, -1, -1,
5111 -1, -1, -1, -1, -1, -1, -1, -1, 136, 137,
5112 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5113 -1, -1, -1, -1, -1, 153, 154, 155, 0, -1,
5114 158, 159, 160, -1, 162, -1, 8, 9, 10, -1,
5115 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
5116 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
5117 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5118 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5119 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5120 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5121 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5122 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5123 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
5124 -1, -1, -1, -1, -1, 107, -1, -1, -1, -1,
5125 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5126 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5127 -1, -1, -1, -1, 136, -1, 138, 139, 140, 141,
5128 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5129 152, 153, 154, 155, 0, 157, 158, 159, 160, -1,
5130 162, -1, 8, 9, 10, -1, -1, 13, 14, 15,
5131 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
5132 -1, 27, 28, -1, -1, -1, -1, -1, -1, -1,
5133 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5134 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5135 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5136 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5137 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5138 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5139 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
5140 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5141 -1, -1, -1, -1, -1, 121, -1, -1, -1, -1,
5142 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5143 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5144 146, 147, -1, -1, -1, -1, -1, 153, 154, 155,
5145 0, 157, 158, 159, 160, -1, 162, -1, 8, 9,
5146 10, -1, -1, -1, 14, 15, -1, 17, -1, -1,
5147 -1, -1, -1, -1, -1, 25, 26, -1, -1, -1,
5148 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
5149 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
5150 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5151 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
5152 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5153 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5154 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5155 100, 101, -1, -1, -1, -1, -1, -1, -1, -1,
5156 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5157 -1, 121, -1, -1, -1, -1, -1, -1, -1, -1,
5158 -1, -1, -1, -1, -1, 135, 136, -1, 138, 139,
5159 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5160 -1, -1, 152, 153, 154, 155, 0, -1, 158, -1,
5161 160, -1, 162, -1, 8, 9, 10, -1, -1, -1,
5162 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5163 -1, 25, 26, -1, -1, -1, -1, -1, -1, -1,
5164 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5165 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5166 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5167 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
5168 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5169 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5170 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
5171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5172 -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
5173 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5174 -1, 135, 136, -1, 138, 139, 140, 141, 142, 143,
5175 144, 145, 146, 147, -1, -1, -1, -1, 152, 153,
5176 154, 155, 0, -1, 158, -1, 160, -1, 162, -1,
5177 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
5178 -1, -1, -1, -1, -1, -1, -1, 25, -1, -1,
5179 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
5180 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5181 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5182 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5183 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5184 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5185 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5186 98, -1, 100, 101, -1, -1, -1, -1, -1, -1,
5187 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5188 -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
5189 -1, -1, -1, -1, -1, -1, -1, 135, 136, -1,
5190 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5191 -1, -1, -1, -1, -1, 153, 154, 155, 0, -1,
5192 158, -1, 160, -1, 162, -1, 8, 9, 10, -1,
5193 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
5194 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
5195 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5196 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5197 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5198 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5199 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5200 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5201 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
5202 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5203 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5204 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5205 -1, -1, -1, 135, 136, -1, 138, 139, 140, 141,
5206 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5207 -1, 153, 154, 155, -1, -1, 158, -1, 160, 1,
5208 162, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5209 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
5210 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
5211 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5212 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5213 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5214 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5215 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5216 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5217 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5218 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5219 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5220 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5221 10, 11, 12, -1, 14, 15, 16, -1, 18, 19,
5222 20, 21, 22, 23, 24, -1, 148, 149, 150, -1,
5223 30, 31, 32, 33, 34, 35, 36, -1, 160, 39,
5224 162, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5225 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5226 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
5227 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5228 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5229 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5230 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5231 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5232 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5233 -1, -1, 10, 11, 12, -1, -1, 15, 16, 17,
5234 18, 19, 20, 21, 22, 23, 24, -1, 148, 149,
5235 150, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5236 160, 39, 162, -1, -1, -1, -1, 45, 46, 47,
5237 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5238 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5239 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5240 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5241 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5242 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5243 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5244 118, 119, -1, -1, -1, 1, -1, 3, 4, 5,
5245 6, 7, -1, -1, 10, 11, 12, -1, -1, 15,
5246 16, -1, 18, 19, 20, 21, 22, 23, 24, 25,
5247 148, 149, 150, -1, 30, 31, 32, 33, 34, 35,
5248 36, -1, 160, 39, 162, -1, -1, -1, -1, 45,
5249 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
5250 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5251 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
5252 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5253 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5254 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5255 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5256 116, 117, 118, 119, -1, -1, -1, 1, -1, 3,
5257 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
5258 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
5259 24, -1, 148, 149, 150, -1, 30, 31, 32, 33,
5260 34, 35, 36, -1, 160, 39, 162, -1, -1, -1,
5261 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
5262 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5263 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
5264 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5265 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5266 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5267 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
5268 114, 115, 116, 117, 118, 119, -1, -1, -1, 1,
5269 -1, 3, 4, 5, 6, 7, -1, 9, 10, 11,
5270 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5271 22, 23, 24, -1, 148, 149, 150, -1, 30, 31,
5272 32, 33, 34, 35, 36, -1, 160, 39, 162, -1,
5273 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5274 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5275 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5276 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5277 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5278 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5279 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5280 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5281 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5282 10, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5283 20, 21, 22, 23, 24, -1, 148, 149, 150, -1,
5284 30, 31, 32, 33, 34, 35, 36, -1, 160, 39,
5285 162, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5286 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5287 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
5288 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5289 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5290 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5291 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5292 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5293 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5294 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5295 18, 19, 20, 21, 22, 23, 24, -1, 148, 149,
5296 150, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5297 160, 39, 162, -1, -1, -1, -1, 45, 46, 47,
5298 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5299 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5300 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5301 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5302 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5303 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5304 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5305 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5306 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5307 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5308 148, 149, 150, -1, -1, -1, -1, -1, -1, -1,
5309 158, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5310 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5311 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5312 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5313 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5314 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5315 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5316 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5317 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5318 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5319 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5320 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5321 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5322 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5323 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5324 148, 149, 150, -1, -1, -1, -1, -1, -1, -1,
5325 158, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5326 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5327 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5328 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5329 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5330 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5331 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5332 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5333 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5334 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5335 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5336 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5337 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5338 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5339 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5340 148, 149, 150, -1, -1, 153, -1, -1, -1, -1,
5341 -1, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5342 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5343 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5344 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5345 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5346 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5347 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5348 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5350 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5351 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5352 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5353 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5354 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5356 148, 149, 150, -1, -1, 153, -1, -1, -1, -1,
5357 -1, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5358 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5359 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5360 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5361 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5362 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5363 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5364 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5365 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5366 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5367 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5368 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5369 118, 119, -1, 121, -1, 1, -1, 3, 4, 5,
5370 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
5371 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5372 148, 149, 150, -1, 30, 31, 32, 33, 34, 35,
5373 36, -1, 160, 39, 162, -1, -1, -1, -1, 45,
5374 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
5375 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5376 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5377 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5378 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5379 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5380 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5381 116, 117, 118, 119, -1, -1, 1, -1, 3, 4,
5382 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5383 -1, 16, 17, 18, 19, 20, 21, 22, 23, 24,
5384 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
5385 35, 36, 158, -1, 39, -1, 162, -1, -1, -1,
5386 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5387 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5388 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5389 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
5390 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5391 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5392 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
5393 115, 116, 117, 118, 119, -1, -1, 0, 1, -1,
5394 3, 4, 5, 6, 7, -1, -1, -1, 11, 12,
5395 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5396 23, 24, -1, 148, 149, 150, -1, 30, 31, 32,
5397 33, 34, 35, 36, -1, 160, 39, 162, -1, -1,
5398 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5399 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5400 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5401 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
5402 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
5403 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5404 103, -1, 105, 106, -1, 108, -1, -1, 111, 112,
5405 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
5406 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5407 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5408 -1, -1, -1, -1, -1, 148, 149, 150, -1, -1,
5409 153, -1, -1, -1, -1, -1, 1, 160, 3, 4,
5410 5, 6, 7, 8, 9, 10, 11, 12, -1, 14,
5411 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
5412 25, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5413 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5414 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
5415 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5416 65, -1, -1, 68, -1, -1, -1, -1, -1, -1,
5417 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
5418 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5419 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5420 105, 106, -1, 108, -1, -1, 111, 112, 113, 114,
5421 115, 116, 117, 118, 119, -1, 121, -1, -1, -1,
5422 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5424 -1, -1, -1, 148, 149, 150, -1, -1, 153, -1,
5425 3, 4, 5, 158, 7, 160, -1, -1, 11, 12,
5426 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5427 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5428 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5429 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5430 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5431 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5432 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
5433 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
5434 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5435 103, -1, 105, 106, -1, 108, 109, 110, 111, 112,
5436 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
5437 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
5438 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5439 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
5440 32, 33, 34, 35, 36, -1, -1, 39, -1, 162,
5441 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
5442 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5443 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5444 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5445 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5446 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5447 102, 103, -1, 105, 106, -1, -1, -1, -1, 111,
5448 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5449 -1, -1, 3, 4, 5, 6, 7, 8, 9, 10,
5450 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
5451 21, 22, 23, 24, 25, 26, 148, 149, 150, 30,
5452 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
5453 162, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5454 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
5455 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5456 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
5457 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
5458 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
5459 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
5460 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5461 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5462 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
5463 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
5464 -1, -1, -1, -1, -1, 156, 157, 3, 4, 5,
5465 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
5466 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
5467 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
5468 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
5469 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
5470 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
5471 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5472 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
5473 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
5474 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5475 -1, -1, 108, 109, -1, -1, -1, -1, -1, -1,
5476 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5477 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5478 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5479 146, 147, -1, 149, 150, -1, -1, -1, -1, -1,
5480 156, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5481 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
5482 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
5483 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
5484 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5485 52, 53, 54, -1, 56, -1, -1, -1, -1, -1,
5486 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5487 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
5488 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
5489 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
5490 -1, -1, -1, -1, -1, -1, 108, 109, -1, -1,
5491 112, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5492 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5493 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
5494 142, 143, 144, 145, 146, 147, -1, 149, 150, -1,
5495 -1, -1, -1, -1, 156, 3, 4, 5, 6, 7,
5496 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5497 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5498 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5499 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5500 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
5501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5502 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5503 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
5504 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
5505 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5506 108, 109, -1, -1, 112, -1, -1, -1, -1, -1,
5507 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5508 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5509 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5510 -1, 149, 150, -1, -1, -1, -1, -1, 156, 3,
5511 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
5512 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
5513 24, 25, 26, -1, -1, -1, 30, 31, 32, 33,
5514 34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
5515 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
5516 -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
5517 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5518 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
5519 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
5520 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
5521 -1, -1, -1, -1, 108, 109, -1, -1, -1, -1,
5522 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5523 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5524 -1, -1, -1, -1, 138, 139, 140, 141, 142, 143,
5525 144, 145, 146, 147, -1, 149, 150, 3, 4, 5,
5526 -1, 7, 156, -1, -1, 11, 12, -1, -1, -1,
5527 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5528 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
5529 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5530 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5531 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5533 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5534 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5535 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5536 106, -1, -1, -1, -1, 111, 112, 113, 114, 115,
5537 116, 117, 118, 119, -1, -1, -1, -1, -1, -1,
5538 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5539 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
5540 -1, -1, 148, 11, 12, -1, -1, -1, 16, 155,
5541 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5542 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5543 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
5544 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5545 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5546 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5547 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5549 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5550 -1, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5551 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5552 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5553 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5554 148, 11, 12, -1, -1, -1, 16, 155, 18, 19,
5555 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5556 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5557 -1, -1, -1, -1, -1, 45, 46, -1, 48, 49,
5558 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5559 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5560 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5561 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5562 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5563 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5564 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5565 -1, -1, 1, -1, 3, 4, 5, -1, 7, -1,
5566 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5567 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
5568 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5569 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5570 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5571 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5572 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
5573 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5574 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
5575 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
5576 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
5577 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
5578 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5579 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
5580 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
5581 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
5582 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5583 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5584 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5585 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5586 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5587 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5588 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
5589 118, 119, -1, -1, -1, -1, 3, 4, 5, -1,
5590 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5591 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5592 148, 149, 150, 30, 31, 32, 33, 34, 35, 36,
5593 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5594 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5595 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5596 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
5597 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5598 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
5599 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
5600 -1, 108, 109, 110, 111, 112, 113, 114, 115, 116,
5601 117, 118, 119, -1, -1, -1, -1, 3, 4, 5,
5602 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
5603 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5604 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
5605 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5606 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5607 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5608 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5609 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5610 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5611 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5612 106, -1, 108, 109, 110, 111, 112, 113, 114, 115,
5613 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
5614 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5615 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5616 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
5617 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5618 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5619 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
5620 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5621 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
5622 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5623 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5624 105, 106, -1, 108, 109, 110, 111, 112, 113, 114,
5625 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
5626 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
5627 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
5628 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
5629 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5630 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5631 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
5632 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5633 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5634 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5635 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5636 -1, 105, 106, -1, 108, 109, -1, 111, 112, 113,
5637 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5638 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5639 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5640 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
5641 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5642 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5643 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5644 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5645 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
5646 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
5647 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5648 103, -1, 105, 106, -1, -1, 109, 110, 111, 112,
5649 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
5650 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
5651 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5652 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
5653 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5654 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
5655 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
5656 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5657 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5658 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5659 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5660 102, 103, -1, 105, 106, -1, 108, 109, -1, 111,
5661 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5662 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5663 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
5664 21, 22, 23, 24, -1, -1, 148, 149, 150, 30,
5665 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5666 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5667 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
5668 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5669 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
5670 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5671 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
5672 -1, 102, 103, -1, 105, 106, -1, -1, 109, -1,
5673 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
5674 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
5675 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5676 20, 21, 22, 23, 24, -1, -1, 148, 149, 150,
5677 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5678 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5679 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5680 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5681 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5682 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5683 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5684 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5685 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5686 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5687 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5688 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
5689 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5690 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5691 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5692 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5693 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
5694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5695 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
5696 99, -1, -1, 102, 103, -1, 105, 106, -1, 108,
5697 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
5698 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
5699 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5700 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
5701 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
5702 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
5703 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5704 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5705 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5707 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5708 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5709 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5710 118, 119, -1, -1, -1, -1, 3, 4, 5, -1,
5711 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5712 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5713 148, 149, 150, 30, 31, 32, 33, 34, 35, 36,
5714 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5715 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5716 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5717 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
5718 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5719 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
5720 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
5721 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
5722 117, 118, 119, -1, -1, -1, -1, 3, 4, 5,
5723 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
5724 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5725 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
5726 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5727 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5728 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5730 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5731 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5732 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5733 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5734 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
5735 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5736 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5737 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
5738 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5739 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5740 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5741 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5742 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
5743 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5744 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5745 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
5746 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
5747 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
5748 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
5749 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
5750 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5751 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5752 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5753 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5754 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5755 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5756 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5757 -1, 105, 106, -1, -1, -1, -1, 111, 112, 113,
5758 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5759 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5760 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5761 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
5762 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5763 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5764 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5765 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5766 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
5767 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
5768 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5769 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
5770 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
5771 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
5772 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5773 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
5774 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5775 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
5776 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5777 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5778 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5779 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5780 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5781 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5782 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5783 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5784 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5785 23, 24, -1, -1, -1, -1, 148, 30, 31, 32,
5786 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5787 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5788 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5789 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5790 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5791 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5792 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5793 103, -1, 105, 106, -1, 108, -1, -1, 111, 112,
5794 113, 114, 115, 116, 117, 118, 119, -1, -1, 3,
5795 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
5796 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
5797 24, -1, -1, -1, -1, 148, 30, 31, 32, 33,
5798 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5799 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5800 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5801 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5802 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5803 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5804 -1, 95, -1, -1, -1, 99, -1, -1, 102, 103,
5805 -1, 105, 106, -1, -1, -1, -1, 111, 112, 113,
5806 114, 115, 116, 117, 118, 119, -1, -1, 3, 4,
5807 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5808 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5809 -1, -1, -1, -1, 148, 30, 31, 32, 33, 34,
5810 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5811 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5812 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5813 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5816 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5817 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
5818 115, 116, 117, 118, 119, -1, -1, 3, 4, 5,
5819 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
5820 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5821 -1, -1, -1, 148, 30, 31, 32, 33, 34, 35,
5822 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5823 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5824 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5825 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5827 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5828 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5829 106, -1, -1, -1, -1, 111, 112, 113, 114, 115,
5830 116, 117, 118, 119, -1, -1, 3, 4, 5, -1,
5831 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5832 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5833 -1, -1, 148, 30, 31, 32, 33, 34, 35, 36,
5834 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5835 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5836 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5837 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5838 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5839 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5840 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
5841 -1, -1, -1, -1, 111, 112, 113, 114, 115, 116,
5842 117, 118, 119, -1, -1, 3, 4, 5, -1, 7,
5843 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5844 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5845 -1, 148, 30, 31, 32, 33, 34, 35, 36, -1,
5846 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
5847 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5848 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5849 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5850 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5851 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5852 -1, 99, -1, -1, 102, 103, -1, 105, 106, 33,
5853 34, 35, 36, 111, 112, 113, 114, 115, 116, 117,
5854 118, 119, -1, -1, -1, 49, 50, 51, 52, -1,
5855 -1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
5856 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5857 148, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5858 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5859 -1, -1, -1, -1, -1, 99, -1, -1, 102, -1,
5860 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
5861 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5862 -1, -1, 33, 34, 35, 36, -1, -1, -1, -1,
5863 -1, -1, -1, -1, -1, -1, -1, 141, 49, 50,
5864 51, 52, -1, -1, 148, 56, -1, 58, 59, 60,
5865 61, 62, 63, -1, -1, -1, -1, -1, 162, -1,
5866 -1, -1, -1, -1, -1, -1, -1, 78, -1, -1,
5867 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5868 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
5869 -1, 102, -1, -1, 105, 106, -1, 108, 109, -1,
5870 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
5871 -1, -1, -1, -1, -1, 33, 34, 35, 36, -1,
5872 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5873 141, 49, 50, 51, 52, -1, -1, 148, 56, -1,
5874 -1, 59, 60, 61, 62, 63, -1, -1, -1, -1,
5875 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5877 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5878 -1, 99, -1, -1, 102, -1, -1, 105, 106, -1,
5879 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5880 118, 119, -1, -1, -1, -1, -1, -1, 33, 34,
5881 35, 36, -1, -1, -1, 52, 53, -1, -1, 56,
5882 -1, -1, -1, 141, 49, 50, 51, 52, -1, -1,
5883 148, 56, -1, -1, 59, 60, 61, 62, 63, 76,
5884 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
5885 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
5886 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5887 -1, 108, 109, -1, 99, -1, -1, 102, -1, -1,
5888 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
5889 115, 116, 117, 118, 119, -1, -1, -1, -1, -1,
5890 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
5891 147, -1, 149, 150, 52, 53, 141, -1, 56, 156,
5892 157, -1, -1, 148, -1, -1, -1, -1, -1, -1,
5893 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5894 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
5895 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
5896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5897 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
5898 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5900 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5901 -1, 149, 150, 52, 53, -1, -1, 56, 156, 157,
5902 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5903 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
5904 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
5905 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
5906 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
5907 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5909 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
5910 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
5911 149, 150, 52, 53, -1, -1, 56, 156, 157, -1,
5912 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5913 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
5914 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
5915 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
5916 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
5917 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5919 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
5920 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
5921 150, 52, 53, -1, -1, 56, 156, 157, -1, -1,
5922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5923 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
5924 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
5925 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
5926 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
5927 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5928 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5929 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
5930 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
5931 52, 53, -1, -1, 56, 156, 157, -1, -1, -1,
5932 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5933 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
5934 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
5935 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
5936 -1, -1, -1, -1, -1, -1, 108, 109, -1, -1,
5937 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5938 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5939 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
5940 142, 143, 144, 145, 146, 147, -1, 149, 150, 52,
5941 53, -1, -1, 56, 156, 157, -1, -1, -1, -1,
5942 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5943 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
5944 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
5945 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
5946 -1, -1, -1, -1, -1, 108, 109, -1, -1, -1,
5947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5948 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5949 -1, -1, -1, -1, -1, 138, 139, 140, 141, 142,
5950 143, 144, 145, 146, 147, -1, 149, 150, 52, 53,
5951 -1, -1, 56, 156, 157, -1, -1, -1, -1, -1,
5952 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5953 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
5954 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
5955 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
5956 -1, -1, -1, -1, 108, 109, -1, -1, -1, -1,
5957 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5958 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5959 -1, -1, -1, -1, 138, 139, 140, 141, 142, 143,
5960 144, 145, 146, 147, -1, 149, 150, 52, 53, -1,
5961 -1, 56, 156, 157, -1, -1, -1, -1, -1, -1,
5962 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5963 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
5964 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
5965 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
5966 -1, -1, -1, 108, 109, -1, -1, -1, -1, -1,
5967 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5968 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5969 -1, -1, -1, 138, 139, 140, 141, 142, 143, 144,
5970 145, 146, 147, -1, 149, 150, 52, 53, -1, -1,
5971 56, 156, 157, -1, -1, -1, -1, -1, -1, -1,
5972 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5973 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
5974 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
5975 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5976 -1, -1, 108, 109, -1, -1, -1, -1, -1, -1,
5977 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5979 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5980 146, 147, -1, 149, 150, 52, 53, -1, -1, 56,
5981 156, 157, -1, -1, -1, -1, -1, -1, -1, -1,
5982 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
5983 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
5984 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
5985 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5986 -1, 108, 109, -1, -1, -1, -1, -1, -1, -1,
5987 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5988 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5989 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
5990 147, -1, 149, 150, 52, 53, -1, -1, 56, 156,
5991 157, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5992 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5993 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
5994 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
5995 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5996 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
5997 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5998 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5999 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6000 -1, 149, 150, 52, 53, -1, -1, 56, 156, 157,
6001 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6002 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6003 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6004 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6005 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
6006 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6007 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6008 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
6009 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
6010 149, 150, 52, 53, -1, -1, 56, 156, 157, -1,
6011 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6012 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
6013 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
6014 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
6015 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
6016 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6017 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6018 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
6019 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
6020 150, 52, 53, -1, -1, 56, 156, 157, -1, -1,
6021 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6022 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
6023 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
6024 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
6025 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
6026 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6027 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6028 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
6029 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
6030 52, 53, -1, -1, 56, 156, 157, -1, -1, -1,
6031 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6032 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
6033 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
6034 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
6035 -1, -1, -1, -1, -1, -1, 108, 109, -1, -1,
6036 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6037 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6038 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
6039 142, 143, 144, 145, 146, 147, -1, 149, 150, -1,
6045static const yytype_int16 yystos[] =
6047 0, 164, 165, 0, 1, 3, 4, 5, 6, 7,
6048 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
6049 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
6050 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6051 57, 59, 60, 61, 62, 63, 64, 65, 76, 77,
6052 91, 92, 99, 102, 103, 105, 106, 108, 111, 112,
6053 113, 114, 115, 116, 117, 118, 119, 148, 149, 150,
6054 166, 167, 168, 176, 178, 180, 186, 187, 193, 194,
6055 196, 197, 198, 200, 201, 202, 204, 205, 214, 217,
6056 233, 245, 246, 247, 248, 249, 250, 251, 252, 253,
6057 254, 255, 264, 286, 295, 296, 348, 349, 350, 351,
6058 352, 353, 354, 357, 359, 360, 374, 375, 377, 378,
6059 379, 380, 381, 382, 383, 384, 385, 423, 437, 3,
6060 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
6061 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6062 24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
6063 37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
6064 52, 53, 56, 76, 77, 78, 79, 80, 81, 82,
6065 83, 84, 87, 88, 93, 94, 95, 96, 108, 109,
6066 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6067 149, 150, 156, 208, 209, 210, 212, 213, 374, 39,
6068 58, 99, 102, 108, 109, 110, 113, 149, 186, 187,
6069 197, 205, 214, 219, 225, 228, 230, 245, 381, 382,
6070 384, 385, 421, 422, 225, 157, 226, 227, 157, 222,
6071 226, 157, 162, 430, 54, 209, 430, 152, 169, 152,
6072 21, 22, 31, 32, 196, 214, 245, 264, 214, 214,
6073 214, 56, 47, 102, 172, 173, 174, 176, 199, 200,
6074 437, 176, 235, 220, 230, 421, 437, 219, 420, 421,
6075 437, 46, 99, 148, 155, 186, 187, 204, 233, 245,
6076 381, 382, 385, 287, 208, 363, 376, 380, 363, 364,
6077 365, 161, 161, 161, 161, 379, 193, 214, 214, 160,
6078 162, 429, 435, 436, 40, 41, 42, 43, 44, 37,
6079 38, 157, 388, 389, 390, 391, 437, 388, 390, 26,
6080 152, 222, 226, 256, 297, 28, 257, 294, 135, 155,
6081 102, 108, 201, 135, 25, 78, 79, 80, 81, 82,
6082 83, 84, 85, 86, 87, 88, 89, 90, 95, 96,
6083 101, 136, 138, 139, 140, 141, 142, 143, 144, 145,
6084 146, 147, 216, 216, 69, 97, 98, 154, 427, 234,
6085 1, 180, 189, 189, 190, 191, 190, 189, 429, 436,
6086 99, 198, 205, 245, 269, 381, 382, 385, 52, 56,
6087 95, 99, 206, 207, 245, 381, 382, 385, 207, 33,
6088 34, 35, 36, 49, 50, 51, 52, 56, 157, 185,
6089 208, 383, 418, 225, 98, 427, 428, 297, 351, 100,
6090 100, 155, 219, 56, 219, 219, 219, 363, 388, 388,
6091 135, 101, 155, 229, 437, 98, 154, 427, 100, 100,
6092 155, 229, 225, 430, 431, 225, 92, 224, 225, 230,
6093 395, 421, 437, 180, 431, 180, 54, 64, 65, 177,
6094 157, 215, 166, 172, 98, 427, 100, 175, 199, 158,
6095 429, 436, 431, 236, 431, 159, 155, 430, 434, 155,
6096 434, 153, 434, 430, 56, 379, 201, 203, 389, 155,
6097 98, 154, 427, 288, 66, 120, 122, 123, 366, 120,
6098 120, 366, 67, 366, 355, 361, 358, 362, 78, 160,
6099 168, 189, 189, 189, 189, 176, 180, 180, 52, 54,
6100 55, 56, 57, 58, 78, 92, 102, 108, 109, 110,
6101 142, 145, 274, 336, 392, 394, 395, 396, 397, 398,
6102 399, 400, 401, 402, 405, 406, 407, 408, 409, 412,
6103 413, 414, 415, 416, 135, 243, 394, 135, 244, 298,
6104 299, 107, 195, 302, 303, 302, 218, 437, 199, 155,
6105 204, 155, 218, 183, 214, 214, 214, 214, 214, 214,
6106 214, 214, 214, 214, 214, 214, 214, 181, 214, 214,
6107 214, 214, 214, 214, 214, 214, 214, 214, 214, 52,
6108 53, 56, 212, 222, 423, 424, 425, 224, 230, 52,
6109 53, 56, 212, 222, 424, 170, 172, 13, 265, 435,
6110 265, 172, 189, 172, 429, 239, 56, 98, 154, 427,
6111 25, 180, 52, 56, 206, 139, 386, 98, 154, 427,
6112 242, 419, 69, 98, 426, 52, 56, 424, 218, 218,
6113 211, 125, 135, 135, 218, 219, 108, 219, 228, 421,
6114 52, 56, 224, 52, 56, 218, 218, 422, 431, 158,
6115 431, 155, 431, 155, 431, 209, 237, 214, 153, 153,
6116 424, 424, 218, 169, 431, 174, 431, 421, 155, 203,
6117 52, 56, 224, 52, 56, 289, 368, 367, 120, 356,
6118 366, 66, 120, 120, 356, 66, 120, 214, 102, 108,
6119 270, 271, 272, 273, 397, 155, 417, 437, 431, 275,
6120 276, 155, 393, 219, 155, 417, 34, 52, 155, 393,
6121 52, 155, 393, 52, 197, 214, 170, 435, 197, 214,
6122 170, 153, 300, 298, 10, 68, 263, 304, 263, 108,
6123 193, 219, 230, 231, 232, 431, 203, 155, 178, 179,
6124 193, 205, 214, 219, 221, 232, 245, 385, 184, 182,
6125 430, 100, 100, 222, 226, 430, 432, 155, 100, 100,
6126 222, 223, 226, 437, 263, 8, 258, 344, 437, 172,
6127 13, 172, 263, 27, 266, 435, 263, 25, 238, 309,
6128 17, 260, 307, 52, 56, 224, 52, 56, 190, 241,
6129 387, 240, 52, 56, 206, 224, 170, 180, 188, 223,
6130 226, 179, 214, 221, 179, 221, 209, 219, 219, 229,
6131 100, 100, 432, 100, 100, 395, 421, 180, 221, 434,
6132 201, 432, 157, 291, 394, 369, 54, 55, 57, 373,
6133 385, 161, 366, 161, 161, 161, 272, 397, 155, 431,
6134 155, 416, 219, 135, 392, 399, 412, 414, 402, 406,
6135 408, 400, 409, 414, 398, 400, 44, 44, 263, 44,
6136 44, 263, 301, 153, 305, 219, 155, 44, 203, 44,
6137 135, 44, 98, 154, 427, 52, 56, 58, 91, 92,
6138 99, 102, 105, 106, 108, 113, 141, 286, 315, 316,
6139 317, 318, 321, 326, 327, 328, 331, 332, 333, 334,
6140 335, 336, 337, 338, 339, 340, 341, 342, 343, 348,
6141 349, 352, 353, 354, 357, 359, 360, 382, 406, 315,
6142 137, 218, 218, 195, 159, 100, 218, 218, 195, 219,
6143 232, 345, 437, 9, 15, 259, 261, 347, 437, 14,
6144 261, 262, 267, 268, 437, 268, 192, 310, 307, 263,
6145 108, 219, 306, 263, 432, 172, 435, 189, 170, 432,
6146 263, 431, 185, 297, 294, 218, 218, 100, 218, 218,
6147 431, 155, 431, 394, 290, 370, 431, 270, 273, 271,
6148 155, 393, 155, 393, 417, 155, 393, 155, 393, 393,
6149 214, 214, 214, 214, 140, 281, 282, 437, 281, 108,
6150 219, 176, 176, 218, 214, 52, 56, 224, 52, 56,
6151 339, 339, 56, 206, 323, 316, 324, 325, 326, 327,
6152 330, 432, 322, 430, 433, 52, 363, 52, 102, 380,
6153 101, 155, 140, 155, 155, 316, 89, 90, 98, 154,
6154 157, 319, 320, 52, 214, 179, 221, 179, 221, 218,
6155 179, 221, 179, 221, 101, 346, 437, 172, 171, 172,
6156 189, 263, 263, 311, 263, 219, 155, 265, 263, 170,
6157 435, 263, 218, 283, 430, 29, 124, 292, 371, 155,
6158 155, 400, 414, 400, 400, 274, 277, 280, 283, 398,
6159 400, 401, 403, 404, 410, 411, 414, 416, 172, 170,
6160 219, 432, 316, 432, 316, 328, 330, 432, 155, 113,
6161 331, 153, 125, 189, 340, 324, 328, 321, 329, 330,
6162 333, 337, 339, 339, 206, 432, 431, 324, 327, 331,
6163 324, 327, 331, 179, 221, 99, 205, 245, 381, 382,
6164 385, 265, 172, 265, 314, 315, 108, 219, 172, 263,
6165 158, 160, 293, 172, 372, 271, 393, 155, 393, 393,
6166 393, 417, 283, 140, 275, 155, 278, 279, 99, 245,
6167 155, 417, 155, 278, 155, 278, 431, 155, 155, 363,
6168 433, 431, 155, 155, 431, 431, 431, 432, 432, 432,
6169 56, 98, 154, 427, 172, 347, 172, 265, 40, 41,
6170 219, 268, 307, 308, 52, 284, 285, 396, 170, 153,
6171 172, 400, 140, 245, 277, 411, 414, 56, 98, 403,
6172 408, 400, 410, 414, 400, 329, 329, 328, 330, 52,
6173 56, 224, 52, 56, 344, 267, 312, 189, 189, 155,
6174 430, 263, 121, 393, 155, 278, 155, 278, 52, 56,
6175 417, 155, 278, 155, 278, 278, 155, 432, 172, 285,
6176 400, 414, 400, 400, 268, 309, 313, 278, 155, 278,
6181static const yytype_int16 yyr1[] =
6183 0, 163, 165, 164, 166, 167, 167, 167, 168, 168,
6184 169, 171, 170, 170, 172, 173, 173, 173, 174, 175,
6185 174, 177, 176, 176, 176, 176, 176, 176, 176, 176,
6186 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
6187 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
6188 178, 178, 179, 179, 179, 180, 180, 180, 180, 180,
6189 181, 182, 180, 183, 184, 180, 180, 185, 186, 188,
6190 187, 189, 189, 191, 192, 190, 193, 193, 194, 194,
6191 195, 196, 197, 197, 197, 197, 197, 197, 197, 197,
6192 197, 197, 197, 198, 198, 199, 199, 200, 200, 200,
6193 200, 200, 200, 200, 200, 200, 200, 201, 201, 202,
6194 202, 203, 203, 204, 204, 204, 204, 204, 204, 204,
6195 204, 204, 205, 205, 205, 205, 205, 205, 205, 205,
6196 205, 206, 206, 207, 207, 207, 208, 208, 208, 208,
6197 208, 209, 209, 210, 211, 210, 212, 212, 212, 212,
6198 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
6199 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
6200 212, 212, 212, 212, 212, 212, 213, 213, 213, 213,
6201 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
6202 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
6203 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
6204 213, 213, 213, 213, 213, 213, 213, 214, 214, 214,
6205 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
6206 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
6207 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
6208 214, 214, 214, 214, 214, 214, 214, 215, 214, 214,
6209 214, 214, 214, 214, 214, 216, 216, 216, 216, 217,
6210 217, 218, 219, 220, 220, 220, 220, 221, 221, 222,
6211 222, 222, 223, 223, 224, 224, 224, 224, 224, 225,
6212 225, 225, 225, 225, 227, 226, 228, 228, 229, 229,
6213 230, 230, 230, 230, 230, 230, 231, 231, 232, 232,
6214 232, 233, 233, 233, 233, 233, 233, 233, 233, 233,
6215 233, 233, 234, 233, 235, 233, 236, 233, 233, 233,
6216 233, 233, 233, 233, 233, 233, 233, 237, 233, 233,
6217 233, 233, 233, 233, 233, 233, 233, 233, 233, 238,
6218 233, 239, 233, 233, 233, 240, 233, 241, 233, 242,
6219 233, 243, 233, 244, 233, 233, 233, 233, 233, 245,
6220 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
6221 256, 257, 258, 259, 260, 261, 262, 263, 263, 264,
6222 265, 265, 265, 266, 266, 267, 267, 268, 268, 269,
6223 269, 270, 270, 271, 271, 272, 272, 272, 272, 272,
6224 273, 273, 274, 274, 276, 275, 277, 277, 277, 277,
6225 278, 278, 279, 280, 280, 280, 280, 280, 280, 280,
6226 280, 280, 280, 280, 280, 280, 280, 280, 281, 281,
6227 282, 282, 283, 283, 284, 284, 285, 285, 287, 288,
6228 289, 290, 286, 291, 291, 292, 293, 292, 294, 295,
6229 295, 295, 295, 296, 296, 296, 296, 296, 296, 296,
6230 296, 296, 297, 297, 299, 300, 301, 298, 303, 304,
6231 305, 302, 306, 306, 306, 306, 307, 308, 308, 310,
6232 311, 312, 309, 313, 313, 314, 314, 314, 315, 315,
6233 315, 315, 315, 315, 316, 317, 317, 318, 318, 319,
6234 320, 321, 321, 321, 321, 321, 321, 321, 321, 321,
6235 321, 321, 321, 321, 322, 321, 321, 323, 321, 324,
6236 324, 324, 324, 324, 324, 325, 325, 326, 326, 327,
6237 328, 328, 329, 329, 330, 331, 331, 331, 331, 332,
6238 332, 333, 333, 334, 334, 335, 335, 336, 337, 337,
6239 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
6240 339, 339, 339, 339, 339, 339, 339, 339, 339, 339,
6241 340, 341, 341, 342, 343, 343, 343, 344, 344, 345,
6242 345, 345, 346, 346, 347, 347, 348, 348, 349, 350,
6243 350, 350, 351, 352, 353, 354, 355, 355, 356, 356,
6244 357, 358, 358, 359, 360, 361, 361, 362, 362, 363,
6245 363, 364, 364, 365, 365, 366, 367, 366, 368, 369,
6246 370, 371, 372, 366, 373, 373, 373, 373, 374, 374,
6247 375, 376, 376, 377, 378, 378, 379, 379, 379, 379,
6248 380, 380, 380, 381, 381, 381, 382, 382, 382, 382,
6249 382, 382, 382, 383, 383, 384, 384, 385, 385, 387,
6250 386, 386, 388, 388, 389, 390, 391, 390, 392, 392,
6251 392, 392, 392, 393, 393, 394, 394, 394, 394, 394,
6252 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
6253 395, 396, 396, 396, 396, 397, 397, 398, 399, 399,
6254 400, 400, 401, 402, 402, 403, 403, 404, 404, 405,
6255 405, 406, 406, 407, 408, 408, 409, 410, 411, 411,
6256 412, 412, 413, 413, 414, 414, 415, 415, 416, 416,
6257 417, 417, 418, 419, 418, 420, 420, 421, 421, 422,
6258 422, 422, 422, 422, 422, 423, 423, 423, 424, 424,
6259 425, 425, 425, 426, 426, 427, 427, 428, 428, 429,
6260 429, 430, 430, 431, 432, 433, 434, 434, 435, 435,
6265static const yytype_int8 yyr2[] =
6267 0, 2, 0, 2, 2, 1, 1, 3, 1, 2,
6268 3, 0, 6, 3, 2, 1, 1, 3, 1, 0,
6269 3, 0, 4, 3, 3, 3, 2, 3, 3, 3,
6270 3, 3, 4, 1, 4, 4, 6, 4, 1, 1,
6271 4, 4, 7, 6, 6, 6, 6, 4, 6, 4,
6272 6, 4, 1, 3, 1, 1, 3, 3, 3, 2,
6273 0, 0, 5, 0, 0, 5, 1, 1, 2, 0,
6274 5, 1, 1, 0, 0, 4, 1, 1, 1, 4,
6275 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
6276 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
6277 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
6278 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
6279 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
6280 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
6281 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
6282 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6283 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6284 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6285 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6286 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6287 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6288 1, 1, 1, 1, 1, 1, 1, 4, 4, 7,
6289 6, 6, 6, 6, 5, 4, 3, 3, 2, 2,
6290 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
6291 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
6292 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
6293 4, 6, 4, 6, 1, 1, 1, 1, 1, 3,
6294 3, 1, 1, 1, 2, 4, 2, 1, 3, 3,
6295 5, 3, 1, 1, 1, 1, 2, 4, 2, 1,
6296 2, 2, 4, 1, 0, 2, 2, 1, 2, 1,
6297 1, 2, 1, 3, 4, 3, 1, 1, 3, 4,
6298 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6299 1, 1, 0, 4, 0, 3, 0, 4, 3, 3,
6300 2, 3, 3, 1, 4, 3, 1, 0, 6, 4,
6301 3, 2, 1, 2, 1, 6, 6, 4, 4, 0,
6302 6, 0, 5, 5, 6, 0, 6, 0, 7, 0,
6303 5, 0, 5, 0, 5, 1, 1, 1, 1, 1,
6304 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6305 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6306 1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
6307 1, 1, 3, 1, 3, 1, 3, 5, 1, 3,
6308 2, 1, 1, 1, 0, 2, 4, 2, 2, 1,
6309 2, 0, 1, 6, 8, 4, 6, 4, 2, 6,
6310 2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
6311 3, 4, 1, 4, 1, 3, 1, 1, 0, 0,
6312 0, 0, 7, 4, 1, 3, 0, 4, 3, 2,
6313 4, 5, 5, 2, 4, 4, 3, 3, 3, 2,
6314 1, 4, 3, 3, 0, 0, 0, 5, 0, 0,
6315 0, 5, 1, 2, 3, 4, 5, 1, 1, 0,
6316 0, 0, 8, 1, 1, 1, 3, 3, 1, 2,
6317 3, 1, 1, 1, 1, 3, 1, 3, 1, 1,
6318 1, 1, 1, 4, 4, 4, 3, 4, 4, 4,
6319 3, 3, 3, 2, 0, 4, 2, 0, 4, 1,
6320 1, 2, 2, 4, 1, 2, 3, 1, 3, 5,
6321 2, 1, 1, 3, 1, 3, 1, 2, 1, 1,
6322 3, 2, 1, 1, 3, 2, 1, 2, 1, 1,
6323 1, 3, 3, 2, 2, 1, 1, 1, 2, 2,
6324 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6325 1, 2, 2, 4, 2, 3, 1, 6, 1, 1,
6326 1, 1, 2, 1, 2, 1, 1, 1, 1, 1,
6327 1, 2, 3, 3, 3, 4, 0, 3, 1, 2,
6328 4, 0, 3, 4, 4, 0, 3, 0, 3, 0,
6329 2, 0, 2, 0, 2, 1, 0, 3, 0, 0,
6330 0, 0, 0, 8, 1, 1, 1, 1, 1, 1,
6331 2, 1, 1, 3, 1, 2, 1, 1, 1, 1,
6332 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6333 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
6334 4, 0, 1, 1, 3, 1, 0, 3, 4, 2,
6335 2, 1, 1, 2, 0, 6, 8, 4, 6, 4,
6336 6, 2, 4, 6, 2, 4, 2, 4, 1, 0,
6337 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
6338 1, 3, 1, 2, 1, 2, 1, 1, 3, 1,
6339 3, 1, 1, 1, 2, 1, 3, 3, 1, 3,
6340 1, 3, 1, 1, 2, 1, 1, 1, 2, 1,
6341 2, 1, 1, 0, 4, 1, 2, 1, 3, 3,
6342 2, 1, 4, 2, 1, 1, 1, 1, 1, 1,
6343 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
6344 1, 0, 1, 2, 2, 2, 1, 1, 1, 1,
6349enum { YYENOMEM = -2 };
6351#define yyerrok (yyerrstatus = 0)
6352#define yyclearin (yychar = YYEMPTY)
6354#define YYACCEPT goto yyacceptlab
6355#define YYABORT goto yyabortlab
6356#define YYERROR goto yyerrorlab
6357#define YYNOMEM goto yyexhaustedlab
6360#define YYRECOVERING() (!!yyerrstatus)
6362#define YYBACKUP(Token, Value) \
6364 if (yychar == YYEMPTY) \
6368 YYPOPSTACK (yylen); \
6374 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
6381#define YYERRCODE YYUNDEF
6387#ifndef YYLLOC_DEFAULT
6388# define YYLLOC_DEFAULT(Current, Rhs, N) \
6392 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
6393 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
6394 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
6395 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
6399 (Current).first_line = (Current).last_line = \
6400 YYRHSLOC (Rhs, 0).last_line; \
6401 (Current).first_column = (Current).last_column = \
6402 YYRHSLOC (Rhs, 0).last_column; \
6407#define YYRHSLOC(Rhs, K) ((Rhs)[K])
6415# define YYFPRINTF fprintf
6418# define YYDPRINTF(Args) \
6429# ifndef YYLOCATION_PRINT
6431# if defined YY_LOCATION_PRINT
6435# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
6437# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6443yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
6446 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
6447 if (0 <= yylocp->first_line)
6449 res += YYFPRINTF (p,
"%d", yylocp->first_line);
6450 if (0 <= yylocp->first_column)
6451 res += YYFPRINTF (p,
".%d", yylocp->first_column);
6453 if (0 <= yylocp->last_line)
6455 if (yylocp->first_line < yylocp->last_line)
6457 res += YYFPRINTF (p,
"-%d", yylocp->last_line);
6459 res += YYFPRINTF (p,
".%d", end_col);
6461 else if (0 <= end_col && yylocp->first_column < end_col)
6462 res += YYFPRINTF (p,
"-%d", end_col);
6467# define YYLOCATION_PRINT yy_location_print_
6471# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
6475# define YYLOCATION_PRINT(File, Loc) ((void) 0)
6478# define YY_LOCATION_PRINT YYLOCATION_PRINT
6484# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
6488 YYFPRINTF (p, "%s ", Title); \
6489 yy_symbol_print (stderr, \
6490 Kind, Value, Location, p); \
6491 YYFPRINTF (p, "\n"); \
6501yy_symbol_value_print (
FILE *yyo,
6504 FILE *yyoutput = yyo;
6506 YY_USE (yylocationp);
6510 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6513 case YYSYMBOL_tIDENTIFIER:
6517 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6519 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6529 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6531 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6537 case YYSYMBOL_tGVAR:
6541 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6543 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6549 case YYSYMBOL_tIVAR:
6553 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6555 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6561 case YYSYMBOL_tCONSTANT:
6565 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6567 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6573 case YYSYMBOL_tCVAR:
6577 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6579 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6585 case YYSYMBOL_tLABEL:
6589 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6591 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6597 case YYSYMBOL_tINTEGER:
6601 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6603 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6609 case YYSYMBOL_tFLOAT:
6613 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6615 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6621 case YYSYMBOL_tRATIONAL:
6625 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6627 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6633 case YYSYMBOL_tIMAGINARY:
6637 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6639 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6645 case YYSYMBOL_tCHAR:
6649 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6651 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6657 case YYSYMBOL_tNTH_REF:
6661 rb_parser_printf(p,
"$%ld", ((*yyvaluep).node)->nd_nth);
6663 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
6669 case YYSYMBOL_tBACK_REF:
6673 rb_parser_printf(p,
"$%c", (
int)((*yyvaluep).node)->nd_nth);
6675 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
6681 case YYSYMBOL_tSTRING_CONTENT:
6685 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6687 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6693 case YYSYMBOL_tOP_ASGN:
6697 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6699 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6705 case YYSYMBOL_top_compstmt:
6709 if (((*yyvaluep).node)) {
6710 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6718 case YYSYMBOL_top_stmts:
6722 if (((*yyvaluep).node)) {
6723 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6731 case YYSYMBOL_top_stmt:
6735 if (((*yyvaluep).node)) {
6736 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6744 case YYSYMBOL_begin_block:
6748 if (((*yyvaluep).node)) {
6749 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6757 case YYSYMBOL_bodystmt:
6761 if (((*yyvaluep).node)) {
6762 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6770 case YYSYMBOL_compstmt:
6774 if (((*yyvaluep).node)) {
6775 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6783 case YYSYMBOL_stmts:
6787 if (((*yyvaluep).node)) {
6788 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6796 case YYSYMBOL_stmt_or_begin:
6800 if (((*yyvaluep).node)) {
6801 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6813 if (((*yyvaluep).node)) {
6814 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6822 case YYSYMBOL_command_asgn:
6826 if (((*yyvaluep).node)) {
6827 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6835 case YYSYMBOL_command_rhs:
6839 if (((*yyvaluep).node)) {
6840 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6852 if (((*yyvaluep).node)) {
6853 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6861 case YYSYMBOL_def_name:
6865 if (((*yyvaluep).node)) {
6866 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6874 case YYSYMBOL_defn_head:
6878 if (((*yyvaluep).node)) {
6879 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6887 case YYSYMBOL_defs_head:
6891 if (((*yyvaluep).node)) {
6892 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6900 case YYSYMBOL_expr_value:
6904 if (((*yyvaluep).node)) {
6905 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6913 case YYSYMBOL_expr_value_do:
6917 if (((*yyvaluep).node)) {
6918 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6926 case YYSYMBOL_command_call:
6930 if (((*yyvaluep).node)) {
6931 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6939 case YYSYMBOL_block_command:
6943 if (((*yyvaluep).node)) {
6944 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6952 case YYSYMBOL_cmd_brace_block:
6956 if (((*yyvaluep).node)) {
6957 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6965 case YYSYMBOL_fcall:
6969 if (((*yyvaluep).node)) {
6970 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6978 case YYSYMBOL_command:
6982 if (((*yyvaluep).node)) {
6983 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6995 if (((*yyvaluep).node)) {
6996 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7004 case YYSYMBOL_mlhs_inner:
7008 if (((*yyvaluep).node)) {
7009 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7017 case YYSYMBOL_mlhs_basic:
7021 if (((*yyvaluep).node)) {
7022 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7030 case YYSYMBOL_mlhs_item:
7034 if (((*yyvaluep).node)) {
7035 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7043 case YYSYMBOL_mlhs_head:
7047 if (((*yyvaluep).node)) {
7048 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7056 case YYSYMBOL_mlhs_post:
7060 if (((*yyvaluep).node)) {
7061 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7069 case YYSYMBOL_mlhs_node:
7073 if (((*yyvaluep).node)) {
7074 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7086 if (((*yyvaluep).node)) {
7087 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7095 case YYSYMBOL_cpath:
7099 if (((*yyvaluep).node)) {
7100 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7108 case YYSYMBOL_fitem:
7112 if (((*yyvaluep).node)) {
7113 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7121 case YYSYMBOL_undef_list:
7125 if (((*yyvaluep).node)) {
7126 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7138 if (((*yyvaluep).node)) {
7139 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7147 case YYSYMBOL_rel_expr:
7151 if (((*yyvaluep).node)) {
7152 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7160 case YYSYMBOL_arg_value:
7164 if (((*yyvaluep).node)) {
7165 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7173 case YYSYMBOL_aref_args:
7177 if (((*yyvaluep).node)) {
7178 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7186 case YYSYMBOL_arg_rhs:
7190 if (((*yyvaluep).node)) {
7191 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7199 case YYSYMBOL_paren_args:
7203 if (((*yyvaluep).node)) {
7204 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7212 case YYSYMBOL_opt_paren_args:
7216 if (((*yyvaluep).node)) {
7217 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7225 case YYSYMBOL_opt_call_args:
7229 if (((*yyvaluep).node)) {
7230 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7238 case YYSYMBOL_call_args:
7242 if (((*yyvaluep).node)) {
7243 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7251 case YYSYMBOL_command_args:
7255 if (((*yyvaluep).node)) {
7256 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7264 case YYSYMBOL_block_arg:
7268 if (((*yyvaluep).node)) {
7269 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7277 case YYSYMBOL_opt_block_arg:
7281 if (((*yyvaluep).node)) {
7282 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7294 if (((*yyvaluep).node)) {
7295 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7303 case YYSYMBOL_mrhs_arg:
7307 if (((*yyvaluep).node)) {
7308 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7320 if (((*yyvaluep).node)) {
7321 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7329 case YYSYMBOL_primary:
7333 if (((*yyvaluep).node)) {
7334 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7342 case YYSYMBOL_primary_value:
7346 if (((*yyvaluep).node)) {
7347 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7355 case YYSYMBOL_if_tail:
7359 if (((*yyvaluep).node)) {
7360 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7368 case YYSYMBOL_opt_else:
7372 if (((*yyvaluep).node)) {
7373 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7381 case YYSYMBOL_for_var:
7385 if (((*yyvaluep).node)) {
7386 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7394 case YYSYMBOL_f_marg:
7398 if (((*yyvaluep).node)) {
7399 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7407 case YYSYMBOL_f_marg_list:
7411 if (((*yyvaluep).node)) {
7412 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7420 case YYSYMBOL_f_margs:
7424 if (((*yyvaluep).node)) {
7425 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7433 case YYSYMBOL_f_rest_marg:
7437 if (((*yyvaluep).node)) {
7438 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7446 case YYSYMBOL_block_args_tail:
7450 if (((*yyvaluep).node)) {
7451 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7459 case YYSYMBOL_opt_block_args_tail:
7463 if (((*yyvaluep).node)) {
7464 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7472 case YYSYMBOL_block_param:
7476 if (((*yyvaluep).node)) {
7477 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7485 case YYSYMBOL_opt_block_param:
7489 if (((*yyvaluep).node)) {
7490 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7498 case YYSYMBOL_block_param_def:
7502 if (((*yyvaluep).node)) {
7503 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7511 case YYSYMBOL_opt_bv_decl:
7515 if (((*yyvaluep).node)) {
7516 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7524 case YYSYMBOL_bv_decls:
7528 if (((*yyvaluep).node)) {
7529 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7541 if (((*yyvaluep).node)) {
7542 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7550 case YYSYMBOL_lambda:
7554 if (((*yyvaluep).node)) {
7555 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7563 case YYSYMBOL_f_larglist:
7567 if (((*yyvaluep).node)) {
7568 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7576 case YYSYMBOL_lambda_body:
7580 if (((*yyvaluep).node)) {
7581 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7589 case YYSYMBOL_do_block:
7593 if (((*yyvaluep).node)) {
7594 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7602 case YYSYMBOL_block_call:
7606 if (((*yyvaluep).node)) {
7607 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7615 case YYSYMBOL_method_call:
7619 if (((*yyvaluep).node)) {
7620 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7628 case YYSYMBOL_brace_block:
7632 if (((*yyvaluep).node)) {
7633 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7641 case YYSYMBOL_brace_body:
7645 if (((*yyvaluep).node)) {
7646 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7654 case YYSYMBOL_do_body:
7658 if (((*yyvaluep).node)) {
7659 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7667 case YYSYMBOL_case_args:
7671 if (((*yyvaluep).node)) {
7672 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7680 case YYSYMBOL_case_body:
7684 if (((*yyvaluep).node)) {
7685 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7693 case YYSYMBOL_cases:
7697 if (((*yyvaluep).node)) {
7698 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7706 case YYSYMBOL_p_case_body:
7710 if (((*yyvaluep).node)) {
7711 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7719 case YYSYMBOL_p_cases:
7723 if (((*yyvaluep).node)) {
7724 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7732 case YYSYMBOL_p_top_expr:
7736 if (((*yyvaluep).node)) {
7737 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7745 case YYSYMBOL_p_top_expr_body:
7749 if (((*yyvaluep).node)) {
7750 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7758 case YYSYMBOL_p_expr:
7762 if (((*yyvaluep).node)) {
7763 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7775 if (((*yyvaluep).node)) {
7776 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7784 case YYSYMBOL_p_alt:
7788 if (((*yyvaluep).node)) {
7789 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7797 case YYSYMBOL_p_expr_basic:
7801 if (((*yyvaluep).node)) {
7802 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7810 case YYSYMBOL_p_args:
7814 if (((*yyvaluep).node)) {
7815 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7823 case YYSYMBOL_p_args_head:
7827 if (((*yyvaluep).node)) {
7828 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7836 case YYSYMBOL_p_args_tail:
7840 if (((*yyvaluep).node)) {
7841 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7849 case YYSYMBOL_p_find:
7853 if (((*yyvaluep).node)) {
7854 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7862 case YYSYMBOL_p_args_post:
7866 if (((*yyvaluep).node)) {
7867 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7875 case YYSYMBOL_p_arg:
7879 if (((*yyvaluep).node)) {
7880 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7888 case YYSYMBOL_p_kwargs:
7892 if (((*yyvaluep).node)) {
7893 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7901 case YYSYMBOL_p_kwarg:
7905 if (((*yyvaluep).node)) {
7906 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7918 if (((*yyvaluep).node)) {
7919 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7927 case YYSYMBOL_p_value:
7931 if (((*yyvaluep).node)) {
7932 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7940 case YYSYMBOL_p_primitive:
7944 if (((*yyvaluep).node)) {
7945 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7953 case YYSYMBOL_p_variable:
7957 if (((*yyvaluep).node)) {
7958 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7966 case YYSYMBOL_p_var_ref:
7970 if (((*yyvaluep).node)) {
7971 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7979 case YYSYMBOL_p_expr_ref:
7983 if (((*yyvaluep).node)) {
7984 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7992 case YYSYMBOL_p_const:
7996 if (((*yyvaluep).node)) {
7997 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8005 case YYSYMBOL_opt_rescue:
8009 if (((*yyvaluep).node)) {
8010 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8018 case YYSYMBOL_exc_list:
8022 if (((*yyvaluep).node)) {
8023 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8031 case YYSYMBOL_exc_var:
8035 if (((*yyvaluep).node)) {
8036 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8044 case YYSYMBOL_opt_ensure:
8048 if (((*yyvaluep).node)) {
8049 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8057 case YYSYMBOL_literal:
8061 if (((*yyvaluep).node)) {
8062 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8070 case YYSYMBOL_strings:
8074 if (((*yyvaluep).node)) {
8075 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8083 case YYSYMBOL_string:
8087 if (((*yyvaluep).node)) {
8088 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8096 case YYSYMBOL_string1:
8100 if (((*yyvaluep).node)) {
8101 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8109 case YYSYMBOL_xstring:
8113 if (((*yyvaluep).node)) {
8114 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8122 case YYSYMBOL_regexp:
8126 if (((*yyvaluep).node)) {
8127 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8135 case YYSYMBOL_words:
8139 if (((*yyvaluep).node)) {
8140 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8148 case YYSYMBOL_word_list:
8152 if (((*yyvaluep).node)) {
8153 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8165 if (((*yyvaluep).node)) {
8166 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8174 case YYSYMBOL_symbols:
8178 if (((*yyvaluep).node)) {
8179 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8187 case YYSYMBOL_symbol_list:
8191 if (((*yyvaluep).node)) {
8192 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8200 case YYSYMBOL_qwords:
8204 if (((*yyvaluep).node)) {
8205 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8213 case YYSYMBOL_qsymbols:
8217 if (((*yyvaluep).node)) {
8218 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8226 case YYSYMBOL_qword_list:
8230 if (((*yyvaluep).node)) {
8231 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8239 case YYSYMBOL_qsym_list:
8243 if (((*yyvaluep).node)) {
8244 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8252 case YYSYMBOL_string_contents:
8256 if (((*yyvaluep).node)) {
8257 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8265 case YYSYMBOL_xstring_contents:
8269 if (((*yyvaluep).node)) {
8270 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8278 case YYSYMBOL_regexp_contents:
8282 if (((*yyvaluep).node)) {
8283 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8291 case YYSYMBOL_string_content:
8295 if (((*yyvaluep).node)) {
8296 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8304 case YYSYMBOL_string_dvar:
8308 if (((*yyvaluep).node)) {
8309 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8317 case YYSYMBOL_symbol:
8321 if (((*yyvaluep).node)) {
8322 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8334 if (((*yyvaluep).node)) {
8335 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8347 if (((*yyvaluep).node)) {
8348 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8356 case YYSYMBOL_numeric:
8360 if (((*yyvaluep).node)) {
8361 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8369 case YYSYMBOL_simple_numeric:
8373 if (((*yyvaluep).node)) {
8374 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8382 case YYSYMBOL_var_ref:
8386 if (((*yyvaluep).node)) {
8387 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8395 case YYSYMBOL_var_lhs:
8399 if (((*yyvaluep).node)) {
8400 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8408 case YYSYMBOL_backref:
8412 if (((*yyvaluep).node)) {
8413 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8421 case YYSYMBOL_superclass:
8425 if (((*yyvaluep).node)) {
8426 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8434 case YYSYMBOL_f_opt_paren_args:
8438 if (((*yyvaluep).node)) {
8439 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8447 case YYSYMBOL_f_paren_args:
8451 if (((*yyvaluep).node)) {
8452 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8460 case YYSYMBOL_f_arglist:
8464 if (((*yyvaluep).node)) {
8465 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8473 case YYSYMBOL_args_tail:
8477 if (((*yyvaluep).node)) {
8478 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8486 case YYSYMBOL_opt_args_tail:
8490 if (((*yyvaluep).node)) {
8491 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8499 case YYSYMBOL_f_args:
8503 if (((*yyvaluep).node)) {
8504 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8512 case YYSYMBOL_f_arg_item:
8516 if (((*yyvaluep).node)) {
8517 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8525 case YYSYMBOL_f_arg:
8529 if (((*yyvaluep).node)) {
8530 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8542 if (((*yyvaluep).node)) {
8543 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8551 case YYSYMBOL_f_block_kw:
8555 if (((*yyvaluep).node)) {
8556 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8564 case YYSYMBOL_f_block_kwarg:
8568 if (((*yyvaluep).node)) {
8569 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8577 case YYSYMBOL_f_kwarg:
8581 if (((*yyvaluep).node)) {
8582 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8590 case YYSYMBOL_f_opt:
8594 if (((*yyvaluep).node)) {
8595 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8603 case YYSYMBOL_f_block_opt:
8607 if (((*yyvaluep).node)) {
8608 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8616 case YYSYMBOL_f_block_optarg:
8620 if (((*yyvaluep).node)) {
8621 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8629 case YYSYMBOL_f_optarg:
8633 if (((*yyvaluep).node)) {
8634 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8642 case YYSYMBOL_singleton:
8646 if (((*yyvaluep).node)) {
8647 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8655 case YYSYMBOL_assoc_list:
8659 if (((*yyvaluep).node)) {
8660 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8668 case YYSYMBOL_assocs:
8672 if (((*yyvaluep).node)) {
8673 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8681 case YYSYMBOL_assoc:
8685 if (((*yyvaluep).node)) {
8686 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8698 if (((*yyvaluep).node)) {
8699 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8710 YY_IGNORE_MAYBE_UNINITIALIZED_END
8719yy_symbol_print (
FILE *yyo,
8722 YYFPRINTF (p,
"%s %s (",
8723 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
8725 YYLOCATION_PRINT (yyo, yylocationp);
8726 YYFPRINTF (p,
": ");
8727 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
8737ruby_parser_yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
8738#define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
8740 YYFPRINTF (p,
"Stack now");
8741 for (; yybottom <= yytop; yybottom++)
8743 int yybot = *yybottom;
8744 YYFPRINTF (p,
" %d", yybot);
8746 YYFPRINTF (p,
"\n");
8749# define YY_STACK_PRINT(Bottom, Top) \
8752 yy_stack_print ((Bottom), (Top)); \
8761yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
8764 int yylno = yyrline[yyrule];
8765 int yynrhs = yyr2[yyrule];
8767 YYFPRINTF (p,
"Reducing stack by rule %d (line %d):\n",
8770 for (yyi = 0; yyi < yynrhs; yyi++)
8772 YYFPRINTF (p,
" $%d = ", yyi + 1);
8773 yy_symbol_print (stderr,
8774 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
8775 &yyvsp[(yyi + 1) - (yynrhs)],
8776 &(yylsp[(yyi + 1) - (yynrhs)]), p);
8777 YYFPRINTF (p,
"\n");
8781# define YY_REDUCE_PRINT(Rule) \
8784 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
8793# define YYDPRINTF(Args) ((void) 0)
8794# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
8795# define YY_STACK_PRINT(Bottom, Top)
8796# define YY_REDUCE_PRINT(Rule)
8802# define YYINITDEPTH 200
8813# define YYMAXDEPTH 10000
8821 yysymbol_kind_t yytoken;
8833 yysymbol_kind_t yyarg[],
int yyargn)
8837 int yyn = yypact[+*yyctx->yyssp];
8838 if (!yypact_value_is_default (yyn))
8843 int yyxbegin = yyn < 0 ? -yyn : 0;
8845 int yychecklim = YYLAST - yyn + 1;
8846 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
8848 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
8849 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
8850 && !yytable_value_is_error (yytable[yyx + yyn]))
8854 else if (yycount == yyargn)
8857 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
8860 if (yyarg && yycount == 0 && 0 < yyargn)
8861 yyarg[0] = YYSYMBOL_YYEMPTY;
8869# if defined __GLIBC__ && defined _STRING_H
8870# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
8874yystrlen (
const char *yystr)
8877 for (yylen = 0; yystr[yylen]; yylen++)
8885# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
8886# define yystpcpy stpcpy
8891yystpcpy (
char *yydest,
const char *yysrc)
8894 const char *yys = yysrc;
8896 while ((*yyd++ = *yys++) !=
'\0')
8913yytnamerr (
char *yyres,
const char *yystr)
8917 YYPTRDIFF_T yyn = 0;
8918 char const *yyp = yystr;
8924 goto do_not_strip_quotes;
8928 goto do_not_strip_quotes;
8944 do_not_strip_quotes: ;
8948 return yystpcpy (yyres, yystr) - yyres;
8950 return yystrlen (yystr);
8957 yysymbol_kind_t yyarg[],
int yyargn)
8984 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
8988 yyarg[yycount] = yyctx->yytoken;
8990 yyn = yypcontext_expected_tokens (yyctx,
8991 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
8992 if (yyn == YYENOMEM)
9009yysyntax_error (
struct parser_params *p, YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
9012 enum { YYARGS_MAX = 5 };
9014 const char *yyformat = YY_NULLPTR;
9017 yysymbol_kind_t yyarg[YYARGS_MAX];
9019 YYPTRDIFF_T yysize = 0;
9022 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
9023 if (yycount == YYENOMEM)
9028#define YYCASE_(N, S) \
9033 YYCASE_(0, YY_(
"syntax error"));
9034 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
9035 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
9036 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
9037 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
9038 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
9044 yysize = yystrlen (yyformat) - 2 * yycount + 1;
9047 for (yyi = 0; yyi < yycount; ++yyi)
9050 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
9051 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
9058 if (*yymsg_alloc < yysize)
9060 *yymsg_alloc = 2 * yysize;
9061 if (! (yysize <= *yymsg_alloc
9062 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
9063 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
9073 while ((*yyp = *yyformat) !=
'\0')
9074 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
9076 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
9094yydestruct (
const char *yymsg,
9098 YY_USE (yylocationp);
9102 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
9104 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
9106 YY_IGNORE_MAYBE_UNINITIALIZED_END
9128YY_INITIAL_VALUE (
static YYSTYPE yyval_default;)
9129YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
9133# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
9137YYLTYPE yylloc = yyloc_default;
9142 yy_state_fast_t yystate = 0;
9144 int yyerrstatus = 0;
9150 YYPTRDIFF_T yystacksize = YYINITDEPTH;
9153 yy_state_t yyssa[YYINITDEPTH];
9154 yy_state_t *yyss = yyssa;
9155 yy_state_t *yyssp = yyss;
9171 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
9182 char *yymsg = yymsgbuf;
9183 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
9185#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
9191 YYDPRINTF ((p,
"Starting parse\n"));
9199 RUBY_SET_YYLLOC_OF_NONE(yylloc);
9221 YYDPRINTF ((p,
"Entering state %d\n", yystate));
9222 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
9223 YY_IGNORE_USELESS_CAST_BEGIN
9224 *yyssp = YY_CAST (yy_state_t, yystate);
9225 YY_IGNORE_USELESS_CAST_END
9226 YY_STACK_PRINT (yyss, yyssp);
9228 if (yyss + yystacksize - 1 <= yyssp)
9229#if !defined yyoverflow && !defined YYSTACK_RELOCATE
9234 YYPTRDIFF_T yysize = yyssp - yyss + 1;
9236# if defined yyoverflow
9241 yy_state_t *yyss1 = yyss;
9249 yyoverflow (YY_(
"memory exhausted"),
9250 &yyss1, yysize * YYSIZEOF (*yyssp),
9251 &yyvs1, yysize * YYSIZEOF (*yyvsp),
9252 &yyls1, yysize * YYSIZEOF (*yylsp),
9260 if (YYMAXDEPTH <= yystacksize)
9263 if (YYMAXDEPTH < yystacksize)
9264 yystacksize = YYMAXDEPTH;
9267 yy_state_t *yyss1 = yyss;
9268 union yyalloc *yyptr =
9269 YY_CAST (
union yyalloc *,
9270 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
9273 YYSTACK_RELOCATE (yyss_alloc, yyss);
9274 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
9275 YYSTACK_RELOCATE (yyls_alloc, yyls);
9276# undef YYSTACK_RELOCATE
9278 YYSTACK_FREE (yyss1);
9282 yyssp = yyss + yysize - 1;
9283 yyvsp = yyvs + yysize - 1;
9284 yylsp = yyls + yysize - 1;
9286 YY_IGNORE_USELESS_CAST_BEGIN
9287 YYDPRINTF ((p,
"Stack size increased to %ld\n",
9288 YY_CAST (
long, yystacksize)));
9289 YY_IGNORE_USELESS_CAST_END
9291 if (yyss + yystacksize - 1 <= yyssp)
9297 if (yystate == YYFINAL)
9311 yyn = yypact[yystate];
9312 if (yypact_value_is_default (yyn))
9318 if (yychar == YYEMPTY)
9320 YYDPRINTF ((p,
"Reading a token\n"));
9321 yychar = yylex (&yylval, &yylloc, p);
9324 if (yychar <= END_OF_INPUT)
9326 yychar = END_OF_INPUT;
9327 yytoken = YYSYMBOL_YYEOF;
9328 YYDPRINTF ((p,
"Now at end of input.\n"));
9330 else if (yychar == YYerror)
9337 yytoken = YYSYMBOL_YYerror;
9338 yyerror_range[1] = yylloc;
9343 yytoken = YYTRANSLATE (yychar);
9344 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc);
9350 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
9355 if (yytable_value_is_error (yyn))
9367 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc);
9369 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
9371 YY_IGNORE_MAYBE_UNINITIALIZED_END
9383 yyn = yydefact[yystate];
9404 yyval = yyvsp[1-yylen];
9407 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
9408 yyerror_range[1] = yyloc;
9409 YY_REDUCE_PRINT (yyn);
9415 SET_LEX_STATE(EXPR_BEG);
9416 local_push(p, ifndef_ripper(1)+0);
9425 if ((yyvsp[0].node) && !compile_for_eval) {
9426 NODE *node = (yyvsp[0].node);
9428 if (nd_type_p(node, NODE_BLOCK)) {
9429 while (node->nd_next) {
9430 node = node->nd_next;
9432 node = node->nd_head;
9434 node = remove_begin(node);
9437 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), &(yyloc));
9448 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
9457 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9468 (yyval.node) = newline_node((yyvsp[0].node));
9479 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
9489 (yyval.node) = (yyvsp[0].node);
9498 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
9499 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
9500 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9509 {
if (!(yyvsp[-1].node)) {yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
9517 (yyval.node) = new_bodystmt(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9528 (yyval.node) = new_bodystmt(p, (yyvsp[-2].node), (yyvsp[-1].node), 0, (yyvsp[0].node), &(yyloc));
9538 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
9547 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9558 (yyval.node) = newline_node((yyvsp[0].node));
9569 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
9579 (yyval.node) = (yyvsp[0].node);
9587 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
9595 (yyval.node) = (yyvsp[0].node);
9602 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
9610 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9621 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
9634 buf[1] = (char)(yyvsp[0].node)->nd_nth;
9635 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id),
rb_intern2(buf, 2), &(yyloc));
9645 static const char mesg[] =
"can't make alias for the number variables";
9647 yyerror1(&(yylsp[0]), mesg);
9648 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9659 (yyval.node) = (yyvsp[0].node);
9670 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9671 fixpos((yyval.node), (yyvsp[0].node));
9682 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9683 fixpos((yyval.node), (yyvsp[0].node));
9694 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
9695 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->nd_body, 0, &(yyloc));
9698 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
9710 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
9711 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->nd_body, 0, &(yyloc));
9714 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
9727 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9728 resq = NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
9729 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-2].node)), resq, 0, &(yyloc));
9739 if (p->ctxt.in_def) {
9740 rb_warn0(
"END in method; use at_exit");
9744 NODE *scope = NEW_NODE(
9745 NODE_SCOPE, 0 , (yyvsp[-1].node) , 0 , &(yyloc));
9746 (yyval.node) = NEW_POSTEXE(scope, &(yyloc));
9758 value_expr((yyvsp[0].node));
9759 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9770 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9781 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9782 (yyval.node) = node_assign(p, (yyvsp[-5].node), NEW_RESCUE((yyvsp[-2].node), NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc)), (yyvsp[-3].ctxt), &(yyloc));
9793 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9804 (yyval.node) = NEW_ERROR(&(yyloc));
9814 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9825 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9836 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
9848 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].
id), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
9859 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].
id), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
9870 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
9871 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9882 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
9892 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
9893 restore_defun(p, (yyvsp[-3].node)->nd_defn);
9895 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9907 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
9908 restore_defun(p, (yyvsp[-5].node)->nd_defn);
9910 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9911 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
9923 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
9924 restore_defun(p, (yyvsp[-3].node)->nd_defn);
9926 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9940 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
9941 restore_defun(p, (yyvsp[-5].node)->nd_defn);
9943 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9944 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
9959 rb_backref_error(p, (yyvsp[-3].node));
9960 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9970 value_expr((yyvsp[0].node));
9971 (yyval.node) = (yyvsp[0].node);
9980 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9981 value_expr((yyvsp[-2].node));
9982 (yyval.node) = NEW_RESCUE((yyvsp[-2].node), NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
9992 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10000 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10002#line 9998 "parse.c"
10006#line 2008 "parse.y"
10008 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
10010#line 10006 "parse.c"
10014#line 2012 "parse.y"
10016 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
10018#line 10014 "parse.c"
10022#line 2016 "parse.y"
10024 value_expr((yyvsp[-1].node));
10025 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
10026 p->command_start = FALSE;
10027 (yyvsp[0].ctxt) = p->ctxt;
10028 p->ctxt.in_kwarg = 1;
10029 (yyval.tbl) = push_pvtbl(p);
10031#line 10027 "parse.c"
10035#line 2024 "parse.y"
10037 (yyval.tbl) = push_pktbl(p);
10039#line 10035 "parse.c"
10043#line 2028 "parse.y"
10045 pop_pktbl(p, (yyvsp[-1].tbl));
10046 pop_pvtbl(p, (yyvsp[-2].tbl));
10047 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
10049 (yyval.node) = NEW_CASE3((yyvsp[-4].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0])), &(yyloc));
10053#line 10049 "parse.c"
10057#line 2038 "parse.y"
10059 value_expr((yyvsp[-1].node));
10060 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
10061 p->command_start = FALSE;
10062 (yyvsp[0].ctxt) = p->ctxt;
10063 p->ctxt.in_kwarg = 1;
10064 (yyval.tbl) = push_pvtbl(p);
10066#line 10062 "parse.c"
10070#line 2046 "parse.y"
10072 (yyval.tbl) = push_pktbl(p);
10074#line 10070 "parse.c"
10078#line 2050 "parse.y"
10080 pop_pktbl(p, (yyvsp[-1].tbl));
10081 pop_pvtbl(p, (yyvsp[-2].tbl));
10082 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
10084 (yyval.node) = NEW_CASE3((yyvsp[-4].node), NEW_IN((yyvsp[0].node), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0])), &(yyloc));
10088#line 10084 "parse.c"
10092#line 2063 "parse.y"
10094 ID fname = get_id((yyvsp[0].
id));
10095 ID cur_arg = p->cur_arg;
10096 YYSTYPE c = {.ctxt = p->ctxt};
10097 numparam_name(p, fname);
10099 NODE_NEW_TEMPORAL(NODE_SELF,
10105 p->ctxt.in_def = 1;
10106 (yyval.node) = NEW_NODE(NODE_SELF, cur_arg, fname, save, &(yyloc));
10112#line 10108 "parse.c"
10116#line 2085 "parse.y"
10118 (yyval.node) = (yyvsp[0].node);
10120 (yyval.node) = NEW_NODE(NODE_DEFN, 0, (yyval.node)->nd_mid, (yyval.node), &(yyloc));
10123#line 10119 "parse.c"
10127#line 2094 "parse.y"
10129 SET_LEX_STATE(EXPR_FNAME);
10130 p->ctxt.in_argdef = 1;
10132#line 10128 "parse.c"
10136#line 2099 "parse.y"
10138 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
10139 (yyval.node) = (yyvsp[0].node);
10141 (yyval.node) = NEW_NODE(NODE_DEFS, (yyvsp[-3].node), (yyval.node)->nd_mid, (yyval.node), &(yyloc));
10148#line 10144 "parse.c"
10152#line 2113 "parse.y"
10154 value_expr((yyvsp[0].node));
10155 (yyval.node) = (yyvsp[0].node);
10157#line 10153 "parse.c"
10161#line 2118 "parse.y"
10164 (yyval.node) = NEW_ERROR(&(yyloc));
10167#line 10163 "parse.c"
10171#line 2125 "parse.y"
10173#line 10169 "parse.c"
10177#line 2125 "parse.y"
10179#line 10175 "parse.c"
10183#line 2126 "parse.y"
10185 (yyval.node) = (yyvsp[-2].node);
10187#line 10183 "parse.c"
10191#line 2137 "parse.y"
10194 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10198#line 10194 "parse.c"
10202#line 2146 "parse.y"
10204 (yyval.node) = (yyvsp[-1].node);
10206 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10207 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
10210#line 10206 "parse.c"
10214#line 2156 "parse.y"
10217 (yyval.node) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
10218 nd_set_line((yyval.node), p->tokline);
10222#line 10218 "parse.c"
10226#line 2166 "parse.y"
10229 (yyvsp[-1].node)->nd_args = (yyvsp[0].node);
10230 nd_set_last_loc((yyvsp[-1].node), (yylsp[0]).end_pos);
10231 (yyval.node) = (yyvsp[-1].node);
10235#line 10231 "parse.c"
10239#line 2175 "parse.y"
10242 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
10243 (yyvsp[-2].node)->nd_args = (yyvsp[-1].node);
10244 (yyval.node) = method_add_block(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10245 fixpos((yyval.node), (yyvsp[-2].node));
10246 nd_set_last_loc((yyvsp[-2].node), (yylsp[-1]).end_pos);
10250#line 10246 "parse.c"
10254#line 2186 "parse.y"
10257 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
10261#line 10257 "parse.c"
10265#line 2193 "parse.y"
10268 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10272#line 10268 "parse.c"
10276#line 2200 "parse.y"
10279 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
10283#line 10279 "parse.c"
10287#line 2207 "parse.y"
10290 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10294#line 10290 "parse.c"
10298#line 2214 "parse.y"
10301 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
10302 fixpos((yyval.node), (yyvsp[0].node));
10306#line 10302 "parse.c"
10310#line 2222 "parse.y"
10313 (yyval.node) = new_yield(p, (yyvsp[0].node), &(yyloc));
10314 fixpos((yyval.node), (yyvsp[0].node));
10318#line 10314 "parse.c"
10322#line 2230 "parse.y"
10325 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
10329#line 10325 "parse.c"
10333#line 2237 "parse.y"
10336 (yyval.node) = NEW_BREAK(ret_args(p, (yyvsp[0].node)), &(yyloc));
10340#line 10336 "parse.c"
10344#line 2244 "parse.y"
10347 (yyval.node) = NEW_NEXT(ret_args(p, (yyvsp[0].node)), &(yyloc));
10351#line 10347 "parse.c"
10355#line 2254 "parse.y"
10358 (yyval.node) = (yyvsp[-1].node);
10362#line 10358 "parse.c"
10366#line 2264 "parse.y"
10369 (yyval.node) = NEW_MASGN(NEW_LIST((yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
10373#line 10369 "parse.c"
10377#line 2273 "parse.y"
10380 (yyval.node) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
10384#line 10380 "parse.c"
10388#line 2280 "parse.y"
10391 (yyval.node) = NEW_MASGN(list_append(p, (yyvsp[-1].node),(yyvsp[0].node)), 0, &(yyloc));
10395#line 10391 "parse.c"
10399#line 2287 "parse.y"
10402 (yyval.node) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10406#line 10402 "parse.c"
10410#line 2294 "parse.y"
10413 (yyval.node) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
10417#line 10413 "parse.c"
10421#line 2301 "parse.y"
10424 (yyval.node) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
10428#line 10424 "parse.c"
10432#line 2308 "parse.y"
10435 (yyval.node) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
10439#line 10435 "parse.c"
10443#line 2315 "parse.y"
10446 (yyval.node) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
10450#line 10446 "parse.c"
10454#line 2322 "parse.y"
10457 (yyval.node) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
10461#line 10457 "parse.c"
10465#line 2329 "parse.y"
10468 (yyval.node) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
10472#line 10468 "parse.c"
10476#line 2336 "parse.y"
10479 (yyval.node) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
10483#line 10479 "parse.c"
10487#line 2346 "parse.y"
10490 (yyval.node) = (yyvsp[-1].node);
10494#line 10490 "parse.c"
10498#line 2355 "parse.y"
10501 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
10505#line 10501 "parse.c"
10509#line 2362 "parse.y"
10512 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
10516#line 10512 "parse.c"
10520#line 2371 "parse.y"
10523 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
10527#line 10523 "parse.c"
10531#line 2378 "parse.y"
10534 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
10538#line 10534 "parse.c"
10542#line 2387 "parse.y"
10545 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10549#line 10545 "parse.c"
10553#line 2394 "parse.y"
10556 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10560#line 10556 "parse.c"
10564#line 2401 "parse.y"
10567 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
10571#line 10567 "parse.c"
10575#line 2408 "parse.y"
10577 if ((yyvsp[-1].
id) == tANDDOT) {
10578 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
10581 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
10585#line 10581 "parse.c"
10589#line 2418 "parse.y"
10592 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].
id), &(yyloc));
10596#line 10592 "parse.c"
10600#line 2425 "parse.y"
10602 if ((yyvsp[-1].
id) == tANDDOT) {
10603 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
10606 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
10610#line 10606 "parse.c"
10614#line 2435 "parse.y"
10617 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc)), &(yyloc));
10621#line 10617 "parse.c"
10625#line 2442 "parse.y"
10628 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
10632#line 10628 "parse.c"
10636#line 2449 "parse.y"
10639 rb_backref_error(p, (yyvsp[0].node));
10640 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10644#line 10640 "parse.c"
10648#line 2459 "parse.y"
10651 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10655#line 10651 "parse.c"
10659#line 2466 "parse.y"
10662 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10666#line 10662 "parse.c"
10670#line 2473 "parse.y"
10673 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
10677#line 10673 "parse.c"
10681#line 2480 "parse.y"
10684 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
10688#line 10684 "parse.c"
10692#line 2487 "parse.y"
10695 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].
id), &(yyloc));
10699#line 10695 "parse.c"
10703#line 2494 "parse.y"
10706 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
10710#line 10706 "parse.c"
10714#line 2501 "parse.y"
10717 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc)), &(yyloc));
10721#line 10717 "parse.c"
10725#line 2508 "parse.y"
10728 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
10732#line 10728 "parse.c"
10736#line 2515 "parse.y"
10739 rb_backref_error(p, (yyvsp[0].node));
10740 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10744#line 10740 "parse.c"
10748#line 2525 "parse.y"
10750 static const char mesg[] =
"class/module name must be CONSTANT";
10752 yyerror1(&(yylsp[0]), mesg);
10756#line 10752 "parse.c"
10760#line 2536 "parse.y"
10763 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
10767#line 10763 "parse.c"
10771#line 2543 "parse.y"
10774 (yyval.node) = NEW_COLON2(0, (yyval.node), &(yyloc));
10778#line 10774 "parse.c"
10782#line 2550 "parse.y"
10785 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc));
10789#line 10785 "parse.c"
10793#line 2562 "parse.y"
10795 SET_LEX_STATE(EXPR_ENDFN);
10796 (yyval.id) = (yyvsp[0].
id);
10798#line 10794 "parse.c"
10802#line 2570 "parse.y"
10805 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
10809#line 10805 "parse.c"
10813#line 2580 "parse.y"
10816 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
10820#line 10816 "parse.c"
10824#line 2586 "parse.y"
10825 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
10826#line 10822 "parse.c"
10830#line 2587 "parse.y"
10833 NODE *undef = NEW_UNDEF((yyvsp[0].node), &(yylsp[0]));
10834 (yyval.node) = block_append(p, (yyvsp[-3].node), undef);
10838#line 10834 "parse.c"
10842#line 2596 "parse.y"
10843 { ifndef_ripper((yyval.id) =
'|'); }
10844#line 10840 "parse.c"
10848#line 2597 "parse.y"
10849 { ifndef_ripper((yyval.id) =
'^'); }
10850#line 10846 "parse.c"
10854#line 2598 "parse.y"
10855 { ifndef_ripper((yyval.id) =
'&'); }
10856#line 10852 "parse.c"
10860#line 2599 "parse.y"
10861 { ifndef_ripper((yyval.id) = tCMP); }
10862#line 10858 "parse.c"
10866#line 2600 "parse.y"
10867 { ifndef_ripper((yyval.id) = tEQ); }
10868#line 10864 "parse.c"
10872#line 2601 "parse.y"
10873 { ifndef_ripper((yyval.id) = tEQQ); }
10874#line 10870 "parse.c"
10878#line 2602 "parse.y"
10879 { ifndef_ripper((yyval.id) = tMATCH); }
10880#line 10876 "parse.c"
10884#line 2603 "parse.y"
10885 { ifndef_ripper((yyval.id) = tNMATCH); }
10886#line 10882 "parse.c"
10890#line 2604 "parse.y"
10891 { ifndef_ripper((yyval.id) =
'>'); }
10892#line 10888 "parse.c"
10896#line 2605 "parse.y"
10897 { ifndef_ripper((yyval.id) = tGEQ); }
10898#line 10894 "parse.c"
10902#line 2606 "parse.y"
10903 { ifndef_ripper((yyval.id) =
'<'); }
10904#line 10900 "parse.c"
10908#line 2607 "parse.y"
10909 { ifndef_ripper((yyval.id) = tLEQ); }
10910#line 10906 "parse.c"
10914#line 2608 "parse.y"
10915 { ifndef_ripper((yyval.id) = tNEQ); }
10916#line 10912 "parse.c"
10920#line 2609 "parse.y"
10921 { ifndef_ripper((yyval.id) = tLSHFT); }
10922#line 10918 "parse.c"
10926#line 2610 "parse.y"
10927 { ifndef_ripper((yyval.id) = tRSHFT); }
10928#line 10924 "parse.c"
10932#line 2611 "parse.y"
10933 { ifndef_ripper((yyval.id) =
'+'); }
10934#line 10930 "parse.c"
10938#line 2612 "parse.y"
10939 { ifndef_ripper((yyval.id) =
'-'); }
10940#line 10936 "parse.c"
10944#line 2613 "parse.y"
10945 { ifndef_ripper((yyval.id) =
'*'); }
10946#line 10942 "parse.c"
10950#line 2614 "parse.y"
10951 { ifndef_ripper((yyval.id) =
'*'); }
10952#line 10948 "parse.c"
10956#line 2615 "parse.y"
10957 { ifndef_ripper((yyval.id) =
'/'); }
10958#line 10954 "parse.c"
10962#line 2616 "parse.y"
10963 { ifndef_ripper((yyval.id) =
'%'); }
10964#line 10960 "parse.c"
10968#line 2617 "parse.y"
10969 { ifndef_ripper((yyval.id) = tPOW); }
10970#line 10966 "parse.c"
10974#line 2618 "parse.y"
10975 { ifndef_ripper((yyval.id) = tDSTAR); }
10976#line 10972 "parse.c"
10980#line 2619 "parse.y"
10981 { ifndef_ripper((yyval.id) =
'!'); }
10982#line 10978 "parse.c"
10986#line 2620 "parse.y"
10987 { ifndef_ripper((yyval.id) =
'~'); }
10988#line 10984 "parse.c"
10992#line 2621 "parse.y"
10993 { ifndef_ripper((yyval.id) = tUPLUS); }
10994#line 10990 "parse.c"
10998#line 2622 "parse.y"
10999 { ifndef_ripper((yyval.id) = tUMINUS); }
11000#line 10996 "parse.c"
11004#line 2623 "parse.y"
11005 { ifndef_ripper((yyval.id) = tAREF); }
11006#line 11002 "parse.c"
11010#line 2624 "parse.y"
11011 { ifndef_ripper((yyval.id) = tASET); }
11012#line 11008 "parse.c"
11016#line 2625 "parse.y"
11017 { ifndef_ripper((yyval.id) =
'`'); }
11018#line 11014 "parse.c"
11022#line 2643 "parse.y"
11025 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11029#line 11025 "parse.c"
11033#line 2650 "parse.y"
11036 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11040#line 11036 "parse.c"
11044#line 2657 "parse.y"
11047 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
11051#line 11047 "parse.c"
11055#line 2664 "parse.y"
11058 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].
id), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
11062#line 11058 "parse.c"
11066#line 2671 "parse.y"
11069 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].
id), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
11073#line 11069 "parse.c"
11077#line 2678 "parse.y"
11080 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
11084#line 11080 "parse.c"
11088#line 2685 "parse.y"
11091 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
11092 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11096#line 11092 "parse.c"
11100#line 2693 "parse.y"
11103 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
11104 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11108#line 11104 "parse.c"
11112#line 2701 "parse.y"
11115 rb_backref_error(p, (yyvsp[-3].node));
11116 (yyval.node) = NEW_BEGIN(0, &(yyloc));
11120#line 11116 "parse.c"
11124#line 2709 "parse.y"
11127 value_expr((yyvsp[-2].node));
11128 value_expr((yyvsp[0].node));
11129 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11133#line 11129 "parse.c"
11137#line 2718 "parse.y"
11140 value_expr((yyvsp[-2].node));
11141 value_expr((yyvsp[0].node));
11142 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11146#line 11142 "parse.c"
11150#line 2727 "parse.y"
11153 value_expr((yyvsp[-1].node));
11154 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11158#line 11154 "parse.c"
11162#line 2735 "parse.y"
11165 value_expr((yyvsp[-1].node));
11166 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11170#line 11166 "parse.c"
11174#line 2743 "parse.y"
11177 value_expr((yyvsp[0].node));
11178 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
11182#line 11178 "parse.c"
11186#line 2751 "parse.y"
11189 value_expr((yyvsp[0].node));
11190 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
11194#line 11190 "parse.c"
11198#line 2759 "parse.y"
11200 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11202#line 11198 "parse.c"
11206#line 2763 "parse.y"
11208 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11210#line 11206 "parse.c"
11214#line 2767 "parse.y"
11216 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11218#line 11214 "parse.c"
11222#line 2771 "parse.y"
11224 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11226#line 11222 "parse.c"
11230#line 2775 "parse.y"
11232 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11234#line 11230 "parse.c"
11238#line 2779 "parse.y"
11240 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11242#line 11238 "parse.c"
11246#line 2783 "parse.y"
11248 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
11250#line 11246 "parse.c"
11254#line 2787 "parse.y"
11256 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
11258#line 11254 "parse.c"
11262#line 2791 "parse.y"
11264 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
11266#line 11262 "parse.c"
11270#line 2795 "parse.y"
11272 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11274#line 11270 "parse.c"
11278#line 2799 "parse.y"
11280 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11282#line 11278 "parse.c"
11286#line 2803 "parse.y"
11288 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11290#line 11286 "parse.c"
11294#line 2807 "parse.y"
11296 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11298#line 11294 "parse.c"
11302#line 2812 "parse.y"
11304 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11306#line 11302 "parse.c"
11310#line 2816 "parse.y"
11312 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11314#line 11310 "parse.c"
11318#line 2820 "parse.y"
11320 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11322#line 11318 "parse.c"
11326#line 2824 "parse.y"
11328 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11330#line 11326 "parse.c"
11334#line 2828 "parse.y"
11336 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11338#line 11334 "parse.c"
11342#line 2832 "parse.y"
11344 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
11346#line 11342 "parse.c"
11350#line 2836 "parse.y"
11352 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
11354#line 11350 "parse.c"
11358#line 2840 "parse.y"
11360 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11362#line 11358 "parse.c"
11366#line 2844 "parse.y"
11368 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11370#line 11366 "parse.c"
11374#line 2848 "parse.y"
11376 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11378#line 11374 "parse.c"
11382#line 2852 "parse.y"
11384 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11386#line 11382 "parse.c"
11390#line 2855 "parse.y"
11391 {p->ctxt.in_defined = 1;}
11392#line 11388 "parse.c"
11396#line 2856 "parse.y"
11398 p->ctxt.in_defined = 0;
11399 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc));
11401#line 11397 "parse.c"
11405#line 2861 "parse.y"
11408 value_expr((yyvsp[-5].node));
11409 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
11410 fixpos((yyval.node), (yyvsp[-5].node));
11414#line 11410 "parse.c"
11418#line 2870 "parse.y"
11420 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
11421 restore_defun(p, (yyvsp[-3].node)->nd_defn);
11423 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11429#line 11425 "parse.c"
11433#line 2881 "parse.y"
11435 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
11436 restore_defun(p, (yyvsp[-5].node)->nd_defn);
11438 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
11439 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
11445#line 11441 "parse.c"
11449#line 2893 "parse.y"
11451 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
11452 restore_defun(p, (yyvsp[-3].node)->nd_defn);
11454 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11462#line 11458 "parse.c"
11466#line 2906 "parse.y"
11468 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
11469 restore_defun(p, (yyvsp[-5].node)->nd_defn);
11471 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
11472 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
11480#line 11476 "parse.c"
11484#line 2920 "parse.y"
11486 (yyval.node) = (yyvsp[0].node);
11488#line 11484 "parse.c"
11492#line 2925 "parse.y"
11493 {(yyval.id) =
'>';}
11494#line 11490 "parse.c"
11498#line 2926 "parse.y"
11499 {(yyval.id) =
'<';}
11500#line 11496 "parse.c"
11504#line 2927 "parse.y"
11505 {(yyval.id) = idGE;}
11506#line 11502 "parse.c"
11510#line 2928 "parse.y"
11511 {(yyval.id) = idLE;}
11512#line 11508 "parse.c"
11516#line 2932 "parse.y"
11518 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11520#line 11516 "parse.c"
11524#line 2936 "parse.y"
11526 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
11527 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11529#line 11525 "parse.c"
11533#line 2943 "parse.y"
11535 (yyval.ctxt) = p->ctxt;
11537#line 11533 "parse.c"
11541#line 2949 "parse.y"
11543 value_expr((yyvsp[0].node));
11544 (yyval.node) = (yyvsp[0].node);
11546#line 11542 "parse.c"
11550#line 2957 "parse.y"
11552 (yyval.node) = (yyvsp[-1].node);
11554#line 11550 "parse.c"
11558#line 2961 "parse.y"
11561 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
11565#line 11561 "parse.c"
11569#line 2968 "parse.y"
11572 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
11576#line 11572 "parse.c"
11580#line 2977 "parse.y"
11582 value_expr((yyvsp[0].node));
11583 (yyval.node) = (yyvsp[0].node);
11585#line 11581 "parse.c"
11589#line 2982 "parse.y"
11592 value_expr((yyvsp[-2].node));
11593 (yyval.node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
11597#line 11593 "parse.c"
11601#line 2992 "parse.y"
11604 (yyval.node) = (yyvsp[-1].node);
11608#line 11604 "parse.c"
11612#line 2999 "parse.y"
11614 if (!check_forwarding_args(p)) {
11615 (yyval.node) = Qnone;
11619 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
11624#line 11620 "parse.c"
11628#line 3011 "parse.y"
11630 if (!check_forwarding_args(p)) {
11631 (yyval.node) = Qnone;
11635 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
11640#line 11636 "parse.c"
11644#line 3031 "parse.y"
11646 (yyval.node) = (yyvsp[-1].node);
11648#line 11644 "parse.c"
11652#line 3035 "parse.y"
11655 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
11659#line 11655 "parse.c"
11663#line 3042 "parse.y"
11666 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
11670#line 11666 "parse.c"
11674#line 3051 "parse.y"
11677 value_expr((yyvsp[0].node));
11678 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
11682#line 11678 "parse.c"
11686#line 3059 "parse.y"
11689 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node));
11693#line 11689 "parse.c"
11697#line 3066 "parse.y"
11700 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
11701 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node));
11705#line 11701 "parse.c"
11709#line 3074 "parse.y"
11712 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
11713 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node));
11717#line 11713 "parse.c"
11721#line 3085 "parse.y"
11732 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
11735 if (lookahead) CMDARG_POP();
11737 if (lookahead) CMDARG_PUSH(0);
11739#line 11735 "parse.c"
11743#line 3103 "parse.y"
11756 if (lookahead) CMDARG_POP();
11758 if (lookahead) CMDARG_PUSH(0);
11759 (yyval.node) = (yyvsp[0].node);
11761#line 11757 "parse.c"
11765#line 3123 "parse.y"
11768 (yyval.node) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc));
11772#line 11768 "parse.c"
11776#line 3130 "parse.y"
11778 if (!local_id(p, idFWD_BLOCK)) {
11779 compile_error(p,
"no anonymous block parameter");
11782 (yyval.node) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc));
11786#line 11782 "parse.c"
11790#line 3142 "parse.y"
11792 (yyval.node) = (yyvsp[0].node);
11794#line 11790 "parse.c"
11798#line 3146 "parse.y"
11802#line 11798 "parse.c"
11806#line 3153 "parse.y"
11809 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
11813#line 11809 "parse.c"
11817#line 3160 "parse.y"
11820 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
11824#line 11820 "parse.c"
11828#line 3167 "parse.y"
11830 if (!local_id(p, idFWD_REST) ||
11831 local_id(p, idFWD_ALL)) {
11832 compile_error(p,
"no anonymous rest parameter");
11835 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc));
11839#line 11835 "parse.c"
11843#line 3178 "parse.y"
11846 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11850#line 11846 "parse.c"
11854#line 3185 "parse.y"
11857 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
11861#line 11857 "parse.c"
11865#line 3192 "parse.y"
11867 if (!local_id(p, idFWD_REST) ||
11868 local_id(p, idFWD_ALL)) {
11869 compile_error(p,
"no anonymous rest parameter");
11872 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc));
11876#line 11872 "parse.c"
11880#line 3211 "parse.y"
11883 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11887#line 11883 "parse.c"
11891#line 3218 "parse.y"
11894 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
11898#line 11894 "parse.c"
11902#line 3225 "parse.y"
11905 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
11909#line 11905 "parse.c"
11913#line 3244 "parse.y"
11916 (yyval.node) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
11920#line 11916 "parse.c"
11924#line 3251 "parse.y"
11928#line 11924 "parse.c"
11932#line 3256 "parse.y"
11936 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
11937 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
11938 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
11942#line 11938 "parse.c"
11946#line 3265 "parse.y"
11947 {SET_LEX_STATE(EXPR_ENDARG);}
11948#line 11944 "parse.c"
11952#line 3266 "parse.y"
11955 (yyval.node) = NEW_BEGIN(0, &(yyloc));
11959#line 11955 "parse.c"
11963#line 3272 "parse.y"
11964 {SET_LEX_STATE(EXPR_ENDARG);}
11965#line 11961 "parse.c"
11969#line 3273 "parse.y"
11972 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) (yyvsp[-2].node)->nd_state = 0;
11973 (yyval.node) = (yyvsp[-2].node);
11977#line 11973 "parse.c"
11981#line 3281 "parse.y"
11984 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) (yyvsp[-1].node)->nd_state = 0;
11985 (yyval.node) = (yyvsp[-1].node);
11989#line 11985 "parse.c"
11993#line 3289 "parse.y"
11996 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc));
12000#line 11996 "parse.c"
12004#line 3296 "parse.y"
12007 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
12011#line 12007 "parse.c"
12015#line 3303 "parse.y"
12018 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
12022#line 12018 "parse.c"
12026#line 3310 "parse.y"
12029 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
12030 (yyval.node)->nd_brace = TRUE;
12034#line 12030 "parse.c"
12038#line 3318 "parse.y"
12041 (yyval.node) = NEW_RETURN(0, &(yyloc));
12045#line 12041 "parse.c"
12049#line 3325 "parse.y"
12052 (yyval.node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
12056#line 12052 "parse.c"
12060#line 3332 "parse.y"
12063 (yyval.node) = NEW_YIELD(0, &(yyloc));
12067#line 12063 "parse.c"
12071#line 3339 "parse.y"
12074 (yyval.node) = NEW_YIELD(0, &(yyloc));
12078#line 12074 "parse.c"
12082#line 3345 "parse.y"
12083 {p->ctxt.in_defined = 1;}
12084#line 12080 "parse.c"
12088#line 3346 "parse.y"
12090 p->ctxt.in_defined = 0;
12091 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
12093#line 12089 "parse.c"
12097#line 3351 "parse.y"
12099 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
12101#line 12097 "parse.c"
12105#line 3355 "parse.y"
12107 (yyval.node) = call_uni_op(p, method_cond(p, new_nil(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12109#line 12105 "parse.c"
12113#line 3359 "parse.y"
12116 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12120#line 12116 "parse.c"
12124#line 3367 "parse.y"
12127 block_dup_check(p, (yyvsp[-1].node)->nd_args, (yyvsp[0].node));
12128 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12132#line 12128 "parse.c"
12136#line 3379 "parse.y"
12139 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
12140 fixpos((yyval.node), (yyvsp[-4].node));
12144#line 12140 "parse.c"
12148#line 3390 "parse.y"
12151 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
12152 fixpos((yyval.node), (yyvsp[-4].node));
12156#line 12152 "parse.c"
12160#line 3400 "parse.y"
12163 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
12164 fixpos((yyval.node), (yyvsp[-2].node));
12168#line 12164 "parse.c"
12172#line 3410 "parse.y"
12175 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
12176 fixpos((yyval.node), (yyvsp[-2].node));
12180#line 12176 "parse.c"
12184#line 3418 "parse.y"
12186 (yyval.val) = p->case_labels;
12187 p->case_labels =
Qnil;
12189#line 12185 "parse.c"
12193#line 3424 "parse.y"
12195 if (
RTEST(p->case_labels)) rb_hash_clear(p->case_labels);
12196 p->case_labels = (yyvsp[-2].val);
12198 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
12199 fixpos((yyval.node), (yyvsp[-4].node));
12203#line 12199 "parse.c"
12207#line 3434 "parse.y"
12209 (yyval.val) = p->case_labels;
12210 p->case_labels = 0;
12212#line 12208 "parse.c"
12216#line 3440 "parse.y"
12218 if (
RTEST(p->case_labels)) rb_hash_clear(p->case_labels);
12219 p->case_labels = (yyvsp[-2].val);
12221 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc));
12225#line 12221 "parse.c"
12229#line 3451 "parse.y"
12232 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12236#line 12232 "parse.c"
12240#line 3460 "parse.y"
12252 ID id = internal_id(p);
12253 NODE *m = NEW_ARGS_AUX(0, 0, &NULL_LOC);
12254 NODE *args, *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-4]));
12258 switch (nd_type((yyvsp[-4].node))) {
12261 (yyvsp[-4].node)->nd_value = internal_var;
12264 m->nd_next = (yyvsp[-4].node);
12267 m->nd_next = node_assign(p, (yyvsp[-4].node), NEW_FOR_MASGN(internal_var, &(yylsp[-4])), NO_LEX_CTXT, &(yylsp[-4]));
12270 m->nd_next = node_assign(p, NEW_MASGN(NEW_LIST((yyvsp[-4].node), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, NO_LEX_CTXT, &(yylsp[-4]));
12273 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
12274 scope = NEW_NODE(NODE_SCOPE, tbl, (yyvsp[-1].node), args, &(yyloc));
12275 (yyval.node) = NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
12276 fixpos((yyval.node), (yyvsp[-4].node));
12280#line 12276 "parse.c"
12284#line 3500 "parse.y"
12286 if (p->ctxt.in_def) {
12287 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
12288 yyerror1(&loc,
"class definition in method body");
12290 p->ctxt.in_class = 1;
12293#line 12289 "parse.c"
12297#line 3510 "parse.y"
12300 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc));
12301 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
12302 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
12303 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
12307 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
12308 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
12310#line 12306 "parse.c"
12314#line 3523 "parse.y"
12316 p->ctxt.in_def = 0;
12317 p->ctxt.in_class = 0;
12320#line 12316 "parse.c"
12324#line 3531 "parse.y"
12327 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
12328 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
12329 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
12330 fixpos((yyval.node), (yyvsp[-4].node));
12334 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
12335 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
12336 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
12338#line 12334 "parse.c"
12342#line 3545 "parse.y"
12344 if (p->ctxt.in_def) {
12345 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
12346 yyerror1(&loc,
"module definition in method body");
12348 p->ctxt.in_class = 1;
12351#line 12347 "parse.c"
12355#line 3555 "parse.y"
12358 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12359 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
12360 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
12361 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
12365 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
12366 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
12368#line 12364 "parse.c"
12372#line 3569 "parse.y"
12375 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
12378#line 12374 "parse.c"
12382#line 3576 "parse.y"
12384 restore_defun(p, (yyvsp[-4].node)->nd_defn);
12386 (yyval.node) = set_defun_body(p, (yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12391#line 12387 "parse.c"
12395#line 3586 "parse.y"
12398 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
12401#line 12397 "parse.c"
12405#line 3593 "parse.y"
12407 restore_defun(p, (yyvsp[-4].node)->nd_defn);
12409 (yyval.node) = set_defun_body(p, (yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12416#line 12412 "parse.c"
12420#line 3604 "parse.y"
12423 (yyval.node) = NEW_BREAK(0, &(yyloc));
12427#line 12423 "parse.c"
12431#line 3611 "parse.y"
12434 (yyval.node) = NEW_NEXT(0, &(yyloc));
12438#line 12434 "parse.c"
12442#line 3618 "parse.y"
12445 (yyval.node) = NEW_REDO(&(yyloc));
12449#line 12445 "parse.c"
12453#line 3625 "parse.y"
12456 (yyval.node) = NEW_RETRY(&(yyloc));
12460#line 12456 "parse.c"
12464#line 3634 "parse.y"
12466 value_expr((yyvsp[0].node));
12467 (yyval.node) = (yyvsp[0].node);
12469#line 12465 "parse.c"
12473#line 3641 "parse.y"
12475 token_info_push(p,
"begin", &(yyloc));
12477 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12480#line 12476 "parse.c"
12484#line 3650 "parse.y"
12487 token_info_push(p,
"if", &(yyloc));
12488 if (p->token_info && p->token_info->nonspc &&
12489 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
12491 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
12493 while (beg < tok &&
ISSPACE(*beg)) beg++;
12495 p->token_info->nonspc = 0;
12499 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12502#line 12498 "parse.c"
12506#line 3670 "parse.y"
12508 token_info_push(p,
"unless", &(yyloc));
12510 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12513#line 12509 "parse.c"
12517#line 3679 "parse.y"
12519 token_info_push(p,
"while", &(yyloc));
12521 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12524#line 12520 "parse.c"
12528#line 3688 "parse.y"
12530 token_info_push(p,
"until", &(yyloc));
12532 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12535#line 12531 "parse.c"
12539#line 3697 "parse.y"
12541 token_info_push(p,
"case", &(yyloc));
12543 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12546#line 12542 "parse.c"
12550#line 3706 "parse.y"
12552 token_info_push(p,
"for", &(yyloc));
12554 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12557#line 12553 "parse.c"
12561#line 3715 "parse.y"
12563 token_info_push(p,
"class", &(yyloc));
12564 (yyval.ctxt) = p->ctxt;
12566 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12569#line 12565 "parse.c"
12573#line 3725 "parse.y"
12575 token_info_push(p,
"module", &(yyloc));
12576 (yyval.ctxt) = p->ctxt;
12578 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12581#line 12577 "parse.c"
12585#line 3735 "parse.y"
12587 token_info_push(p,
"def", &(yyloc));
12588 p->ctxt.in_argdef = 1;
12590#line 12586 "parse.c"
12594#line 3742 "parse.y"
12596 token_info_push(p,
"do", &(yyloc));
12598 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12602#line 12598 "parse.c"
12606#line 3752 "parse.y"
12608 token_info_push(p,
"do", &(yyloc));
12610 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12613#line 12609 "parse.c"
12617#line 3761 "parse.y"
12619 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
12621#line 12617 "parse.c"
12625#line 3767 "parse.y"
12627 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
12629#line 12625 "parse.c"
12633#line 3773 "parse.y"
12635 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
12637#line 12633 "parse.c"
12641#line 3779 "parse.y"
12644 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
12645 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
12648 e.next = ptinfo_beg->next;
12650 token_info_setup(&e, p->lex.pbeg, &(yyloc));
12651 if (!e.nonspc) *ptinfo_beg = e;
12654#line 12650 "parse.c"
12658#line 3794 "parse.y"
12661 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
12663#line 12659 "parse.c"
12667#line 3801 "parse.y"
12669 token_info_pop(p,
"end", &(yyloc));
12671 pop_end_expect_token_locations(p);
12674#line 12670 "parse.c"
12678#line 3808 "parse.y"
12680 compile_error(p,
"syntax error, unexpected end-of-input");
12682#line 12678 "parse.c"
12686#line 3814 "parse.y"
12688 if (p->ctxt.in_class && !p->ctxt.in_def && !dyna_in_block(p))
12689 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
12691#line 12687 "parse.c"
12695#line 3833 "parse.y"
12698 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12699 fixpos((yyval.node), (yyvsp[-3].node));
12703#line 12699 "parse.c"
12707#line 3844 "parse.y"
12710 (yyval.node) = (yyvsp[0].node);
12714#line 12710 "parse.c"
12718#line 3857 "parse.y"
12721 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12722 mark_lvar_used(p, (yyval.node));
12726#line 12722 "parse.c"
12730#line 3865 "parse.y"
12733 (yyval.node) = (yyvsp[-1].node);
12737#line 12733 "parse.c"
12741#line 3874 "parse.y"
12744 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12748#line 12744 "parse.c"
12752#line 3881 "parse.y"
12755 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
12759#line 12755 "parse.c"
12763#line 3890 "parse.y"
12766 (yyval.node) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
12770#line 12766 "parse.c"
12774#line 3897 "parse.y"
12777 (yyval.node) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12781#line 12777 "parse.c"
12785#line 3904 "parse.y"
12788 (yyval.node) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
12792#line 12788 "parse.c"
12796#line 3911 "parse.y"
12799 (yyval.node) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
12803#line 12799 "parse.c"
12807#line 3918 "parse.y"
12810 (yyval.node) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
12814#line 12810 "parse.c"
12818#line 3927 "parse.y"
12821 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12822 mark_lvar_used(p, (yyval.node));
12826#line 12822 "parse.c"
12830#line 3935 "parse.y"
12833 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
12837#line 12833 "parse.c"
12841#line 3944 "parse.y"
12842 {(yyval.id) = ID2VAL(idNil);}
12843#line 12839 "parse.c"
12847#line 3947 "parse.y"
12848 {p->ctxt.in_argdef = 0;}
12849#line 12845 "parse.c"
12853#line 3950 "parse.y"
12855 (yyval.node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
12857#line 12853 "parse.c"
12861#line 3954 "parse.y"
12863 (yyval.node) = new_args_tail(p, (yyvsp[-1].node), Qnone, (yyvsp[0].
id), &(yylsp[-1]));
12865#line 12861 "parse.c"
12869#line 3958 "parse.y"
12871 (yyval.node) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
12873#line 12869 "parse.c"
12877#line 3962 "parse.y"
12879 (yyval.node) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
12881#line 12877 "parse.c"
12885#line 3968 "parse.y"
12887 (yyval.node) = (yyvsp[0].node);
12889#line 12885 "parse.c"
12893#line 3972 "parse.y"
12895 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
12897#line 12893 "parse.c"
12901#line 3978 "parse.y"
12905 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
12909#line 12905 "parse.c"
12913#line 3988 "parse.y"
12915 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
12917#line 12913 "parse.c"
12921#line 3992 "parse.y"
12923 (yyval.node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12925#line 12921 "parse.c"
12929#line 3996 "parse.y"
12931 (yyval.node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12933#line 12929 "parse.c"
12937#line 4000 "parse.y"
12939 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12941#line 12937 "parse.c"
12945#line 4004 "parse.y"
12947 (yyval.node) = new_args(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
12949#line 12945 "parse.c"
12953#line 4008 "parse.y"
12955 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
12956 (yyval.node) = new_args(p, (yyvsp[-1].node), Qnone, (yyvsp[0].
id), Qnone, (yyval.node), &(yyloc));
12958#line 12954 "parse.c"
12962#line 4013 "parse.y"
12964 (yyval.node) = new_args(p, (yyvsp[-5].node), Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12966#line 12962 "parse.c"
12970#line 4017 "parse.y"
12972 (yyval.node) = new_args(p, (yyvsp[-1].node), Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12974#line 12970 "parse.c"
12978#line 4021 "parse.y"
12980 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
12982#line 12978 "parse.c"
12986#line 4025 "parse.y"
12988 (yyval.node) = new_args(p, Qnone, (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12990#line 12986 "parse.c"
12994#line 4029 "parse.y"
12996 (yyval.node) = new_args(p, Qnone, (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12998#line 12994 "parse.c"
13002#line 4033 "parse.y"
13004 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13006#line 13002 "parse.c"
13010#line 4037 "parse.y"
13012 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
13014#line 13010 "parse.c"
13018#line 4041 "parse.y"
13020 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13022#line 13018 "parse.c"
13026#line 4045 "parse.y"
13028 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
13030#line 13026 "parse.c"
13034#line 4052 "parse.y"
13036 p->command_start = TRUE;
13038#line 13034 "parse.c"
13042#line 4058 "parse.y"
13045 p->max_numparam = ORDINAL_PARAM;
13046 p->ctxt.in_argdef = 0;
13052#line 13048 "parse.c"
13056#line 4068 "parse.y"
13059 p->max_numparam = ORDINAL_PARAM;
13060 p->ctxt.in_argdef = 0;
13062 (yyval.node) = (yyvsp[-2].node);
13066#line 13062 "parse.c"
13070#line 4081 "parse.y"
13074#line 13070 "parse.c"
13078#line 4085 "parse.y"
13085#line 13081 "parse.c"
13089#line 4100 "parse.y"
13091 new_bv(p, get_id((yyvsp[0].
id)));
13094#line 13090 "parse.c"
13098#line 4105 "parse.y"
13102#line 13098 "parse.c"
13106#line 4111 "parse.y"
13108 token_info_push(p,
"->", &(yylsp[0]));
13109 (yyvsp[0].vars) = dyna_push(p);
13110 (yyval.num) = p->lex.lpar_beg;
13111 p->lex.lpar_beg = p->lex.paren_nest;
13113#line 13109 "parse.c"
13117#line 4117 "parse.y"
13119 (yyval.num) = p->max_numparam;
13120 p->max_numparam = 0;
13122#line 13118 "parse.c"
13126#line 4121 "parse.y"
13128 (yyval.node) = numparam_push(p);
13130#line 13126 "parse.c"
13134#line 4125 "parse.y"
13138#line 13134 "parse.c"
13142#line 4129 "parse.y"
13144 int max_numparam = p->max_numparam;
13145 p->lex.lpar_beg = (yyvsp[-5].num);
13146 p->max_numparam = (yyvsp[-4].num);
13148 (yyvsp[-2].node) = args_with_numbered(p, (yyvsp[-2].node), max_numparam);
13151 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
13152 (yyval.node) = NEW_LAMBDA((yyvsp[-2].node), (yyvsp[0].node), &loc);
13153 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
13154 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
13155 nd_set_first_loc((yyval.node), (yylsp[-6]).beg_pos);
13159 numparam_pop(p, (yyvsp[-3].node));
13160 dyna_pop(p, (yyvsp[-6].vars));
13162#line 13158 "parse.c"
13166#line 4151 "parse.y"
13168 p->ctxt.in_argdef = 0;
13170 (yyval.node) = (yyvsp[-2].node);
13171 p->max_numparam = ORDINAL_PARAM;
13175#line 13171 "parse.c"
13179#line 4160 "parse.y"
13181 p->ctxt.in_argdef = 0;
13183 if (!args_info_empty_p((yyvsp[0].node)->nd_ainfo))
13184 p->max_numparam = ORDINAL_PARAM;
13186 (yyval.node) = (yyvsp[0].node);
13188#line 13184 "parse.c"
13192#line 4171 "parse.y"
13194 token_info_pop(p,
"}", &(yylsp[0]));
13195 (yyval.node) = (yyvsp[-1].node);
13197#line 13193 "parse.c"
13201#line 4176 "parse.y"
13204 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13207#line 13203 "parse.c"
13211#line 4182 "parse.y"
13213 (yyval.node) = (yyvsp[-1].node);
13215#line 13211 "parse.c"
13219#line 4188 "parse.y"
13221 (yyval.node) = (yyvsp[-1].node);
13223 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
13224 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
13227#line 13223 "parse.c"
13231#line 4198 "parse.y"
13234 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
13235 compile_error(p,
"block given to yield");
13238 block_dup_check(p, (yyvsp[-1].node)->nd_args, (yyvsp[0].node));
13240 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13241 fixpos((yyval.node), (yyvsp[-1].node));
13245#line 13241 "parse.c"
13249#line 4212 "parse.y"
13252 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13256#line 13252 "parse.c"
13260#line 4219 "parse.y"
13263 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13267#line 13263 "parse.c"
13271#line 4226 "parse.y"
13274 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13278#line 13274 "parse.c"
13282#line 4235 "parse.y"
13285 (yyval.node) = (yyvsp[-1].node);
13286 (yyval.node)->nd_args = (yyvsp[0].node);
13287 nd_set_last_loc((yyvsp[-1].node), (yylsp[0]).end_pos);
13291#line 13287 "parse.c"
13295#line 4244 "parse.y"
13298 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13299 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
13303#line 13299 "parse.c"
13307#line 4252 "parse.y"
13310 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13311 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
13315#line 13311 "parse.c"
13319#line 4260 "parse.y"
13322 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), (yyvsp[0].
id), Qnull, &(yylsp[0]), &(yyloc));
13326#line 13322 "parse.c"
13330#line 4267 "parse.y"
13333 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13334 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
13338#line 13334 "parse.c"
13342#line 4275 "parse.y"
13345 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13346 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
13350#line 13346 "parse.c"
13354#line 4283 "parse.y"
13357 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
13361#line 13357 "parse.c"
13365#line 4290 "parse.y"
13368 (yyval.node) = NEW_ZSUPER(&(yyloc));
13372#line 13368 "parse.c"
13376#line 4297 "parse.y"
13379 if ((yyvsp[-3].node) && nd_type_p((yyvsp[-3].node), NODE_SELF))
13380 (yyval.node) = NEW_FCALL(tAREF, (yyvsp[-1].node), &(yyloc));
13382 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
13383 fixpos((yyval.node), (yyvsp[-3].node));
13387#line 13383 "parse.c"
13391#line 4310 "parse.y"
13393 (yyval.node) = (yyvsp[-1].node);
13395 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
13396 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
13399#line 13395 "parse.c"
13403#line 4318 "parse.y"
13405 (yyval.node) = (yyvsp[-1].node);
13407 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
13408 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
13411#line 13407 "parse.c"
13415#line 4327 "parse.y"
13416 {(yyval.vars) = dyna_push(p);}
13417#line 13413 "parse.c"
13421#line 4328 "parse.y"
13423 (yyval.num) = p->max_numparam;
13424 p->max_numparam = 0;
13426#line 13422 "parse.c"
13430#line 4332 "parse.y"
13432 (yyval.node) = numparam_push(p);
13434#line 13430 "parse.c"
13438#line 4336 "parse.y"
13440 int max_numparam = p->max_numparam;
13441 p->max_numparam = (yyvsp[-3].num);
13442 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
13444 (yyval.node) = NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13447 numparam_pop(p, (yyvsp[-2].node));
13448 dyna_pop(p, (yyvsp[-4].vars));
13450#line 13446 "parse.c"
13454#line 4349 "parse.y"
13455 {(yyval.vars) = dyna_push(p);}
13456#line 13452 "parse.c"
13460#line 4350 "parse.y"
13462 (yyval.num) = p->max_numparam;
13463 p->max_numparam = 0;
13465#line 13461 "parse.c"
13469#line 4354 "parse.y"
13471 (yyval.node) = numparam_push(p);
13474#line 13470 "parse.c"
13478#line 4359 "parse.y"
13480 int max_numparam = p->max_numparam;
13481 p->max_numparam = (yyvsp[-3].num);
13482 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
13484 (yyval.node) = NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13488 numparam_pop(p, (yyvsp[-2].node));
13489 dyna_pop(p, (yyvsp[-4].vars));
13491#line 13487 "parse.c"
13495#line 4374 "parse.y"
13498 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
13499 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13503#line 13499 "parse.c"
13507#line 4382 "parse.y"
13510 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
13514#line 13510 "parse.c"
13518#line 4389 "parse.y"
13521 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
13522 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13526#line 13522 "parse.c"
13530#line 4397 "parse.y"
13533 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
13537#line 13533 "parse.c"
13541#line 4408 "parse.y"
13544 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13545 fixpos((yyval.node), (yyvsp[-3].node));
13549#line 13545 "parse.c"
13553#line 4422 "parse.y"
13555 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
13556 p->command_start = FALSE;
13557 (yyvsp[0].ctxt) = p->ctxt;
13558 p->ctxt.in_kwarg = 1;
13559 (yyval.tbl) = push_pvtbl(p);
13561#line 13557 "parse.c"
13565#line 4429 "parse.y"
13567 (yyval.tbl) = push_pktbl(p);
13569#line 13565 "parse.c"
13573#line 4433 "parse.y"
13575 pop_pktbl(p, (yyvsp[-2].tbl));
13576 pop_pvtbl(p, (yyvsp[-3].tbl));
13577 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
13579#line 13575 "parse.c"
13583#line 4440 "parse.y"
13586 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13590#line 13586 "parse.c"
13594#line 4454 "parse.y"
13597 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
13598 fixpos((yyval.node), (yyvsp[0].node));
13602#line 13598 "parse.c"
13606#line 4462 "parse.y"
13609 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
13610 fixpos((yyval.node), (yyvsp[0].node));
13614#line 13610 "parse.c"
13618#line 4473 "parse.y"
13620 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, 0, Qnone, &(yyloc));
13621 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-1].node)), (yyval.node), &(yyloc));
13623#line 13619 "parse.c"
13627#line 4478 "parse.y"
13629 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
13631 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
13635#line 13631 "parse.c"
13639#line 4486 "parse.y"
13641 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
13643#line 13639 "parse.c"
13647#line 4490 "parse.y"
13649 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
13651#line 13647 "parse.c"
13655#line 4494 "parse.y"
13657 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
13659#line 13655 "parse.c"
13663#line 4503 "parse.y"
13666 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
13667 n = list_append(p, n, (yyvsp[0].node));
13668 (yyval.node) = new_hash(p, n, &(yyloc));
13672#line 13668 "parse.c"
13676#line 4515 "parse.y"
13679 (yyval.node) = NEW_NODE(NODE_OR, (yyvsp[-2].node), (yyvsp[0].node), 0, &(yyloc));
13683#line 13679 "parse.c"
13687#line 4524 "parse.y"
13688 {(yyval.tbl) = push_pktbl(p);}
13689#line 13685 "parse.c"
13693#line 4525 "parse.y"
13694 {(yyval.tbl) = push_pktbl(p);}
13695#line 13691 "parse.c"
13699#line 4530 "parse.y"
13701 pop_pktbl(p, (yyvsp[-2].tbl));
13702 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
13704 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13708#line 13704 "parse.c"
13712#line 4539 "parse.y"
13714 pop_pktbl(p, (yyvsp[-2].tbl));
13715 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13717 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13721#line 13717 "parse.c"
13725#line 4548 "parse.y"
13727 pop_pktbl(p, (yyvsp[-2].tbl));
13728 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13730 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13734#line 13730 "parse.c"
13738#line 4557 "parse.y"
13740 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
13741 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
13743#line 13739 "parse.c"
13747#line 4562 "parse.y"
13749 pop_pktbl(p, (yyvsp[-2].tbl));
13750 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
13752 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13756#line 13752 "parse.c"
13760#line 4571 "parse.y"
13762 pop_pktbl(p, (yyvsp[-2].tbl));
13763 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13765 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13769#line 13765 "parse.c"
13773#line 4580 "parse.y"
13775 pop_pktbl(p, (yyvsp[-2].tbl));
13776 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13778 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13782#line 13778 "parse.c"
13786#line 4589 "parse.y"
13788 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
13789 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
13791#line 13787 "parse.c"
13795#line 4594 "parse.y"
13797 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[-1].node), &(yyloc));
13799#line 13795 "parse.c"
13803#line 4598 "parse.y"
13805 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
13807#line 13803 "parse.c"
13811#line 4602 "parse.y"
13813 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
13814 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyval.node), &(yyloc));
13816#line 13812 "parse.c"
13820#line 4607 "parse.y"
13822 (yyval.tbl) = push_pktbl(p);
13823 (yyvsp[0].ctxt) = p->ctxt;
13824 p->ctxt.in_kwarg = 0;
13826#line 13822 "parse.c"
13830#line 4613 "parse.y"
13832 pop_pktbl(p, (yyvsp[-2].tbl));
13833 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
13834 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
13836#line 13832 "parse.c"
13840#line 4619 "parse.y"
13842 (yyval.node) = new_hash_pattern_tail(p, Qnone, 0, &(yyloc));
13843 (yyval.node) = new_hash_pattern(p, Qnone, (yyval.node), &(yyloc));
13845#line 13841 "parse.c"
13849#line 4623 "parse.y"
13850 {(yyval.tbl) = push_pktbl(p);}
13851#line 13847 "parse.c"
13855#line 4624 "parse.y"
13857 pop_pktbl(p, (yyvsp[-2].tbl));
13858 (yyval.node) = (yyvsp[-1].node);
13860#line 13856 "parse.c"
13864#line 4631 "parse.y"
13867 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
13868 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, Qnone, &(yyloc));
13873#line 13869 "parse.c"
13877#line 4640 "parse.y"
13879 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, Qnone, &(yyloc));
13881#line 13877 "parse.c"
13885#line 4644 "parse.y"
13888 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, Qnone, &(yyloc));
13894#line 13890 "parse.c"
13898#line 4653 "parse.y"
13900 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].
id), Qnone, &(yyloc));
13902#line 13898 "parse.c"
13906#line 4657 "parse.y"
13908 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
13910#line 13906 "parse.c"
13914#line 4664 "parse.y"
13916 (yyval.node) = (yyvsp[-1].node);
13918#line 13914 "parse.c"
13922#line 4668 "parse.y"
13925 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
13929#line 13925 "parse.c"
13933#line 4677 "parse.y"
13935 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[0].
id), Qnone, &(yyloc));
13937#line 13933 "parse.c"
13941#line 4681 "parse.y"
13943 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
13945#line 13941 "parse.c"
13949#line 4687 "parse.y"
13951 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].
id), (yyvsp[-2].node), (yyvsp[0].
id), &(yyloc));
13953#line 13949 "parse.c"
13957#line 4694 "parse.y"
13959 (yyval.id) = (yyvsp[0].
id);
13961#line 13957 "parse.c"
13965#line 4698 "parse.y"
13969#line 13965 "parse.c"
13973#line 4705 "parse.y"
13976 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
13980#line 13976 "parse.c"
13984#line 4714 "parse.y"
13987 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13991#line 13987 "parse.c"
13995#line 4723 "parse.y"
13997 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].
id), &(yyloc));
13999#line 13995 "parse.c"
14003#line 4727 "parse.y"
14005 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
14007#line 14003 "parse.c"
14011#line 4731 "parse.y"
14013 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
14015#line 14011 "parse.c"
14019#line 4735 "parse.y"
14021 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
14023#line 14019 "parse.c"
14027#line 4743 "parse.y"
14030 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
14034#line 14030 "parse.c"
14038#line 4752 "parse.y"
14040 error_duplicate_pattern_key(p, get_id((yyvsp[-1].
id)), &(yylsp[-1]));
14042 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
14046#line 14042 "parse.c"
14050#line 4760 "parse.y"
14052 error_duplicate_pattern_key(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
14053 if ((yyvsp[0].
id) && !is_local_id(get_id((yyvsp[0].
id)))) {
14054 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
14056 error_duplicate_pattern_variable(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
14058 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
14062#line 14058 "parse.c"
14066#line 4775 "parse.y"
14068 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
14070 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
14071 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
14072 (yyval.id) =
SYM2ID(node->nd_lit);
14083 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
14087#line 14083 "parse.c"
14091#line 4798 "parse.y"
14093 (yyval.id) = (yyvsp[0].
id);
14095#line 14091 "parse.c"
14099#line 4802 "parse.y"
14103#line 14099 "parse.c"
14107#line 4808 "parse.y"
14111#line 14107 "parse.c"
14115#line 4814 "parse.y"
14116 {(yyval.id) = ID2VAL(idNil);}
14117#line 14113 "parse.c"
14121#line 4819 "parse.y"
14124 value_expr((yyvsp[-2].node));
14125 value_expr((yyvsp[0].node));
14126 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14130#line 14126 "parse.c"
14134#line 4828 "parse.y"
14137 value_expr((yyvsp[-2].node));
14138 value_expr((yyvsp[0].node));
14139 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14143#line 14139 "parse.c"
14147#line 4837 "parse.y"
14150 value_expr((yyvsp[-1].node));
14151 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
14155#line 14151 "parse.c"
14159#line 4845 "parse.y"
14162 value_expr((yyvsp[-1].node));
14163 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
14167#line 14163 "parse.c"
14171#line 4856 "parse.y"
14174 value_expr((yyvsp[0].node));
14175 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
14179#line 14175 "parse.c"
14183#line 4864 "parse.y"
14186 value_expr((yyvsp[0].node));
14187 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
14191#line 14187 "parse.c"
14195#line 4882 "parse.y"
14198 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
14202#line 14198 "parse.c"
14206#line 4892 "parse.y"
14209 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
14210 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14214#line 14210 "parse.c"
14218#line 4902 "parse.y"
14221 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
14222 if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
14223 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
14229#line 14225 "parse.c"
14233#line 4913 "parse.y"
14236 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
14240#line 14236 "parse.c"
14244#line 4922 "parse.y"
14247 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14251#line 14247 "parse.c"
14255#line 4931 "parse.y"
14258 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
14262#line 14258 "parse.c"
14266#line 4938 "parse.y"
14269 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc));
14273#line 14269 "parse.c"
14277#line 4945 "parse.y"
14280 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
14284#line 14280 "parse.c"
14288#line 4956 "parse.y"
14291 (yyval.node) = NEW_RESBODY((yyvsp[-4].node),
14292 (yyvsp[-3].node) ? block_append(p, node_assign(p, (yyvsp[-3].node), NEW_ERRINFO(&(yylsp[-3])), NO_LEX_CTXT, &(yylsp[-3])), (yyvsp[-1].node)) : (yyvsp[-1].node),
14293 (yyvsp[0].node), &(yyloc));
14295 if ((yyvsp[-4].node)) {
14296 fixpos((yyval.node), (yyvsp[-4].node));
14298 else if ((yyvsp[-3].node)) {
14299 fixpos((yyval.node), (yyvsp[-3].node));
14302 fixpos((yyval.node), (yyvsp[-1].node));
14307#line 14303 "parse.c"
14311#line 4978 "parse.y"
14314 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14318#line 14314 "parse.c"
14322#line 4985 "parse.y"
14325 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
14329#line 14325 "parse.c"
14333#line 4995 "parse.y"
14335 (yyval.node) = (yyvsp[0].node);
14337#line 14333 "parse.c"
14341#line 5002 "parse.y"
14344 (yyval.node) = (yyvsp[0].node);
14348#line 14344 "parse.c"
14352#line 5016 "parse.y"
14355 NODE *node = (yyvsp[0].node);
14357 node = NEW_STR(STR_NEW0(), &(yyloc));
14361 node = evstr2dstr(p, node);
14363 (yyval.node) = node;
14367#line 14363 "parse.c"
14371#line 5035 "parse.y"
14374 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14378#line 14374 "parse.c"
14382#line 5044 "parse.y"
14385 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
14386 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
14390#line 14386 "parse.c"
14394#line 5054 "parse.y"
14397 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
14401#line 14397 "parse.c"
14405#line 5063 "parse.y"
14407 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc));
14409#line 14405 "parse.c"
14413#line 5069 "parse.y"
14416 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14420#line 14416 "parse.c"
14424#line 5078 "parse.y"
14431#line 14427 "parse.c"
14435#line 5085 "parse.y"
14438 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
14442#line 14438 "parse.c"
14446#line 5096 "parse.y"
14449 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14453#line 14449 "parse.c"
14457#line 5105 "parse.y"
14460 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14464#line 14460 "parse.c"
14468#line 5114 "parse.y"
14475#line 14471 "parse.c"
14479#line 5121 "parse.y"
14482 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
14486#line 14482 "parse.c"
14490#line 5130 "parse.y"
14493 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14497#line 14493 "parse.c"
14501#line 5139 "parse.y"
14504 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14508#line 14504 "parse.c"
14512#line 5148 "parse.y"
14519#line 14515 "parse.c"
14523#line 5155 "parse.y"
14526 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
14530#line 14526 "parse.c"
14534#line 5164 "parse.y"
14541#line 14537 "parse.c"
14545#line 5171 "parse.y"
14548 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
14552#line 14548 "parse.c"
14556#line 5180 "parse.y"
14567#line 14563 "parse.c"
14571#line 5191 "parse.y"
14574 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14587#line 14583 "parse.c"
14591#line 5209 "parse.y"
14598#line 14594 "parse.c"
14602#line 5216 "parse.y"
14605 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14609#line 14605 "parse.c"
14613#line 5225 "parse.y"
14624#line 14620 "parse.c"
14628#line 5236 "parse.y"
14631 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
14633 (yyval.node) = tail;
14636 (yyval.node) = head;
14639 switch (nd_type(head)) {
14641 nd_set_type(head, NODE_DSTR);
14646 head = list_append(p, NEW_DSTR(
Qnil, &(yyloc)), head);
14649 (yyval.node) = list_append(p, head, tail);
14667#line 14663 "parse.c"
14671#line 5279 "parse.y"
14674 (yyval.strterm) = p->lex.strterm;
14675 p->lex.strterm = 0;
14676 SET_LEX_STATE(EXPR_BEG);
14678#line 14674 "parse.c"
14682#line 5286 "parse.y"
14684 p->lex.strterm = (yyvsp[-1].strterm);
14686 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc));
14687 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
14691#line 14687 "parse.c"
14695#line 5295 "parse.y"
14700#line 14696 "parse.c"
14704#line 5299 "parse.y"
14707 (yyval.strterm) = p->lex.strterm;
14708 p->lex.strterm = 0;
14710#line 14706 "parse.c"
14714#line 5304 "parse.y"
14716 (yyval.num) = p->lex.state;
14717 SET_LEX_STATE(EXPR_BEG);
14719#line 14715 "parse.c"
14723#line 5308 "parse.y"
14725 (yyval.num) = p->lex.brace_nest;
14726 p->lex.brace_nest = 0;
14728#line 14724 "parse.c"
14732#line 5312 "parse.y"
14734 (yyval.num) = p->heredoc_indent;
14735 p->heredoc_indent = 0;
14737#line 14733 "parse.c"
14741#line 5317 "parse.y"
14745 p->lex.strterm = (yyvsp[-5].strterm);
14746 SET_LEX_STATE((yyvsp[-4].num));
14747 p->lex.brace_nest = (yyvsp[-3].num);
14748 p->heredoc_indent = (yyvsp[-2].num);
14749 p->heredoc_line_indent = -1;
14751 if ((yyvsp[-1].node)) (yyvsp[-1].node)->flags &= ~NODE_FL_NEWLINE;
14752 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
14756#line 14752 "parse.c"
14760#line 5334 "parse.y"
14763 (yyval.node) = NEW_GVAR((yyvsp[0].
id), &(yyloc));
14767#line 14763 "parse.c"
14771#line 5341 "parse.y"
14774 (yyval.node) = NEW_IVAR((yyvsp[0].
id), &(yyloc));
14778#line 14774 "parse.c"
14782#line 5348 "parse.y"
14785 (yyval.node) = NEW_CVAR((yyvsp[0].
id), &(yyloc));
14789#line 14785 "parse.c"
14793#line 5362 "parse.y"
14795 SET_LEX_STATE(EXPR_END);
14797 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
14801#line 14797 "parse.c"
14805#line 5376 "parse.y"
14807 SET_LEX_STATE(EXPR_END);
14809 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
14813#line 14809 "parse.c"
14817#line 5387 "parse.y"
14820 (yyval.node) = (yyvsp[0].node);
14821 RB_OBJ_WRITE(p->ast, &(yyval.node)->nd_lit, negate_lit(p, (yyval.node)->nd_lit));
14825#line 14821 "parse.c"
14829#line 5412 "parse.y"
14830 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
14831#line 14827 "parse.c"
14835#line 5413 "parse.y"
14836 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
14837#line 14833 "parse.c"
14841#line 5414 "parse.y"
14842 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
14843#line 14839 "parse.c"
14847#line 5415 "parse.y"
14848 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
14849#line 14845 "parse.c"
14853#line 5416 "parse.y"
14854 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
14855#line 14851 "parse.c"
14859#line 5417 "parse.y"
14860 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
14861#line 14857 "parse.c"
14865#line 5418 "parse.y"
14866 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
14867#line 14863 "parse.c"
14871#line 5422 "parse.y"
14874 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
14884#line 14880 "parse.c"
14888#line 5435 "parse.y"
14891 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
14895#line 14891 "parse.c"
14899#line 5444 "parse.y"
14902 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14906#line 14902 "parse.c"
14910#line 5451 "parse.y"
14913 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14917#line 14913 "parse.c"
14921#line 5464 "parse.y"
14923 SET_LEX_STATE(EXPR_BEG);
14924 p->command_start = TRUE;
14926#line 14922 "parse.c"
14930#line 5469 "parse.y"
14932 (yyval.node) = (yyvsp[-1].node);
14934#line 14930 "parse.c"
14938#line 5473 "parse.y"
14945#line 14941 "parse.c"
14949#line 5483 "parse.y"
14951 p->ctxt.in_argdef = 0;
14952 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[-1]));
14953 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node), &(yylsp[-1]));
14955#line 14951 "parse.c"
14959#line 5491 "parse.y"
14962 (yyval.node) = (yyvsp[-1].node);
14965 SET_LEX_STATE(EXPR_BEG);
14966 p->command_start = TRUE;
14967 p->ctxt.in_argdef = 0;
14969#line 14965 "parse.c"
14973#line 5503 "parse.y"
14975 (yyval.ctxt) = p->ctxt;
14976 p->ctxt.in_kwarg = 1;
14977 p->ctxt.in_argdef = 1;
14978 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
14980#line 14976 "parse.c"
14984#line 5510 "parse.y"
14986 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
14987 p->ctxt.in_argdef = 0;
14988 (yyval.node) = (yyvsp[-1].node);
14989 SET_LEX_STATE(EXPR_BEG);
14990 p->command_start = TRUE;
14992#line 14988 "parse.c"
14996#line 5520 "parse.y"
14998 (yyval.node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
15000#line 14996 "parse.c"
15004#line 5524 "parse.y"
15006 (yyval.node) = new_args_tail(p, (yyvsp[-1].node), Qnone, (yyvsp[0].
id), &(yylsp[-1]));
15008#line 15004 "parse.c"
15012#line 5528 "parse.y"
15014 (yyval.node) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
15016#line 15012 "parse.c"
15020#line 5532 "parse.y"
15022 (yyval.node) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
15024#line 15020 "parse.c"
15028#line 5536 "parse.y"
15030 add_forwarding_args(p);
15031 (yyval.node) = new_args_tail(p, Qnone, (yyvsp[0].
id), ID2VAL(idFWD_BLOCK), &(yylsp[0]));
15033 ((yyval.node)->nd_ainfo)->forwarding = 1;
15036#line 15032 "parse.c"
15040#line 5546 "parse.y"
15042 (yyval.node) = (yyvsp[0].node);
15044#line 15040 "parse.c"
15048#line 5550 "parse.y"
15050 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
15052#line 15048 "parse.c"
15056#line 5556 "parse.y"
15058 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
15060#line 15056 "parse.c"
15064#line 5560 "parse.y"
15066 (yyval.node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15068#line 15064 "parse.c"
15072#line 5564 "parse.y"
15074 (yyval.node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
15076#line 15072 "parse.c"
15080#line 5568 "parse.y"
15082 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15084#line 15080 "parse.c"
15088#line 5572 "parse.y"
15090 (yyval.node) = new_args(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
15092#line 15088 "parse.c"
15096#line 5576 "parse.y"
15098 (yyval.node) = new_args(p, (yyvsp[-5].node), Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15100#line 15096 "parse.c"
15104#line 5580 "parse.y"
15106 (yyval.node) = new_args(p, (yyvsp[-1].node), Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
15108#line 15104 "parse.c"
15112#line 5584 "parse.y"
15114 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
15116#line 15112 "parse.c"
15120#line 5588 "parse.y"
15122 (yyval.node) = new_args(p, Qnone, (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15124#line 15120 "parse.c"
15128#line 5592 "parse.y"
15130 (yyval.node) = new_args(p, Qnone, (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
15132#line 15128 "parse.c"
15136#line 5596 "parse.y"
15138 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15140#line 15136 "parse.c"
15144#line 5600 "parse.y"
15146 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
15148#line 15144 "parse.c"
15152#line 5604 "parse.y"
15154 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15156#line 15152 "parse.c"
15160#line 5608 "parse.y"
15162 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
15164#line 15160 "parse.c"
15168#line 5612 "parse.y"
15170 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
15171 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node), &(yylsp[0]));
15173#line 15169 "parse.c"
15177#line 5619 "parse.y"
15180#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
15183 (yyval.id) = idFWD_KWREST;
15188#line 15184 "parse.c"
15192#line 5632 "parse.y"
15194 static const char mesg[] =
"formal argument cannot be a constant";
15196 yyerror1(&(yylsp[0]), mesg);
15201#line 15197 "parse.c"
15205#line 5641 "parse.y"
15207 static const char mesg[] =
"formal argument cannot be an instance variable";
15209 yyerror1(&(yylsp[0]), mesg);
15214#line 15210 "parse.c"
15218#line 5650 "parse.y"
15220 static const char mesg[] =
"formal argument cannot be a global variable";
15222 yyerror1(&(yylsp[0]), mesg);
15227#line 15223 "parse.c"
15231#line 5659 "parse.y"
15233 static const char mesg[] =
"formal argument cannot be a class variable";
15235 yyerror1(&(yylsp[0]), mesg);
15240#line 15236 "parse.c"
15244#line 5671 "parse.y"
15246 formal_argument(p, (yyvsp[0].
id));
15247 p->max_numparam = ORDINAL_PARAM;
15248 (yyval.id) = (yyvsp[0].
id);
15250#line 15246 "parse.c"
15254#line 5679 "parse.y"
15256 ID id = get_id((yyvsp[0].
id));
15259 (yyval.id) = (yyvsp[0].
id);
15261#line 15257 "parse.c"
15265#line 5688 "parse.y"
15269 (yyval.node) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
15273#line 15269 "parse.c"
15277#line 5696 "parse.y"
15280 ID tid = internal_id(p);
15282 loc.beg_pos = (yylsp[-1]).beg_pos;
15283 loc.end_pos = (yylsp[-1]).beg_pos;
15285 if (dyna_in_block(p)) {
15286 (yyvsp[-1].node)->nd_value = NEW_DVAR(tid, &loc);
15289 (yyvsp[-1].node)->nd_value = NEW_LVAR(tid, &loc);
15291 (yyval.node) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
15292 (yyval.node)->nd_next = (yyvsp[-1].node);
15296#line 15292 "parse.c"
15300#line 5719 "parse.y"
15303 (yyval.node) = (yyvsp[-2].node);
15304 (yyval.node)->nd_plen++;
15305 (yyval.node)->nd_next = block_append(p, (yyval.node)->nd_next, (yyvsp[0].node)->nd_next);
15306 rb_discard_node(p, (yyvsp[0].node));
15310#line 15306 "parse.c"
15314#line 5732 "parse.y"
15316 arg_var(p, formal_argument(p, (yyvsp[0].
id)));
15317 p->cur_arg = get_id((yyvsp[0].
id));
15318 p->max_numparam = ORDINAL_PARAM;
15319 p->ctxt.in_argdef = 0;
15320 (yyval.id) = (yyvsp[0].
id);
15322#line 15318 "parse.c"
15326#line 5742 "parse.y"
15329 p->ctxt.in_argdef = 1;
15331 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15335#line 15331 "parse.c"
15339#line 5751 "parse.y"
15342 p->ctxt.in_argdef = 1;
15344 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15348#line 15344 "parse.c"
15352#line 5762 "parse.y"
15354 p->ctxt.in_argdef = 1;
15356 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15360#line 15356 "parse.c"
15364#line 5770 "parse.y"
15366 p->ctxt.in_argdef = 1;
15368 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15372#line 15368 "parse.c"
15376#line 5780 "parse.y"
15379 (yyval.node) = (yyvsp[0].node);
15383#line 15379 "parse.c"
15387#line 5787 "parse.y"
15390 (yyval.node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
15394#line 15390 "parse.c"
15398#line 5797 "parse.y"
15401 (yyval.node) = (yyvsp[0].node);
15405#line 15401 "parse.c"
15409#line 5804 "parse.y"
15412 (yyval.node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
15416#line 15412 "parse.c"
15420#line 5817 "parse.y"
15426#line 15422 "parse.c"
15430#line 5825 "parse.y"
15432 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
15434 (yyval.id) = (yyvsp[0].
id);
15438#line 15434 "parse.c"
15442#line 5833 "parse.y"
15444 arg_var(p, idFWD_KWREST);
15446 (yyval.id) = idFWD_KWREST;
15450#line 15446 "parse.c"
15454#line 5843 "parse.y"
15457 p->ctxt.in_argdef = 1;
15459 (yyval.node) = NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15463#line 15459 "parse.c"
15467#line 5854 "parse.y"
15470 p->ctxt.in_argdef = 1;
15472 (yyval.node) = NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15476#line 15472 "parse.c"
15480#line 5865 "parse.y"
15483 (yyval.node) = (yyvsp[0].node);
15487#line 15483 "parse.c"
15491#line 5872 "parse.y"
15494 (yyval.node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
15498#line 15494 "parse.c"
15502#line 5881 "parse.y"
15505 (yyval.node) = (yyvsp[0].node);
15509#line 15505 "parse.c"
15513#line 5888 "parse.y"
15516 (yyval.node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
15520#line 15516 "parse.c"
15524#line 5901 "parse.y"
15526 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
15528 (yyval.id) = (yyvsp[0].
id);
15532#line 15528 "parse.c"
15536#line 5909 "parse.y"
15538 arg_var(p, idFWD_REST);
15540 (yyval.id) = idFWD_REST;
15544#line 15540 "parse.c"
15548#line 5923 "parse.y"
15550 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
15552 (yyval.id) = (yyvsp[0].
id);
15556#line 15552 "parse.c"
15560#line 5931 "parse.y"
15562 arg_var(p, idFWD_BLOCK);
15564 (yyval.id) = idFWD_BLOCK;
15568#line 15564 "parse.c"
15572#line 5941 "parse.y"
15574 (yyval.id) = (yyvsp[0].
id);
15576#line 15572 "parse.c"
15580#line 5945 "parse.y"
15582 (yyval.id) = Qnull;
15584#line 15580 "parse.c"
15588#line 5951 "parse.y"
15590 value_expr((yyvsp[0].node));
15591 (yyval.node) = (yyvsp[0].node);
15593#line 15589 "parse.c"
15597#line 5955 "parse.y"
15598 {SET_LEX_STATE(EXPR_BEG);}
15599#line 15595 "parse.c"
15603#line 5956 "parse.y"
15606 switch (nd_type((yyvsp[-1].node))) {
15615 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
15618 value_expr((yyvsp[-1].node));
15621 (yyval.node) = (yyvsp[-1].node);
15625#line 15621 "parse.c"
15629#line 5981 "parse.y"
15632 (yyval.node) = (yyvsp[-1].node);
15636#line 15632 "parse.c"
15640#line 5992 "parse.y"
15643 NODE *assocs = (yyvsp[-2].node);
15644 NODE *tail = (yyvsp[0].node);
15649 if (assocs->nd_head &&
15650 !tail->nd_head && nd_type_p(tail->nd_next, NODE_LIST) &&
15651 nd_type_p(tail->nd_next->nd_head, NODE_HASH)) {
15653 tail = tail->nd_next->nd_head->nd_head;
15655 assocs = list_concat(assocs, tail);
15657 (yyval.node) = assocs;
15661#line 15657 "parse.c"
15665#line 6015 "parse.y"
15668 if (nd_type_p((yyvsp[-2].node), NODE_STR)) {
15669 nd_set_type((yyvsp[-2].node), NODE_LIT);
15670 RB_OBJ_WRITE(p->ast, &(yyvsp[-2].node)->nd_lit, rb_fstring((yyvsp[-2].node)->nd_lit));
15672 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
15676#line 15672 "parse.c"
15680#line 6026 "parse.y"
15683 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
15687#line 15683 "parse.c"
15691#line 6033 "parse.y"
15694 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
15695 if (!val) val = NEW_BEGIN(0, &(yyloc));
15696 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
15700#line 15696 "parse.c"
15704#line 6042 "parse.y"
15707 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
15708 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
15712#line 15708 "parse.c"
15716#line 6050 "parse.y"
15719 if (nd_type_p((yyvsp[0].node), NODE_HASH) &&
15720 !((yyvsp[0].node)->nd_head && (yyvsp[0].node)->nd_head->nd_alen)) {
15721 static VALUE empty_hash;
15724 rb_gc_register_mark_object(empty_hash);
15726 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), NEW_LIT(empty_hash, &(yyloc)));
15729 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
15733#line 15729 "parse.c"
15737#line 6067 "parse.y"
15739 if (!local_id(p, idFWD_KWREST) ||
15740 local_id(p, idFWD_ALL)) {
15741 compile_error(p,
"no anonymous keyword rest parameter");
15744 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
15745 NEW_LVAR(idFWD_KWREST, &(yyloc)));
15749#line 15745 "parse.c"
15753#line 6127 "parse.y"
15754 {yyerrok;token_flush(p);}
15755#line 15751 "parse.c"
15759#line 6129 "parse.y"
15761 (yyloc).end_pos = (yyloc).beg_pos;
15764#line 15760 "parse.c"
15768#line 6136 "parse.y"
15770#line 15766 "parse.c"
15774#line 6140 "parse.y"
15776 (yyval.node) = Qnull;
15778#line 15774 "parse.c"
15782#line 15778 "parse.c"
15797 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
15799 YYPOPSTACK (yylen);
15809 const int yylhs = yyr1[yyn] - YYNTOKENS;
15810 const int yyi = yypgoto[yylhs] + *yyssp;
15811 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
15813 : yydefgoto[yylhs]);
15825 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
15832 = {yyssp, yytoken, &yylloc};
15833 char const *yymsgp = YY_(
"syntax error");
15834 int yysyntax_error_status;
15835 yysyntax_error_status = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
15836 if (yysyntax_error_status == 0)
15838 else if (yysyntax_error_status == -1)
15840 if (yymsg != yymsgbuf)
15841 YYSTACK_FREE (yymsg);
15842 yymsg = YY_CAST (
char *,
15843 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
15846 yysyntax_error_status
15847 = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
15853 yymsg_alloc =
sizeof yymsgbuf;
15854 yysyntax_error_status = YYENOMEM;
15857 yyerror (&yylloc, p, yymsgp);
15858 if (yysyntax_error_status == YYENOMEM)
15863 yyerror_range[1] = yylloc;
15864 if (yyerrstatus == 3)
15869 if (yychar <= END_OF_INPUT)
15872 if (yychar == END_OF_INPUT)
15877 yydestruct (
"Error: discarding",
15878 yytoken, &yylval, &yylloc, p);
15900 YYPOPSTACK (yylen);
15902 YY_STACK_PRINT (yyss, yyssp);
15916 yyn = yypact[yystate];
15917 if (!yypact_value_is_default (yyn))
15919 yyn += YYSYMBOL_YYerror;
15920 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
15922 yyn = yytable[yyn];
15932 yyerror_range[1] = *yylsp;
15933 yydestruct (
"Error: popping",
15934 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
15937 YY_STACK_PRINT (yyss, yyssp);
15940 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
15942 YY_IGNORE_MAYBE_UNINITIALIZED_END
15944 yyerror_range[2] = yylloc;
15946 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
15949 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
15975 yyerror (&yylloc, p, YY_(
"memory exhausted"));
15984 if (yychar != YYEMPTY)
15988 yytoken = YYTRANSLATE (yychar);
15989 yydestruct (
"Cleanup: discarding lookahead",
15990 yytoken, &yylval, &yylloc, p);
15994 YYPOPSTACK (yylen);
15995 YY_STACK_PRINT (yyss, yyssp);
15996 while (yyssp != yyss)
15998 yydestruct (
"Cleanup: popping",
15999 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
16004 YYSTACK_FREE (yyss);
16006 if (yymsg != yymsgbuf)
16007 YYSTACK_FREE (yymsg);
16011#line 6144 "parse.y"
16016# define yylval (*p->lval)
16025# define set_yylval_node(x) { \
16026 YYLTYPE _cur_loc; \
16027 rb_parser_set_location(p, &_cur_loc); \
16028 yylval.node = (x); \
16030# define set_yylval_str(x) \
16032 set_yylval_node(NEW_STR(x, &_cur_loc)); \
16033 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
16035# define set_yylval_literal(x) \
16037 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
16038 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
16040# define set_yylval_num(x) (yylval.num = (x))
16041# define set_yylval_id(x) (yylval.id = (x))
16042# define set_yylval_name(x) (yylval.id = (x))
16043# define yylval_id() (yylval.id)
16048 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
16050# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
16051# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
16052# define set_yylval_id(x) (void)(x)
16053# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
16054# define set_yylval_literal(x) add_mark_object(p, (x))
16055# define set_yylval_node(x) (yylval.val = ripper_new_yylval(p, 0, 0, STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)))
16056# define yylval_id() yylval.id
16057# define _cur_loc NULL_LOC
16060#define set_yylval_noname() set_yylval_id(keyword_nil)
16061#define has_delayed_token(p) (!NIL_P(p->delayed.token))
16064#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
16065#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
16070 if (p->keep_tokens && (p->lex.pcur < p->lex.ptok))
rb_bug(
"lex.pcur < lex.ptok. (line: %d) %ld|%ld|%ld", p->ruby_sourceline, p->lex.ptok - p->lex.pbeg, p->lex.pcur - p->lex.ptok, p->lex.pend - p->lex.pcur);
16071 return p->lex.pcur > p->lex.ptok;
16077 VALUE ary = rb_ary_new_from_args(4,
16086parser_append_tokens(
struct parser_params *p,
VALUE str,
enum yytokentype t,
int line)
16092 token_id = p->token_id;
16093 rb_ary_push(ary,
INT2FIX(token_id));
16094 rb_ary_push(ary,
ID2SYM(parser_token2id(t)));
16095 rb_ary_push(ary, str);
16096 rb_ary_push(ary, code_loc_to_ary(p->yylloc));
16098 rb_ary_push(p->tokens, ary);
16102 rb_parser_printf(p,
"Append tokens (line: %d) %"PRIsVALUE
"\n", line, ary);
16107parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
16109 debug_token_line(p,
"parser_dispatch_scan_event", line);
16111 if (!parser_has_token(p))
return;
16113 RUBY_SET_YYLLOC(*p->yylloc);
16115 if (p->keep_tokens) {
16116 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
16117 parser_append_tokens(p, str, t, line);
16123#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
16125parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
16127 int saved_line = p->ruby_sourceline;
16128 const char *saved_tokp = p->lex.ptok;
16130 debug_token_line(p,
"parser_dispatch_delayed_token", line);
16132 if (!has_delayed_token(p))
return;
16134 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
16136 if (p->keep_tokens) {
16137 p->ruby_sourceline = p->delayed.beg_line;
16138 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
16139 parser_append_tokens(p, p->delayed.token, t, line);
16140 p->ruby_sourceline = saved_line;
16141 p->lex.ptok = saved_tokp;
16144 p->delayed.token =
Qnil;
16147#define literal_flush(p, ptr) ((void)(ptr))
16149#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
16152intern_sym(
const char *name)
16162 return p->lex.pcur > p->lex.ptok;
16166ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
16168 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
16169 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
16170 RUBY_SET_YYLLOC(*p->yylloc);
16176ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
16178 if (!ripper_has_scan_event(p))
return;
16179 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
16181#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
16184ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
16186 int saved_line = p->ruby_sourceline;
16187 const char *saved_tokp = p->lex.ptok;
16189 if (!has_delayed_token(p))
return;
16190 p->ruby_sourceline = p->delayed.beg_line;
16191 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
16192 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
16193 p->delayed.token =
Qnil;
16194 p->ruby_sourceline = saved_line;
16195 p->lex.ptok = saved_tokp;
16197#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
16201is_identchar(
const char *ptr,
const char *MAYBE_UNUSED(ptr_end),
rb_encoding *enc)
16209 return !(p)->eofp && is_identchar(p->lex.pcur-1, p->lex.pend, p->enc);
16215 return ISASCII(*(p->lex.pcur-1));
16221 int column = 1, nonspc = 0, i;
16222 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
16223 if (*ptr ==
'\t') {
16224 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
16227 if (*ptr !=
' ' && *ptr !=
'\t') {
16232 ptinfo->beg = loc->beg_pos;
16233 ptinfo->indent = column;
16234 ptinfo->nonspc = nonspc;
16242 if (!p->token_info_enabled)
return;
16244 ptinfo->token = token;
16245 ptinfo->next = p->token_info;
16246 token_info_setup(ptinfo, p->lex.pbeg, loc);
16248 p->token_info = ptinfo;
16256 if (!ptinfo_beg)
return;
16257 p->token_info = ptinfo_beg->next;
16260 token_info_warn(p, token, ptinfo_beg, 1, loc);
16261 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
16269 if (!ptinfo_beg)
return;
16270 p->token_info = ptinfo_beg->next;
16272 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
16273 ptinfo_beg->beg.column != beg_pos.column ||
16274 strcmp(ptinfo_beg->token, token)) {
16275 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
16276 beg_pos.lineno, beg_pos.column, token,
16277 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
16278 ptinfo_beg->token);
16281 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
16287 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
16288 if (!p->token_info_enabled)
return;
16289 if (!ptinfo_beg)
return;
16290 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
16291 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
16292 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
16293 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
16294 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
16295 rb_warn3L(ptinfo_end->beg.lineno,
16296 "mismatched indentations at '%s' with '%s' at %d",
16297 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
16301parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
16303 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
16305 compile_error(p,
"invalid multibyte char (%s)",
rb_enc_name(p->enc));
16312static void ruby_show_error_line(
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno,
VALUE str);
16318 int lineno = p->ruby_sourceline;
16322 else if (yylloc->beg_pos.lineno == lineno) {
16323 str = p->lex.lastline;
16328 ruby_show_error_line(p->error_buffer, yylloc, lineno, str);
16338 yylloc = RUBY_SET_YYLLOC(current);
16340 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
16341 p->ruby_sourceline != yylloc->end_pos.lineno)) {
16345 compile_error(p,
"%s", msg);
16346 parser_show_error_line(p, yylloc);
16354 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
16358ruby_show_error_line(
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno,
VALUE str)
16361 const int max_line_margin = 30;
16362 const char *ptr, *ptr_end, *pt, *pb;
16363 const char *pre =
"", *post =
"", *pend;
16364 const char *code =
"", *caret =
"";
16371 if (!yylloc)
return;
16373 if (pend > pbeg && pend[-1] ==
'\n') {
16374 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
16378 if (lineno == yylloc->end_pos.lineno &&
16379 (pend - pbeg) > yylloc->end_pos.column) {
16380 pt = pbeg + yylloc->end_pos.column;
16383 ptr = ptr_end = pt;
16384 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
16385 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
16387 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
16388 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
16390 len = ptr_end - ptr;
16394 if (ptr > pbeg) pre =
"...";
16396 if (ptr_end < pend) {
16398 if (ptr_end < pend) post =
"...";
16402 if (lineno == yylloc->beg_pos.lineno) {
16403 pb += yylloc->beg_pos.column;
16404 if (pb > pt) pb = pt;
16406 if (pb < ptr) pb = ptr;
16407 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
16410 if (
RTEST(errbuf)) {
16418 if (!errbuf && rb_stderr_tty_p()) {
16419#define CSI_BEGIN "\033["
16422 CSI_BEGIN
""CSI_SGR
"%s"
16423 CSI_BEGIN
"1"CSI_SGR
"%.*s"
16424 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
16425 CSI_BEGIN
";1"CSI_SGR
"%.*s"
16426 CSI_BEGIN
""CSI_SGR
"%s"
16429 (
int)(pb - ptr), ptr,
16430 (
int)(pt - pb), pb,
16431 (
int)(ptr_end - pt), pt,
16437 len = ptr_end - ptr;
16438 lim = pt < pend ? pt : pend;
16439 i = (int)(lim - ptr);
16445 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
16451 memset(p2,
'~', (lim - ptr));
16456 pre, (
int)len, code, post,
16459 if (!errbuf) rb_write_error_str(mesg);
16465 const char *pcur = 0, *ptok = 0;
16466 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
16467 p->ruby_sourceline == yylloc->end_pos.lineno) {
16468 pcur = p->lex.pcur;
16469 ptok = p->lex.ptok;
16470 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
16471 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
16473 parser_yyerror0(p, msg);
16475 p->lex.ptok = ptok;
16476 p->lex.pcur = pcur;
16484 dispatch1(parse_error, STR_NEW2(msg));
16497vtable_size(
const struct vtable *tbl)
16499 if (!DVARS_TERMINAL_P(tbl)) {
16518 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
16523#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
16526vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
16531 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
16534 if (!DVARS_TERMINAL_P(tbl)) {
16536 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
16538 ruby_sized_xfree(tbl,
sizeof(*tbl));
16541#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
16544vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
16549 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
16553 if (DVARS_TERMINAL_P(tbl)) {
16554 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
16557 if (tbl->pos == tbl->capa) {
16558 tbl->capa = tbl->capa * 2;
16559 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
16561 tbl->tbl[tbl->pos++] = id;
16563#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
16567vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
16568 struct vtable *tbl,
int n)
16571 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
16572 line, name, (
void *)tbl, n);
16574 if (tbl->pos < n) {
16575 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
16580#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
16584vtable_included(
const struct vtable * tbl,
ID id)
16588 if (!DVARS_TERMINAL_P(tbl)) {
16589 for (i = 0; i < tbl->pos; i++) {
16590 if (tbl->tbl[i] ==
id) {
16604debug_lines(
VALUE fname)
16607 CONST_ID(script_lines,
"SCRIPT_LINES__");
16611 VALUE lines = rb_ary_new();
16612 rb_hash_aset(hash, fname, lines);
16622 return strcmp(p->ruby_sourcefile,
"-e") == 0;
16626yycompile0(
VALUE arg)
16633 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string)) {
16634 p->debug_lines = debug_lines(p->ruby_sourcefile_string);
16635 if (p->debug_lines && p->ruby_sourceline > 0) {
16637 n = p->ruby_sourceline;
16639 rb_ary_push(p->debug_lines, str);
16643 if (!e_option_supplied(p)) {
16648 if (p->keep_script_lines || ruby_vm_keep_script_lines) {
16649 if (!p->debug_lines) {
16650 p->debug_lines = rb_ary_new();
16653 RB_OBJ_WRITE(p->ast, &p->ast->body.script_lines, p->debug_lines);
16657#define RUBY_DTRACE_PARSE_HOOK(name) \
16658 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
16659 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
16661 RUBY_DTRACE_PARSE_HOOK(BEGIN);
16663 RUBY_DTRACE_PARSE_HOOK(END);
16664 p->debug_lines = 0;
16666 p->lex.strterm = 0;
16667 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
16668 if (n || p->error_p) {
16669 VALUE mesg = p->error_buffer;
16673 if (!p->error_tolerant) {
16678 tree = p->eval_tree;
16680 tree = NEW_NIL(&NULL_LOC);
16683 VALUE opt = p->compile_option;
16684 VALUE tokens = p->tokens;
16686 NODE *body = parser_append_options(p, tree->nd_body);
16687 if (!opt) opt =
rb_obj_hide(rb_ident_hash_new());
16688 rb_hash_aset(opt, rb_sym_intern_ascii_cstr(
"coverage_enabled"), cov);
16689 prelude = block_append(p, p->eval_tree_begin, body);
16690 tree->nd_body = prelude;
16691 RB_OBJ_WRITE(p->ast, &p->ast->body.compile_option, opt);
16692 if (p->keep_tokens) {
16694 rb_ast_set_tokens(p->ast, tokens);
16697 p->ast->body.root = tree;
16698 if (!p->ast->body.script_lines) p->ast->body.script_lines =
INT2FIX(p->line_count);
16706 if (
NIL_P(fname)) {
16707 p->ruby_sourcefile_string =
Qnil;
16708 p->ruby_sourcefile =
"(none)";
16711 p->ruby_sourcefile_string = rb_fstring(fname);
16714 p->ruby_sourceline = line - 1;
16718 p->ast = ast = rb_ast_new();
16719 rb_suppress_tracing(yycompile0, (
VALUE)p);
16732must_be_ascii_compatible(
VALUE s)
16744 char *beg, *end, *start;
16750 if (p->lex.gets_.ptr) {
16751 if (len == p->lex.gets_.ptr)
return Qnil;
16752 beg += p->lex.gets_.ptr;
16753 len -= p->lex.gets_.ptr;
16755 end = memchr(beg,
'\n', len);
16756 if (end) len = ++end - beg;
16757 p->lex.gets_.ptr += len;
16764 VALUE line = (*p->lex.gets)(p, p->lex.input);
16765 if (
NIL_P(line))
return line;
16766 must_be_ascii_compatible(line);
16782 p->lex.gets = lex_get_str;
16783 p->lex.gets_.ptr = 0;
16785 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
16787 return yycompile(vparser, p, fname, line);
16791rb_parser_compile_string(
VALUE vparser,
const char *f,
VALUE s,
int line)
16797rb_parser_compile_string_path(
VALUE vparser,
VALUE f,
VALUE s,
int line)
16799 must_be_ascii_compatible(s);
16800 return parser_compile_string(vparser, f, s, line);
16808 return rb_io_gets_internal(io);
16812rb_parser_compile_file_path(
VALUE vparser,
VALUE fname,
VALUE file,
int start)
16818 p->lex.gets = lex_io_gets;
16819 p->lex.input = file;
16820 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
16822 return yycompile(vparser, p, fname, start);
16828 return (*p->lex.gets_.call)(input, p->line_count);
16838 p->lex.gets = lex_generic_gets;
16839 p->lex.gets_.call = lex_gets;
16840 p->lex.input = input;
16841 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
16843 return yycompile(vparser, p, fname, start);
16847#define STR_FUNC_ESCAPE 0x01
16848#define STR_FUNC_EXPAND 0x02
16849#define STR_FUNC_REGEXP 0x04
16850#define STR_FUNC_QWORDS 0x08
16851#define STR_FUNC_SYMBOL 0x10
16852#define STR_FUNC_INDENT 0x20
16853#define STR_FUNC_LABEL 0x40
16854#define STR_FUNC_LIST 0x4000
16855#define STR_FUNC_TERM 0x8000
16858 str_label = STR_FUNC_LABEL,
16860 str_dquote = (STR_FUNC_EXPAND),
16861 str_xquote = (STR_FUNC_EXPAND),
16862 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
16863 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
16864 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
16865 str_ssym = (STR_FUNC_SYMBOL),
16866 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
16876 if (is_ascii_string(str)) {
16878 else if (rb_is_usascii_enc(enc0) && enc != rb_utf8_encoding()) {
16879 rb_enc_associate(str, rb_ascii8bit_encoding());
16886#define peek(p,c) peek_n(p, (c), 0)
16887#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
16888#define peekc(p) peekc_n(p, 0)
16889#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
16892add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
16895 debug_token_line(p,
"add_delayed_token", line);
16899 if (!has_delayed_token(p)) {
16901 rb_enc_associate(p->delayed.token, p->enc);
16902 p->delayed.beg_line = p->ruby_sourceline;
16903 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
16906 p->delayed.end_line = p->ruby_sourceline;
16907 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
16915 VALUE v = p->lex.nextline;
16916 p->lex.nextline = 0;
16921 if (p->lex.pend > p->lex.pbeg && *(p->lex.pend-1) !=
'\n') {
16925 if (!p->lex.input ||
NIL_P(v = lex_getline(p))) {
16932 if (p->debug_lines) {
16933 if (set_encoding) rb_enc_associate(v, p->enc);
16934 rb_ary_push(p->debug_lines, v);
16937 p->cr_seen = FALSE;
16939 else if (
NIL_P(v)) {
16943 add_delayed_token(p, p->lex.ptok, p->lex.pend, __LINE__);
16944 if (p->heredoc_end > 0) {
16945 p->ruby_sourceline = p->heredoc_end;
16946 p->heredoc_end = 0;
16948 p->ruby_sourceline++;
16952 p->lex.lastline = v;
16959 if (peek(p,
'\n')) {
16971 if (UNLIKELY((p->lex.pcur == p->lex.pend) || p->eofp ||
RTEST(p->lex.nextline))) {
16972 if (nextline(p, set_encoding))
return -1;
16974 c = (
unsigned char)*p->lex.pcur++;
16975 if (UNLIKELY(c ==
'\r')) {
16976 c = parser_cr(p, c);
16981#define nextc(p) nextc0(p, TRUE)
16986 if (c == -1)
return;
16988 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
16993#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
16995#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
16996#define tok(p) (p)->tokenbuf
16997#define toklen(p) (p)->tokidx
17002 const char *ptr = p->lex.pcur;
17003 while (ptr < p->lex.pend) {
17004 int c = (
unsigned char)*ptr++;
17005 int eol = (c ==
'\n' || c ==
'#');
17017 p->tokline = p->ruby_sourceline;
17018 if (!p->tokenbuf) {
17020 p->tokenbuf =
ALLOC_N(
char, 60);
17022 if (p->toksiz > 4096) {
17026 return p->tokenbuf;
17034 if (p->tokidx >= p->toksiz) {
17035 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
17036 REALLOC_N(p->tokenbuf,
char, p->toksiz);
17038 return &p->tokenbuf[p->tokidx-n];
17044 p->tokenbuf[p->tokidx++] = (char)c;
17045 if (p->tokidx >= p->toksiz) {
17047 REALLOC_N(p->tokenbuf,
char, p->toksiz);
17056 c =
scan_hex(p->lex.pcur, 2, numlen);
17058 yyerror0(
"invalid hex escape");
17062 p->lex.pcur += *numlen;
17066#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
17069escaped_control_code(
int c)
17095#define WARN_SPACE_CHAR(c, prefix) \
17096 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
17100 int regexp_literal,
int wide)
17103 int codepoint =
scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
17104 p->lex.pcur += numlen;
17105 if (p->lex.strterm == NULL ||
17106 (p->lex.strterm->flags & STRTERM_HEREDOC) ||
17107 (p->lex.strterm->u.literal.u1.func != str_regexp)) {
17108 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
17109 literal_flush(p, p->lex.pcur);
17110 yyerror0(
"invalid Unicode escape");
17111 return wide && numlen > 0;
17113 if (codepoint > 0x10ffff) {
17114 literal_flush(p, p->lex.pcur);
17115 yyerror0(
"invalid Unicode codepoint (too large)");
17118 if ((codepoint & 0xfffff800) == 0xd800) {
17119 literal_flush(p, p->lex.pcur);
17120 yyerror0(
"invalid Unicode codepoint");
17124 if (regexp_literal) {
17125 tokcopy(p, (
int)numlen);
17127 else if (codepoint >= 0x80) {
17129 if (*encp && utf8 != *encp) {
17130 YYLTYPE loc = RUBY_INIT_YYLLOC();
17131 compile_error(p,
"UTF-8 mixed within %s source",
rb_enc_name(*encp));
17132 parser_show_error_line(p, &loc);
17136 tokaddmbc(p, codepoint, *encp);
17139 tokadd(p, codepoint);
17149 int len = parser_precise_mbclen(p, p->lex.pcur-1);
17151 p->lex.pcur += len - 1;
17159 int term,
int symbol_literal,
int regexp_literal)
17166 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
17168 const int open_brace =
'{', close_brace =
'}';
17170 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
17172 if (peek(p, open_brace)) {
17173 if (regexp_literal && p->lex.strterm->u.literal.u1.func == str_regexp) {
17180 tokadd(p, open_brace);
17181 while (++p->lex.pcur < p->lex.pend) {
17183 if (c == close_brace) {
17188 else if (c == term) {
17191 if (c ==
'\\' && p->lex.pcur + 1 < p->lex.pend) {
17193 c = *++p->lex.pcur;
17195 tokadd_mbchar(p, c);
17199 const char *second = NULL;
17200 int c, last = nextc(p);
17201 if (p->lex.pcur >= p->lex.pend)
goto unterminated;
17202 while (
ISSPACE(c = *p->lex.pcur) && ++p->lex.pcur < p->lex.pend);
17203 while (c != close_brace) {
17204 if (c == term)
goto unterminated;
17205 if (second == multiple_codepoints)
17206 second = p->lex.pcur;
17207 if (regexp_literal) tokadd(p, last);
17208 if (!tokadd_codepoint(p, encp, regexp_literal, TRUE)) {
17211 while (
ISSPACE(c = *p->lex.pcur)) {
17212 if (++p->lex.pcur >= p->lex.pend)
goto unterminated;
17215 if (term == -1 && !second)
17216 second = multiple_codepoints;
17219 if (c != close_brace) {
17222 yyerror0(
"unterminated Unicode escape");
17225 if (second && second != multiple_codepoints) {
17226 const char *pcur = p->lex.pcur;
17227 p->lex.pcur = second;
17228 dispatch_scan_event(p, tSTRING_CONTENT);
17230 p->lex.pcur = pcur;
17231 yyerror0(multiple_codepoints);
17235 if (regexp_literal) tokadd(p, close_brace);
17240 if (!tokadd_codepoint(p, encp, regexp_literal, FALSE)) {
17247#define ESCAPE_CONTROL 1
17248#define ESCAPE_META 2
17256 switch (c = nextc(p)) {
17281 case '0':
case '1':
case '2':
case '3':
17282 case '4':
case '5':
case '6':
case '7':
17284 c =
scan_oct(p->lex.pcur, 3, &numlen);
17285 p->lex.pcur += numlen;
17289 c = tok_hex(p, &numlen);
17290 if (numlen == 0)
return 0;
17300 if (flags & ESCAPE_META)
goto eof;
17301 if ((c = nextc(p)) !=
'-') {
17304 if ((c = nextc(p)) ==
'\\') {
17305 switch (peekc(p)) {
17306 case 'u':
case 'U':
17310 return read_escape(p, flags|ESCAPE_META, encp) | 0x80;
17312 else if (c == -1)
goto eof;
17318 int c2 = escaped_control_code(c);
17320 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
17321 WARN_SPACE_CHAR(c2,
"\\M-");
17324 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
17327 else if (
ISCNTRL(c))
goto eof;
17328 return ((c & 0xff) | 0x80);
17332 if ((c = nextc(p)) !=
'-') {
17336 if (flags & ESCAPE_CONTROL)
goto eof;
17337 if ((c = nextc(p))==
'\\') {
17338 switch (peekc(p)) {
17339 case 'u':
case 'U':
17343 c = read_escape(p, flags|ESCAPE_CONTROL, encp);
17347 else if (c == -1)
goto eof;
17353 int c2 = escaped_control_code(c);
17356 if (flags & ESCAPE_META) {
17357 WARN_SPACE_CHAR(c2,
"\\M-");
17360 WARN_SPACE_CHAR(c2,
"");
17364 if (flags & ESCAPE_META) {
17365 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
17368 WARN_SPACE_CHAR(c2,
"\\C-");
17372 else if (
ISCNTRL(c))
goto eof;
17378 yyerror0(
"Invalid escape character syntax");
17379 dispatch_scan_event(p, tSTRING_CONTENT);
17390 int len = rb_enc_codelen(c, enc);
17400 switch (c = nextc(p)) {
17404 case '0':
case '1':
case '2':
case '3':
17405 case '4':
case '5':
case '6':
case '7':
17408 if (numlen == 0)
goto eof;
17409 p->lex.pcur += numlen;
17410 tokcopy(p, (
int)numlen + 1);
17416 tok_hex(p, &numlen);
17417 if (numlen == 0)
return -1;
17418 tokcopy(p, (
int)numlen + 2);
17424 yyerror0(
"Invalid escape character syntax");
17444 while (c = nextc(p),
ISALPHA(c)) {
17446 options |= RE_OPTION_ONCE;
17450 if (kc != rb_ascii8bit_encindex()) kcode = c;
17464 YYLTYPE loc = RUBY_INIT_YYLLOC();
17466 compile_error(p,
"unknown regexp option%s - %*s",
17467 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
17468 parser_show_error_line(p, &loc);
17470 return options | RE_OPTION_ENCODING(kcode);
17476 int len = parser_precise_mbclen(p, p->lex.pcur-1);
17477 if (len < 0)
return -1;
17479 p->lex.pcur += --len;
17480 if (len > 0) tokcopy(p, len);
17485simple_re_meta(
int c)
17488 case '$':
case '*':
case '+':
case '.':
17489 case '?':
case '^':
case '|':
17490 case ')':
case ']':
case '}':
case '>':
17498parser_update_heredoc_indent(
struct parser_params *p,
int c)
17500 if (p->heredoc_line_indent == -1) {
17501 if (c ==
'\n') p->heredoc_line_indent = 0;
17505 p->heredoc_line_indent++;
17508 else if (c ==
'\t') {
17509 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
17510 p->heredoc_line_indent = w * TAB_WIDTH;
17513 else if (c !=
'\n') {
17514 if (p->heredoc_indent > p->heredoc_line_indent) {
17515 p->heredoc_indent = p->heredoc_line_indent;
17517 p->heredoc_line_indent = -1;
17526 YYLTYPE loc = RUBY_INIT_YYLLOC();
17528 compile_error(p,
"%s mixed within %s source", n1, n2);
17529 parser_show_error_line(p, &loc);
17535 const char *pos = p->lex.pcur;
17537 parser_mixed_error(p, enc1, enc2);
17543 int func,
int term,
int paren,
long *nest,
17547 bool erred =
false;
17549 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
17550 int top_of_line = FALSE;
17553#define mixed_error(enc1, enc2) \
17554 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
17555#define mixed_escape(beg, enc1, enc2) \
17556 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
17558 while ((c = nextc(p)) != -1) {
17559 if (p->heredoc_indent > 0) {
17560 parser_update_heredoc_indent(p, c);
17563 if (top_of_line && heredoc_end == p->ruby_sourceline) {
17569 if (paren && c == paren) {
17572 else if (c == term) {
17573 if (!nest || !*nest) {
17579 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && p->lex.pcur < p->lex.pend) {
17580 unsigned char c2 = *p->lex.pcur;
17581 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
17586 else if (c ==
'\\') {
17590 if (func & STR_FUNC_QWORDS)
break;
17591 if (func & STR_FUNC_EXPAND) {
17592 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
17603 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
17607 if ((func & STR_FUNC_EXPAND) == 0) {
17611 tokadd_utf8(p, enc, term,
17612 func & STR_FUNC_SYMBOL,
17613 func & STR_FUNC_REGEXP);
17617 if (c == -1)
return -1;
17619 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
17622 if (func & STR_FUNC_REGEXP) {
17628 c = read_escape(p, 0, enc);
17632 snprintf(escbuf,
sizeof(escbuf),
"\\x%02X", c);
17633 for (i = 0; i < 4; i++) {
17634 tokadd(p, escbuf[i]);
17640 if (c == term && !simple_re_meta(c)) {
17645 if ((c = tokadd_escape(p, enc)) < 0)
17647 if (*enc && *enc != *encp) {
17648 mixed_escape(p->lex.ptok+2, *enc, *encp);
17652 else if (func & STR_FUNC_EXPAND) {
17654 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
17655 c = read_escape(p, 0, enc);
17657 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
17660 else if (c != term && !(paren && c == paren)) {
17667 else if (!parser_isascii(p)) {
17672 else if (*enc != *encp) {
17673 mixed_error(*enc, *encp);
17676 if (tokadd_mbchar(p, c) == -1)
return -1;
17679 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
17687 else if (*enc != *encp) {
17688 mixed_error(*enc, *encp);
17694 top_of_line = (c ==
'\n');
17698 if (*enc) *encp = *enc;
17705 return (
rb_strterm_t*)rb_imemo_new(imemo_parser_strterm, v1, v2, v3, v0);
17709#define NEW_STRTERM(func, term, paren) \
17710 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
17716 VALUE content = yylval.val;
17717 if (!ripper_is_node_yylval(content))
17718 content = ripper_new_yylval(p, 0, 0, content);
17719 if (has_delayed_token(p)) {
17720 ptrdiff_t len = p->lex.pcur - p->lex.ptok;
17724 dispatch_delayed_token(p, tSTRING_CONTENT);
17725 p->lex.ptok = p->lex.pcur;
17726 RNODE(content)->nd_rval = yylval.val;
17728 dispatch_scan_event(p, tSTRING_CONTENT);
17729 if (yylval.val != content)
17730 RNODE(content)->nd_rval = yylval.val;
17731 yylval.val = content;
17737 if (has_delayed_token(p)) {
17738 ptrdiff_t len = p->lex.pcur - p->lex.ptok;
17741 p->delayed.end_line = p->ruby_sourceline;
17742 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
17744 dispatch_delayed_token(p, tSTRING_CONTENT);
17745 p->lex.ptok = p->lex.pcur;
17747 dispatch_scan_event(p, tSTRING_CONTENT);
17751RUBY_FUNC_EXPORTED
const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
17755#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
17756#define SPECIAL_PUNCT(idx) ( \
17757 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
17758 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
17759 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
17760 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
17761 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
17763const unsigned int ruby_global_name_punct_bits[] = {
17769#undef SPECIAL_PUNCT
17772static enum yytokentype
17773parser_peek_variable_name(struct parser_params *p)
17776 const char *ptr = p->lex.pcur;
17778 if (ptr + 1 >= p->lex.pend) return 0;
17782 if ((c = *ptr) == '-') {
17783 if (++ptr >= p->lex.pend) return 0;
17786 else if (is_global_name_punct(c) || ISDIGIT(c)) {
17787 return tSTRING_DVAR;
17791 if ((c = *ptr) == '@') {
17792 if (++ptr >= p->lex.pend) return 0;
17798 p->command_start = TRUE;
17799 return tSTRING_DBEG;
17803 if (!ISASCII(c) || c == '_' || ISALPHA(c))
17804 return tSTRING_DVAR;
17808#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
17809#define IS_END() IS_lex_state(EXPR_END_ANY)
17810#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
17811#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
17812#define IS_LABEL_POSSIBLE() (\
17813 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
17815#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
17816#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
17818static inline enum yytokentype
17819parser_string_term(struct parser_params *p, int func)
17821 p->lex.strterm = 0;
17822 if (func & STR_FUNC_REGEXP) {
17823 set_yylval_num(regx_options(p));
17824 dispatch_scan_event(p, tREGEXP_END);
17825 SET_LEX_STATE(EXPR_END);
17826 return tREGEXP_END;
17828 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
17830 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
17833 SET_LEX_STATE(EXPR_END);
17834 return tSTRING_END;
17837static enum yytokentype
17838parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
17840 int func = (int)quote->u1.func;
17841 int term = (int)quote->u3.term;
17842 int paren = (int)quote->u2.paren;
17844 rb_encoding *enc = p->enc;
17845 rb_encoding *base_enc = 0;
17848 if (func & STR_FUNC_TERM) {
17849 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
17850 SET_LEX_STATE(EXPR_END);
17851 p->lex.strterm = 0;
17852 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
17855 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
17856 do {c = nextc(p);} while (ISSPACE(c));
17859 if (func & STR_FUNC_LIST) {
17860 quote->u1.func &= ~STR_FUNC_LIST;
17863 if (c == term && !quote->u0.nest) {
17864 if (func & STR_FUNC_QWORDS) {
17865 quote->u1.func |= STR_FUNC_TERM;
17866 pushback(p, c); /* dispatch the term at tSTRING_END */
17867 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
17870 return parser_string_term(p, func);
17874 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
17878 if ((func & STR_FUNC_EXPAND) && c == '#') {
17879 int t = parser_peek_variable_name(p);
17885 if (tokadd_string(p, func, term, paren, "e->u0.nest,
17886 &enc, &base_enc) == -1) {
17889# define unterminated_literal(mesg) yyerror0(mesg)
17891# define unterminated_literal(mesg) compile_error(p, mesg)
17893 literal_flush(p, p->lex.pcur);
17894 if (func & STR_FUNC_QWORDS) {
17895 /* no content to add, bailing out here */
17896 unterminated_literal("unterminated list meets end of file");
17897 p->lex.strterm = 0;
17898 return tSTRING_END;
17900 if (func & STR_FUNC_REGEXP) {
17901 unterminated_literal("unterminated regexp meets end of file");
17904 unterminated_literal("unterminated string meets end of file");
17906 quote->u1.func |= STR_FUNC_TERM;
17911 lit = STR_NEW3(tok(p), toklen(p), enc, func);
17912 set_yylval_str(lit);
17913 flush_string_content(p, enc);
17915 return tSTRING_CONTENT;
17918static enum yytokentype
17919heredoc_identifier(struct parser_params *p)
17922 * term_len is length of `<<"END"` except `END`,
17923 * in this case term_len is 4 (<, <, " and ").
17925 long len, offset = p->lex.pcur - p->lex.pbeg;
17926 int c = nextc(p), term, func = 0, quote = 0;
17927 enum yytokentype token = tSTRING_BEG;
17932 func = STR_FUNC_INDENT;
17935 else if (c == '~') {
17937 func = STR_FUNC_INDENT;
17943 func |= str_squote; goto quoted;
17945 func |= str_dquote;
goto quoted;
17947 token = tXSTRING_BEG;
17948 func |= str_xquote;
goto quoted;
17955 while ((c = nextc(p)) != term) {
17956 if (c == -1 || c ==
'\r' || c ==
'\n') {
17957 yyerror0(
"unterminated here document identifier");
17964 if (!parser_is_identchar(p)) {
17966 if (func & STR_FUNC_INDENT) {
17967 pushback(p, indent > 0 ?
'~' :
'-');
17971 func |= str_dquote;
17973 int n = parser_precise_mbclen(p, p->lex.pcur-1);
17974 if (n < 0)
return 0;
17975 p->lex.pcur += --n;
17976 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
17981 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
17982 if ((
unsigned long)len >= HERETERM_LENGTH_MAX)
17983 yyerror0(
"too long here document identifier");
17984 dispatch_scan_event(p, tHEREDOC_BEG);
17987 p->lex.strterm = new_strterm(0, 0, 0, p->lex.lastline);
17988 p->lex.strterm->flags |= STRTERM_HEREDOC;
17990 here->offset = offset;
17991 here->sourceline = p->ruby_sourceline;
17992 here->length = (int)len;
17993 here->quote = quote;
17997 p->heredoc_indent = indent;
17998 p->heredoc_line_indent = 0;
18007 p->lex.strterm = 0;
18008 line = here->lastline;
18009 p->lex.lastline = line;
18012 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
18013 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
18014 p->heredoc_end = p->ruby_sourceline;
18015 p->ruby_sourceline = (int)here->sourceline;
18016 if (p->eofp) p->lex.nextline =
Qnil;
18021dedent_string(
VALUE string,
int width)
18028 for (i = 0; i < len && col < width; i++) {
18029 if (str[i] ==
' ') {
18032 else if (str[i] ==
'\t') {
18033 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
18034 if (n > width)
break;
18045 rb_fatal(
"literal string changed: %+"PRIsVALUE,
string);
18046 MEMMOVE(str, str + i,
char, len - i);
18055 NODE *node, *str_node, *prev_node;
18056 int indent = p->heredoc_indent;
18057 VALUE prev_lit = 0;
18059 if (indent <= 0)
return root;
18060 p->heredoc_indent = 0;
18061 if (!root)
return root;
18063 prev_node = node = str_node = root;
18064 if (nd_type_p(root, NODE_LIST)) str_node = root->nd_head;
18067 VALUE lit = str_node->nd_lit;
18068 if (str_node->flags & NODE_FL_NEWLINE) {
18069 dedent_string(lit, indent);
18074 else if (!literal_concat0(p, prev_lit, lit)) {
18078 NODE *end = node->nd_end;
18079 node = prev_node->nd_next = node->nd_next;
18081 if (nd_type_p(prev_node, NODE_DSTR))
18082 nd_set_type(prev_node, NODE_STR);
18085 node->nd_end = end;
18090 while ((node = (prev_node = node)->nd_next) != 0) {
18092 if (!nd_type_p(node, NODE_LIST))
break;
18093 if ((str_node = node->nd_head) != 0) {
18094 enum node_type
type = nd_type(str_node);
18095 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
18107 int indent = p->heredoc_indent;
18109 if (indent <= 0)
return array;
18110 p->heredoc_indent = 0;
18111 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
18131 col = dedent_string(input, wid);
18137whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
18139 const char *ptr = p->lex.pbeg;
18143 while (*ptr &&
ISSPACE(*ptr)) ptr++;
18145 n = p->lex.pend - (ptr + len);
18146 if (n < 0)
return FALSE;
18147 if (n > 0 && ptr[len] !=
'\n') {
18148 if (ptr[len] !=
'\r')
return FALSE;
18149 if (n <= 1 || ptr[len+1] !=
'\n')
return FALSE;
18151 return strncmp(eos, ptr, len) == 0;
18155word_match_p(
struct parser_params *p,
const char *word,
long len)
18157 if (strncmp(p->lex.pcur, word, len))
return 0;
18158 if (p->lex.pcur + len == p->lex.pend)
return 1;
18159 int c = (
unsigned char)p->lex.pcur[len];
18162 case '\0':
case '\004':
case '\032':
return 1;
18167#define NUM_SUFFIX_R (1<<0)
18168#define NUM_SUFFIX_I (1<<1)
18169#define NUM_SUFFIX_ALL 3
18175 const char *lastp = p->lex.pcur;
18177 while ((c = nextc(p)) != -1) {
18178 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
18179 result |= (mask & NUM_SUFFIX_I);
18180 mask &= ~NUM_SUFFIX_I;
18182 mask &= ~NUM_SUFFIX_R;
18185 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
18186 result |= (mask & NUM_SUFFIX_R);
18187 mask &= ~NUM_SUFFIX_R;
18191 p->lex.pcur = lastp;
18192 literal_flush(p, p->lex.pcur);
18201static enum yytokentype
18203 enum yytokentype
type,
int suffix)
18205 if (suffix & NUM_SUFFIX_I) {
18206 v = rb_complex_raw(
INT2FIX(0), v);
18209 set_yylval_literal(v);
18210 SET_LEX_STATE(EXPR_END);
18214static enum yytokentype
18217 enum yytokentype
type = tINTEGER;
18218 if (suffix & NUM_SUFFIX_R) {
18222 return set_number_literal(p, v,
type, suffix);
18230 if (has_delayed_token(p))
18231 dispatch_delayed_token(p, tSTRING_CONTENT);
18232 str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
18233 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
18234 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
18240#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
18242parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
18244 if (has_delayed_token(p))
18245 dispatch_delayed_token(p, tSTRING_CONTENT);
18247 if (p->keep_tokens) {
18248 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
18249 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
18250 parser_append_tokens(p, str, tHEREDOC_END, line);
18253 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
18259static enum yytokentype
18262 int c, func, indent = 0;
18263 const char *eos, *ptr, *ptr_end;
18270 eos =
RSTRING_PTR(here->lastline) + here->offset;
18271 len = here->length;
18272 indent = (func = here->func) & STR_FUNC_INDENT;
18274 if ((c = nextc(p)) == -1) {
18277 if (!has_delayed_token(p)) {
18278 dispatch_scan_event(p, tSTRING_CONTENT);
18281 if ((len = p->lex.pcur - p->lex.ptok) > 0) {
18286 rb_is_usascii_enc(p->enc) &&
18287 enc != rb_utf8_encoding()) {
18288 enc = rb_ascii8bit_encoding();
18293 dispatch_delayed_token(p, tSTRING_CONTENT);
18297 heredoc_restore(p, &p->lex.strterm->u.heredoc);
18298 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
18301 p->lex.strterm = 0;
18302 SET_LEX_STATE(EXPR_END);
18303 return tSTRING_END;
18309 else if (p->heredoc_line_indent == -1) {
18314 p->heredoc_line_indent = 0;
18316 else if (whole_match_p(p, eos, len, indent)) {
18317 dispatch_heredoc_end(p);
18319 heredoc_restore(p, &p->lex.strterm->u.heredoc);
18321 p->lex.strterm = 0;
18322 SET_LEX_STATE(EXPR_END);
18323 return tSTRING_END;
18326 if (!(func & STR_FUNC_EXPAND)) {
18329 ptr_end = p->lex.pend;
18330 if (ptr_end > ptr) {
18331 switch (ptr_end[-1]) {
18333 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
18342 if (p->heredoc_indent > 0) {
18344 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
18346 p->heredoc_line_indent = 0;
18352 str = STR_NEW(ptr, ptr_end - ptr);
18353 if (ptr_end < p->lex.pend)
rb_str_cat(str,
"\n", 1);
18355 if (p->heredoc_indent > 0) {
18358 if (nextc(p) == -1) {
18364 }
while (!whole_match_p(p, eos, len, indent));
18370 int t = parser_peek_variable_name(p);
18371 if (p->heredoc_line_indent != -1) {
18372 if (p->heredoc_indent > p->heredoc_line_indent) {
18373 p->heredoc_indent = p->heredoc_line_indent;
18375 p->heredoc_line_indent = -1;
18384 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
18385 if (p->eofp)
goto error;
18389 if (c ==
'\\') p->heredoc_line_indent = -1;
18391 str = STR_NEW3(tok(p), toklen(p), enc, func);
18393 set_yylval_str(str);
18395 if (bol) yylval.node->flags |= NODE_FL_NEWLINE;
18397 flush_string_content(p, enc);
18398 return tSTRING_CONTENT;
18400 tokadd(p, nextc(p));
18401 if (p->heredoc_indent > 0) {
18406 if ((c = nextc(p)) == -1)
goto error;
18407 }
while (!whole_match_p(p, eos, len, indent));
18408 str = STR_NEW3(tok(p), toklen(p), enc, func);
18410 dispatch_heredoc_end(p);
18412 str = ripper_new_yylval(p, ripper_token2eventid(tSTRING_CONTENT),
18415 heredoc_restore(p, &p->lex.strterm->u.heredoc);
18417 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
18418 set_yylval_str(str);
18420 if (bol) yylval.node->flags |= NODE_FL_NEWLINE;
18422 return tSTRING_CONTENT;
18432 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `%c' operator", WARN_I(c));
18435 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator", WARN_I(c));
18450 ID id = get_id(lhs);
18452 switch (id_type(
id)) {
18456# define ERR(mesg) yyerror0(mesg)
18458# define ERR(mesg) (dispatch2(param_error, WARN_S(mesg), lhs), ripper_error(p))
18461 ERR(
"formal argument cannot be a constant");
18464 ERR(
"formal argument cannot be an instance variable");
18467 ERR(
"formal argument cannot be a global variable");
18470 ERR(
"formal argument cannot be a class variable");
18473 ERR(
"formal argument must be local variable");
18477 shadowing_lvar(p,
id);
18484 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
18489parser_encode_length(
struct parser_params *p,
const char *name,
long len)
18493 if (len > 5 && name[nlen = len - 5] ==
'-') {
18494 if (
rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
18497 if (len > 4 && name[nlen = len - 4] ==
'-') {
18500 if (
rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
18501 !(len == 8 &&
rb_memcicmp(name,
"utf8-mac", len) == 0))
18509parser_set_encode(
struct parser_params *p,
const char *name)
18511 int idx = rb_enc_find_index(name);
18516 excargs[1] =
rb_sprintf(
"unknown encoding name: %s", name);
18520 rb_ary_unshift(excargs[2],
rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
18523 enc = rb_enc_from_index(idx);
18530 if (p->debug_lines) {
18531 VALUE lines = p->debug_lines;
18533 for (i = 0; i < n; ++i) {
18534 rb_enc_associate_index(
RARRAY_AREF(lines, i), idx);
18543 const char *ptr = p->lex.pbeg, *ptr_end = p->lex.pcur - 1;
18544 if (p->line_count != (p->has_shebang ? 2 : 1))
return 0;
18545 while (ptr < ptr_end) {
18546 if (!
ISSPACE(*ptr))
return 0;
18552typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
18553typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
18555static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
18558magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
18560 if (!comment_at_top(p)) {
18563 parser_set_encode(p, val);
18567parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
18570 case 't':
case 'T':
18575 case 'f':
case 'F':
18581 return parser_invalid_pragma_value(p, name, val);
18585parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
18587 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
18592parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
18594 int b = parser_get_bool(p, name, val);
18595 if (b >= 0) p->token_info_enabled = b;
18599parser_set_compile_option_flag(
struct parser_params *p,
const char *name,
const char *val)
18603 if (p->token_seen) {
18604 rb_warning1(
"`%s' is ignored after any tokens", WARN_S(name));
18608 b = parser_get_bool(p, name, val);
18611 if (!p->compile_option)
18612 p->compile_option =
rb_obj_hide(rb_ident_hash_new());
18618parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
18620 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
18621 if (*s ==
' ' || *s ==
'\t')
continue;
18622 if (*s ==
'#')
break;
18623 rb_warning1(
"`%s' is ignored unless in comment-only line", WARN_S(name));
18628 case 'n':
case 'N':
18630 p->ctxt.shareable_constant_value = shareable_none;
18634 case 'l':
case 'L':
18636 p->ctxt.shareable_constant_value = shareable_literal;
18640 case 'e':
case 'E':
18641 if (
STRCASECMP(val,
"experimental_copy") == 0) {
18642 p->ctxt.shareable_constant_value = shareable_copy;
18645 if (
STRCASECMP(val,
"experimental_everything") == 0) {
18646 p->ctxt.shareable_constant_value = shareable_everything;
18651 parser_invalid_pragma_value(p, name, val);
18654# if WARN_PAST_SCOPE
18656parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
18658 int b = parser_get_bool(p, name, val);
18659 if (b >= 0) p->past_scope_enabled = b;
18665 rb_magic_comment_setter_t func;
18666 rb_magic_comment_length_t length;
18670 {
"coding", magic_comment_encoding, parser_encode_length},
18671 {
"encoding", magic_comment_encoding, parser_encode_length},
18672 {
"frozen_string_literal", parser_set_compile_option_flag},
18673 {
"shareable_constant_value", parser_set_shareable_constant_value},
18674 {
"warn_indent", parser_set_token_info},
18675# if WARN_PAST_SCOPE
18676 {
"warn_past_scope", parser_set_past_scope},
18681magic_comment_marker(
const char *str,
long len)
18688 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
18689 return str + i + 1;
18694 if (i + 1 >= len)
return 0;
18695 if (str[i+1] !=
'-') {
18698 else if (str[i-1] !=
'-') {
18702 return str + i + 2;
18714parser_magic_comment(
struct parser_params *p,
const char *str,
long len)
18717 VALUE name = 0, val = 0;
18718 const char *beg, *end, *vbeg, *vend;
18719#define str_copy(_s, _p, _n) ((_s) \
18720 ? (void)(rb_str_resize((_s), (_n)), \
18721 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
18722 : (void)((_s) = STR_NEW((_p), (_n))))
18724 if (len <= 7)
return FALSE;
18725 if (!!(beg = magic_comment_marker(str, len))) {
18726 if (!(end = magic_comment_marker(beg, str + len - beg)))
18730 len = end - beg - 3;
18740 for (; len > 0 && *str; str++, --len) {
18742 case '\'':
case '"':
case ':':
case ';':
18747 for (beg = str; len > 0; str++, --len) {
18749 case '\'':
case '"':
case ':':
case ';':
18757 for (end = str; len > 0 &&
ISSPACE(*str); str++, --len);
18760 if (!indicator)
return FALSE;
18764 do str++;
while (--len > 0 &&
ISSPACE(*str));
18767 for (vbeg = ++str; --len > 0 && *str !=
'"'; str++) {
18768 if (*str ==
'\\') {
18780 for (vbeg = str; len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --len, str++);
18784 while (len > 0 && (*str ==
';' ||
ISSPACE(*str))) --len, str++;
18787 while (len > 0 && (
ISSPACE(*str))) --len, str++;
18788 if (len)
return FALSE;
18792 str_copy(name, beg, n);
18794 for (i = 0; i < n; ++i) {
18795 if (s[i] ==
'-') s[i] =
'_';
18798 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
18801 n = (*mc->length)(p, vbeg, n);
18803 str_copy(val, vbeg, n);
18807 }
while (++mc < magic_comments + numberof(magic_comments));
18809 str_copy(val, vbeg, vend - vbeg);
18818set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
18821 const char *beg = str;
18825 if (send - str <= 6)
return;
18827 case 'C':
case 'c': str += 6;
continue;
18828 case 'O':
case 'o': str += 5;
continue;
18829 case 'D':
case 'd': str += 4;
continue;
18830 case 'I':
case 'i': str += 3;
continue;
18831 case 'N':
case 'n': str += 2;
continue;
18832 case 'G':
case 'g': str += 1;
continue;
18833 case '=':
case ':':
18847 if (++str >= send)
return;
18850 if (*str !=
'=' && *str !=
':')
return;
18855 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
18856 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
18864 int c = nextc0(p, FALSE);
18868 if (peek(p,
'!')) p->has_shebang = 1;
18871 if (p->lex.pend - p->lex.pcur >= 2 &&
18872 (
unsigned char)p->lex.pcur[0] == 0xbb &&
18873 (
unsigned char)p->lex.pcur[1] == 0xbf) {
18874 p->enc = rb_utf8_encoding();
18877 if (p->debug_lines) {
18878 rb_enc_associate(p->lex.lastline, p->enc);
18881 p->lex.pbeg = p->lex.pcur;
18889 p->enc = rb_enc_get(p->lex.lastline);
18893#define ambiguous_operator(tok, op, syn) ( \
18894 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
18895 rb_warning0("even though it seems like "syn""))
18897#define ambiguous_operator(tok, op, syn) \
18898 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
18900#define warn_balanced(tok, op, syn) ((void) \
18901 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
18902 space_seen && !ISSPACE(c) && \
18903 (ambiguous_operator(tok, op, syn), 0)), \
18904 (enum yytokentype)(tok))
18907parse_rational(
struct parser_params *p,
char *str,
int len,
int seen_point)
18910 char *point = &str[seen_point];
18911 size_t fraclen = len-seen_point-1;
18912 memmove(point, point+1, fraclen+1);
18913 v = rb_cstr_to_inum(str, 10, FALSE);
18917static enum yytokentype
18920 yyerror0(
"numeric literal without digits");
18921 if (peek(p,
'_')) nextc(p);
18923 return set_integer_literal(p,
INT2FIX(0), 0);
18926static enum yytokentype
18929 int is_float, seen_point, seen_e, nondigit;
18932 is_float = seen_point = seen_e = nondigit = 0;
18933 SET_LEX_STATE(EXPR_END);
18935 if (c ==
'-' || c ==
'+') {
18940 int start = toklen(p);
18942 if (c ==
'x' || c ==
'X') {
18948 if (nondigit)
break;
18955 }
while ((c = nextc(p)) != -1);
18959 if (toklen(p) == start) {
18960 return no_digits(p);
18962 else if (nondigit)
goto trailing_uc;
18963 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
18964 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 16, FALSE), suffix);
18966 if (c ==
'b' || c ==
'B') {
18969 if (c ==
'0' || c ==
'1') {
18972 if (nondigit)
break;
18976 if (c !=
'0' && c !=
'1')
break;
18979 }
while ((c = nextc(p)) != -1);
18983 if (toklen(p) == start) {
18984 return no_digits(p);
18986 else if (nondigit)
goto trailing_uc;
18987 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
18988 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 2, FALSE), suffix);
18990 if (c ==
'd' || c ==
'D') {
18996 if (nondigit)
break;
19003 }
while ((c = nextc(p)) != -1);
19007 if (toklen(p) == start) {
19008 return no_digits(p);
19010 else if (nondigit)
goto trailing_uc;
19011 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19012 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
19018 if (c ==
'o' || c ==
'O') {
19021 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
19022 return no_digits(p);
19025 if (c >=
'0' && c <=
'7') {
19030 if (nondigit)
break;
19034 if (c <
'0' || c >
'9')
break;
19035 if (c >
'7')
goto invalid_octal;
19038 }
while ((c = nextc(p)) != -1);
19039 if (toklen(p) > start) {
19042 if (nondigit)
goto trailing_uc;
19043 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19044 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 8, FALSE), suffix);
19051 if (c >
'7' && c <=
'9') {
19053 yyerror0(
"Invalid octal digit");
19055 else if (c ==
'.' || c ==
'e' || c ==
'E') {
19060 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19061 return set_integer_literal(p,
INT2FIX(0), suffix);
19067 case '0':
case '1':
case '2':
case '3':
case '4':
19068 case '5':
case '6':
case '7':
case '8':
case '9':
19074 if (nondigit)
goto trailing_uc;
19075 if (seen_point || seen_e) {
19080 if (c0 == -1 || !
ISDIGIT(c0)) {
19086 seen_point = toklen(p);
19105 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
19110 tokadd(p, nondigit);
19114 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
19118 if (nondigit)
goto decode_num;
19132 literal_flush(p, p->lex.pcur - 1);
19133 YYLTYPE loc = RUBY_INIT_YYLLOC();
19134 compile_error(p,
"trailing `%c' in number", nondigit);
19135 parser_show_error_line(p, &loc);
19139 enum yytokentype
type = tFLOAT;
19142 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
19143 if (suffix & NUM_SUFFIX_R) {
19145 v = parse_rational(p, tok(p), toklen(p), seen_point);
19148 double d =
strtod(tok(p), 0);
19149 if (errno == ERANGE) {
19150 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
19155 return set_number_literal(p, v,
type, suffix);
19157 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19158 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
19161static enum yytokentype
19169 SET_LEX_STATE(EXPR_VALUE);
19174 compile_error(p,
"incomplete character syntax");
19179 int c2 = escaped_control_code(c);
19181 WARN_SPACE_CHAR(c2,
"?");
19186 SET_LEX_STATE(EXPR_VALUE);
19191 if (!parser_isascii(p)) {
19192 if (tokadd_mbchar(p, c) == -1)
return 0;
19195 p->lex.pcur < p->lex.pend && is_identchar(p->lex.pcur, p->lex.pend, p->enc)) {
19197 const char *start = p->lex.pcur - 1, *ptr = start;
19199 int n = parser_precise_mbclen(p, ptr);
19200 if (n < 0)
return -1;
19202 }
while (ptr < p->lex.pend && is_identchar(ptr, p->lex.pend, p->enc));
19203 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
19204 " a conditional operator, put a space after `?'",
19205 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
19209 else if (c ==
'\\') {
19210 if (peek(p,
'u')) {
19212 enc = rb_utf8_encoding();
19213 tokadd_utf8(p, &enc, -1, 0, 0);
19215 else if (!
ISASCII(c = peekc(p))) {
19217 if (tokadd_mbchar(p, c) == -1)
return 0;
19220 c = read_escape(p, 0, &enc);
19228 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
19229 set_yylval_str(lit);
19230 SET_LEX_STATE(EXPR_END);
19234static enum yytokentype
19235parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
19238 const char *ptok = p->lex.pcur;
19246 if (c == -1)
goto unterminated;
19249 if (!
ISASCII(c))
goto unknown;
19257 c = parser_precise_mbclen(p, p->lex.pcur);
19258 if (c < 0)
return 0;
19260 yyerror0(
"unknown type of %string");
19266 compile_error(p,
"unterminated quoted string meets end of file");
19270 if (term ==
'(') term =
')';
19271 else if (term ==
'[') term =
']';
19272 else if (term ==
'{') term =
'}';
19273 else if (term ==
'<') term =
'>';
19276 p->lex.ptok = ptok-1;
19279 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
19280 return tSTRING_BEG;
19283 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
19284 return tSTRING_BEG;
19287 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
19291 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
19292 return tQWORDS_BEG;
19295 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
19296 return tSYMBOLS_BEG;
19299 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
19300 return tQSYMBOLS_BEG;
19303 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
19304 return tXSTRING_BEG;
19307 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
19308 return tREGEXP_BEG;
19311 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
19312 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
19316 yyerror0(
"unknown type of %string");
19320 if ((c = nextc(p)) ==
'=') {
19321 set_yylval_id(
'%');
19322 SET_LEX_STATE(EXPR_BEG);
19325 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
19328 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
19330 return warn_balanced(
'%',
"%%",
"string literal");
19337 if (tokadd_mbchar(p, c) == -1)
return -1;
19339 }
while (parser_is_identchar(p));
19345tokenize_ident(
struct parser_params *p,
const enum lex_state_e last_state)
19347 ID ident = TOK_INTERN();
19349 set_yylval_name(ident);
19359 unsigned long n =
ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &len, &overflow);
19360 const unsigned long nth_ref_max =
19365 if (overflow || n > nth_ref_max) {
19367 rb_warn1(
"`%s' is too big for a number variable, always nil", WARN_S(tok(p)));
19375static enum yytokentype
19376parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
19378 const char *ptr = p->lex.pcur;
19381 SET_LEX_STATE(EXPR_END);
19382 p->lex.ptok = ptr - 1;
19388 if (parser_is_identchar(p)) {
19420 if (parser_is_identchar(p)) {
19421 if (tokadd_mbchar(p, c) == -1)
return 0;
19429 set_yylval_name(TOK_INTERN());
19436 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
19441 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
19444 case '1':
case '2':
case '3':
19445 case '4':
case '5':
case '6':
19446 case '7':
case '8':
case '9':
19451 }
while (c != -1 &&
ISDIGIT(c));
19453 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
19455 c = parse_numvar(p);
19456 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
19460 if (!parser_is_identchar(p)) {
19461 YYLTYPE loc = RUBY_INIT_YYLLOC();
19463 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
19467 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
19469 parser_show_error_line(p, &loc);
19470 set_yylval_noname();
19478 if (tokadd_ident(p, c))
return 0;
19479 SET_LEX_STATE(EXPR_END);
19480 tokenize_ident(p, last_state);
19488 if (n < 0)
return false;
19490 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
19493 if (p->max_numparam == ORDINAL_PARAM) {
19494 compile_error(p,
"ordinary parameter is defined");
19497 struct vtable *args = p->lvtbl->args;
19498 if (p->max_numparam < n) {
19499 p->max_numparam = n;
19501 while (n > args->pos) {
19502 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
19508static enum yytokentype
19509parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
19511 const char *ptr = p->lex.pcur;
19512 enum yytokentype result = tIVAR;
19513 register int c = nextc(p);
19516 p->lex.ptok = ptr - 1;
19524 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
19525 if (c == -1 || !parser_is_identchar(p)) {
19527 RUBY_SET_YYLLOC(loc);
19528 if (result == tIVAR) {
19529 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
19532 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
19534 parser_show_error_line(p, &loc);
19535 set_yylval_noname();
19536 SET_LEX_STATE(EXPR_END);
19541 RUBY_SET_YYLLOC(loc);
19542 if (result == tIVAR) {
19543 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
19546 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
19548 parser_show_error_line(p, &loc);
19549 set_yylval_noname();
19550 SET_LEX_STATE(EXPR_END);
19554 if (tokadd_ident(p, c))
return 0;
19555 tokenize_ident(p, last_state);
19559static enum yytokentype
19562 enum yytokentype result;
19564 const enum lex_state_e last_state = p->lex.state;
19566 int enforce_keyword_end = 0;
19570 if (tokadd_mbchar(p, c) == -1)
return 0;
19572 }
while (parser_is_identchar(p));
19573 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
19577 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
19578 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
19579 result = tIDENTIFIER;
19583 result = tCONSTANT;
19588 if (IS_LABEL_POSSIBLE()) {
19589 if (IS_LABEL_SUFFIX(0)) {
19590 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
19592 set_yylval_name(TOK_INTERN());
19598 if (!
NIL_P(peek_end_expect_token_locations(p))) {
19600 int lineno, column;
19601 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
19603 end_loc = peek_end_expect_token_locations(p);
19604 lineno =
NUM2INT(rb_ary_entry(end_loc, 0));
19605 column =
NUM2INT(rb_ary_entry(end_loc, 1));
19608 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
19609 p->ruby_sourceline, beg_pos, lineno, column);
19612 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
19615 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
19616 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
19617 enforce_keyword_end = 1;
19627 kw = rb_reserved_word(tok(p), toklen(p));
19629 enum lex_state_e state = p->lex.state;
19630 if (IS_lex_state_for(state, EXPR_FNAME)) {
19631 SET_LEX_STATE(EXPR_ENDFN);
19632 set_yylval_name(
rb_intern2(tok(p), toklen(p)));
19635 SET_LEX_STATE(kw->state);
19636 if (IS_lex_state(EXPR_BEG)) {
19637 p->command_start = TRUE;
19639 if (kw->id[0] == keyword_do) {
19640 if (lambda_beginning_p()) {
19641 p->lex.lpar_beg = -1;
19642 return keyword_do_LAMBDA;
19644 if (COND_P())
return keyword_do_cond;
19645 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
19646 return keyword_do_block;
19649 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
19652 if (kw->id[0] != kw->id[1])
19653 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
19659 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
19661 SET_LEX_STATE(EXPR_CMDARG);
19664 SET_LEX_STATE(EXPR_ARG);
19667 else if (p->lex.state == EXPR_FNAME) {
19668 SET_LEX_STATE(EXPR_ENDFN);
19671 SET_LEX_STATE(EXPR_END);
19674 ident = tokenize_ident(p, last_state);
19675 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
19676 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
19677 (result == tIDENTIFIER) &&
19678 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
19679 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
19690 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
19694static enum yytokentype
19698 int space_seen = 0;
19701 enum lex_state_e last_state;
19702 int fallthru = FALSE;
19703 int token_seen = p->token_seen;
19705 if (p->lex.strterm) {
19706 if (p->lex.strterm->flags & STRTERM_HEREDOC) {
19708 return here_document(p, &p->lex.strterm->u.heredoc);
19712 return parse_string(p, &p->lex.strterm->u.literal);
19715 cmd_state = p->command_start;
19716 p->command_start = FALSE;
19717 p->token_seen = TRUE;
19722 last_state = p->lex.state;
19723 switch (c = nextc(p)) {
19730 if (!
NIL_P(p->end_expect_token_locations) &&
RARRAY_LEN(p->end_expect_token_locations) > 0) {
19731 pop_end_expect_token_locations(p);
19732 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
19737 RUBY_SET_YYLLOC(*p->yylloc);
19744 case ' ':
case '\t':
case '\f':
19747 while ((c = nextc(p))) {
19752 case ' ':
case '\t':
case '\f':
19761 dispatch_scan_event(p, tSP);
19768 p->token_seen = token_seen;
19770 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
19771 if (comment_at_top(p)) {
19772 set_file_encoding(p, p->lex.pcur, p->lex.pend);
19776 dispatch_scan_event(p, tCOMMENT);
19780 p->token_seen = token_seen;
19781 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
19782 !IS_lex_state(EXPR_LABELED));
19783 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
19785 dispatch_scan_event(p, tIGNORED_NL);
19788 if (!c && p->ctxt.in_kwarg) {
19789 goto normal_newline;
19794 switch (c = nextc(p)) {
19795 case ' ':
case '\t':
case '\f':
case '\r':
19802 dispatch_scan_event(p, tSP);
19808 dispatch_delayed_token(p, tIGNORED_NL);
19809 if (peek(p,
'.') == (c ==
'&')) {
19811 dispatch_scan_event(p, tSP);
19816 p->ruby_sourceline--;
19817 p->lex.nextline = p->lex.lastline;
19821 p->lex.ptok = p->lex.pcur;
19823 goto normal_newline;
19827 p->command_start = TRUE;
19828 SET_LEX_STATE(EXPR_BEG);
19832 if ((c = nextc(p)) ==
'*') {
19833 if ((c = nextc(p)) ==
'=') {
19834 set_yylval_id(idPow);
19835 SET_LEX_STATE(EXPR_BEG);
19839 if (IS_SPCARG(c)) {
19840 rb_warning0(
"`**' interpreted as argument prefix");
19843 else if (IS_BEG()) {
19847 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
19852 set_yylval_id(
'*');
19853 SET_LEX_STATE(EXPR_BEG);
19857 if (IS_SPCARG(c)) {
19858 rb_warning0(
"`*' interpreted as argument prefix");
19861 else if (IS_BEG()) {
19865 c = warn_balanced(
'*',
"*",
"argument prefix");
19868 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
19873 if (IS_AFTER_OPERATOR()) {
19874 SET_LEX_STATE(EXPR_ARG);
19880 SET_LEX_STATE(EXPR_BEG);
19894 if (word_match_p(p,
"begin", 5)) {
19895 int first_p = TRUE;
19898 dispatch_scan_event(p, tEMBDOC_BEG);
19902 dispatch_scan_event(p, tEMBDOC);
19907 compile_error(p,
"embedded document meets end of file");
19910 if (c ==
'=' && word_match_p(p,
"end", 3)) {
19916 dispatch_scan_event(p, tEMBDOC_END);
19921 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
19922 if ((c = nextc(p)) ==
'=') {
19923 if ((c = nextc(p)) ==
'=') {
19932 else if (c ==
'>') {
19941 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
19943 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
19944 int token = heredoc_identifier(p);
19945 if (token)
return token < 0 ? 0 : token;
19947 if (IS_AFTER_OPERATOR()) {
19948 SET_LEX_STATE(EXPR_ARG);
19951 if (IS_lex_state(EXPR_CLASS))
19952 p->command_start = TRUE;
19953 SET_LEX_STATE(EXPR_BEG);
19956 if ((c = nextc(p)) ==
'>') {
19963 if ((c = nextc(p)) ==
'=') {
19964 set_yylval_id(idLTLT);
19965 SET_LEX_STATE(EXPR_BEG);
19969 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
19975 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
19976 if ((c = nextc(p)) ==
'=') {
19980 if ((c = nextc(p)) ==
'=') {
19981 set_yylval_id(idGTGT);
19982 SET_LEX_STATE(EXPR_BEG);
19992 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
19993 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
19994 p->lex.ptok = p->lex.pcur-1;
19995 return tSTRING_BEG;
19998 if (IS_lex_state(EXPR_FNAME)) {
19999 SET_LEX_STATE(EXPR_ENDFN);
20002 if (IS_lex_state(EXPR_DOT)) {
20004 SET_LEX_STATE(EXPR_CMDARG);
20006 SET_LEX_STATE(EXPR_ARG);
20009 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
20010 return tXSTRING_BEG;
20013 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
20014 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
20015 p->lex.ptok = p->lex.pcur-1;
20016 return tSTRING_BEG;
20019 return parse_qmark(p, space_seen);
20022 if ((c = nextc(p)) ==
'&') {
20023 SET_LEX_STATE(EXPR_BEG);
20024 if ((c = nextc(p)) ==
'=') {
20025 set_yylval_id(idANDOP);
20026 SET_LEX_STATE(EXPR_BEG);
20032 else if (c ==
'=') {
20033 set_yylval_id(
'&');
20034 SET_LEX_STATE(EXPR_BEG);
20037 else if (c ==
'.') {
20038 set_yylval_id(idANDDOT);
20039 SET_LEX_STATE(EXPR_DOT);
20043 if (IS_SPCARG(c)) {
20045 (c = peekc_n(p, 1)) == -1 ||
20046 !(c ==
'\'' || c ==
'"' ||
20047 is_identchar((p->lex.pcur+1), p->lex.pend, p->enc))) {
20048 rb_warning0(
"`&' interpreted as argument prefix");
20052 else if (IS_BEG()) {
20056 c = warn_balanced(
'&',
"&",
"argument prefix");
20058 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20062 if ((c = nextc(p)) ==
'|') {
20063 SET_LEX_STATE(EXPR_BEG);
20064 if ((c = nextc(p)) ==
'=') {
20065 set_yylval_id(idOROP);
20066 SET_LEX_STATE(EXPR_BEG);
20070 if (IS_lex_state_for(last_state, EXPR_BEG)) {
20078 set_yylval_id(
'|');
20079 SET_LEX_STATE(EXPR_BEG);
20082 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
20088 if (IS_AFTER_OPERATOR()) {
20089 SET_LEX_STATE(EXPR_ARG);
20097 set_yylval_id(
'+');
20098 SET_LEX_STATE(EXPR_BEG);
20101 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
20102 SET_LEX_STATE(EXPR_BEG);
20105 return parse_numeric(p,
'+');
20109 SET_LEX_STATE(EXPR_BEG);
20111 return warn_balanced(
'+',
"+",
"unary operator");
20115 if (IS_AFTER_OPERATOR()) {
20116 SET_LEX_STATE(EXPR_ARG);
20124 set_yylval_id(
'-');
20125 SET_LEX_STATE(EXPR_BEG);
20129 SET_LEX_STATE(EXPR_ENDFN);
20132 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
20133 SET_LEX_STATE(EXPR_BEG);
20136 return tUMINUS_NUM;
20140 SET_LEX_STATE(EXPR_BEG);
20142 return warn_balanced(
'-',
"-",
"unary operator");
20145 int is_beg = IS_BEG();
20146 SET_LEX_STATE(EXPR_BEG);
20147 if ((c = nextc(p)) ==
'.') {
20148 if ((c = nextc(p)) ==
'.') {
20149 if (p->ctxt.in_argdef) {
20150 SET_LEX_STATE(EXPR_ENDARG);
20153 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
20154 rb_warn0(
"... at EOL, should be parenthesized?");
20156 else if (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest) {
20157 if (IS_lex_state_for(last_state, EXPR_LABEL))
20160 return is_beg ? tBDOT3 : tDOT3;
20163 return is_beg ? tBDOT2 : tDOT2;
20167 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
20168 parse_numeric(p,
'.');
20170 yyerror0(
"unexpected fraction part after numeric literal");
20173 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
20175 SET_LEX_STATE(EXPR_END);
20176 p->lex.ptok = p->lex.pcur;
20179 set_yylval_id(
'.');
20180 SET_LEX_STATE(EXPR_DOT);
20184 case '0':
case '1':
case '2':
case '3':
case '4':
20185 case '5':
case '6':
case '7':
case '8':
case '9':
20186 return parse_numeric(p, c);
20191 SET_LEX_STATE(EXPR_ENDFN);
20192 p->lex.paren_nest--;
20198 SET_LEX_STATE(EXPR_END);
20199 p->lex.paren_nest--;
20204 if (!p->lex.brace_nest--)
return tSTRING_DEND;
20207 SET_LEX_STATE(EXPR_END);
20208 p->lex.paren_nest--;
20214 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
20215 SET_LEX_STATE(EXPR_BEG);
20218 set_yylval_id(idCOLON2);
20219 SET_LEX_STATE(EXPR_DOT);
20222 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
20224 c = warn_balanced(
':',
":",
"symbol literal");
20225 SET_LEX_STATE(EXPR_BEG);
20230 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
20233 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
20239 SET_LEX_STATE(EXPR_FNAME);
20244 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
20245 return tREGEXP_BEG;
20247 if ((c = nextc(p)) ==
'=') {
20248 set_yylval_id(
'/');
20249 SET_LEX_STATE(EXPR_BEG);
20253 if (IS_SPCARG(c)) {
20254 arg_ambiguous(p,
'/');
20255 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
20256 return tREGEXP_BEG;
20258 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20259 return warn_balanced(
'/',
"/",
"regexp literal");
20262 if ((c = nextc(p)) ==
'=') {
20263 set_yylval_id(
'^');
20264 SET_LEX_STATE(EXPR_BEG);
20267 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20272 SET_LEX_STATE(EXPR_BEG);
20273 p->command_start = TRUE;
20277 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
20281 if (IS_AFTER_OPERATOR()) {
20282 if ((c = nextc(p)) !=
'@') {
20285 SET_LEX_STATE(EXPR_ARG);
20288 SET_LEX_STATE(EXPR_BEG);
20296 else if (!space_seen) {
20299 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
20302 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
20303 rb_warning0(
"parentheses after method name is interpreted as "
20304 "an argument list, not a decomposed argument");
20306 p->lex.paren_nest++;
20309 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
20313 p->lex.paren_nest++;
20314 if (IS_AFTER_OPERATOR()) {
20315 if ((c = nextc(p)) ==
']') {
20316 p->lex.paren_nest--;
20317 SET_LEX_STATE(EXPR_ARG);
20318 if ((c = nextc(p)) ==
'=') {
20325 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
20328 else if (IS_BEG()) {
20331 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
20334 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
20340 ++p->lex.brace_nest;
20341 if (lambda_beginning_p())
20343 else if (IS_lex_state(EXPR_LABELED))
20345 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
20347 else if (IS_lex_state(EXPR_ENDARG))
20351 if (c != tLBRACE) {
20352 p->command_start = TRUE;
20353 SET_LEX_STATE(EXPR_BEG);
20356 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
20358 ++p->lex.paren_nest;
20367 dispatch_scan_event(p, tSP);
20370 if (c ==
' ')
return tSP;
20376 return parse_percent(p, space_seen, last_state);
20379 return parse_gvar(p, last_state);
20382 return parse_atmark(p, last_state);
20385 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
20386 p->ruby__end__seen = 1;
20392 dispatch_scan_event(p, k__END__);
20400 if (!parser_is_identchar(p)) {
20401 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
20410 return parse_ident(p, c, cmd_state);
20413static enum yytokentype
20416 enum yytokentype t;
20420 p->yylloc = yylloc;
20422 t = parser_yylex(p);
20424 if (has_delayed_token(p))
20425 dispatch_delayed_token(p, t);
20427 dispatch_scan_event(p, t);
20432#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
20437 NODE *n = rb_ast_newnode(p->ast,
type);
20439 rb_node_init(n,
type, a0, a1, a2);
20446 NODE *n = node_new_temporal(p,
type, a0, a1, a2);
20448 nd_set_loc(n, loc);
20449 nd_set_node_id(n, parser_get_node_id(p));
20457 nd_set_line(nd, loc->beg_pos.lineno);
20462static enum node_type
20463nodetype(
NODE *node)
20465 return (
enum node_type)nd_type(node);
20469nodeline(
NODE *node)
20471 return nd_line(node);
20475newline_node(
NODE *node)
20478 node = remove_begin(node);
20479 node->flags |= NODE_FL_NEWLINE;
20489 nd_set_line(node, nd_line(orig));
20507 NODE *end, *h = head, *nd;
20509 if (tail == 0)
return head;
20511 if (h == 0)
return tail;
20512 switch (nd_type(h)) {
20519 parser_warning(p, h,
"unused literal ignored");
20522 h = end = NEW_BLOCK(head, &head->nd_loc);
20532 switch (nd_type(nd)) {
20539 parser_warning(p, tail,
"statement not reached");
20547 if (!nd_type_p(tail, NODE_BLOCK)) {
20548 tail = NEW_BLOCK(tail, &tail->nd_loc);
20549 tail->nd_end = tail;
20551 end->nd_next = tail;
20552 h->nd_end = tail->nd_end;
20553 nd_set_last_loc(head, nd_last_loc(tail));
20563 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
20564 if (list->nd_next) {
20565 last = list->nd_next->nd_end;
20571 list->nd_alen += 1;
20572 last->nd_next = NEW_LIST(item, &item->nd_loc);
20573 list->nd_next->nd_end = last->nd_next;
20575 nd_set_last_loc(list, nd_last_loc(item));
20582list_concat(
NODE *head,
NODE *tail)
20586 if (head->nd_next) {
20587 last = head->nd_next->nd_end;
20593 head->nd_alen += tail->nd_alen;
20594 last->nd_next = tail;
20595 if (tail->nd_next) {
20596 head->nd_next->nd_end = tail->nd_next->nd_end;
20599 head->nd_next->nd_end = tail;
20602 nd_set_last_loc(head, nd_last_loc(tail));
20610 if (
NIL_P(tail))
return 1;
20611 if (!rb_enc_compatible(head, tail)) {
20612 compile_error(p,
"string literal encodings differ (%s / %s)",
20624string_literal_head(
enum node_type htype,
NODE *head)
20626 if (htype != NODE_DSTR)
return Qfalse;
20627 if (head->nd_next) {
20628 head = head->nd_next->nd_end->nd_head;
20629 if (!head || !nd_type_p(head, NODE_STR))
return Qfalse;
20631 const VALUE lit = head->nd_lit;
20640 enum node_type htype;
20643 if (!head)
return tail;
20644 if (!tail)
return head;
20646 htype = nd_type(head);
20647 if (htype == NODE_EVSTR) {
20648 head = new_dstr(p, head, loc);
20651 if (p->heredoc_indent > 0) {
20654 nd_set_type(head, NODE_DSTR);
20656 return list_append(p, head, tail);
20661 switch (nd_type(tail)) {
20663 if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
20667 lit = head->nd_lit;
20669 if (htype == NODE_STR) {
20670 if (!literal_concat0(p, lit, tail->nd_lit)) {
20672 rb_discard_node(p, head);
20673 rb_discard_node(p, tail);
20676 rb_discard_node(p, tail);
20679 list_append(p, head, tail);
20684 if (htype == NODE_STR) {
20685 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
20687 tail->nd_lit = head->nd_lit;
20688 rb_discard_node(p, head);
20691 else if (
NIL_P(tail->nd_lit)) {
20693 head->nd_alen += tail->nd_alen - 1;
20694 if (!head->nd_next) {
20695 head->nd_next = tail->nd_next;
20697 else if (tail->nd_next) {
20698 head->nd_next->nd_end->nd_next = tail->nd_next;
20699 head->nd_next->nd_end = tail->nd_next->nd_end;
20701 rb_discard_node(p, tail);
20703 else if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
20704 if (!literal_concat0(p, lit, tail->nd_lit))
20706 tail->nd_lit =
Qnil;
20710 list_concat(head, NEW_NODE(NODE_LIST, NEW_STR(tail->nd_lit, loc), tail->nd_alen, tail->nd_next, loc));
20715 if (htype == NODE_STR) {
20716 nd_set_type(head, NODE_DSTR);
20719 list_append(p, head, tail);
20728 if (nd_type_p(node, NODE_EVSTR)) {
20729 node = new_dstr(p, node, &node->nd_loc);
20740 switch (nd_type(node)) {
20742 nd_set_type(node, NODE_DSTR);
20750 return NEW_EVSTR(head, loc);
20756 VALUE lit = STR_NEW0();
20757 NODE *dstr = NEW_DSTR(lit, loc);
20759 return list_append(p, dstr, node);
20769 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
20770 nd_set_line(expr, op_loc->beg_pos.lineno);
20779 opcall = NEW_OPCALL(recv,
id, 0, loc);
20780 nd_set_line(opcall, op_loc->beg_pos.lineno);
20787 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
20788 nd_set_line(qcall, op_loc->beg_pos.lineno);
20796 if (block) block_dup_check(p, args, block);
20797 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
20798 if (block) ret = method_add_block(p, ret, block, loc);
20803#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? (node)->nd_body : node)
20808 int line = op_loc->beg_pos.lineno;
20812 if (node1 && (n = nd_once_body(node1)) != 0) {
20813 switch (nd_type(n)) {
20816 NODE *match = NEW_MATCH2(node1, node2, loc);
20817 nd_set_line(match, line);
20823 const VALUE lit = n->nd_lit;
20824 NODE *match = NEW_MATCH2(node1, node2, loc);
20825 match->nd_args = reg_named_capture_assign(p, lit, loc);
20826 nd_set_line(match, line);
20832 if (node2 && (n = nd_once_body(node2)) != 0) {
20835 switch (nd_type(n)) {
20840 match3 = NEW_MATCH3(node2, node1, loc);
20845 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
20846 nd_set_line(n, line);
20850# if WARN_PAST_SCOPE
20854 struct vtable *past = p->lvtbl->past;
20856 if (vtable_included(past,
id))
return 1;
20867 NODE *outer = local->numparam.outer;
20868 NODE *inner = local->numparam.inner;
20869 if (outer || inner) {
20870 NODE *used = outer ? outer : inner;
20871 compile_error(p,
"numbered parameter is already used in\n"
20872 "%s:%d: %s block here",
20873 p->ruby_sourcefile, nd_line(used),
20874 outer ?
"outer" :
"inner");
20875 parser_show_error_line(p, &used->nd_loc);
20888 return NEW_SELF(loc);
20890 return NEW_NIL(loc);
20892 return NEW_TRUE(loc);
20893 case keyword_false:
20894 return NEW_FALSE(loc);
20895 case keyword__FILE__:
20897 VALUE file = p->ruby_sourcefile_string;
20902 node = NEW_STR(file, loc);
20906 case keyword__LINE__:
20907 return NEW_LIT(
INT2FIX(p->tokline), loc);
20908 case keyword__ENCODING__:
20909 node = NEW_LIT(rb_enc_from_encoding(p->enc), loc);
20914 switch (id_type(
id)) {
20916 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
20917 if (NUMPARAM_ID_P(
id) && numparam_nested_p(p))
return 0;
20918 if (
id == p->cur_arg) {
20919 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
20922 if (vidp) *vidp |= LVAR_USED;
20923 node = NEW_DVAR(
id, loc);
20926 if (local_id_ref(p,
id, &vidp)) {
20927 if (
id == p->cur_arg) {
20928 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
20931 if (vidp) *vidp |= LVAR_USED;
20932 node = NEW_LVAR(
id, loc);
20935 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
20936 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
20937 if (numparam_nested_p(p))
return 0;
20938 node = NEW_DVAR(
id, loc);
20940 if (!local->numparam.current) local->numparam.current = node;
20943# if WARN_PAST_SCOPE
20945 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
20949 return NEW_VCALL(
id, loc);
20951 return NEW_GVAR(
id, loc);
20953 return NEW_IVAR(
id, loc);
20955 return NEW_CONST(
id, loc);
20957 return NEW_CVAR(
id, loc);
20959 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
20964opt_arg_append(
NODE *opt_list,
NODE *opt)
20966 NODE *opts = opt_list;
20967 opts->nd_loc.end_pos = opt->nd_loc.end_pos;
20969 while (opts->nd_next) {
20970 opts = opts->nd_next;
20971 opts->nd_loc.end_pos = opt->nd_loc.end_pos;
20973 opts->nd_next = opt;
20982 opt_arg_append(kwlist, kw);
20990 return NEW_DEFINED(remove_begin_all(expr), loc);
20996 enum node_type
type = nd_type(symbol);
20999 nd_set_type(symbol, NODE_DSYM);
21002 nd_set_type(symbol, NODE_LIT);
21006 compile_error(p,
"unexpected node as symbol: %s", ruby_node_name(
type));
21008 return list_append(p, symbols, symbol);
21018 node = NEW_LIT(reg_compile(p, STR_NEW0(), options), loc);
21022 switch (nd_type(node)) {
21025 VALUE src = node->nd_lit;
21026 nd_set_type(node, NODE_LIT);
21027 nd_set_loc(node, loc);
21033 node = NEW_NODE(NODE_DSTR, lit, 1, NEW_LIST(node, loc), loc);
21037 nd_set_type(node, NODE_DREGX);
21038 nd_set_loc(node, loc);
21039 node->nd_cflag = options & RE_OPTION_MASK;
21040 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
21041 for (list = (prev = node)->nd_next; list; list = list->nd_next) {
21042 NODE *frag = list->nd_head;
21043 enum node_type
type = nd_type(frag);
21044 if (
type == NODE_STR || (
type == NODE_DSTR && !frag->nd_next)) {
21045 VALUE tail = frag->nd_lit;
21046 if (reg_fragment_check(p, tail, options) && prev && !
NIL_P(prev->nd_lit)) {
21047 VALUE lit = prev == node ? prev->nd_lit : prev->nd_head->nd_lit;
21048 if (!literal_concat0(p, lit, tail)) {
21049 return NEW_NIL(loc);
21052 prev->nd_next = list->nd_next;
21053 rb_discard_node(p, list->nd_head);
21054 rb_discard_node(p, list);
21065 if (!node->nd_next) {
21066 VALUE src = node->nd_lit;
21067 nd_set_type(node, NODE_LIT);
21070 if (options & RE_OPTION_ONCE) {
21071 node = NEW_NODE(NODE_ONCE, 0, node, 0, loc);
21082 return NEW_KW_ARG(0, (k), loc);
21089 VALUE lit = STR_NEW0();
21090 NODE *xstr = NEW_XSTR(lit, loc);
21094 switch (nd_type(node)) {
21096 nd_set_type(node, NODE_XSTR);
21097 nd_set_loc(node, loc);
21100 nd_set_type(node, NODE_DXSTR);
21101 nd_set_loc(node, loc);
21104 node = NEW_NODE(NODE_DXSTR,
Qnil, 1, NEW_LIST(node, loc), loc);
21115 if (!arg || !p->case_labels)
return;
21117 lit = rb_node_case_when_optimizable_literal(arg);
21118 if (UNDEF_P(lit))
return;
21119 if (nd_type_p(arg, NODE_STR)) {
21123 if (
NIL_P(p->case_labels)) {
21127 VALUE line = rb_hash_lookup(p->case_labels, lit);
21128 if (!
NIL_P(line)) {
21129 rb_warning1(
"duplicated `when' clause with line %d is ignored",
21134 rb_hash_aset(p->case_labels, lit,
INT2NUM(p->ruby_sourceline));
21141 if (is_notop_id(
id)) {
21142 switch (
id & ID_SCOPE_MASK) {
21143 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
21146 if (dyna_in_block(p)) {
21147 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
21149 if (local_id(p,
id))
return 1;
21154 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
21161 VALUE src = 0, err;
21163 if (ripper_is_node_yylval(re)) {
21164 src = RNODE(re)->nd_cval;
21165 re = RNODE(re)->nd_rval;
21167 if (ripper_is_node_yylval(opt)) {
21168 options = (int)RNODE(opt)->nd_tag;
21169 opt = RNODE(opt)->nd_rval;
21171 if (src &&
NIL_P(parser_reg_compile(p, src, options, &err))) {
21172 compile_error(p,
"%"PRIsVALUE, err);
21174 return dispatch2(regexp_literal, re, opt);
21178static inline enum lex_state_e
21179parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
21182 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
21184 return p->lex.state = ls;
21188static const char rb_parser_lex_state_names[][8] = {
21189 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
21190 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
21191 "LABEL",
"LABELED",
"FITEM",
21195append_lex_state_name(
enum lex_state_e state,
VALUE buf)
21198 unsigned int mask = 1;
21199 static const char none[] =
"NONE";
21201 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
21202 if ((
unsigned)state & mask) {
21219 VALUE mesg = p->debug_buffer;
21222 p->debug_buffer =
Qnil;
21231rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
21232 enum lex_state_e to,
int line)
21236 append_lex_state_name(from, mesg);
21238 append_lex_state_name(to, mesg);
21240 flush_debug_buffer(p, p->debug_output, mesg);
21245rb_parser_lex_state_name(
enum lex_state_e state)
21247 return rb_fstring(append_lex_state_name(state,
rb_str_new(0, 0)));
21251append_bitstack_value(stack_type stack,
VALUE mesg)
21257 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
21258 for (; mask && !(stack & mask); mask >>= 1)
continue;
21259 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
21264rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
21265 const char *name,
int line)
21268 append_bitstack_value(stack, mesg);
21270 flush_debug_buffer(p, p->debug_output, mesg);
21274rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
21286 append_lex_state_name(p->lex.state, mesg);
21287 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
21289 append_bitstack_value(p->cond_stack, mesg);
21290 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
21292 append_bitstack_value(p->cmdarg_stack, mesg);
21293 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
21300rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
21302 yylloc->beg_pos.lineno = sourceline;
21303 yylloc->beg_pos.column = beg_pos;
21304 yylloc->end_pos.lineno = sourceline;
21305 yylloc->end_pos.column = end_pos;
21312 int sourceline = here->sourceline;
21313 int beg_pos = (int)here->offset - here->quote
21314 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
21315 int end_pos = (int)here->offset + here->length + here->quote;
21317 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
21323 yylloc->beg_pos.lineno = p->delayed.beg_line;
21324 yylloc->beg_pos.column = p->delayed.beg_col;
21325 yylloc->end_pos.lineno = p->delayed.end_line;
21326 yylloc->end_pos.column = p->delayed.end_col;
21334 int sourceline = p->ruby_sourceline;
21335 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21336 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
21337 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
21343 yylloc->end_pos = yylloc->beg_pos;
21351 int sourceline = p->ruby_sourceline;
21352 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21353 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
21354 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
21360 int sourceline = p->ruby_sourceline;
21361 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21362 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
21363 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
21370 if (!
id)
return -1;
21373 *err =
"Can't change the value of self";
21376 *err =
"Can't assign to nil";
21379 *err =
"Can't assign to true";
21381 case keyword_false:
21382 *err =
"Can't assign to false";
21384 case keyword__FILE__:
21385 *err =
"Can't assign to __FILE__";
21387 case keyword__LINE__:
21388 *err =
"Can't assign to __LINE__";
21390 case keyword__ENCODING__:
21391 *err =
"Can't assign to __ENCODING__";
21394 switch (id_type(
id)) {
21396 if (dyna_in_block(p)) {
21397 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
21398 compile_error(p,
"Can't assign to numbered parameter _%d",
21399 NUMPARAM_ID_TO_IDX(
id));
21402 if (dvar_curr(p,
id))
return NODE_DASGN;
21403 if (dvar_defined(p,
id))
return NODE_DASGN;
21404 if (local_id(p,
id))
return NODE_LASGN;
21409 if (!local_id(p,
id)) local_var(p,
id);
21413 case ID_GLOBAL:
return NODE_GASGN;
21414 case ID_INSTANCE:
return NODE_IASGN;
21416 if (!p->ctxt.in_def)
return NODE_CDECL;
21417 *err =
"dynamic constant assignment";
21419 case ID_CLASS:
return NODE_CVASGN;
21421 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
21430 const char *err = 0;
21431 int node_type = assignable0(p,
id, &err);
21432 switch (node_type) {
21433 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
21434 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
21435 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
21436 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
21437 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, loc);
21438 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
21440 if (err) yyerror1(loc, err);
21441 return NEW_BEGIN(0, loc);
21447 const char *err = 0;
21448 assignable0(p, get_id(lhs), &err);
21449 if (err) lhs = assign_error(p, err, lhs);
21455is_private_local_id(
ID name)
21458 if (name == idUScore)
return 1;
21459 if (!is_local_id(name))
return 0;
21460 s = rb_id2str(name);
21468 if (dyna_in_block(p)) {
21469 if (dvar_curr(p, name)) {
21470 if (is_private_local_id(name))
return 1;
21471 yyerror0(
"duplicated argument name");
21473 else if (dvar_defined(p, name) || local_id(p, name)) {
21474 vtable_add(p->lvtbl->vars, name);
21475 if (p->lvtbl->used) {
21476 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
21482 if (local_id(p, name)) {
21483 if (is_private_local_id(name))
return 1;
21484 yyerror0(
"duplicated argument name");
21493 shadowing_lvar_0(p, name);
21501 if (!is_local_id(name)) {
21502 compile_error(p,
"invalid local variable - %"PRIsVALUE,
21506 if (!shadowing_lvar_0(p, name))
return;
21514 return NEW_ATTRASGN(recv, tASET, idx, loc);
21520 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
21521 compile_error(p,
"both block arg and actual block given");
21529 return NEW_ATTRASGN(recv,
id, 0, loc);
21535 switch (nd_type(node)) {
21537 compile_error(p,
"Can't set variable $%ld", node->nd_nth);
21539 case NODE_BACK_REF:
21540 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
21550 return dispatch2(assign_error, mesg, expr);
21558 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
21559 switch (nd_type(node1)) {
21561 return list_append(p, node1, node2);
21562 case NODE_BLOCK_PASS:
21563 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
21564 node1->nd_loc.end_pos = node1->nd_head->nd_loc.end_pos;
21566 case NODE_ARGSPUSH:
21567 node1->nd_body = list_append(p, NEW_LIST(node1->nd_body, &node1->nd_body->nd_loc), node2);
21568 node1->nd_loc.end_pos = node1->nd_body->nd_loc.end_pos;
21569 nd_set_type(node1, NODE_ARGSCAT);
21572 if (!nd_type_p(node1->nd_body, NODE_LIST))
break;
21573 node1->nd_body = list_append(p, node1->nd_body, node2);
21574 node1->nd_loc.end_pos = node1->nd_body->nd_loc.end_pos;
21577 return NEW_ARGSPUSH(node1, node2, loc);
21583 if (!node2)
return node1;
21584 switch (nd_type(node1)) {
21585 case NODE_BLOCK_PASS:
21586 if (node1->nd_head)
21587 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
21589 node1->nd_head = NEW_LIST(node2, loc);
21591 case NODE_ARGSPUSH:
21592 if (!nd_type_p(node2, NODE_LIST))
break;
21593 node1->nd_body = list_concat(NEW_LIST(node1->nd_body, loc), node2);
21594 nd_set_type(node1, NODE_ARGSCAT);
21597 if (!nd_type_p(node2, NODE_LIST) ||
21598 !nd_type_p(node1->nd_body, NODE_LIST))
break;
21599 node1->nd_body = list_concat(node1->nd_body, node2);
21602 return NEW_ARGSCAT(node1, node2, loc);
21609 if ((n1 = splat_array(args)) != 0) {
21610 return list_append(p, n1, last_arg);
21612 return arg_append(p, args, last_arg, loc);
21619 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
21620 return list_concat(n1, rest_arg);
21622 return arg_concat(p, args, rest_arg, loc);
21626splat_array(
NODE* node)
21628 if (nd_type_p(node, NODE_SPLAT)) node = node->nd_head;
21629 if (nd_type_p(node, NODE_LIST))
return node;
21638 switch (nd_type(rhs)) {
21640 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
21641 if (vidp) *vidp |= LVAR_USED;
21645 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
21646 if (vidp) *vidp |= LVAR_USED;
21651 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
21652 mark_lvar_used(p, rhs->nd_head);
21663 if (!nd_type_p(n, NODE_CALL)) {
21664 const YYLTYPE *loc = &n->nd_loc;
21667 path = rb_id2str(n->nd_vid);
21671 path = rb_ary_new();
21672 for (; n && nd_type_p(n, NODE_COLON2); n = n->nd_head) {
21673 rb_ary_push(path, rb_id2str(n->nd_mid));
21675 if (n && nd_type_p(n, NODE_CONST)) {
21677 rb_ary_push(path, rb_id2str(n->nd_vid));
21679 else if (n && nd_type_p(n, NODE_COLON3)) {
21688 path = rb_fstring(path);
21690 *dest = n = NEW_LIT(path, loc);
21696extern VALUE rb_mRubyVMFrozenCore;
21701 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
21704 return NEW_CALL(fcore,
rb_intern(
"make_shareable_copy"),
21705 NEW_LIST(value, loc), loc);
21708 return NEW_CALL(fcore,
rb_intern(
"make_shareable"),
21709 NEW_LIST(value, loc), loc);
21716 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
21717 NODE *args = NEW_LIST(value, loc);
21718 args = list_append(p, args, const_decl_path(p, dest));
21719 return NEW_CALL(fcore,
rb_intern(
"ensure_shareable"), args, loc);
21722static int is_static_content(
NODE *node);
21725shareable_literal_value(
NODE *node)
21727 if (!node)
return Qnil;
21728 enum node_type
type = nd_type(node);
21737 return node->nd_lit;
21743#ifndef SHAREABLE_BARE_EXPRESSION
21744#define SHAREABLE_BARE_EXPRESSION 1
21748shareable_literal_constant(
struct parser_params *p,
enum shareability shareable,
21751# define shareable_literal_constant_next(n) \
21752 shareable_literal_constant(p, shareable, dest, (n), &(n)->nd_loc, level+1)
21755 if (!value)
return 0;
21756 enum node_type
type = nd_type(value);
21765 if (shareable == shareable_literal) {
21766 value = NEW_CALL(value, idUMinus, 0, loc);
21771 lit = rb_fstring(value->nd_lit);
21772 nd_set_type(value, NODE_LIT);
21777 lit = rb_ary_new();
21779 NODE *n = NEW_LIT(lit, loc);
21784 lit = rb_ary_new();
21785 for (
NODE *n = value; n; n = n->nd_next) {
21786 NODE *elt = n->nd_head;
21788 elt = shareable_literal_constant_next(elt);
21792 else if (
RTEST(lit)) {
21798 VALUE e = shareable_literal_value(elt);
21800 rb_ary_push(lit, e);
21811 if (!value->nd_brace)
return 0;
21812 lit = rb_hash_new();
21813 for (
NODE *n = value->nd_head; n; n = n->nd_next->nd_next) {
21814 NODE *key = n->nd_head;
21815 NODE *val = n->nd_next->nd_head;
21817 key = shareable_literal_constant_next(key);
21821 else if (
RTEST(lit)) {
21822 rb_hash_clear(lit);
21827 val = shareable_literal_constant_next(val);
21829 n->nd_next->nd_head = val;
21831 else if (
RTEST(lit)) {
21832 rb_hash_clear(lit);
21837 VALUE k = shareable_literal_value(key);
21838 VALUE v = shareable_literal_value(val);
21839 if (!UNDEF_P(k) && !UNDEF_P(v)) {
21840 rb_hash_aset(lit, k, v);
21843 rb_hash_clear(lit);
21851 if (shareable == shareable_literal &&
21852 (SHAREABLE_BARE_EXPRESSION || level > 0)) {
21853 return ensure_shareable_node(p, dest, value, loc);
21859 if (!lit)
return 0;
21863 value = make_shareable_node(p, value,
false, loc);
21871# undef shareable_literal_constant_next
21875shareable_constant_value(
struct parser_params *p,
enum shareability shareable,
21878 if (!value)
return 0;
21879 switch (shareable) {
21880 case shareable_none:
21883 case shareable_literal:
21885 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
21886 if (lit)
return lit;
21891 case shareable_copy:
21892 case shareable_everything:
21894 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
21895 if (lit)
return lit;
21896 return make_shareable_node(p, value, shareable == shareable_copy, loc);
21908 if (!lhs)
return 0;
21910 switch (nd_type(lhs)) {
21912 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
21921 lhs->nd_value = rhs;
21922 nd_set_loc(lhs, loc);
21925 case NODE_ATTRASGN:
21926 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
21927 nd_set_loc(lhs, loc);
21941 NODE *void_node = 0, *vn;
21944 rb_warning0(
"empty expression");
21947 switch (nd_type(node)) {
21953 return void_node ? void_node : node;
21956 if (!node->nd_body || !nd_type_p(node->nd_body, NODE_IN)) {
21957 compile_error(p,
"unexpected node");
21960 if (node->nd_body->nd_body) {
21964 return void_node ? void_node : node;
21967 while (node->nd_next) {
21968 node = node->nd_next;
21970 node = node->nd_head;
21974 node = node->nd_body;
21979 if (!node->nd_body) {
21982 else if (!node->nd_else) {
21985 vn = value_expr_check(p, node->nd_body);
21986 if (!vn)
return NULL;
21987 if (!void_node) void_node = vn;
21988 node = node->nd_else;
21993 node = node->nd_1st;
21999 mark_lvar_used(p, node);
22013 NODE *void_node = value_expr_check(p, node);
22015 yyerror1(&void_node->nd_loc,
"void value expression");
22024 const char *useless = 0;
22028 if (!node || !(node = nd_once_body(node)))
return;
22029 switch (nd_type(node)) {
22031 switch (node->nd_mid) {
22061 case NODE_BACK_REF:
22062 useless =
"a variable";
22065 useless =
"a constant";
22071 useless =
"a literal";
22096 useless =
"defined?";
22101 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
22108 NODE *
const n = node;
22110 if (!node)
return n;
22111 if (!nd_type_p(node, NODE_BLOCK))
return n;
22113 while (node->nd_next) {
22114 void_expr(p, node->nd_head);
22115 node = node->nd_next;
22121remove_begin(
NODE *node)
22123 NODE **n = &node, *n1 = node;
22124 while (n1 && nd_type_p(n1, NODE_BEGIN) && n1->nd_body) {
22125 *n = n1 = n1->nd_body;
22131remove_begin_all(
NODE *node)
22133 NODE **n = &node, *n1 = node;
22134 while (n1 && nd_type_p(n1, NODE_BEGIN)) {
22135 *n = n1 = n1->nd_body;
22143 NODE *node = *body;
22146 *body = NEW_NIL(&NULL_LOC);
22149#define subnodes(n1, n2) \
22150 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
22151 (!node->n2) ? (body = &node->n1, 1) : \
22152 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
22155 int newline = (int)(node->flags & NODE_FL_NEWLINE);
22156 switch (nd_type(node)) {
22162 *body = node = node->nd_stts;
22163 if (newline && node) node->flags |= NODE_FL_NEWLINE;
22166 *body = node = node->nd_body;
22167 if (newline && node) node->flags |= NODE_FL_NEWLINE;
22170 body = &node->nd_end->nd_head;
22174 if (subnodes(nd_body, nd_else))
break;
22177 body = &node->nd_body;
22180 if (!subnodes(nd_body, nd_next))
goto end;
22183 if (!subnodes(nd_head, nd_resq))
goto end;
22186 if (node->nd_else) {
22187 body = &node->nd_resq;
22190 if (!subnodes(nd_head, nd_resq))
goto end;
22196 if (newline && node) node->flags |= NODE_FL_NEWLINE;
22203is_static_content(
NODE *node)
22205 if (!node)
return 1;
22206 switch (nd_type(node)) {
22208 if (!(node = node->nd_head))
break;
22211 if (!is_static_content(node->nd_head))
return 0;
22212 }
while ((node = node->nd_next) != 0);
22229 switch (nd_type(node)) {
22241 if (!node->nd_value)
return 1;
22242 if (is_static_content(node->nd_value)) {
22244 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
22255#define SWITCH_BY_COND_TYPE(t, w, arg) \
22257 case COND_IN_OP: break; \
22258 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
22259 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
22267 enum node_type
type;
22269 if (node == 0)
return 0;
22271 type = nd_type(node);
22274 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
22276 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
22278 return cond0(p, node, COND_IN_FF, loc);
22284 if (node == 0)
return 0;
22285 if (!(node = nd_once_body(node)))
return 0;
22286 assign_in_cond(p, node);
22288 switch (nd_type(node)) {
22292 SWITCH_BY_COND_TYPE(
type, warn,
"string ")
22296 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning, "regex ")
22298 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
22302 node->nd_1st = cond0(p, node->nd_1st, COND_IN_COND, loc);
22303 node->nd_2nd = cond0(p, node->nd_2nd, COND_IN_COND, loc);
22308 node->nd_beg = range_op(p, node->nd_beg, loc);
22309 node->nd_end = range_op(p, node->nd_end, loc);
22310 if (nd_type_p(node, NODE_DOT2)) nd_set_type(node,NODE_FLIP2);
22311 else if (nd_type_p(node, NODE_DOT3)) nd_set_type(node, NODE_FLIP3);
22316 SWITCH_BY_COND_TYPE(
type, warning, "symbol ")
22321 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ")
22322 nd_set_type(node, NODE_MATCH);
22324 else if (node->nd_lit ==
Qtrue ||
22325 node->nd_lit ==
Qfalse) {
22328 else if (
SYMBOL_P(node->nd_lit)) {
22332 SWITCH_BY_COND_TYPE(
type, warning,
"")
22343 if (node == 0)
return 0;
22344 return cond0(p, node, COND_IN_COND, loc);
22350 if (node == 0)
return 0;
22351 return cond0(p, node, COND_IN_OP, loc);
22358 return NEW_NIL(&loc);
22364 if (!cc)
return right;
22365 cc = cond0(p, cc, COND_IN_COND, loc);
22366 return newline_node(NEW_IF(cc, left, right, loc));
22372 if (!cc)
return right;
22373 cc = cond0(p, cc, COND_IN_COND, loc);
22374 return newline_node(NEW_UNLESS(cc, left, right, loc));
22381 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
22384 if (left && nd_type_p(left,
type)) {
22385 NODE *node = left, *second;
22386 while ((second = node->nd_2nd) != 0 && nd_type_p(second,
type)) {
22389 node->nd_2nd = NEW_NODE(
type, second, right, 0, loc);
22390 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
22391 left->nd_loc.end_pos = loc->end_pos;
22394 op = NEW_NODE(
type, left, right, 0, loc);
22395 nd_set_line(op, op_loc->beg_pos.lineno);
22402 if (nd_type_p(node, NODE_BLOCK_PASS)) {
22403 compile_error(p,
"block argument should not be given");
22411 no_blockarg(p, node);
22412 if (nd_type_p(node, NODE_LIST)) {
22413 if (node->nd_next == 0) {
22414 node = node->nd_head;
22417 nd_set_type(node, NODE_VALUES);
22427 if (node) no_blockarg(p, node);
22429 return NEW_YIELD(node, loc);
22448 BIGNUM_NEGATE(lit);
22449 lit = rb_big_norm(lit);
22452 RATIONAL_SET_NUM(lit, negate_lit(p, RRATIONAL(lit)->num));
22455 RCOMPLEX_SET_REAL(lit, negate_lit(p, RCOMPLEX(lit)->real));
22456 RCOMPLEX_SET_IMAG(lit, negate_lit(p, RCOMPLEX(lit)->imag));
22463 rb_parser_fatal(p,
"unknown literal type (%s) passed to negate_lit",
22464 rb_builtin_class_name(lit));
22471arg_blk_pass(
NODE *node1,
NODE *node2)
22474 if (!node1)
return node2;
22475 node2->nd_head = node1;
22476 nd_set_first_lineno(node2, nd_first_lineno(node1));
22477 nd_set_first_column(node2, nd_first_column(node1));
22486 if (args->pre_args_num)
return false;
22487 if (args->post_args_num)
return false;
22488 if (args->rest_arg)
return false;
22489 if (args->opt_args)
return false;
22490 if (args->block_arg)
return false;
22491 if (args->kw_args)
return false;
22492 if (args->kw_rest_arg)
return false;
22499 int saved_line = p->ruby_sourceline;
22502 if (args->forwarding) {
22504 yyerror1(&tail->nd_loc,
"... after rest argument");
22507 rest_arg = idFWD_REST;
22510 args->pre_args_num = pre_args ?
rb_long2int(pre_args->nd_plen) : 0;
22511 args->pre_init = pre_args ? pre_args->nd_next : 0;
22513 args->post_args_num = post_args ?
rb_long2int(post_args->nd_plen) : 0;
22514 args->post_init = post_args ? post_args->nd_next : 0;
22515 args->first_post_arg = post_args ? post_args->nd_pid : 0;
22517 args->rest_arg = rest_arg;
22519 args->opt_args = opt_args;
22521#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
22522 args->ruby2_keywords = args->forwarding;
22524 args->ruby2_keywords = 0;
22527 p->ruby_sourceline = saved_line;
22528 nd_set_loc(tail, loc);
22536 int saved_line = p->ruby_sourceline;
22538 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
22540 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
22541 args->imemo = tmpbuf;
22542 node = NEW_NODE(NODE_ARGS, 0, 0, args, &NULL_LOC);
22544 if (p->error_p)
return node;
22546 args->block_arg = block;
22547 args->kw_args = kw_args;
22556 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
22557 struct vtable *vtargs = p->lvtbl->args;
22558 NODE *kwn = kw_args;
22560 if (block) block = vtargs->tbl[vtargs->pos-1];
22561 vtable_pop(vtargs, !!block + !!kw_rest_arg);
22562 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
22564 if (!NODE_REQUIRED_KEYWORD_P(kwn->nd_body))
22566 --required_kw_vars;
22567 kwn = kwn->nd_next;
22570 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
22571 ID vid = kwn->nd_body->nd_vid;
22572 if (NODE_REQUIRED_KEYWORD_P(kwn->nd_body)) {
22573 *required_kw_vars++ = vid;
22580 arg_var(p, kw_bits);
22581 if (kw_rest_arg) arg_var(p, kw_rest_arg);
22582 if (block) arg_var(p, block);
22584 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
22585 args->kw_rest_arg->nd_cflag = kw_bits;
22587 else if (kw_rest_arg == idNil) {
22588 args->no_kwarg = 1;
22590 else if (kw_rest_arg) {
22591 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
22594 p->ruby_sourceline = saved_line;
22601 if (max_numparam > NO_PARAM) {
22603 YYLTYPE loc = RUBY_INIT_YYLLOC();
22604 args = new_args_tail(p, 0, 0, 0, 0);
22605 nd_set_loc(args, &loc);
22607 args->nd_ainfo->pre_args_num = max_numparam;
22617 aryptn->nd_pconst = constant;
22620 NODE *pre_args = NEW_LIST(pre_arg, loc);
22621 if (apinfo->pre_args) {
22622 apinfo->pre_args = list_concat(pre_args, apinfo->pre_args);
22625 apinfo->pre_args = pre_args;
22634 int saved_line = p->ruby_sourceline;
22636 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
22638 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
22639 node = NEW_NODE(NODE_ARYPTN, 0, tmpbuf, apinfo, loc);
22642 apinfo->pre_args = pre_args;
22646 apinfo->rest_arg = assignable(p, rest_arg, 0, loc);
22649 apinfo->rest_arg = NODE_SPECIAL_NO_NAME_REST;
22653 apinfo->rest_arg = NULL;
22656 apinfo->post_args = post_args;
22658 p->ruby_sourceline = saved_line;
22665 fndptn->nd_pconst = constant;
22673 int saved_line = p->ruby_sourceline;
22675 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
22677 rb_imemo_tmpbuf_set_ptr(tmpbuf, fpinfo);
22678 node = NEW_NODE(NODE_FNDPTN, 0, tmpbuf, fpinfo, loc);
22681 fpinfo->pre_rest_arg = pre_rest_arg ? assignable(p, pre_rest_arg, 0, loc) : NODE_SPECIAL_NO_NAME_REST;
22682 fpinfo->args = args;
22683 fpinfo->post_rest_arg = post_rest_arg ? assignable(p, post_rest_arg, 0, loc) : NODE_SPECIAL_NO_NAME_REST;
22685 p->ruby_sourceline = saved_line;
22692 hshptn->nd_pconst = constant;
22699 int saved_line = p->ruby_sourceline;
22700 NODE *node, *kw_rest_arg_node;
22702 if (kw_rest_arg == idNil) {
22703 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
22705 else if (kw_rest_arg) {
22706 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
22709 kw_rest_arg_node = NULL;
22712 node = NEW_NODE(NODE_HSHPTN, 0, kw_args, kw_rest_arg_node, loc);
22714 p->ruby_sourceline = saved_line;
22724 return NEW_LIT(
ID2SYM(idNULL), loc);
22727 switch (nd_type(node)) {
22729 nd_set_type(node, NODE_DSYM);
22730 nd_set_loc(node, loc);
22733 lit = node->nd_lit;
22735 nd_set_type(node, NODE_LIT);
22736 nd_set_loc(node, loc);
22739 node = NEW_NODE(NODE_DSYM,
Qnil, 1, NEW_LIST(node, loc), loc);
22746append_literal_keys(st_data_t k, st_data_t v, st_data_t h)
22751 node->nd_next->nd_end = node->nd_next;
22752 node->nd_next->nd_next = 0;
22754 list_concat(*result, node);
22757 return ST_CONTINUE;
22761hash_literal_key_p(
VALUE k)
22763 switch (OBJ_BUILTIN_TYPE(k)) {
22774 if (val == lit)
return 0;
22775 if (!hash_literal_key_p(val) || !hash_literal_key_p(lit))
return -1;
22776 return rb_iseq_cdhash_cmp(val, lit);
22780literal_hash(
VALUE a)
22782 if (!hash_literal_key_p(a))
return (st_index_t)a;
22783 return rb_iseq_cdhash_hash(a);
22794 st_table *literal_keys = st_init_table_with_size(&literal_type, hash->nd_alen / 2);
22796 NODE *last_expr = 0;
22798 while (hash && hash->nd_head && hash->nd_next) {
22799 NODE *head = hash->nd_head;
22800 NODE *value = hash->nd_next;
22801 NODE *next = value->nd_next;
22802 st_data_t key = (st_data_t)head;
22804 value->nd_next = 0;
22805 if (nd_type_p(head, NODE_LIT) &&
22806 st_delete(literal_keys, (key = (st_data_t)head->nd_lit, &key), &data)) {
22807 NODE *dup_value = ((
NODE *)data)->nd_next;
22809 "key %+"PRIsVALUE
" is duplicated and overwritten on line %d",
22810 head->nd_lit, nd_line(head));
22811 if (dup_value == last_expr) {
22812 value->nd_head = block_append(p, dup_value->nd_head, value->nd_head);
22815 last_expr->nd_head = block_append(p, dup_value->nd_head, last_expr->nd_head);
22818 st_insert(literal_keys, (st_data_t)key, (st_data_t)hash);
22819 last_expr = nd_type_p(head, NODE_LIT) ? value : head;
22822 st_foreach(literal_keys, append_literal_keys, (st_data_t)&result);
22823 st_free_table(literal_keys);
22825 if (!result) result = hash;
22826 else list_concat(result, hash);
22828 result->nd_loc = loc;
22835 if (hash) hash = remove_duplicate_keys(p, hash);
22836 return NEW_HASH(hash, loc);
22843 if (is_private_local_id(
id)) {
22846 if (st_is_member(p->pvtbl,
id)) {
22847 yyerror1(loc,
"duplicated variable name");
22850 st_insert(p->pvtbl, (st_data_t)
id, 0);
22858 p->pktbl = st_init_numtable();
22860 else if (st_is_member(p->pktbl, key)) {
22861 yyerror1(loc,
"duplicated key name");
22864 st_insert(p->pktbl, (st_data_t)key, 0);
22871 return NEW_HASH(hash, loc);
22882 ID vid = lhs->nd_vid;
22883 YYLTYPE lhs_loc = lhs->nd_loc;
22884 int shareable = ctxt.shareable_constant_value;
22886 switch (nd_type(lhs)) {
22897 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
22898 lhs->nd_value = rhs;
22899 nd_set_loc(lhs, loc);
22900 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
22901 if (is_notop_id(vid)) {
22902 switch (id_type(vid)) {
22906 asgn->nd_aid = vid;
22910 else if (op == tANDOP) {
22912 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
22914 lhs->nd_value = rhs;
22915 nd_set_loc(lhs, loc);
22916 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
22920 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
22922 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
22924 asgn->nd_value = rhs;
22925 nd_set_loc(asgn, loc);
22929 asgn = NEW_BEGIN(0, loc);
22940 args = make_list(args, args_loc);
22941 if (nd_type_p(args, NODE_BLOCK_PASS)) {
22942 args = NEW_ARGSCAT(args, rhs, loc);
22945 args = arg_concat(p, args, rhs, loc);
22947 asgn = NEW_OP_ASGN1(ary, op, args, loc);
22958 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc);
22969 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
22970 asgn = NEW_OP_CDECL(lhs, op, rhs, loc);
22973 asgn = NEW_BEGIN(0, loc);
22982 if (p->ctxt.in_def) {
22983 yyerror1(loc,
"dynamic constant assignment");
22985 return NEW_CDECL(0, 0, (path), loc);
22991 if (p->ctxt.in_def) {
22992 path = assign_error(p,
"dynamic constant assignment", path);
23000 a = dispatch2(assign_error, ERR_MESG(), a);
23008 return ripper_new_yylval(p, get_id(a), dispatch1(var_field, a), 0);
23016 NODE *result = head;
23018 NODE *tmp = rescue_else ? rescue_else : rescue;
23019 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
23021 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
23022 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
23024 else if (rescue_else) {
23025 result = block_append(p, result, rescue_else);
23028 result = NEW_ENSURE(result, ensure, loc);
23030 fixpos(result, head);
23040 if (!local->used)
return;
23041 cnt = local->used->pos;
23042 if (cnt != local->vars->pos) {
23043 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
23046 ID *v = local->vars->tbl;
23047 ID *u = local->used->tbl;
23048 for (
int i = 0; i < cnt; ++i) {
23049 if (!v[i] || (u[i] & LVAR_USED))
continue;
23050 if (is_private_local_id(v[i]))
continue;
23051 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
23060 int inherits_dvars = toplevel_scope && compile_for_eval;
23064 local->prev = p->lvtbl;
23065 local->args = vtable_alloc(0);
23066 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
23068 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
23069 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
23070 local->numparam.outer = 0;
23071 local->numparam.inner = 0;
23072 local->numparam.current = 0;
23074 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
23076# if WARN_PAST_SCOPE
23087 while (!DVARS_TERMINAL_P(table)) {
23088 struct vtable *cur_table = table;
23089 table = cur_table->prev;
23090 vtable_free(cur_table);
23097 vtable_chain_free(p, local->used);
23099# if WARN_PAST_SCOPE
23100 vtable_chain_free(p, local->past);
23103 vtable_chain_free(p, local->args);
23104 vtable_chain_free(p, local->vars);
23106 ruby_sized_xfree(local,
sizeof(
struct local_vars));
23113 if (p->lvtbl->used) {
23114 warn_unused_var(p, p->lvtbl);
23117 local_free(p, p->lvtbl);
23128 int cnt_args = vtable_size(p->lvtbl->args);
23129 int cnt_vars = vtable_size(p->lvtbl->vars);
23130 int cnt = cnt_args + cnt_vars;
23134 if (cnt <= 0)
return 0;
23135 tbl = rb_ast_new_local_table(p->ast, cnt);
23136 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
23138 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
23139 ID id = p->lvtbl->vars->tbl[i];
23140 if (!vtable_included(p->lvtbl->args,
id)) {
23141 tbl->ids[j++] = id;
23145 tbl = rb_ast_resize_latest_local_table(p->ast, j);
23158 n = NEW_NODE(
type, a0, a1, a2, loc);
23167 if (!NUMPARAM_ID_P(
id))
return;
23168 compile_error(p,
"_%d is reserved for numbered parameter",
23169 NUMPARAM_ID_TO_IDX(
id));
23175 numparam_name(p,
id);
23176 vtable_add(p->lvtbl->args,
id);
23182 numparam_name(p,
id);
23183 vtable_add(p->lvtbl->vars,
id);
23184 if (p->lvtbl->used) {
23185 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
23192 struct vtable *vars, *args, *used;
23194 vars = p->lvtbl->vars;
23195 args = p->lvtbl->args;
23196 used = p->lvtbl->used;
23198 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
23201 if (used) used = used->prev;
23204 if (vars && vars->prev == DVARS_INHERIT) {
23205 return rb_local_defined(
id, p->parent_iseq);
23207 else if (vtable_included(args,
id)) {
23211 int i = vtable_included(vars,
id);
23212 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
23220 return local_id_ref(p,
id, NULL);
23226 if (local_id(p, idFWD_ALL))
return TRUE;
23227 compile_error(p,
"unexpected ...");
23234 arg_var(p, idFWD_REST);
23235#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
23236 arg_var(p, idFWD_KWREST);
23238 arg_var(p, idFWD_BLOCK);
23239 arg_var(p, idFWD_ALL);
23246 NODE *rest = NEW_LVAR(idFWD_REST, loc);
23247#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
23248 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
23250 NODE *block = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, loc), loc);
23251 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc);
23252#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
23253 args = arg_append(p, args, new_hash(p, kwrest, loc), loc);
23255 return arg_blk_pass(args, block);
23264 NODE *inner = local->numparam.inner;
23265 if (!local->numparam.outer) {
23266 local->numparam.outer = local->numparam.current;
23268 local->numparam.inner = 0;
23269 local->numparam.current = 0;
23283 local->numparam.inner = prev_inner;
23285 else if (local->numparam.current) {
23287 local->numparam.inner = local->numparam.current;
23289 if (p->max_numparam > NO_PARAM) {
23291 local->numparam.current = local->numparam.outer;
23292 local->numparam.outer = 0;
23296 local->numparam.current = 0;
23301static const struct vtable *
23304 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
23305 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
23306 if (p->lvtbl->used) {
23307 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
23309 return p->lvtbl->args;
23315 struct vtable *tmp = *vtblp;
23316 *vtblp = tmp->prev;
23317# if WARN_PAST_SCOPE
23318 if (p->past_scope_enabled) {
23319 tmp->prev = p->lvtbl->past;
23320 p->lvtbl->past = tmp;
23332 if ((tmp = p->lvtbl->used) != 0) {
23333 warn_unused_var(p, p->lvtbl);
23334 p->lvtbl->used = p->lvtbl->used->prev;
23337 dyna_pop_vtable(p, &p->lvtbl->args);
23338 dyna_pop_vtable(p, &p->lvtbl->vars);
23344 while (p->lvtbl->args != lvargs) {
23346 if (!p->lvtbl->args) {
23348 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
23358 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
23364 struct vtable *vars, *args, *used;
23367 args = p->lvtbl->args;
23368 vars = p->lvtbl->vars;
23369 used = p->lvtbl->used;
23371 while (!DVARS_TERMINAL_P(vars)) {
23372 if (vtable_included(args,
id)) {
23375 if ((i = vtable_included(vars,
id)) != 0) {
23376 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
23381 if (!vidrefp) used = 0;
23382 if (used) used = used->prev;
23385 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
23386 return rb_dvar_defined(
id, p->parent_iseq);
23395 return dvar_defined_ref(p,
id, NULL);
23401 return (vtable_included(p->lvtbl->args,
id) ||
23402 vtable_included(p->lvtbl->vars,
id));
23409 "regexp encoding option '%c' differs from source encoding '%s'",
23417 int c = RE_OPTION_ENCODING_IDX(options);
23423 !is_ascii_string(str)) {
23428 else if (RE_OPTION_ENCODING_NONE(options)) {
23430 !is_ascii_string(str)) {
23434 rb_enc_associate(str, rb_ascii8bit_encoding());
23436 else if (rb_is_usascii_enc(p->enc)) {
23437 if (!is_ascii_string(str)) {
23439 rb_enc_associate(str, rb_usascii_encoding());
23442 rb_enc_associate(str, rb_ascii8bit_encoding());
23454 int c = rb_reg_fragment_setenc(p, str, options);
23455 if (c) reg_fragment_enc_error(p, str, c);
23462 reg_fragment_setenc(p, str, options);
23463 err = rb_reg_check_preprocess(str);
23466 compile_error(p,
"%"PRIsVALUE, err);
23480reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
23481 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
23486 long len = name_end - name;
23487 const char *s = (
const char *)name;
23491 if (!len)
return ST_CONTINUE;
23492 if (rb_enc_symname_type(s, len, enc, (1U<<ID_LOCAL)) != ID_LOCAL)
23493 return ST_CONTINUE;
23495 var = intern_cstr(s, len, enc);
23496 if (len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)len)) {
23497 if (!lvar_defined(p, var))
return ST_CONTINUE;
23499 node = node_assign(p, assignable(p, var, 0, arg->loc), NEW_LIT(
ID2SYM(var), arg->loc), NO_LEX_CTXT, arg->loc);
23500 succ = arg->succ_block;
23501 if (!succ) succ = NEW_BEGIN(0, arg->loc);
23502 succ = block_append(p, succ, node);
23503 arg->succ_block = succ;
23504 return ST_CONTINUE;
23513 arg.enc = rb_enc_get(regexp);
23514 arg.succ_block = 0;
23516 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
23518 if (!arg.succ_block)
return 0;
23519 return arg.succ_block->nd_next;
23525 reg_fragment_setenc(p, str, options);
23526 return rb_parser_reg_compile(p, str, options);
23532 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
23542 re = parser_reg_compile(p, str, options);
23546 compile_error(p,
"%"PRIsVALUE, m);
23557 str = ripper_is_node_yylval(str) ? RNODE(str)->nd_cval : str;
23558 int c = rb_reg_fragment_setenc(p, str, options);
23559 if (c) reg_fragment_enc_error(p, str, c);
23560 re = rb_parser_reg_compile(p, str, options);
23571rb_parser_set_options(
VALUE vparser,
int print,
int loop,
int chomp,
int split)
23575 p->do_print = print;
23577 p->do_chomp = chomp;
23578 p->do_split = split;
23584 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
23585 const YYLTYPE *
const LOC = &default_location;
23589 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
23591 node = block_append(p, node, print);
23600 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
23601 NODE *split = NEW_GASGN(fields,
23602 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
23605 node = block_append(p, split, node);
23609 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
23610 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
23613 node = NEW_WHILE(NEW_FCALL(idGets, irs, LOC), node, 1, LOC);
23630 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
23638 p->command_start = TRUE;
23639 p->ruby_sourcefile_string =
Qnil;
23640 p->lex.lpar_beg = -1;
23642 p->delayed.token =
Qnil;
23645 p->parsing_thread =
Qnil;
23647 p->error_buffer =
Qfalse;
23648 p->end_expect_token_locations =
Qnil;
23652 p->debug_buffer =
Qnil;
23654 p->enc = rb_utf8_encoding();
23658#define parser_mark ripper_parser_mark
23659#define parser_free ripper_parser_free
23663parser_mark(
void *ptr)
23667 rb_gc_mark(p->lex.input);
23668 rb_gc_mark(p->lex.lastline);
23669 rb_gc_mark(p->lex.nextline);
23670 rb_gc_mark(p->ruby_sourcefile_string);
23671 rb_gc_mark((
VALUE)p->lex.strterm);
23672 rb_gc_mark((
VALUE)p->ast);
23673 rb_gc_mark(p->case_labels);
23674 rb_gc_mark(p->delayed.token);
23676 rb_gc_mark(p->debug_lines);
23677 rb_gc_mark(p->compile_option);
23678 rb_gc_mark(p->error_buffer);
23679 rb_gc_mark(p->end_expect_token_locations);
23680 rb_gc_mark(p->tokens);
23682 rb_gc_mark(p->value);
23683 rb_gc_mark(p->result);
23684 rb_gc_mark(p->parsing_thread);
23686 rb_gc_mark(p->debug_buffer);
23687 rb_gc_mark(p->debug_output);
23689 rb_gc_mark((
VALUE)p->heap);
23694parser_free(
void *ptr)
23700 ruby_sized_xfree(p->tokenbuf, p->toksiz);
23703 for (local = p->lvtbl; local; local = prev) {
23704 prev = local->prev;
23705 local_free(p, local);
23710 while ((ptinfo = p->token_info) != 0) {
23711 p->token_info = ptinfo->next;
23719parser_memsize(
const void *ptr)
23723 size_t size =
sizeof(*p);
23726 for (local = p->lvtbl; local; local = local->prev) {
23727 size +=
sizeof(*local);
23728 if (local->vars) size += local->vars->capa *
sizeof(
ID);
23744 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
23748#undef rb_reserved_word
23751rb_reserved_word(
const char *str,
unsigned int len)
23753 return reserved_word(str, len);
23761 &parser_data_type, p);
23762 parser_initialize(p);
23773 p->parent_iseq = base;
23778rb_parser_keep_script_lines(
VALUE vparser)
23783 p->keep_script_lines = 1;
23787rb_parser_error_tolerant(
VALUE vparser)
23792 p->error_tolerant = 1;
23793 p->end_expect_token_locations = rb_ary_new();
23797rb_parser_keep_tokens(
VALUE vparser)
23802 p->keep_tokens = 1;
23803 p->tokens = rb_ary_new();
23809#define rb_parser_end_seen_p ripper_parser_end_seen_p
23810#define rb_parser_encoding ripper_parser_encoding
23811#define rb_parser_get_yydebug ripper_parser_get_yydebug
23812#define rb_parser_set_yydebug ripper_parser_set_yydebug
23813#define rb_parser_get_debug_output ripper_parser_get_debug_output
23814#define rb_parser_set_debug_output ripper_parser_set_debug_output
23815static VALUE ripper_parser_end_seen_p(
VALUE vparser);
23816static VALUE ripper_parser_encoding(
VALUE vparser);
23817static VALUE ripper_parser_get_yydebug(
VALUE self);
23819static VALUE ripper_parser_get_debug_output(
VALUE self);
23820static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
23829ripper_error_p(
VALUE vparser)
23834 return RBOOL(p->error_p);
23845rb_parser_end_seen_p(
VALUE vparser)
23850 return RBOOL(p->ruby__end__seen);
23860rb_parser_encoding(
VALUE vparser)
23865 return rb_enc_from_encoding(p->enc);
23876rb_parser_get_yydebug(
VALUE self)
23881 return RBOOL(p->debug);
23892rb_parser_set_yydebug(
VALUE self,
VALUE flag)
23897 p->debug =
RTEST(flag);
23908rb_parser_get_debug_output(
VALUE self)
23913 return p->debug_output;
23923rb_parser_set_debug_output(
VALUE self,
VALUE output)
23928 return p->debug_output = output;
23933#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
23936#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
23937#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
23938 (new)->cnt = (cnt), (ptr))
23943 size_t cnt = HEAPCNT(1, size);
23947 return ADD2HEAP(n, cnt, ptr);
23951rb_parser_calloc(
struct parser_params *p,
size_t nelem,
size_t size)
23953 size_t cnt = HEAPCNT(nelem, size);
23955 void *ptr =
xcalloc(nelem, size);
23957 return ADD2HEAP(n, cnt, ptr);
23961rb_parser_realloc(
struct parser_params *p,
void *ptr,
size_t size)
23964 size_t cnt = HEAPCNT(1, size);
23966 if (ptr && (n = p->heap) != NULL) {
23968 if (n->ptr == ptr) {
23969 n->ptr = ptr =
xrealloc(ptr, size);
23970 if (n->cnt) n->cnt = cnt;
23973 }
while ((n = n->next) != NULL);
23977 return ADD2HEAP(n, cnt, ptr);
23985 while ((n = *prev) != NULL) {
23986 if (n->ptr == ptr) {
23996rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
23999 VALUE mesg = p->debug_buffer;
24007 p->debug_buffer =
Qnil;
24012parser_compile_error(
struct parser_params *p,
const char *fmt, ...)
24020 rb_syntax_error_append(p->error_buffer,
24021 p->ruby_sourcefile_string,
24022 p->ruby_sourceline,
24029count_char(
const char *str,
int c)
24032 while (str[n] == c) ++n;
24042RUBY_FUNC_EXPORTED
size_t
24043rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
24045 if (*yystr ==
'"') {
24046 size_t yyn = 0, bquote = 0;
24047 const char *yyp = yystr;
24053 bquote = count_char(yyp+1,
'`') + 1;
24054 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
24062 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
24063 if (yyres) memcpy(yyres + yyn, yyp, bquote);
24069 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
24070 if (yyres) memcpy(yyres + yyn, yyp, 3);
24075 goto do_not_strip_quotes;
24078 goto do_not_strip_quotes;
24081 if (*++yyp !=
'\\')
24082 goto do_not_strip_quotes;
24098 do_not_strip_quotes: ;
24101 if (!yyres)
return strlen(yystr);
24103 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
24113 if (x ==
Qfalse)
return x;
24114 if (x ==
Qtrue)
return x;
24115 if (
NIL_P(x))
return x;
24130 if (!nd_type_p((
NODE *)x, NODE_RIPPER)) {
24133 x = ((
NODE *)x)->nd_rval;
24141 (
void *)x, rb_builtin_type_name(
TYPE(x)));
24147#define validate(x) ((x) = get_value(x))
24176 return rb_funcall(p->value, mid, 3, a, b, c);
24186 return rb_funcall(p->value, mid, 4, a, b, c, d);
24197 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
24210 return rb_funcall(p->value, mid, 7, a, b, c, d, e, f, g);
24214ripper_get_id(
VALUE v)
24219 if (!nd_type_p(nd, NODE_RIPPER))
return 0;
24224ripper_get_value(
VALUE v)
24227 if (UNDEF_P(v))
return Qnil;
24230 if (!nd_type_p(nd, NODE_RIPPER))
return Qnil;
24231 return nd->nd_rval;
24241ripper_compile_error(
struct parser_params *p,
const char *fmt, ...)
24246 va_start(args, fmt);
24259 "gets returned %"PRIsVALUE
" (expected String or nil)",
24272ripper_s_allocate(
VALUE klass)
24276 &parser_data_type, p);
24281#define ripper_initialized_p(r) ((r)->lex.input != 0)
24294ripper_initialize(
int argc,
VALUE *argv,
VALUE self)
24297 VALUE src, fname, lineno;
24300 rb_scan_args(argc, argv,
"12", &src, &fname, &lineno);
24302 p->lex.gets = ripper_lex_io_get;
24305 p->lex.gets = ripper_lex_get_generic;
24309 p->lex.gets = lex_get_str;
24311 p->lex.input = src;
24313 if (
NIL_P(fname)) {
24314 fname = STR_NEW2(
"(ripper)");
24321 parser_initialize(p);
24323 p->ruby_sourcefile_string = fname;
24325 p->ruby_sourceline =
NIL_P(lineno) ? 0 :
NUM2INT(lineno) - 1;
24331ripper_parse0(
VALUE parser_v)
24337 p->ast = rb_ast_new();
24338 ripper_yyparse((
void*)p);
24339 rb_ast_dispose(p->ast);
24345ripper_ensure(
VALUE parser_v)
24350 p->parsing_thread =
Qnil;
24361ripper_parse(
VALUE self)
24366 if (!ripper_initialized_p(p)) {
24369 if (!
NIL_P(p->parsing_thread)) {
24376 rb_ensure(ripper_parse0, self, ripper_ensure, self);
24389ripper_column(
VALUE self)
24395 if (!ripper_initialized_p(p)) {
24398 if (
NIL_P(p->parsing_thread))
return Qnil;
24399 col = p->lex.ptok - p->lex.pbeg;
24410ripper_filename(
VALUE self)
24415 if (!ripper_initialized_p(p)) {
24418 return p->ruby_sourcefile_string;
24429ripper_lineno(
VALUE self)
24434 if (!ripper_initialized_p(p)) {
24437 if (
NIL_P(p->parsing_thread))
return Qnil;
24438 return INT2NUM(p->ruby_sourceline);
24448ripper_state(
VALUE self)
24453 if (!ripper_initialized_p(p)) {
24456 if (
NIL_P(p->parsing_thread))
return Qnil;
24457 return INT2NUM(p->lex.state);
24467ripper_token(
VALUE self)
24473 if (!ripper_initialized_p(p)) {
24476 if (
NIL_P(p->parsing_thread))
return Qnil;
24477 pos = p->lex.ptok - p->lex.pbeg;
24478 len = p->lex.pcur - p->lex.ptok;
24488 if (UNDEF_P(obj)) {
24509ripper_lex_state_name(
VALUE self,
VALUE state)
24511 return rb_parser_lex_state_name(
NUM2INT(state));
24517 ripper_init_eventids1();
24518 ripper_init_eventids2();
24563<% @exprs.each
do |expr, desc| -%>
24567 ripper_init_eventids1_table(Ripper);
24568 ripper_init_eventids2_table(Ripper);
#define rb_define_method(klass, mid, func, arity)
Defines klass#mid.
#define rb_define_singleton_method(klass, mid, func, arity)
Defines klass.mid.
#define rb_define_private_method(klass, mid, func, arity)
Defines klass#mid and makes it private.
static bool rb_enc_isspace(OnigCodePoint c, rb_encoding *enc)
Identical to rb_isspace(), except it additionally takes an encoding.
static bool rb_enc_isalnum(OnigCodePoint c, rb_encoding *enc)
Identical to rb_isalnum(), except it additionally takes an encoding.
static bool RB_OBJ_FROZEN(VALUE obj)
Checks if an object is frozen.
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
Retrieves argument from argc and argv to given VALUE references according to the format string.
#define T_COMPLEX
Old name of RUBY_T_COMPLEX.
#define TYPE(_)
Old name of rb_type.
#define ENC_CODERANGE_7BIT
Old name of RUBY_ENC_CODERANGE_7BIT.
#define T_FILE
Old name of RUBY_T_FILE.
#define REALLOC_N
Old name of RB_REALLOC_N.
#define ISSPACE
Old name of rb_isspace.
#define ALLOC
Old name of RB_ALLOC.
#define RFLOAT_VALUE
Old name of rb_float_value.
#define T_STRING
Old name of RUBY_T_STRING.
#define xfree
Old name of ruby_xfree.
#define Qundef
Old name of RUBY_Qundef.
#define INT2FIX
Old name of RB_INT2FIX.
#define T_FLOAT
Old name of RUBY_T_FLOAT.
#define xrealloc
Old name of ruby_xrealloc.
#define ID2SYM
Old name of RB_ID2SYM.
#define T_BIGNUM
Old name of RUBY_T_BIGNUM.
#define SPECIAL_CONST_P
Old name of RB_SPECIAL_CONST_P.
#define OBJ_FREEZE_RAW
Old name of RB_OBJ_FREEZE_RAW.
#define OBJ_FREEZE
Old name of RB_OBJ_FREEZE.
#define ULONG2NUM
Old name of RB_ULONG2NUM.
#define UNREACHABLE_RETURN
Old name of RBIMPL_UNREACHABLE_RETURN.
#define SYM2ID
Old name of RB_SYM2ID.
#define ZALLOC
Old name of RB_ZALLOC.
#define T_NODE
Old name of RUBY_T_NODE.
#define ENC_CODERANGE_UNKNOWN
Old name of RUBY_ENC_CODERANGE_UNKNOWN.
#define xmalloc
Old name of ruby_xmalloc.
#define ENCODING_GET(obj)
Old name of RB_ENCODING_GET.
#define LONG2FIX
Old name of RB_INT2FIX.
#define NUM2UINT
Old name of RB_NUM2UINT.
#define ISDIGIT
Old name of rb_isdigit.
#define ASSUME
Old name of RBIMPL_ASSUME.
#define T_RATIONAL
Old name of RUBY_T_RATIONAL.
#define T_HASH
Old name of RUBY_T_HASH.
#define ALLOC_N
Old name of RB_ALLOC_N.
#define LONG2NUM
Old name of RB_LONG2NUM.
#define STRCASECMP
Old name of st_locale_insensitive_strcasecmp.
#define rb_usascii_str_new2
Old name of rb_usascii_str_new_cstr.
#define ISALPHA
Old name of rb_isalpha.
#define STRNCASECMP
Old name of st_locale_insensitive_strncasecmp.
#define ISASCII
Old name of rb_isascii.
#define FLONUM_P
Old name of RB_FLONUM_P.
#define Qtrue
Old name of RUBY_Qtrue.
#define FIXNUM_MAX
Old name of RUBY_FIXNUM_MAX.
#define NUM2INT
Old name of RB_NUM2INT.
#define INT2NUM
Old name of RB_INT2NUM.
#define Qnil
Old name of RUBY_Qnil.
#define Qfalse
Old name of RUBY_Qfalse.
#define FIX2LONG
Old name of RB_FIX2LONG.
#define T_ARRAY
Old name of RUBY_T_ARRAY.
#define scan_hex(s, l, e)
Old name of ruby_scan_hex.
#define T_OBJECT
Old name of RUBY_T_OBJECT.
#define NIL_P
Old name of RB_NIL_P.
#define MBCLEN_CHARFOUND_P(ret)
Old name of ONIGENC_MBCLEN_CHARFOUND_P.
#define DBL2NUM
Old name of rb_float_new.
#define BUILTIN_TYPE
Old name of RB_BUILTIN_TYPE.
#define xcalloc
Old name of ruby_xcalloc.
#define ENCODING_SET(obj, i)
Old name of RB_ENCODING_SET.
#define ENCODING_IS_ASCII8BIT(obj)
Old name of RB_ENCODING_IS_ASCII8BIT.
#define FIXNUM_P
Old name of RB_FIXNUM_P.
#define scan_oct(s, l, e)
Old name of ruby_scan_oct.
#define CONST_ID
Old name of RUBY_CONST_ID.
#define rb_ary_new2
Old name of rb_ary_new_capa.
#define ISXDIGIT
Old name of rb_isxdigit.
#define ISCNTRL
Old name of rb_iscntrl.
#define ISALNUM
Old name of rb_isalnum.
#define SYMBOL_P
Old name of RB_SYMBOL_P.
#define T_REGEXP
Old name of RUBY_T_REGEXP.
void rb_raise(VALUE exc, const char *fmt,...)
Exception entry point.
void rb_compile_warn(const char *file, int line, const char *fmt,...)
Identical to rb_compile_warning(), except it reports always regardless of runtime -W flag.
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
void rb_bug(const char *fmt,...)
Interpreter panic switch.
void rb_set_errinfo(VALUE err)
Sets the current exception ($!) to the given value.
#define ruby_verbose
This variable controls whether the interpreter is in debug mode.
VALUE rb_eTypeError
TypeError exception.
void rb_fatal(const char *fmt,...)
Raises the unsung "fatal" exception.
VALUE rb_eRuntimeError
RuntimeError exception.
VALUE rb_eArgError
ArgumentError exception.
void rb_compile_warning(const char *file, int line, const char *fmt,...)
Issues a compile-time warning that happens at __file__:__line__.
VALUE rb_errinfo(void)
This is the same as $! in Ruby.
VALUE rb_eSyntaxError
SyntaxError exception.
VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass)
Allocates, then initialises an instance of the given class.
VALUE rb_obj_hide(VALUE obj)
Make the object invisible from Ruby code.
VALUE rb_obj_class(VALUE obj)
Queries the class of an object.
VALUE rb_obj_freeze(VALUE obj)
Just calls rb_obj_freeze_inline() inside.
#define RB_OBJ_WRITTEN(old, oldv, young)
Identical to RB_OBJ_WRITE(), except it doesn't write any values, but only a WB declaration.
#define RB_OBJ_WRITE(old, slot, young)
Declaration of a "back" pointer.
static const char * rb_enc_name(rb_encoding *enc)
Queries the (canonical) name of the passed encoding.
static char * rb_enc_prev_char(const char *s, const char *p, const char *e, rb_encoding *enc)
Queries the previous (left) character.
static bool rb_enc_asciicompat(rb_encoding *enc)
Queries if the passed encoding is in some sense compatible with ASCII.
static int rb_enc_mbcput(unsigned int c, void *buf, rb_encoding *enc)
Identical to rb_enc_uint_chr(), except it writes back to the passed buffer instead of allocating one.
int rb_char_to_option_kcode(int c, int *option, int *kcode)
Converts a character option to its encoding.
VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc)
Identical to rb_str_cat(), except it additionally takes an encoding.
VALUE rb_enc_str_new(const char *ptr, long len, rb_encoding *enc)
Identical to rb_enc_str_new(), except it additionally takes an encoding.
long rb_str_coderange_scan_restartable(const char *str, const char *end, rb_encoding *enc, int *cr)
Scans the passed string until it finds something odd.
VALUE rb_funcall(VALUE recv, ID mid, int n,...)
Calls a method.
VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, const VALUE *argv)
Identical to rb_funcallv(), except it only takes public methods into account.
VALUE rb_io_gets(VALUE io)
Reads a "line" from the given IO.
VALUE rb_io_puts(int argc, const VALUE *argv, VALUE io)
Iterates over the passed array to apply rb_io_write() individually.
VALUE rb_io_write(VALUE io, VALUE str)
Writes the given string to the given IO.
VALUE rb_io_flush(VALUE io)
Flushes any buffered data within the passed IO to the underlying operating system.
VALUE rb_default_rs
This is the default value of rb_rs, i.e.
VALUE rb_int_positive_pow(long x, unsigned long y)
Raises the passed x to the power of y.
ID rb_id_attrset(ID id)
Calculates an ID of attribute writer.
VALUE rb_rational_new(VALUE num, VALUE den)
Constructs a Rational, with reduction.
#define rb_rational_raw1(x)
Shorthand of (x/1)r.
int rb_memcicmp(const void *s1, const void *s2, long n)
Identical to st_locale_insensitive_strcasecmp(), except it is timing safe and returns something diffe...
VALUE rb_str_append(VALUE dst, VALUE src)
Identical to rb_str_buf_append(), except it converts the right hand side before concatenating.
VALUE rb_str_subseq(VALUE str, long beg, long len)
Identical to rb_str_substr(), except the numbers are interpreted as byte offsets instead of character...
#define rb_str_new(str, len)
Allocates an instance of rb_cString.
#define rb_str_buf_cat
Just another name of rb_str_cat.
#define rb_usascii_str_new(str, len)
Identical to rb_str_new, except it generates a string of "US ASCII" encoding.
VALUE rb_str_new_frozen(VALUE str)
Creates a frozen copy of the string, if necessary.
VALUE rb_str_dup(VALUE str)
Duplicates a string.
void rb_str_modify(VALUE str)
Declares that the string is about to be modified.
VALUE rb_str_cat(VALUE dst, const char *src, long srclen)
Destructively appends the passed contents to the string.
VALUE rb_filesystem_str_new_cstr(const char *ptr)
Identical to rb_filesystem_str_new(), except it assumes the passed pointer is a pointer to a C string...
VALUE rb_str_buf_append(VALUE dst, VALUE src)
Identical to rb_str_cat_cstr(), except it takes Ruby's string instead of C's.
void rb_str_set_len(VALUE str, long len)
Overwrites the length of the string.
#define rb_strlen_lit(str)
Length of a string literal.
#define rb_str_cat_cstr(buf, str)
Identical to rb_str_cat(), except it assumes the passed pointer is a pointer to a C string.
VALUE rb_str_resize(VALUE str, long len)
Overwrites the length of the string.
VALUE rb_str_buf_new(long capa)
Allocates a "string buffer".
#define rb_str_new_cstr(str)
Identical to rb_str_new, except it assumes the passed pointer is a pointer to a C string.
VALUE rb_str_intern(VALUE str)
Identical to rb_to_symbol(), except it assumes the receiver being an instance of RString.
VALUE rb_obj_as_string(VALUE obj)
Try converting an object to its stringised representation using its to_s method, if any.
VALUE rb_thread_current(void)
Obtains the "current" thread.
VALUE rb_attr_get(VALUE obj, ID name)
Identical to rb_ivar_get()
VALUE rb_const_get_at(VALUE space, ID name)
Identical to rb_const_defined_at(), except it returns the actual defined value.
int rb_const_defined_at(VALUE space, ID name)
Identical to rb_const_defined(), except it doesn't look for parent classes.
int rb_respond_to(VALUE obj, ID mid)
Queries if the object responds to the method.
void rb_define_alloc_func(VALUE klass, rb_alloc_func_t func)
Sets the allocator function of a class.
VALUE rb_make_backtrace(void)
Creates the good old fashioned array-of-strings style backtrace info.
ID rb_intern2(const char *name, long len)
Identical to rb_intern(), except it additionally takes the length of the string.
static ID rb_intern_const(const char *str)
This is a "tiny optimisation" over rb_intern().
ID rb_intern(const char *name)
Finds or creates a symbol of the given name.
const char * rb_id2name(ID id)
Retrieves the name mapped to the given id.
ID rb_intern_str(VALUE str)
Identical to rb_intern(), except it takes an instance of rb_cString.
void rb_define_global_const(const char *name, VALUE val)
Identical to rb_define_const(), except it defines that of "global", i.e.
void rb_define_const(VALUE klass, const char *name, VALUE val)
Defines a Ruby level constant under a namespace.
VALUE rb_ractor_stderr(void)
Queries the standard error of the current Ractor that is calling this function.
VALUE rb_ractor_stdout(void)
Queries the standard output of the current Ractor that is calling this function.
VALUE rb_ractor_make_shareable(VALUE obj)
Destructively transforms the passed object so that multiple Ractors can share it.
#define strtod(s, e)
Just another name of ruby_strtod.
unsigned long ruby_scan_oct(const char *str, size_t len, size_t *consumed)
Interprets the passed string as an octal unsigned integer.
unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow)
Scans the passed string, assuming the string is a textual representation of an integer.
VALUE rb_sprintf(const char *fmt,...)
Ruby's extended sprintf(3).
VALUE rb_str_vcatf(VALUE dst, const char *fmt, va_list ap)
Identical to rb_str_catf(), except it takes a va_list.
VALUE rb_vsprintf(const char *fmt, va_list ap)
Identical to rb_sprintf(), except it takes a va_list.
VALUE rb_str_catf(VALUE dst, const char *fmt,...)
Identical to rb_sprintf(), except it renders the output to the specified object rather than creating ...
#define rb_long2int
Just another name of rb_long2int_inline.
#define MEMCPY(p1, p2, type, n)
Handy macro to call memcpy.
#define ALLOCA_N(type, n)
#define RB_GC_GUARD(v)
Prevents premature destruction of local objects.
#define MEMMOVE(p1, p2, type, n)
Handy macro to call memmove.
VALUE type(ANYARGS)
ANYARGS-ed function type.
VALUE rb_ensure(type *q, VALUE w, type *e, VALUE r)
An equivalent of ensure clause.
#define RARRAY_LEN
Just another name of rb_array_len.
#define RARRAY_AREF(a, i)
static VALUE RBASIC_CLASS(VALUE obj)
Queries the class of an object.
#define RREGEXP_PTR(obj)
Convenient accessor macro.
#define StringValue(v)
Ensures that the parameter object is a String.
static char * RSTRING_END(VALUE str)
Queries the end of the contents pointer of the string.
#define RSTRING_GETMEM(str, ptrvar, lenvar)
Convenient macro to obtain the contents and length at once.
static long RSTRING_LEN(VALUE str)
Queries the length of the string.
static char * RSTRING_PTR(VALUE str)
Queries the contents pointer of the string.
#define StringValueCStr(v)
Identical to StringValuePtr, except it additionally checks for the contents for viability as a C stri...
#define TypedData_Get_Struct(obj, type, data_type, sval)
Obtains a C struct from inside of a wrapper Ruby object.
#define TypedData_Make_Struct(klass, type, data_type, sval)
Identical to TypedData_Wrap_Struct, except it allocates a new data region internally instead of takin...
const char * rb_obj_classname(VALUE obj)
Queries the name of the class of the passed object.
#define InitVM(ext)
This macro is for internal use.
#define RTEST
This is an old name of RB_TEST.
This is the struct that holds necessary info for a struct.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.
static bool RB_TYPE_P(VALUE obj, enum ruby_value_type t)
Queries if the given object is of given type.
#define RBIMPL_WARNING_IGNORED(flag)
Suppresses a warning.
#define RBIMPL_WARNING_PUSH()
Pushes compiler warning state.
#define RBIMPL_WARNING_POP()
Pops compiler warning state.